diff --git a/src/turnup/ui/static/assets/index-1cIxdxyn.js b/src/turnup/ui/static/assets/index-1cIxdxyn.js new file mode 100644 index 0000000..2800405 --- /dev/null +++ b/src/turnup/ui/static/assets/index-1cIxdxyn.js @@ -0,0 +1,9 @@ +(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const N of document.querySelectorAll('link[rel="modulepreload"]'))v(N);new MutationObserver(N=>{for(const Q of N)if(Q.type==="childList")for(const w of Q.addedNodes)w.tagName==="LINK"&&w.rel==="modulepreload"&&v(w)}).observe(document,{childList:!0,subtree:!0});function j(N){const Q={};return N.integrity&&(Q.integrity=N.integrity),N.referrerPolicy&&(Q.referrerPolicy=N.referrerPolicy),N.crossOrigin==="use-credentials"?Q.credentials="include":N.crossOrigin==="anonymous"?Q.credentials="omit":Q.credentials="same-origin",Q}function v(N){if(N.ep)return;N.ep=!0;const Q=j(N);fetch(N.href,Q)}})();var cf={exports:{}},ze={};var Sv;function Im(){if(Sv)return ze;Sv=1;var h=Symbol.for("react.transitional.element"),p=Symbol.for("react.fragment");function j(v,N,Q){var w=null;if(Q!==void 0&&(w=""+Q),N.key!==void 0&&(w=""+N.key),"key"in N){Q={};for(var hl in N)hl!=="key"&&(Q[hl]=N[hl])}else Q=N;return N=Q.ref,{$$typeof:h,type:v,key:w,ref:N!==void 0?N:null,props:Q}}return ze.Fragment=p,ze.jsx=j,ze.jsxs=j,ze}var bv;function Pm(){return bv||(bv=1,cf.exports=Im()),cf.exports}var T=Pm(),ff={exports:{}},X={};var zv;function ly(){if(zv)return X;zv=1;var h=Symbol.for("react.transitional.element"),p=Symbol.for("react.portal"),j=Symbol.for("react.fragment"),v=Symbol.for("react.strict_mode"),N=Symbol.for("react.profiler"),Q=Symbol.for("react.consumer"),w=Symbol.for("react.context"),hl=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),_=Symbol.for("react.memo"),K=Symbol.for("react.lazy"),M=Symbol.for("react.activity"),O=Symbol.iterator;function rl(d){return d===null||typeof d!="object"?null:(d=O&&d[O]||d["@@iterator"],typeof d=="function"?d:null)}var jl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Bl=Object.assign,_t={};function Vl(d,A,U){this.props=d,this.context=A,this.refs=_t,this.updater=U||jl}Vl.prototype.isReactComponent={},Vl.prototype.setState=function(d,A){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,A,"setState")},Vl.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function pt(){}pt.prototype=Vl.prototype;function Dl(d,A,U){this.props=d,this.context=A,this.refs=_t,this.updater=U||jl}var Cl=Dl.prototype=new pt;Cl.constructor=Dl,Bl(Cl,Vl.prototype),Cl.isPureReactComponent=!0;var vt=Array.isArray;function Hl(){}var J={H:null,A:null,T:null,S:null},Rl=Object.prototype.hasOwnProperty;function mt(d,A,U){var R=U.ref;return{$$typeof:h,type:d,key:A,ref:R!==void 0?R:null,props:U}}function kt(d,A){return mt(d.type,A,d.props)}function wl(d){return typeof d=="object"&&d!==null&&d.$$typeof===h}function G(d){var A={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(U){return A[U]})}var gl=/\/+/g;function Ul(d,A){return typeof d=="object"&&d!==null&&d.key!=null?G(""+d.key):A.toString(36)}function tt(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(Hl,Hl):(d.status="pending",d.then(function(A){d.status==="pending"&&(d.status="fulfilled",d.value=A)},function(A){d.status==="pending"&&(d.status="rejected",d.reason=A)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function b(d,A,U,R,Z){var W=typeof d;(W==="undefined"||W==="boolean")&&(d=null);var ul=!1;if(d===null)ul=!0;else switch(W){case"bigint":case"string":case"number":ul=!0;break;case"object":switch(d.$$typeof){case h:case p:ul=!0;break;case K:return ul=d._init,b(ul(d._payload),A,U,R,Z)}}if(ul)return Z=Z(d),ul=R===""?"."+Ul(d,0):R,vt(Z)?(U="",ul!=null&&(U=ul.replace(gl,"$&/")+"/"),b(Z,A,U,"",function(Mu){return Mu})):Z!=null&&(wl(Z)&&(Z=kt(Z,U+(Z.key==null||d&&d.key===Z.key?"":(""+Z.key).replace(gl,"$&/")+"/")+ul)),A.push(Z)),1;ul=0;var Kl=R===""?".":R+":";if(vt(d))for(var zl=0;zl>>1,dl=b[cl];if(0>>1;clN(U,Y))RN(Z,U)?(b[cl]=Z,b[R]=Y,cl=R):(b[cl]=U,b[A]=Y,cl=A);else if(RN(Z,Y))b[cl]=Z,b[R]=Y,cl=R;else break l}}return D}function N(b,D){var Y=b.sortIndex-D.sortIndex;return Y!==0?Y:b.id-D.id}if(h.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var Q=performance;h.unstable_now=function(){return Q.now()}}else{var w=Date,hl=w.now();h.unstable_now=function(){return w.now()-hl}}var C=[],_=[],K=1,M=null,O=3,rl=!1,jl=!1,Bl=!1,_t=!1,Vl=typeof setTimeout=="function"?setTimeout:null,pt=typeof clearTimeout=="function"?clearTimeout:null,Dl=typeof setImmediate<"u"?setImmediate:null;function Cl(b){for(var D=j(_);D!==null;){if(D.callback===null)v(_);else if(D.startTime<=b)v(_),D.sortIndex=D.expirationTime,p(C,D);else break;D=j(_)}}function vt(b){if(Bl=!1,Cl(b),!jl)if(j(C)!==null)jl=!0,Hl||(Hl=!0,G());else{var D=j(_);D!==null&&tt(vt,D.startTime-b)}}var Hl=!1,J=-1,Rl=5,mt=-1;function kt(){return _t?!0:!(h.unstable_now()-mtb&&kt());){var cl=M.callback;if(typeof cl=="function"){M.callback=null,O=M.priorityLevel;var dl=cl(M.expirationTime<=b);if(b=h.unstable_now(),typeof dl=="function"){M.callback=dl,Cl(b),D=!0;break t}M===j(C)&&v(C),Cl(b)}else v(C);M=j(C)}if(M!==null)D=!0;else{var d=j(_);d!==null&&tt(vt,d.startTime-b),D=!1}}break l}finally{M=null,O=Y,rl=!1}D=void 0}}finally{D?G():Hl=!1}}}var G;if(typeof Dl=="function")G=function(){Dl(wl)};else if(typeof MessageChannel<"u"){var gl=new MessageChannel,Ul=gl.port2;gl.port1.onmessage=wl,G=function(){Ul.postMessage(null)}}else G=function(){Vl(wl,0)};function tt(b,D){J=Vl(function(){b(h.unstable_now())},D)}h.unstable_IdlePriority=5,h.unstable_ImmediatePriority=1,h.unstable_LowPriority=4,h.unstable_NormalPriority=3,h.unstable_Profiling=null,h.unstable_UserBlockingPriority=2,h.unstable_cancelCallback=function(b){b.callback=null},h.unstable_forceFrameRate=function(b){0>b||125cl?(b.sortIndex=Y,p(_,b),j(C)===null&&b===j(_)&&(Bl?(pt(J),J=-1):Bl=!0,tt(vt,Y-cl))):(b.sortIndex=dl,p(C,b),jl||rl||(jl=!0,Hl||(Hl=!0,G()))),b},h.unstable_shouldYield=kt,h.unstable_wrapCallback=function(b){var D=O;return function(){var Y=O;O=D;try{return b.apply(this,arguments)}finally{O=Y}}}})(of)),of}var Av;function ay(){return Av||(Av=1,df.exports=ty()),df.exports}var vf={exports:{}},Ll={};var _v;function uy(){if(_v)return Ll;_v=1;var h=hf();function p(C){var _="https://react.dev/errors/"+C;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(h)}catch(p){console.error(p)}}return h(),vf.exports=uy(),vf.exports}var Ov;function ny(){if(Ov)return Te;Ov=1;var h=ay(),p=hf(),j=ey();function v(l){var t="https://react.dev/errors/"+l;if(1dl||(l.current=cl[dl],cl[dl]=null,dl--)}function U(l,t){dl++,cl[dl]=l.current,l.current=t}var R=d(null),Z=d(null),W=d(null),ul=d(null);function Kl(l,t){switch(U(W,t),U(Z,l),U(R,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Qo(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Qo(t),l=Zo(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}A(R),U(R,l)}function zl(){A(R),A(Z),A(W)}function Mu(l){l.memoizedState!==null&&U(ul,l);var t=R.current,a=Zo(t,l.type);t!==a&&(U(Z,l),U(R,a))}function Ee(l){Z.current===l&&(A(R),A(Z)),ul.current===l&&(A(ul),ge._currentValue=Y)}var Zn,gf;function Aa(l){if(Zn===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Zn=t&&t[1]||"",gf=-1)":-1e||f[u]!==y[e]){var S=` +`+f[u].replace(" at new "," at ");return l.displayName&&S.includes("")&&(S=S.replace("",l.displayName)),S}while(1<=u&&0<=e);break}}}finally{Ln=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?Aa(a):""}function Uv(l,t){switch(l.tag){case 26:case 27:case 5:return Aa(l.type);case 16:return Aa("Lazy");case 13:return l.child!==t&&t!==null?Aa("Suspense Fallback"):Aa("Suspense");case 19:return Aa("SuspenseList");case 0:case 15:return Vn(l.type,!1);case 11:return Vn(l.type.render,!1);case 1:return Vn(l.type,!0);case 31:return Aa("Activity");default:return""}}function rf(l){try{var t="",a=null;do t+=Uv(l,a),a=l,l=l.return;while(l);return t}catch(u){return` +Error generating stack: `+u.message+` +`+u.stack}}var Kn=Object.prototype.hasOwnProperty,Jn=h.unstable_scheduleCallback,wn=h.unstable_cancelCallback,Nv=h.unstable_shouldYield,jv=h.unstable_requestPaint,at=h.unstable_now,Cv=h.unstable_getCurrentPriorityLevel,Sf=h.unstable_ImmediatePriority,bf=h.unstable_UserBlockingPriority,Ae=h.unstable_NormalPriority,Hv=h.unstable_LowPriority,zf=h.unstable_IdlePriority,Rv=h.log,qv=h.unstable_setDisableYieldValue,Du=null,ut=null;function It(l){if(typeof Rv=="function"&&qv(l),ut&&typeof ut.setStrictMode=="function")try{ut.setStrictMode(Du,l)}catch{}}var et=Math.clz32?Math.clz32:Yv,xv=Math.log,Bv=Math.LN2;function Yv(l){return l>>>=0,l===0?32:31-(xv(l)/Bv|0)|0}var _e=256,pe=262144,Oe=4194304;function _a(l){var t=l&42;if(t!==0)return t;switch(l&-l){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 l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Me(l,t,a){var u=l.pendingLanes;if(u===0)return 0;var e=0,n=l.suspendedLanes,c=l.pingedLanes;l=l.warmLanes;var i=u&134217727;return i!==0?(u=i&~n,u!==0?e=_a(u):(c&=i,c!==0?e=_a(c):a||(a=i&~l,a!==0&&(e=_a(a))))):(i=u&~n,i!==0?e=_a(i):c!==0?e=_a(c):a||(a=u&~l,a!==0&&(e=_a(a)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,a=t&-t,n>=a||n===32&&(a&4194048)!==0)?t:e}function Uu(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Gv(l,t){switch(l){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 Tf(){var l=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),l}function Wn(l){for(var t=[],a=0;31>a;a++)t.push(l);return t}function Nu(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Xv(l,t,a,u,e,n){var c=l.pendingLanes;l.pendingLanes=a,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=a,l.entangledLanes&=a,l.errorRecoveryDisabledLanes&=a,l.shellSuspendCounter=0;var i=l.entanglements,f=l.expirationTimes,y=l.hiddenUpdates;for(a=c&~a;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Jv=/[\n"\\]/g;function ht(l){return l.replace(Jv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function lc(l,t,a,u,e,n,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+yt(t)):l.value!==""+yt(t)&&(l.value=""+yt(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?tc(l,c,yt(t)):a!=null?tc(l,c,yt(a)):u!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+yt(i):l.removeAttribute("name")}function Rf(l,t,a,u,e,n,c,i){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null)){Pn(l);return}a=a!=null?""+yt(a):"",t=t!=null?""+yt(t):a,i||t===l.value||(l.value=t),l.defaultValue=t}u=u??e,u=typeof u!="function"&&typeof u!="symbol"&&!!u,l.checked=i?l.checked:!!u,l.defaultChecked=!!u,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c),Pn(l)}function tc(l,t,a){t==="number"&&Ne(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function wa(l,t,a,u){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),cc=!1;if(qt)try{var Ru={};Object.defineProperty(Ru,"passive",{get:function(){cc=!0}}),window.addEventListener("test",Ru,Ru),window.removeEventListener("test",Ru,Ru)}catch{cc=!1}var la=null,ic=null,Ce=null;function Qf(){if(Ce)return Ce;var l,t=ic,a=t.length,u,e="value"in la?la.value:la.textContent,n=e.length;for(l=0;l=Bu),wf=" ",Wf=!1;function $f(l,t){switch(l){case"keyup":return z0.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ff(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var ka=!1;function E0(l,t){switch(l){case"compositionend":return Ff(t);case"keypress":return t.which!==32?null:(Wf=!0,wf);case"textInput":return l=t.data,l===wf&&Wf?null:l;default:return null}}function A0(l,t){if(ka)return l==="compositionend"||!vc&&$f(l,t)?(l=Qf(),Ce=ic=la=null,ka=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-l};l=u}l:{for(;a;){if(a.nextSibling){a=a.nextSibling;break l}a=a.parentNode}a=void 0}a=es(a)}}function cs(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?cs(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function is(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Ne(l.document);t instanceof l.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)l=t.contentWindow;else break;t=Ne(l.document)}return t}function hc(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var j0=qt&&"documentMode"in document&&11>=document.documentMode,Ia=null,gc=null,Qu=null,rc=!1;function fs(l,t,a){var u=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;rc||Ia==null||Ia!==Ne(u)||(u=Ia,"selectionStart"in u&&hc(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Qu&&Xu(Qu,u)||(Qu=u,u=On(gc,"onSelect"),0>=c,e-=c,Ut=1<<32-et(t)+e|a<V?(I=q,q=null):I=q.sibling;var tl=g(o,q,m[V],z);if(tl===null){q===null&&(q=I);break}l&&q&&tl.alternate===null&&t(o,q),s=n(tl,s,V),ll===null?x=tl:ll.sibling=tl,ll=tl,q=I}if(V===m.length)return a(o,q),P&&Bt(o,V),x;if(q===null){for(;VV?(I=q,q=null):I=q.sibling;var Ea=g(o,q,tl.value,z);if(Ea===null){q===null&&(q=I);break}l&&q&&Ea.alternate===null&&t(o,q),s=n(Ea,s,V),ll===null?x=Ea:ll.sibling=Ea,ll=Ea,q=I}if(tl.done)return a(o,q),P&&Bt(o,V),x;if(q===null){for(;!tl.done;V++,tl=m.next())tl=E(o,tl.value,z),tl!==null&&(s=n(tl,s,V),ll===null?x=tl:ll.sibling=tl,ll=tl);return P&&Bt(o,V),x}for(q=u(q);!tl.done;V++,tl=m.next())tl=r(q,o,V,tl.value,z),tl!==null&&(l&&tl.alternate!==null&&q.delete(tl.key===null?V:tl.key),s=n(tl,s,V),ll===null?x=tl:ll.sibling=tl,ll=tl);return l&&q.forEach(function(km){return t(o,km)}),P&&Bt(o,V),x}function sl(o,s,m,z){if(typeof m=="object"&&m!==null&&m.type===Bl&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case rl:l:{for(var x=m.key;s!==null;){if(s.key===x){if(x=m.type,x===Bl){if(s.tag===7){a(o,s.sibling),z=e(s,m.props.children),z.return=o,o=z;break l}}else if(s.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Rl&&qa(x)===s.type){a(o,s.sibling),z=e(s,m.props),wu(z,m),z.return=o,o=z;break l}a(o,s);break}else t(o,s);s=s.sibling}m.type===Bl?(z=Na(m.props.children,o.mode,z,m.key),z.return=o,o=z):(z=Ze(m.type,m.key,m.props,null,o.mode,z),wu(z,m),z.return=o,o=z)}return c(o);case jl:l:{for(x=m.key;s!==null;){if(s.key===x)if(s.tag===4&&s.stateNode.containerInfo===m.containerInfo&&s.stateNode.implementation===m.implementation){a(o,s.sibling),z=e(s,m.children||[]),z.return=o,o=z;break l}else{a(o,s);break}else t(o,s);s=s.sibling}z=_c(m,o.mode,z),z.return=o,o=z}return c(o);case Rl:return m=qa(m),sl(o,s,m,z)}if(tt(m))return H(o,s,m,z);if(G(m)){if(x=G(m),typeof x!="function")throw Error(v(150));return m=x.call(m),B(o,s,m,z)}if(typeof m.then=="function")return sl(o,s,$e(m),z);if(m.$$typeof===Dl)return sl(o,s,Ke(o,m),z);Fe(o,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,s!==null&&s.tag===6?(a(o,s.sibling),z=e(s,m),z.return=o,o=z):(a(o,s),z=Ac(m,o.mode,z),z.return=o,o=z),c(o)):a(o,s)}return function(o,s,m,z){try{Ju=0;var x=sl(o,s,m,z);return su=null,x}catch(q){if(q===fu||q===we)throw q;var ll=ct(29,q,null,o.mode);return ll.lanes=z,ll.return=o,ll}}}var Ba=js(!0),Cs=js(!1),na=!1;function xc(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Bc(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function ca(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function ia(l,t,a){var u=l.updateQueue;if(u===null)return null;if(u=u.shared,(al&2)!==0){var e=u.pending;return e===null?t.next=t:(t.next=e.next,e.next=t),u.pending=t,t=Qe(l),hs(l,null,a),t}return Xe(l,u,t,a),Qe(l)}function Wu(l,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,Af(l,a)}}function Yc(l,t){var a=l.updateQueue,u=l.alternate;if(u!==null&&(u=u.updateQueue,a===u)){var e=null,n=null;if(a=a.firstBaseUpdate,a!==null){do{var c={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};n===null?e=n=c:n=n.next=c,a=a.next}while(a!==null);n===null?e=n=t:n=n.next=t}else e=n=t;a={baseState:u.baseState,firstBaseUpdate:e,lastBaseUpdate:n,shared:u.shared,callbacks:u.callbacks},l.updateQueue=a;return}l=a.lastBaseUpdate,l===null?a.firstBaseUpdate=t:l.next=t,a.lastBaseUpdate=t}var Gc=!1;function $u(){if(Gc){var l=iu;if(l!==null)throw l}}function Fu(l,t,a,u){Gc=!1;var e=l.updateQueue;na=!1;var n=e.firstBaseUpdate,c=e.lastBaseUpdate,i=e.shared.pending;if(i!==null){e.shared.pending=null;var f=i,y=f.next;f.next=null,c===null?n=y:c.next=y,c=f;var S=l.alternate;S!==null&&(S=S.updateQueue,i=S.lastBaseUpdate,i!==c&&(i===null?S.firstBaseUpdate=y:i.next=y,S.lastBaseUpdate=f))}if(n!==null){var E=e.baseState;c=0,S=y=f=null,i=n;do{var g=i.lane&-536870913,r=g!==i.lane;if(r?(k&g)===g:(u&g)===g){g!==0&&g===cu&&(Gc=!0),S!==null&&(S=S.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});l:{var H=l,B=i;g=t;var sl=a;switch(B.tag){case 1:if(H=B.payload,typeof H=="function"){E=H.call(sl,E,g);break l}E=H;break l;case 3:H.flags=H.flags&-65537|128;case 0:if(H=B.payload,g=typeof H=="function"?H.call(sl,E,g):H,g==null)break l;E=M({},E,g);break l;case 2:na=!0}}g=i.callback,g!==null&&(l.flags|=64,r&&(l.flags|=8192),r=e.callbacks,r===null?e.callbacks=[g]:r.push(g))}else r={lane:g,tag:i.tag,payload:i.payload,callback:i.callback,next:null},S===null?(y=S=r,f=E):S=S.next=r,c|=g;if(i=i.next,i===null){if(i=e.shared.pending,i===null)break;r=i,i=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}}while(!0);S===null&&(f=E),e.baseState=f,e.firstBaseUpdate=y,e.lastBaseUpdate=S,n===null&&(e.shared.lanes=0),va|=c,l.lanes=c,l.memoizedState=E}}function Hs(l,t){if(typeof l!="function")throw Error(v(191,l));l.call(t)}function Rs(l,t){var a=l.callbacks;if(a!==null)for(l.callbacks=null,l=0;ln?n:8;var c=b.T,i={};b.T=i,ei(l,!1,t,a);try{var f=e(),y=b.S;if(y!==null&&y(i,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var S=X0(f,u);Pu(l,t,S,ot(l))}else Pu(l,t,u,ot(l))}catch(E){Pu(l,t,{then:function(){},status:"rejected",reason:E},ot())}finally{D.p=n,c!==null&&i.types!==null&&(c.types=i.types),b.T=c}}function J0(){}function ai(l,t,a,u){if(l.tag!==5)throw Error(v(476));var e=vd(l).queue;od(l,e,t,Y,a===null?J0:function(){return md(l),a(u)})}function vd(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:Y,baseState:Y,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Qt,lastRenderedState:Y},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Qt,lastRenderedState:a},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function md(l){var t=vd(l);t.next===null&&(t=l.alternate.memoizedState),Pu(l,t.next.queue,{},ot())}function ui(){return Xl(ge)}function yd(){return El().memoizedState}function hd(){return El().memoizedState}function w0(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var a=ot();l=ca(a);var u=ia(t,l,a);u!==null&&(lt(u,t,a),Wu(u,t,a)),t={cache:Cc()},l.payload=t;return}t=t.return}}function W0(l,t,a){var u=ot();a={lane:u,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},cn(l)?rd(t,a):(a=Tc(l,t,a,u),a!==null&&(lt(a,l,u),Sd(a,t,u)))}function gd(l,t,a){var u=ot();Pu(l,t,a,u)}function Pu(l,t,a,u){var e={lane:u,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(cn(l))rd(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,i=n(c,a);if(e.hasEagerState=!0,e.eagerState=i,nt(i,c))return Xe(l,t,e,0),ol===null&&Ge(),!1}catch{}if(a=Tc(l,t,e,u),a!==null)return lt(a,l,u),Sd(a,t,u),!0}return!1}function ei(l,t,a,u){if(u={lane:2,revertLane:xi(),gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},cn(l)){if(t)throw Error(v(479))}else t=Tc(l,a,u,2),t!==null&<(t,l,2)}function cn(l){var t=l.alternate;return l===L||t!==null&&t===L}function rd(l,t){ou=Pe=!0;var a=l.pending;a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t}function Sd(l,t,a){if((a&4194048)!==0){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,Af(l,a)}}var le={readContext:Xl,use:an,useCallback:Sl,useContext:Sl,useEffect:Sl,useImperativeHandle:Sl,useLayoutEffect:Sl,useInsertionEffect:Sl,useMemo:Sl,useReducer:Sl,useRef:Sl,useState:Sl,useDebugValue:Sl,useDeferredValue:Sl,useTransition:Sl,useSyncExternalStore:Sl,useId:Sl,useHostTransitionStatus:Sl,useFormState:Sl,useActionState:Sl,useOptimistic:Sl,useMemoCache:Sl,useCacheRefresh:Sl};le.useEffectEvent=Sl;var bd={readContext:Xl,use:an,useCallback:function(l,t){return Jl().memoizedState=[l,t===void 0?null:t],l},useContext:Xl,useEffect:ad,useImperativeHandle:function(l,t,a){a=a!=null?a.concat([l]):null,en(4194308,4,cd.bind(null,t,l),a)},useLayoutEffect:function(l,t){return en(4194308,4,l,t)},useInsertionEffect:function(l,t){en(4,2,l,t)},useMemo:function(l,t){var a=Jl();t=t===void 0?null:t;var u=l();if(Ya){It(!0);try{l()}finally{It(!1)}}return a.memoizedState=[u,t],u},useReducer:function(l,t,a){var u=Jl();if(a!==void 0){var e=a(t);if(Ya){It(!0);try{a(t)}finally{It(!1)}}}else e=t;return u.memoizedState=u.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},u.queue=l,l=l.dispatch=W0.bind(null,L,l),[u.memoizedState,l]},useRef:function(l){var t=Jl();return l={current:l},t.memoizedState=l},useState:function(l){l=kc(l);var t=l.queue,a=gd.bind(null,L,t);return t.dispatch=a,[l.memoizedState,a]},useDebugValue:li,useDeferredValue:function(l,t){var a=Jl();return ti(a,l,t)},useTransition:function(){var l=kc(!1);return l=od.bind(null,L,l.queue,!0,!1),Jl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,a){var u=L,e=Jl();if(P){if(a===void 0)throw Error(v(407));a=a()}else{if(a=t(),ol===null)throw Error(v(349));(k&127)!==0||Xs(u,t,a)}e.memoizedState=a;var n={value:a,getSnapshot:t};return e.queue=n,ad(Zs.bind(null,u,n,l),[l]),u.flags|=2048,mu(9,{destroy:void 0},Qs.bind(null,u,n,a,t),null),a},useId:function(){var l=Jl(),t=ol.identifierPrefix;if(P){var a=Nt,u=Ut;a=(u&~(1<<32-et(u)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ln++,0<\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof u.is=="string"?c.createElement("select",{is:u.is}):c.createElement("select"),u.multiple?n.multiple=!0:u.size&&(n.size=u.size);break;default:n=typeof u.is=="string"?c.createElement(e,{is:u.is}):c.createElement(e)}}n[Yl]=t,n[Wl]=u;l:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)n.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break l;for(;c.sibling===null;){if(c.return===null||c.return===t)break l;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=n;l:switch(Zl(n,e,u),e){case"button":case"input":case"select":case"textarea":u=!!u.autoFocus;break l;case"img":u=!0;break l;default:u=!1}u&&Lt(t)}}return ml(t),Si(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,a),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==u&&Lt(t);else{if(typeof u!="string"&&t.stateNode===null)throw Error(v(166));if(l=W.current,eu(t)){if(l=t.stateNode,a=t.memoizedProps,u=null,e=Gl,e!==null)switch(e.tag){case 27:case 5:u=e.memoizedProps}l[Yl]=t,l=!!(l.nodeValue===a||u!==null&&u.suppressHydrationWarning===!0||Go(l.nodeValue,a)),l||ua(t,!0)}else l=Mn(l).createTextNode(u),l[Yl]=t,t.stateNode=l}return ml(t),null;case 31:if(a=t.memoizedState,l===null||l.memoizedState!==null){if(u=eu(t),a!==null){if(l===null){if(!u)throw Error(v(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(v(557));l[Yl]=t}else ja(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ml(t),l=!1}else a=Dc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=a),l=!0;if(!l)return t.flags&256?(ft(t),t):(ft(t),null);if((t.flags&128)!==0)throw Error(v(558))}return ml(t),null;case 13:if(u=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=eu(t),u!==null&&u.dehydrated!==null){if(l===null){if(!e)throw Error(v(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(v(317));e[Yl]=t}else ja(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ml(t),e=!1}else e=Dc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),e=!0;if(!e)return t.flags&256?(ft(t),t):(ft(t),null)}return ft(t),(t.flags&128)!==0?(t.lanes=a,t):(a=u!==null,l=l!==null&&l.memoizedState!==null,a&&(u=t.child,e=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(e=u.alternate.memoizedState.cachePool.pool),n=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(n=u.memoizedState.cachePool.pool),n!==e&&(u.flags|=2048)),a!==l&&a&&(t.child.flags|=8192),vn(t,t.updateQueue),ml(t),null);case 4:return zl(),l===null&&Xi(t.stateNode.containerInfo),ml(t),null;case 10:return Gt(t.type),ml(t),null;case 19:if(A(Tl),u=t.memoizedState,u===null)return ml(t),null;if(e=(t.flags&128)!==0,n=u.rendering,n===null)if(e)ae(u,!1);else{if(bl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=Ie(l),n!==null){for(t.flags|=128,ae(u,!1),l=n.updateQueue,t.updateQueue=l,vn(t,l),t.subtreeFlags=0,l=a,a=t.child;a!==null;)gs(a,l),a=a.sibling;return U(Tl,Tl.current&1|2),P&&Bt(t,u.treeForkCount),t.child}l=l.sibling}u.tail!==null&&at()>rn&&(t.flags|=128,e=!0,ae(u,!1),t.lanes=4194304)}else{if(!e)if(l=Ie(n),l!==null){if(t.flags|=128,e=!0,l=l.updateQueue,t.updateQueue=l,vn(t,l),ae(u,!0),u.tail===null&&u.tailMode==="hidden"&&!n.alternate&&!P)return ml(t),null}else 2*at()-u.renderingStartTime>rn&&a!==536870912&&(t.flags|=128,e=!0,ae(u,!1),t.lanes=4194304);u.isBackwards?(n.sibling=t.child,t.child=n):(l=u.last,l!==null?l.sibling=n:t.child=n,u.last=n)}return u.tail!==null?(l=u.tail,u.rendering=l,u.tail=l.sibling,u.renderingStartTime=at(),l.sibling=null,a=Tl.current,U(Tl,e?a&1|2:a&1),P&&Bt(t,u.treeForkCount),l):(ml(t),null);case 22:case 23:return ft(t),Qc(),u=t.memoizedState!==null,l!==null?l.memoizedState!==null!==u&&(t.flags|=8192):u&&(t.flags|=8192),u?(a&536870912)!==0&&(t.flags&128)===0&&(ml(t),t.subtreeFlags&6&&(t.flags|=8192)):ml(t),a=t.updateQueue,a!==null&&vn(t,a.retryQueue),a=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(a=l.memoizedState.cachePool.pool),u=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(u=t.memoizedState.cachePool.pool),u!==a&&(t.flags|=2048),l!==null&&A(Ra),null;case 24:return a=null,l!==null&&(a=l.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Gt(Al),ml(t),null;case 25:return null;case 30:return null}throw Error(v(156,t.tag))}function P0(l,t){switch(Oc(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Gt(Al),zl(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return Ee(t),null;case 31:if(t.memoizedState!==null){if(ft(t),t.alternate===null)throw Error(v(340));ja()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(ft(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(v(340));ja()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return A(Tl),null;case 4:return zl(),null;case 10:return Gt(t.type),null;case 22:case 23:return ft(t),Qc(),l!==null&&A(Ra),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Gt(Al),null;case 25:return null;default:return null}}function Ld(l,t){switch(Oc(t),t.tag){case 3:Gt(Al),zl();break;case 26:case 27:case 5:Ee(t);break;case 4:zl();break;case 31:t.memoizedState!==null&&ft(t);break;case 13:ft(t);break;case 19:A(Tl);break;case 10:Gt(t.type);break;case 22:case 23:ft(t),Qc(),l!==null&&A(Ra);break;case 24:Gt(Al)}}function ue(l,t){try{var a=t.updateQueue,u=a!==null?a.lastEffect:null;if(u!==null){var e=u.next;a=e;do{if((a.tag&l)===l){u=void 0;var n=a.create,c=a.inst;u=n(),c.destroy=u}a=a.next}while(a!==e)}}catch(i){nl(t,t.return,i)}}function da(l,t,a){try{var u=t.updateQueue,e=u!==null?u.lastEffect:null;if(e!==null){var n=e.next;u=n;do{if((u.tag&l)===l){var c=u.inst,i=c.destroy;if(i!==void 0){c.destroy=void 0,e=t;var f=a,y=i;try{y()}catch(S){nl(e,f,S)}}}u=u.next}while(u!==n)}}catch(S){nl(t,t.return,S)}}function Vd(l){var t=l.updateQueue;if(t!==null){var a=l.stateNode;try{Rs(t,a)}catch(u){nl(l,l.return,u)}}}function Kd(l,t,a){a.props=Ga(l.type,l.memoizedProps),a.state=l.memoizedState;try{a.componentWillUnmount()}catch(u){nl(l,t,u)}}function ee(l,t){try{var a=l.ref;if(a!==null){switch(l.tag){case 26:case 27:case 5:var u=l.stateNode;break;case 30:u=l.stateNode;break;default:u=l.stateNode}typeof a=="function"?l.refCleanup=a(u):a.current=u}}catch(e){nl(l,t,e)}}function jt(l,t){var a=l.ref,u=l.refCleanup;if(a!==null)if(typeof u=="function")try{u()}catch(e){nl(l,t,e)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(e){nl(l,t,e)}else a.current=null}function Jd(l){var t=l.type,a=l.memoizedProps,u=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&u.focus();break l;case"img":a.src?u.src=a.src:a.srcSet&&(u.srcset=a.srcSet)}}catch(e){nl(l,l.return,e)}}function bi(l,t,a){try{var u=l.stateNode;Tm(u,l.type,a,t),u[Wl]=t}catch(e){nl(l,l.return,e)}}function wd(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&ra(l.type)||l.tag===4}function zi(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||wd(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&ra(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ti(l,t,a){var u=l.tag;if(u===5||u===6)l=l.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(l,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(l),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=Rt));else if(u!==4&&(u===27&&ra(l.type)&&(a=l.stateNode,t=null),l=l.child,l!==null))for(Ti(l,t,a),l=l.sibling;l!==null;)Ti(l,t,a),l=l.sibling}function mn(l,t,a){var u=l.tag;if(u===5||u===6)l=l.stateNode,t?a.insertBefore(l,t):a.appendChild(l);else if(u!==4&&(u===27&&ra(l.type)&&(a=l.stateNode),l=l.child,l!==null))for(mn(l,t,a),l=l.sibling;l!==null;)mn(l,t,a),l=l.sibling}function Wd(l){var t=l.stateNode,a=l.memoizedProps;try{for(var u=l.type,e=t.attributes;e.length;)t.removeAttributeNode(e[0]);Zl(t,u,a),t[Yl]=l,t[Wl]=a}catch(n){nl(l,l.return,n)}}var Vt=!1,Ol=!1,Ei=!1,$d=typeof WeakSet=="function"?WeakSet:Set,xl=null;function lm(l,t){if(l=l.containerInfo,Li=Rn,l=is(l),hc(l)){if("selectionStart"in l)var a={start:l.selectionStart,end:l.selectionEnd};else l:{a=(a=l.ownerDocument)&&a.defaultView||window;var u=a.getSelection&&a.getSelection();if(u&&u.rangeCount!==0){a=u.anchorNode;var e=u.anchorOffset,n=u.focusNode;u=u.focusOffset;try{a.nodeType,n.nodeType}catch{a=null;break l}var c=0,i=-1,f=-1,y=0,S=0,E=l,g=null;t:for(;;){for(var r;E!==a||e!==0&&E.nodeType!==3||(i=c+e),E!==n||u!==0&&E.nodeType!==3||(f=c+u),E.nodeType===3&&(c+=E.nodeValue.length),(r=E.firstChild)!==null;)g=E,E=r;for(;;){if(E===l)break t;if(g===a&&++y===e&&(i=c),g===n&&++S===u&&(f=c),(r=E.nextSibling)!==null)break;E=g,g=E.parentNode}E=r}a=i===-1||f===-1?null:{start:i,end:f}}else a=null}a=a||{start:0,end:0}}else a=null;for(Vi={focusedElem:l,selectionRange:a},Rn=!1,xl=t;xl!==null;)if(t=xl,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,xl=l;else for(;xl!==null;){switch(t=xl,n=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(a=0;a title"))),Zl(n,u,a),n[Yl]=l,ql(n),u=n;break l;case"link":var c=av("link","href",e).get(u+(a.href||""));if(c){for(var i=0;isl&&(c=sl,sl=B,B=c);var o=ns(i,B),s=ns(i,sl);if(o&&s&&(r.rangeCount!==1||r.anchorNode!==o.node||r.anchorOffset!==o.offset||r.focusNode!==s.node||r.focusOffset!==s.offset)){var m=E.createRange();m.setStart(o.node,o.offset),r.removeAllRanges(),B>sl?(r.addRange(m),r.extend(s.node,s.offset)):(m.setEnd(s.node,s.offset),r.addRange(m))}}}}for(E=[],r=i;r=r.parentNode;)r.nodeType===1&&E.push({element:r,left:r.scrollLeft,top:r.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;ia?32:a,b.T=null,a=Ui,Ui=null;var n=ya,c=$t;if(Nl=0,Su=ya=null,$t=0,(al&6)!==0)throw Error(v(331));var i=al;if(al|=4,co(n.current),uo(n,n.current,c,a),al=i,de(0,!1),ut&&typeof ut.onPostCommitFiberRoot=="function")try{ut.onPostCommitFiberRoot(Du,n)}catch{}return!0}finally{D.p=e,b.T=u,po(l,t)}}function Mo(l,t,a){t=rt(a,t),t=fi(l.stateNode,t,2),l=ia(l,t,2),l!==null&&(Nu(l,2),Ct(l))}function nl(l,t,a){if(l.tag===3)Mo(l,l,a);else for(;t!==null;){if(t.tag===3){Mo(t,l,a);break}else if(t.tag===1){var u=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(ma===null||!ma.has(u))){l=rt(a,l),a=Md(2),u=ia(t,a,2),u!==null&&(Dd(a,u,t,l),Nu(u,2),Ct(u));break}}t=t.return}}function Hi(l,t,a){var u=l.pingCache;if(u===null){u=l.pingCache=new um;var e=new Set;u.set(t,e)}else e=u.get(t),e===void 0&&(e=new Set,u.set(t,e));e.has(a)||(pi=!0,e.add(a),l=fm.bind(null,l,t,a),t.then(l,l))}function fm(l,t,a){var u=l.pingCache;u!==null&&u.delete(t),l.pingedLanes|=l.suspendedLanes&a,l.warmLanes&=~a,ol===l&&(k&a)===a&&(bl===4||bl===3&&(k&62914560)===k&&300>at()-gn?(al&2)===0&&bu(l,0):Oi|=a,ru===k&&(ru=0)),Ct(l)}function Do(l,t){t===0&&(t=Tf()),l=Ua(l,t),l!==null&&(Nu(l,t),Ct(l))}function sm(l){var t=l.memoizedState,a=0;t!==null&&(a=t.retryLane),Do(l,a)}function dm(l,t){var a=0;switch(l.tag){case 31:case 13:var u=l.stateNode,e=l.memoizedState;e!==null&&(a=e.retryLane);break;case 19:u=l.stateNode;break;case 22:u=l.stateNode._retryCache;break;default:throw Error(v(314))}u!==null&&u.delete(t),Do(l,a)}function om(l,t){return Jn(l,t)}var An=null,Tu=null,Ri=!1,_n=!1,qi=!1,ga=0;function Ct(l){l!==Tu&&l.next===null&&(Tu===null?An=Tu=l:Tu=Tu.next=l),_n=!0,Ri||(Ri=!0,mm())}function de(l,t){if(!qi&&_n){qi=!0;do for(var a=!1,u=An;u!==null;){if(l!==0){var e=u.pendingLanes;if(e===0)var n=0;else{var c=u.suspendedLanes,i=u.pingedLanes;n=(1<<31-et(42|l)+1)-1,n&=e&~(c&~i),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(a=!0,Co(u,n))}else n=k,n=Me(u,u===ol?n:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(n&3)===0||Uu(u,n)||(a=!0,Co(u,n));u=u.next}while(a);qi=!1}}function vm(){Uo()}function Uo(){_n=Ri=!1;var l=0;ga!==0&&Am()&&(l=ga);for(var t=at(),a=null,u=An;u!==null;){var e=u.next,n=No(u,t);n===0?(u.next=null,a===null?An=e:a.next=e,e===null&&(Tu=a)):(a=u,(l!==0||(n&3)!==0)&&(_n=!0)),u=e}Nl!==0&&Nl!==5||de(l),ga!==0&&(ga=0)}function No(l,t){for(var a=l.suspendedLanes,u=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0i)break;var S=f.transferSize,E=f.initiatorType;S&&Xo(E)&&(f=f.responseEnd,c+=S*(f"u"?null:document;function Io(l,t,a){var u=Eu;if(u&&typeof t=="string"&&t){var e=ht(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof a=="string"&&(e+='[crossorigin="'+a+'"]'),ko.has(e)||(ko.add(e),l={rel:l,crossOrigin:a,href:t},u.querySelector(e)===null&&(t=u.createElement("link"),Zl(t,"link",l),ql(t),u.head.appendChild(t)))}}function Cm(l){Ft.D(l),Io("dns-prefetch",l,null)}function Hm(l,t){Ft.C(l,t),Io("preconnect",l,t)}function Rm(l,t,a){Ft.L(l,t,a);var u=Eu;if(u&&l&&t){var e='link[rel="preload"][as="'+ht(t)+'"]';t==="image"&&a&&a.imageSrcSet?(e+='[imagesrcset="'+ht(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(e+='[imagesizes="'+ht(a.imageSizes)+'"]')):e+='[href="'+ht(l)+'"]';var n=e;switch(t){case"style":n=Au(l);break;case"script":n=_u(l)}At.has(n)||(l=M({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:l,as:t},a),At.set(n,l),u.querySelector(e)!==null||t==="style"&&u.querySelector(ye(n))||t==="script"&&u.querySelector(he(n))||(t=u.createElement("link"),Zl(t,"link",l),ql(t),u.head.appendChild(t)))}}function qm(l,t){Ft.m(l,t);var a=Eu;if(a&&l){var u=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+ht(u)+'"][href="'+ht(l)+'"]',n=e;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=_u(l)}if(!At.has(n)&&(l=M({rel:"modulepreload",href:l},t),At.set(n,l),a.querySelector(e)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(he(n)))return}u=a.createElement("link"),Zl(u,"link",l),ql(u),a.head.appendChild(u)}}}function xm(l,t,a){Ft.S(l,t,a);var u=Eu;if(u&&l){var e=Ka(u).hoistableStyles,n=Au(l);t=t||"default";var c=e.get(n);if(!c){var i={loading:0,preload:null};if(c=u.querySelector(ye(n)))i.loading=5;else{l=M({rel:"stylesheet",href:l,"data-precedence":t},a),(a=At.get(n))&&ki(l,a);var f=c=u.createElement("link");ql(f),Zl(f,"link",l),f._p=new Promise(function(y,S){f.onload=y,f.onerror=S}),f.addEventListener("load",function(){i.loading|=1}),f.addEventListener("error",function(){i.loading|=2}),i.loading|=4,Un(c,t,u)}c={type:"stylesheet",instance:c,count:1,state:i},e.set(n,c)}}}function Bm(l,t){Ft.X(l,t);var a=Eu;if(a&&l){var u=Ka(a).hoistableScripts,e=_u(l),n=u.get(e);n||(n=a.querySelector(he(e)),n||(l=M({src:l,async:!0},t),(t=At.get(e))&&Ii(l,t),n=a.createElement("script"),ql(n),Zl(n,"link",l),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},u.set(e,n))}}function Ym(l,t){Ft.M(l,t);var a=Eu;if(a&&l){var u=Ka(a).hoistableScripts,e=_u(l),n=u.get(e);n||(n=a.querySelector(he(e)),n||(l=M({src:l,async:!0,type:"module"},t),(t=At.get(e))&&Ii(l,t),n=a.createElement("script"),ql(n),Zl(n,"link",l),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},u.set(e,n))}}function Po(l,t,a,u){var e=(e=W.current)?Dn(e):null;if(!e)throw Error(v(446));switch(l){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Au(a.href),a=Ka(e).hoistableStyles,u=a.get(t),u||(u={type:"style",instance:null,count:0,state:null},a.set(t,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){l=Au(a.href);var n=Ka(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(ye(l)))&&!n._p&&(c.instance=n,c.state.loading=5),At.has(l)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},At.set(l,a),n||Gm(e,l,a,c.state))),t&&u===null)throw Error(v(528,""));return c}if(t&&u!==null)throw Error(v(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=_u(a),a=Ka(e).hoistableScripts,u=a.get(t),u||(u={type:"script",instance:null,count:0,state:null},a.set(t,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(v(444,l))}}function Au(l){return'href="'+ht(l)+'"'}function ye(l){return'link[rel="stylesheet"]['+l+"]"}function lv(l){return M({},l,{"data-precedence":l.precedence,precedence:null})}function Gm(l,t,a,u){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?u.loading=1:(t=l.createElement("link"),u.preload=t,t.addEventListener("load",function(){return u.loading|=1}),t.addEventListener("error",function(){return u.loading|=2}),Zl(t,"link",a),ql(t),l.head.appendChild(t))}function _u(l){return'[src="'+ht(l)+'"]'}function he(l){return"script[async]"+l}function tv(l,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var u=l.querySelector('style[data-href~="'+ht(a.href)+'"]');if(u)return t.instance=u,ql(u),u;var e=M({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return u=(l.ownerDocument||l).createElement("style"),ql(u),Zl(u,"style",e),Un(u,a.precedence,l),t.instance=u;case"stylesheet":e=Au(a.href);var n=l.querySelector(ye(e));if(n)return t.state.loading|=4,t.instance=n,ql(n),n;u=lv(a),(e=At.get(e))&&ki(u,e),n=(l.ownerDocument||l).createElement("link"),ql(n);var c=n;return c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),Zl(n,"link",u),t.state.loading|=4,Un(n,a.precedence,l),t.instance=n;case"script":return n=_u(a.src),(e=l.querySelector(he(n)))?(t.instance=e,ql(e),e):(u=a,(e=At.get(n))&&(u=M({},a),Ii(u,e)),l=l.ownerDocument||l,e=l.createElement("script"),ql(e),Zl(e,"link",u),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(v(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(u=t.instance,t.state.loading|=4,Un(u,a.precedence,l));return t.instance}function Un(l,t,a){for(var u=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=u.length?u[u.length-1]:null,n=e,c=0;c title"):null)}function Xm(l,t,a){if(a===1||t.itemProp!=null)return!1;switch(l){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"?(l=t.disabled,typeof t.precedence=="string"&&l==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 ev(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function Qm(l,t,a,u){if(a.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var e=Au(u.href),n=t.querySelector(ye(e));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=jn.bind(l),t.then(l,l)),a.state.loading|=4,a.instance=n,ql(n);return}n=t.ownerDocument||t,u=lv(u),(e=At.get(e))&&ki(u,e),n=n.createElement("link"),ql(n);var c=n;c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),Zl(n,"link",u),a.instance=n}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(l.count++,a=jn.bind(l),t.addEventListener("load",a),t.addEventListener("error",a))}}var Pi=0;function Zm(l,t){return l.stylesheets&&l.count===0&&Hn(l,l.stylesheets),0Pi?50:800)+t);return l.unsuspend=a,function(){l.unsuspend=null,clearTimeout(u),clearTimeout(e)}}:null}function jn(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hn(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var Cn=null;function Hn(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,Cn=new Map,t.forEach(Lm,l),Cn=null,jn.call(l))}function Lm(l,t){if(!(t.state.loading&4)){var a=Cn.get(l);if(a)var u=a.get(null);else{a=new Map,Cn.set(l,a);for(var e=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(h)}catch(p){console.error(p)}}return h(),sf.exports=ny(),sf.exports}var iy=cy();async function Ou(h){if(!h.ok){const p=await h.json().catch(()=>null);throw new Error(p?.detail??`${h.status} ${h.statusText}`)}}async function Dv(){const h=await fetch("/api/config");return await Ou(h),h.json()}async function fy(h){const p=await fetch("/api/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)});await Ou(p)}async function sy(){const h=await fetch("/api/presets");return h.ok?h.json():[]}async function dy(h){const p=await fetch(`/api/presets/${encodeURIComponent(h)}`);return await Ou(p),p.json()}async function oy(h,p){const j=await fetch(`/api/presets/${encodeURIComponent(h)}/save`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)});await Ou(j)}async function vy(h){const p=await fetch(`/api/presets/${encodeURIComponent(h)}/apply`,{method:"POST"});await Ou(p)}async function my(h){const p=await fetch(`/api/presets/${encodeURIComponent(h)}`,{method:"DELETE"});await Ou(p)}async function yy(){try{const h=await fetch("/api/apps");return h.ok?h.json():[]}catch{return[]}}async function hy(){try{const h=await fetch("/api/sinks");return h.ok?h.json():[]}catch{return[]}}async function gy(){try{const h=await fetch("/api/sources");return h.ok?h.json():[]}catch{return[]}}function ry({toasts:h,onRemove:p}){return T.jsx("div",{id:"toast-container",children:h.map(j=>T.jsx(Sy,{toast:j,onRemove:p},j.id))})}function Sy({toast:h,onRemove:p}){return Ml.useEffect(()=>{const j=setTimeout(()=>p(h.id),3100);return()=>clearTimeout(j)},[h.id,p]),T.jsx("div",{className:`toast ${h.type}`,children:h.message})}function by({config:h,onChange:p}){return T.jsxs("section",{className:"card",id:"connection",children:[T.jsx("h2",{children:"Connection"}),T.jsxs("div",{className:"fields",children:[T.jsxs("div",{className:"field",children:[T.jsx("label",{htmlFor:"port",children:"Serial port"}),T.jsx("input",{type:"text",id:"port",value:h.port,placeholder:"/dev/ttyACM0",onChange:j=>p({port:j.target.value})})]}),T.jsxs("div",{className:"field",children:[T.jsx("label",{htmlFor:"baud",children:"Baud rate"}),T.jsx("input",{type:"number",id:"baud",value:h.baud,onChange:j=>p({baud:parseInt(j.target.value,10)||115200})})]})]})]})}function yf([h,p,j]){return"#"+[h,p,j].map(v=>Math.max(0,Math.min(255,v)).toString(16).padStart(2,"0")).join("")}function zy(h){const p=parseInt(h.replace("#",""),16);return[p>>16&255,p>>8&255,p&255]}function Qn({id:h,label:p,value:j,onChange:v}){const N=yf(j);return T.jsxs("div",{children:[T.jsx("label",{htmlFor:h,children:p}),T.jsxs("div",{className:"color-row",children:[T.jsx("input",{type:"color",id:h,value:N,onChange:Q=>v(zy(Q.target.value))}),T.jsx("span",{className:"color-hex",children:N})]})]})}function Ty({leds:h,onChange:p}){const j=w=>p({...h,...w}),v=yf(h.low_color),N=yf(h.high_color),Q=h.mode==="off"?"#000":h.mode==="static"?N:`linear-gradient(to right, ${v}, ${N})`;return T.jsxs("section",{className:"card",id:"global-leds",children:[T.jsx("h2",{children:"Global LEDs"}),T.jsxs("div",{className:"fields",children:[T.jsxs("div",{className:"field",children:[T.jsx("label",{htmlFor:"led-mode",children:"Mode"}),T.jsxs("select",{id:"led-mode",value:h.mode,onChange:w=>j({mode:w.target.value}),children:[T.jsx("option",{value:"volume",children:"volume — fade low → high"}),T.jsx("option",{value:"static",children:"static — always high color"}),T.jsx("option",{value:"off",children:"off — LEDs disabled"})]})]}),T.jsx("div",{className:"field",style:{opacity:h.mode==="volume"?1:.4},children:T.jsx(Qn,{id:"led-low-color",label:"Low color (0 %)",value:h.low_color,onChange:w=>j({low_color:w})})}),T.jsx("div",{className:"field",children:T.jsx(Qn,{id:"led-high-color",label:"High color (100 %)",value:h.high_color,onChange:w=>j({high_color:w})})})]}),T.jsx("div",{className:"led-preview",style:{background:Q}})]})}const Ey=[{value:"sink_volume",label:"sink_volume — output device"},{value:"source_volume",label:"source_volume — microphone"},{value:"app_volume",label:"app_volume — single app"},{value:"group_volume",label:"group_volume — multiple apps"}],mf={mode:"volume",low_color:[255,0,0],high_color:[0,255,0]};function Ay({index:h,knob:p,runningApps:j=[],sinks:v=[],sources:N=[],onChange:Q}){const[w,hl]=Ml.useState(!!p.led),C=O=>Q({...p,...O}),_={mode:p.led?.mode??mf.mode,low_color:p.led?.low_color??mf.low_color,high_color:p.led?.high_color??mf.high_color},K=O=>C({led:{..._,...O}}),M=()=>{const O=!w;if(hl(O),!O){const{led:rl,...jl}=p;Q(jl)}};return T.jsxs("div",{className:"knob-card",children:[T.jsxs("div",{className:"card-title",children:[T.jsx("span",{className:"card-index",children:h}),"Knob ",h]}),T.jsxs("div",{children:[T.jsx("label",{htmlFor:`knob-${h}-action`,children:"Action"}),T.jsx("select",{id:`knob-${h}-action`,value:p.action,onChange:O=>{const rl=O.target.value;C(rl==="group_volume"?{action:rl,targets:p.targets??[],target:void 0}:{action:rl,target:p.target??"default",targets:void 0})},children:Ey.map(O=>T.jsx("option",{value:O.value,children:O.label},O.value))})]}),p.action==="group_volume"?T.jsxs("div",{children:[T.jsxs("label",{htmlFor:`knob-${h}-targets`,children:["Targets",j.length>0&&T.jsx("span",{className:"label-hint",children:" (ctrl/shift to select multiple)"})]}),T.jsxs("select",{id:`knob-${h}-targets`,multiple:!0,size:Math.max(3,Math.min(j.length,6)),value:p.targets??[],onChange:O=>C({targets:Array.from(O.target.selectedOptions).map(rl=>rl.value)}),disabled:j.length===0,"aria-label":"Targets",children:[j.length===0&&T.jsx("option",{value:"",disabled:!0,children:"— no apps detected —"}),j.map(O=>T.jsx("option",{value:O,children:O},O))]})]}):T.jsxs("div",{children:[T.jsx("label",{htmlFor:`knob-${h}-target`,children:"Target"}),p.action==="sink_volume"?T.jsx("select",{id:`knob-${h}-target`,value:p.target??"default",onChange:O=>C({target:O.target.value}),disabled:v.length===0,"aria-label":"Target",children:v.length===0?T.jsx("option",{value:"default",children:"— no devices detected —"}):v.map(O=>T.jsxs("option",{value:O.name,children:[O.description,O.is_default?" (default)":""]},O.name))}):p.action==="source_volume"?T.jsx("select",{id:`knob-${h}-target`,value:p.target??"default",onChange:O=>C({target:O.target.value}),disabled:N.length===0,"aria-label":"Target",children:N.length===0?T.jsx("option",{value:"default",children:"— no devices detected —"}):N.map(O=>T.jsxs("option",{value:O.name,children:[O.description,O.is_default?" (default)":""]},O.name))}):T.jsxs("select",{id:`knob-${h}-target`,value:p.target??"default",onChange:O=>C({target:O.target.value}),disabled:j.length===0,"aria-label":"Target",children:[T.jsx("option",{value:"default",children:j.length===0?"— no apps detected —":"— select an app —"}),j.map(O=>T.jsx("option",{value:O,children:O},O))]})]}),T.jsxs("button",{className:"led-override-toggle",onClick:M,children:[T.jsx("span",{children:w?"▾":"▸"}),"LED override"]}),w&&T.jsxs("div",{className:"led-override-panel open",children:[T.jsxs("div",{children:[T.jsx("label",{htmlFor:`knob-${h}-led-mode`,children:"Mode"}),T.jsxs("select",{id:`knob-${h}-led-mode`,value:_.mode,onChange:O=>K({mode:O.target.value}),children:[T.jsx("option",{value:"volume",children:"volume"}),T.jsx("option",{value:"static",children:"static"}),T.jsx("option",{value:"off",children:"off"})]})]}),T.jsx(Qn,{id:`knob-${h}-led-low`,label:"Low color",value:_.low_color,onChange:O=>K({low_color:O})}),T.jsx(Qn,{id:`knob-${h}-led-high`,label:"High color",value:_.high_color,onChange:O=>K({high_color:O})})]})]})}const _y=[{value:"mute_sink",label:"mute_sink — toggle output mute"},{value:"mute_source",label:"mute_source — toggle mic mute"},{value:"command",label:"command — run shell command"}];function py({index:h,btn:p,onChange:j}){const v=p.action==="command";return T.jsxs("div",{className:"button-card",children:[T.jsxs("div",{className:"card-title",children:[T.jsx("span",{className:"card-index",children:h}),"Button ",h]}),T.jsxs("div",{children:[T.jsx("label",{htmlFor:`btn-${h}-action`,children:"Action"}),T.jsx("select",{id:`btn-${h}-action`,value:p.action,onChange:N=>j({...p,action:N.target.value}),children:_y.map(N=>T.jsx("option",{value:N.value,children:N.label},N.value))})]}),T.jsxs("div",{children:[T.jsx("label",{htmlFor:`btn-${h}-target`,children:v?"Command":"Target"}),T.jsx("input",{type:"text",id:`btn-${h}-target`,value:p.target,placeholder:v?"playerctl play-pause":"default",onChange:N=>j({...p,target:N.target.value})})]})]})}function Oy({presets:h,config:p,onLoad:j,onRefresh:v,onToast:N}){const[Q,w]=Ml.useState(""),hl=async()=>{const M=Q.trim();if(!M){N("Enter a preset name first","info");return}try{await oy(M,p),N(`Preset "${M}" saved`),w(""),v()}catch(O){N(`Save preset failed: ${O.message}`,"error")}},C=async M=>{try{const O=await dy(M);j(O),N(`Preset "${M}" loaded — click Save Config to write to disk`,"info")}catch(O){N(`Load failed: ${O.message}`,"error")}},_=async M=>{try{await vy(M);const O=await Dv();j(O),N(`Preset "${M}" applied — daemon will reload automatically`)}catch(O){N(`Apply failed: ${O.message}`,"error")}},K=async M=>{if(confirm(`Delete preset "${M}"?`))try{await my(M),N(`Preset "${M}" deleted`),v()}catch(O){N(`Delete failed: ${O.message}`,"error")}};return T.jsxs("section",{className:"card",id:"presets",children:[T.jsx("h2",{children:"Presets"}),T.jsxs("div",{className:"save-row",children:[T.jsxs("div",{className:"field",children:[T.jsx("label",{htmlFor:"preset-name",children:"Preset name"}),T.jsx("input",{type:"text",id:"preset-name",value:Q,placeholder:"my-setup",onChange:M=>w(M.target.value),onKeyDown:M=>M.key==="Enter"&&void hl()})]}),T.jsx("button",{className:"btn-secondary",onClick:()=>{hl()},children:"Save current as preset"})]}),T.jsx("div",{className:"preset-list",children:h.length===0?T.jsx("p",{className:"empty",children:"No presets saved yet."}):h.map(M=>T.jsxs("div",{className:"preset-item",children:[T.jsx("span",{className:"preset-name",children:M}),T.jsxs("div",{className:"preset-actions",children:[T.jsx("button",{className:"btn-secondary btn-sm",onClick:()=>{C(M)},children:"Load"}),T.jsx("button",{className:"btn-primary btn-sm",onClick:()=>{_(M)},children:"Apply"}),T.jsx("button",{className:"btn-danger btn-sm",onClick:()=>{K(M)},children:"Delete"})]})]},M))})]})}const My=["0","1","2","3","4"],Dy=["0","1","2","3","4"];let Uy=0;function Ny(){const[h,p]=Ml.useState(null),[j,v]=Ml.useState(null),[N,Q]=Ml.useState([]),[w,hl]=Ml.useState([]),[C,_]=Ml.useState(!0),[K,M]=Ml.useState(!1),[O,rl]=Ml.useState([]),[jl,Bl]=Ml.useState([]),[_t,Vl]=Ml.useState([]),[pt,Dl]=Ml.useState(!1),Cl=Ml.useCallback((G,gl="success")=>{const Ul=++Uy;hl(tt=>[...tt,{id:Ul,message:G,type:gl}])},[]),vt=Ml.useCallback(G=>{hl(gl=>gl.filter(Ul=>Ul.id!==G))},[]),Hl=Ml.useCallback(async()=>{try{const G=await sy();Q(G)}catch{}},[]),J=Ml.useCallback(async()=>{Dl(!0);try{const[G,gl,Ul]=await Promise.all([yy(),hy(),gy()]);rl(G),Bl(gl),Vl(Ul)}finally{Dl(!1)}},[]);Ml.useEffect(()=>{(async()=>{try{const G=await Dv();p(G),v(G)}catch(G){Cl(`Failed to load config: ${G.message}`,"error")}finally{_(!1)}await Hl(),await J()})()},[Cl,Hl,J]);const Rl=h!==null&&JSON.stringify(h)!==JSON.stringify(j),mt=async()=>{if(h){M(!0);try{await fy(h),v(h),Cl("Config saved — daemon will reload automatically")}catch(G){Cl(`Save failed: ${G.message}`,"error")}finally{M(!1)}}},kt=()=>{j&&p(j)},wl=Ml.useCallback((G,gl)=>{p(Ul=>Ul&&{...Ul,[G]:gl})},[]);return C?T.jsx("div",{id:"loading",children:T.jsx("p",{children:"Connecting to daemon…"})}):h?T.jsxs(T.Fragment,{children:[T.jsxs("header",{id:"app-header",children:[T.jsx("h1",{children:"TurnUp"}),Rl&&T.jsx("span",{id:"dirty-badge",className:"visible",children:"unsaved changes"}),T.jsx("button",{className:"btn-secondary",onClick:kt,disabled:!Rl,children:"Revert"}),T.jsx("button",{className:"btn-primary",onClick:()=>{mt()},disabled:!Rl||K,children:K?"Saving…":"Save Config"})]}),T.jsxs("main",{children:[T.jsx(by,{config:h,onChange:G=>p(gl=>gl&&{...gl,...G})}),T.jsx(Ty,{leds:h.leds,onChange:G=>wl("leds",G)}),T.jsxs("section",{className:"card",id:"knobs",children:[T.jsxs("h2",{children:["Knobs",T.jsxs("button",{className:"btn-secondary btn-refresh-apps",onClick:()=>{J()},disabled:pt,title:"Refresh list of running apps",children:[pt?"…":"↻"," Running apps"]})]}),T.jsx("div",{className:"cards-grid",children:My.map(G=>T.jsx(Ay,{index:Number(G),knob:h.knobs[G]??{action:"sink_volume",target:"default"},runningApps:O,sinks:jl,sources:_t,onChange:gl=>wl("knobs",{...h.knobs,[G]:gl})},G))})]}),T.jsxs("section",{className:"card",id:"buttons",children:[T.jsx("h2",{children:"Buttons"}),T.jsx("div",{className:"cards-grid",children:Dy.map(G=>T.jsx(py,{index:Number(G),btn:h.buttons[G]??{action:"mute_sink",target:"default"},onChange:gl=>wl("buttons",{...h.buttons,[G]:gl})},G))})]}),T.jsx(Oy,{presets:N,config:h,onLoad:G=>p(G),onRefresh:Hl,onToast:Cl})]}),T.jsx(ry,{toasts:w,onRemove:vt})]}):T.jsx("div",{id:"loading",children:T.jsxs("p",{children:["Could not reach the API server. Is ",T.jsx("code",{children:"turnup-ui"})," running?"]})})}"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});iy.createRoot(document.getElementById("root")).render(T.jsx(Ml.StrictMode,{children:T.jsx(Ny,{})})); diff --git a/src/turnup/ui/static/assets/index-35WG7lRs.css b/src/turnup/ui/static/assets/index-Bit2B6Yg.css similarity index 94% rename from src/turnup/ui/static/assets/index-35WG7lRs.css rename to src/turnup/ui/static/assets/index-Bit2B6Yg.css index 63ba356..1c21d3d 100644 --- a/src/turnup/ui/static/assets/index-35WG7lRs.css +++ b/src/turnup/ui/static/assets/index-Bit2B6Yg.css @@ -1 +1 @@ -:root{--bg: #0d1117;--surface: #161b22;--surface-2: #21262d;--border: #30363d;--text: #e6edf3;--text-muted: #8b949e;--accent: #58a6ff;--accent-dim: #1f3a5f;--success: #3fb950;--danger: #f85149;--warning: #d29922;--radius: 8px;--gap: 16px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.6;min-height:100dvh}h2{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:12px}label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:4px}input[type=text],input[type=number],select,textarea{width:100%;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:7px 10px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s}input[type=text]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:var(--accent)}select{cursor:pointer}textarea{resize:vertical;min-height:60px}input[type=color]{width:36px;height:36px;padding:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-shrink:0}button{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-family:inherit;font-weight:500;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;white-space:nowrap}button:active{opacity:.75}button:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#000;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:#79b8ff;border-color:#79b8ff}.btn-secondary{background:var(--surface-2);color:var(--text);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-danger{background:transparent;color:var(--danger);border-color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}#app-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:var(--gap);padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border)}#app-header h1{font-size:16px;font-weight:700;letter-spacing:.04em;flex:1}#dirty-badge{font-size:11px;padding:2px 8px;border-radius:20px;background:var(--warning);color:#000;font-weight:600}main{max-width:1100px;margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:28px}#loading{display:flex;align-items:center;justify-content:center;min-height:100dvh;color:var(--text-muted);font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}#connection .fields{display:flex;gap:var(--gap);flex-wrap:wrap}#connection .field{flex:1;min-width:160px}#global-leds .fields{display:flex;gap:var(--gap);align-items:flex-end;flex-wrap:wrap}#global-leds .field{flex:1;min-width:120px}.color-row{display:flex;align-items:center;gap:8px}.color-hex{font-size:12px;color:var(--text-muted);font-family:monospace}.led-preview{margin-top:12px;height:8px;border-radius:4px}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--gap)}.knob-card,.button-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.knob-card .card-title,.button-card .card-title{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}.card-index{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--accent-dim);color:var(--accent);font-size:11px;font-weight:700}.led-override-toggle{font-size:11px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none;background:none;border:none;padding:0;font-family:inherit}.led-override-toggle:hover{color:var(--accent)}.led-override-panel{display:none;flex-direction:column;gap:8px;padding-top:8px;border-top:1px solid var(--border)}.led-override-panel.open{display:flex}.led-override-panel .color-row{flex-wrap:wrap;gap:6px}#presets .save-row{display:flex;gap:var(--gap);align-items:flex-end;flex-wrap:wrap;margin-bottom:16px}#presets .save-row .field{flex:1;min-width:180px}.preset-list{display:flex;flex-direction:column;gap:8px}.preset-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius)}.preset-item .preset-name{flex:1;font-weight:500;font-size:13px}.preset-item .preset-actions{display:flex;gap:6px}#toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none}.toast{padding:10px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;color:#fff;animation:toast-in .2s ease,toast-out .3s ease 2.7s forwards;pointer-events:auto}.toast.success{background:var(--success);color:#000}.toast.error{background:var(--danger)}.toast.info{background:var(--accent);color:#000}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes toast-out{0%{opacity:1}to{opacity:0}}.empty{text-align:center;padding:24px;color:var(--text-muted);font-size:13px}@media(max-width:540px){main{padding:16px}#app-header{padding:10px 16px}} +:root{--bg: #0d1117;--surface: #161b22;--surface-2: #21262d;--border: #30363d;--text: #e6edf3;--text-muted: #8b949e;--accent: #58a6ff;--accent-dim: #1f3a5f;--success: #3fb950;--danger: #f85149;--warning: #d29922;--radius: 8px;--gap: 16px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.6;min-height:100dvh}h2{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:12px}label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:4px}input[type=text],input[type=number],select,textarea{width:100%;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:7px 10px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s}input[type=text]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:var(--accent)}select{cursor:pointer}textarea{resize:vertical;min-height:60px}input[type=color]{width:36px;height:36px;padding:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-shrink:0}button{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-family:inherit;font-weight:500;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;white-space:nowrap}button:active{opacity:.75}button:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#000;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:#79b8ff;border-color:#79b8ff}.btn-secondary{background:var(--surface-2);color:var(--text);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-danger{background:transparent;color:var(--danger);border-color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}#app-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:var(--gap);padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border)}#app-header h1{font-size:16px;font-weight:700;letter-spacing:.04em;flex:1}#dirty-badge{font-size:11px;padding:2px 8px;border-radius:20px;background:var(--warning);color:#000;font-weight:600}main{max-width:1100px;margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:28px}#loading{display:flex;align-items:center;justify-content:center;min-height:100dvh;color:var(--text-muted);font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}#connection .fields{display:flex;gap:var(--gap);flex-wrap:wrap}#connection .field{flex:1;min-width:160px}#global-leds .fields{display:flex;gap:var(--gap);align-items:flex-end;flex-wrap:wrap}#global-leds .field{flex:1;min-width:120px}.color-row{display:flex;align-items:center;gap:8px}.color-hex{font-size:12px;color:var(--text-muted);font-family:monospace}.led-preview{margin-top:12px;height:8px;border-radius:4px}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--gap)}.knob-card,.button-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.knob-card .card-title,.button-card .card-title{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}.card-index{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--accent-dim);color:var(--accent);font-size:11px;font-weight:700}.led-override-toggle{font-size:11px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none;background:none;border:none;padding:0;font-family:inherit}.led-override-toggle:hover{color:var(--accent)}.led-override-panel{display:none;flex-direction:column;gap:8px;padding-top:8px;border-top:1px solid var(--border)}.led-override-panel.open{display:flex}.led-override-panel .color-row{flex-wrap:wrap;gap:6px}#presets .save-row{display:flex;gap:var(--gap);align-items:flex-end;flex-wrap:wrap;margin-bottom:16px}#presets .save-row .field{flex:1;min-width:180px}.preset-list{display:flex;flex-direction:column;gap:8px}.preset-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius)}.preset-item .preset-name{flex:1;font-weight:500;font-size:13px}.preset-item .preset-actions{display:flex;gap:6px}#toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none}.toast{padding:10px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;color:#fff;animation:toast-in .2s ease,toast-out .3s ease 2.7s forwards;pointer-events:auto}.toast.success{background:var(--success);color:#000}.toast.error{background:var(--danger)}.toast.info{background:var(--accent);color:#000}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes toast-out{0%{opacity:1}to{opacity:0}}.empty{text-align:center;padding:24px;color:var(--text-muted);font-size:13px}@media(max-width:540px){main{padding:16px}#app-header{padding:10px 16px}}#knobs h2{display:flex;align-items:center;justify-content:space-between}.btn-refresh-apps{padding:3px 10px;font-size:11px;font-weight:500;letter-spacing:normal;text-transform:none}.label-hint{font-size:.75rem;color:var(--muted, #8b949e);font-weight:400} diff --git a/src/turnup/ui/static/assets/index-Dcy9vL-q.js b/src/turnup/ui/static/assets/index-Dcy9vL-q.js deleted file mode 100644 index 4a27c50..0000000 --- a/src/turnup/ui/static/assets/index-Dcy9vL-q.js +++ /dev/null @@ -1,9 +0,0 @@ -(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const U of document.querySelectorAll('link[rel="modulepreload"]'))v(U);new MutationObserver(U=>{for(const G of U)if(G.type==="childList")for(const J of G.addedNodes)J.tagName==="LINK"&&J.rel==="modulepreload"&&v(J)}).observe(document,{childList:!0,subtree:!0});function H(U){const G={};return U.integrity&&(G.integrity=U.integrity),U.referrerPolicy&&(G.referrerPolicy=U.referrerPolicy),U.crossOrigin==="use-credentials"?G.credentials="include":U.crossOrigin==="anonymous"?G.credentials="omit":G.credentials="same-origin",G}function v(U){if(U.ep)return;U.ep=!0;const G=H(U);fetch(U.href,G)}})();var fi={exports:{}},ze={};var Sv;function Im(){if(Sv)return ze;Sv=1;var g=Symbol.for("react.transitional.element"),p=Symbol.for("react.fragment");function H(v,U,G){var J=null;if(G!==void 0&&(J=""+G),U.key!==void 0&&(J=""+U.key),"key"in U){G={};for(var ml in U)ml!=="key"&&(G[ml]=U[ml])}else G=U;return U=G.ref,{$$typeof:g,type:v,key:J,ref:U!==void 0?U:null,props:G}}return ze.Fragment=p,ze.jsx=H,ze.jsxs=H,ze}var bv;function Pm(){return bv||(bv=1,fi.exports=Im()),fi.exports}var _=Pm(),ii={exports:{}},X={};var zv;function ly(){if(zv)return X;zv=1;var g=Symbol.for("react.transitional.element"),p=Symbol.for("react.portal"),H=Symbol.for("react.fragment"),v=Symbol.for("react.strict_mode"),U=Symbol.for("react.profiler"),G=Symbol.for("react.consumer"),J=Symbol.for("react.context"),ml=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),S=Symbol.for("react.memo"),Q=Symbol.for("react.lazy"),O=Symbol.for("react.activity"),Z=Symbol.iterator;function Gl(d){return d===null||typeof d!="object"?null:(d=Z&&d[Z]||d["@@iterator"],typeof d=="function"?d:null)}var Dl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ol=Object.assign,zt={};function Xl(d,A,D){this.props=d,this.context=A,this.refs=zt,this.updater=D||Dl}Xl.prototype.isReactComponent={},Xl.prototype.setState=function(d,A){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,A,"setState")},Xl.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function st(){}st.prototype=Xl.prototype;function Y(d,A,D){this.props=d,this.context=A,this.refs=zt,this.updater=D||Dl}var vl=Y.prototype=new st;vl.constructor=Y,Ol(vl,Xl.prototype),vl.isPureReactComponent=!0;var Ul=Array.isArray;function xl(){}var I={H:null,A:null,T:null,S:null},Vl=Object.prototype.hasOwnProperty;function pt(d,A,D){var j=D.ref;return{$$typeof:g,type:d,key:A,ref:j!==void 0?j:null,props:D}}function Qa(d,A){return pt(d.type,A,d.props)}function Ot(d){return typeof d=="object"&&d!==null&&d.$$typeof===g}function Kl(d){var A={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(D){return A[D]})}var Ta=/\/+/g;function jt(d,A){return typeof d=="object"&&d!==null&&d.key!=null?Kl(""+d.key):A.toString(36)}function Tt(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(xl,xl):(d.status="pending",d.then(function(A){d.status==="pending"&&(d.status="fulfilled",d.value=A)},function(A){d.status==="pending"&&(d.status="rejected",d.reason=A)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function z(d,A,D,j,L){var w=typeof d;(w==="undefined"||w==="boolean")&&(d=null);var ul=!1;if(d===null)ul=!0;else switch(w){case"bigint":case"string":case"number":ul=!0;break;case"object":switch(d.$$typeof){case g:case p:ul=!0;break;case Q:return ul=d._init,z(ul(d._payload),A,D,j,L)}}if(ul)return L=L(d),ul=j===""?"."+jt(d,0):j,Ul(L)?(D="",ul!=null&&(D=ul.replace(Ta,"$&/")+"/"),z(L,A,D,"",function(Mu){return Mu})):L!=null&&(Ot(L)&&(L=Qa(L,D+(L.key==null||d&&d.key===L.key?"":(""+L.key).replace(Ta,"$&/")+"/")+ul)),A.push(L)),1;ul=0;var Ql=j===""?".":j+":";if(Ul(d))for(var bl=0;bl>>1,dl=z[cl];if(0>>1;clU(D,x))jU(L,D)?(z[cl]=L,z[j]=x,cl=j):(z[cl]=D,z[A]=x,cl=A);else if(jU(L,x))z[cl]=L,z[j]=x,cl=j;else break l}}return M}function U(z,M){var x=z.sortIndex-M.sortIndex;return x!==0?x:z.id-M.id}if(g.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var G=performance;g.unstable_now=function(){return G.now()}}else{var J=Date,ml=J.now();g.unstable_now=function(){return J.now()-ml}}var R=[],S=[],Q=1,O=null,Z=3,Gl=!1,Dl=!1,Ol=!1,zt=!1,Xl=typeof setTimeout=="function"?setTimeout:null,st=typeof clearTimeout=="function"?clearTimeout:null,Y=typeof setImmediate<"u"?setImmediate:null;function vl(z){for(var M=H(S);M!==null;){if(M.callback===null)v(S);else if(M.startTime<=z)v(S),M.sortIndex=M.expirationTime,p(R,M);else break;M=H(S)}}function Ul(z){if(Ol=!1,vl(z),!Dl)if(H(R)!==null)Dl=!0,xl||(xl=!0,Kl());else{var M=H(S);M!==null&&Tt(Ul,M.startTime-z)}}var xl=!1,I=-1,Vl=5,pt=-1;function Qa(){return zt?!0:!(g.unstable_now()-ptz&&Qa());){var cl=O.callback;if(typeof cl=="function"){O.callback=null,Z=O.priorityLevel;var dl=cl(O.expirationTime<=z);if(z=g.unstable_now(),typeof dl=="function"){O.callback=dl,vl(z),M=!0;break t}O===H(R)&&v(R),vl(z)}else v(R);O=H(R)}if(O!==null)M=!0;else{var d=H(S);d!==null&&Tt(Ul,d.startTime-z),M=!1}}break l}finally{O=null,Z=x,Gl=!1}M=void 0}}finally{M?Kl():xl=!1}}}var Kl;if(typeof Y=="function")Kl=function(){Y(Ot)};else if(typeof MessageChannel<"u"){var Ta=new MessageChannel,jt=Ta.port2;Ta.port1.onmessage=Ot,Kl=function(){jt.postMessage(null)}}else Kl=function(){Xl(Ot,0)};function Tt(z,M){I=Xl(function(){z(g.unstable_now())},M)}g.unstable_IdlePriority=5,g.unstable_ImmediatePriority=1,g.unstable_LowPriority=4,g.unstable_NormalPriority=3,g.unstable_Profiling=null,g.unstable_UserBlockingPriority=2,g.unstable_cancelCallback=function(z){z.callback=null},g.unstable_forceFrameRate=function(z){0>z||125cl?(z.sortIndex=x,p(S,z),H(R)===null&&z===H(S)&&(Ol?(st(I),I=-1):Ol=!0,Tt(Ul,x-cl))):(z.sortIndex=dl,p(R,z),Dl||Gl||(Dl=!0,xl||(xl=!0,Kl()))),z},g.unstable_shouldYield=Qa,g.unstable_wrapCallback=function(z){var M=Z;return function(){var x=Z;Z=M;try{return z.apply(this,arguments)}finally{Z=x}}}})(oi)),oi}var Av;function ay(){return Av||(Av=1,di.exports=ty()),di.exports}var vi={exports:{}},Yl={};var _v;function uy(){if(_v)return Yl;_v=1;var g=hi();function p(R){var S="https://react.dev/errors/"+R;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(g)}catch(p){console.error(p)}}return g(),vi.exports=uy(),vi.exports}var Ov;function ny(){if(Ov)return Te;Ov=1;var g=ay(),p=hi(),H=ey();function v(l){var t="https://react.dev/errors/"+l;if(1dl||(l.current=cl[dl],cl[dl]=null,dl--)}function D(l,t){dl++,cl[dl]=l.current,l.current=t}var j=d(null),L=d(null),w=d(null),ul=d(null);function Ql(l,t){switch(D(w,t),D(L,l),D(j,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Qo(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Qo(t),l=Zo(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}A(j),D(j,l)}function bl(){A(j),A(L),A(w)}function Mu(l){l.memoizedState!==null&&D(ul,l);var t=j.current,a=Zo(t,l.type);t!==a&&(D(L,l),D(j,a))}function Ee(l){L.current===l&&(A(j),A(L)),ul.current===l&&(A(ul),ge._currentValue=x)}var Zn,gi;function Ea(l){if(Zn===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Zn=t&&t[1]||"",gi=-1)":-1e||i[u]!==y[e]){var b=` -`+i[u].replace(" at new "," at ");return l.displayName&&b.includes("")&&(b=b.replace("",l.displayName)),b}while(1<=u&&0<=e);break}}}finally{Ln=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?Ea(a):""}function Uv(l,t){switch(l.tag){case 26:case 27:case 5:return Ea(l.type);case 16:return Ea("Lazy");case 13:return l.child!==t&&t!==null?Ea("Suspense Fallback"):Ea("Suspense");case 19:return Ea("SuspenseList");case 0:case 15:return Vn(l.type,!1);case 11:return Vn(l.type.render,!1);case 1:return Vn(l.type,!0);case 31:return Ea("Activity");default:return""}}function ri(l){try{var t="",a=null;do t+=Uv(l,a),a=l,l=l.return;while(l);return t}catch(u){return` -Error generating stack: `+u.message+` -`+u.stack}}var Kn=Object.prototype.hasOwnProperty,Jn=g.unstable_scheduleCallback,wn=g.unstable_cancelCallback,Nv=g.unstable_shouldYield,jv=g.unstable_requestPaint,Pl=g.unstable_now,Cv=g.unstable_getCurrentPriorityLevel,Si=g.unstable_ImmediatePriority,bi=g.unstable_UserBlockingPriority,Ae=g.unstable_NormalPriority,Hv=g.unstable_LowPriority,zi=g.unstable_IdlePriority,Rv=g.log,qv=g.unstable_setDisableYieldValue,Du=null,lt=null;function Ft(l){if(typeof Rv=="function"&&qv(l),lt&&typeof lt.setStrictMode=="function")try{lt.setStrictMode(Du,l)}catch{}}var tt=Math.clz32?Math.clz32:Yv,Bv=Math.log,xv=Math.LN2;function Yv(l){return l>>>=0,l===0?32:31-(Bv(l)/xv|0)|0}var _e=256,pe=262144,Oe=4194304;function Aa(l){var t=l&42;if(t!==0)return t;switch(l&-l){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 l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Me(l,t,a){var u=l.pendingLanes;if(u===0)return 0;var e=0,n=l.suspendedLanes,c=l.pingedLanes;l=l.warmLanes;var f=u&134217727;return f!==0?(u=f&~n,u!==0?e=Aa(u):(c&=f,c!==0?e=Aa(c):a||(a=f&~l,a!==0&&(e=Aa(a))))):(f=u&~n,f!==0?e=Aa(f):c!==0?e=Aa(c):a||(a=u&~l,a!==0&&(e=Aa(a)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,a=t&-t,n>=a||n===32&&(a&4194048)!==0)?t:e}function Uu(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Gv(l,t){switch(l){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 Ti(){var l=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),l}function Wn(l){for(var t=[],a=0;31>a;a++)t.push(l);return t}function Nu(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Xv(l,t,a,u,e,n){var c=l.pendingLanes;l.pendingLanes=a,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=a,l.entangledLanes&=a,l.errorRecoveryDisabledLanes&=a,l.shellSuspendCounter=0;var f=l.entanglements,i=l.expirationTimes,y=l.hiddenUpdates;for(a=c&~a;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Jv=/[\n"\\]/g;function ot(l){return l.replace(Jv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function lc(l,t,a,u,e,n,c,f){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+dt(t)):l.value!==""+dt(t)&&(l.value=""+dt(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?tc(l,c,dt(t)):a!=null?tc(l,c,dt(a)):u!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.name=""+dt(f):l.removeAttribute("name")}function Ri(l,t,a,u,e,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null)){Pn(l);return}a=a!=null?""+dt(a):"",t=t!=null?""+dt(t):a,f||t===l.value||(l.value=t),l.defaultValue=t}u=u??e,u=typeof u!="function"&&typeof u!="symbol"&&!!u,l.checked=f?l.checked:!!u,l.defaultChecked=!!u,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c),Pn(l)}function tc(l,t,a){t==="number"&&Ne(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function wa(l,t,a,u){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),cc=!1;if(Rt)try{var Ru={};Object.defineProperty(Ru,"passive",{get:function(){cc=!0}}),window.addEventListener("test",Ru,Ru),window.removeEventListener("test",Ru,Ru)}catch{cc=!1}var It=null,fc=null,Ce=null;function Qi(){if(Ce)return Ce;var l,t=fc,a=t.length,u,e="value"in It?It.value:It.textContent,n=e.length;for(l=0;l=xu),wi=" ",Wi=!1;function $i(l,t){switch(l){case"keyup":return z0.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fi(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var ka=!1;function E0(l,t){switch(l){case"compositionend":return Fi(t);case"keypress":return t.which!==32?null:(Wi=!0,wi);case"textInput":return l=t.data,l===wi&&Wi?null:l;default:return null}}function A0(l,t){if(ka)return l==="compositionend"||!vc&&$i(l,t)?(l=Qi(),Ce=fc=It=null,ka=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-l};l=u}l:{for(;a;){if(a.nextSibling){a=a.nextSibling;break l}a=a.parentNode}a=void 0}a=es(a)}}function cs(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?cs(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function fs(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Ne(l.document);t instanceof l.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)l=t.contentWindow;else break;t=Ne(l.document)}return t}function hc(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var j0=Rt&&"documentMode"in document&&11>=document.documentMode,Ia=null,gc=null,Qu=null,rc=!1;function is(l,t,a){var u=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;rc||Ia==null||Ia!==Ne(u)||(u=Ia,"selectionStart"in u&&hc(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Qu&&Xu(Qu,u)||(Qu=u,u=On(gc,"onSelect"),0>=c,e-=c,Mt=1<<32-tt(t)+e|a<K?(k=C,C=null):k=C.sibling;var tl=h(o,C,m[K],T);if(tl===null){C===null&&(C=k);break}l&&C&&tl.alternate===null&&t(o,C),s=n(tl,s,K),ll===null?q=tl:ll.sibling=tl,ll=tl,C=k}if(K===m.length)return a(o,C),P&&Bt(o,K),q;if(C===null){for(;KK?(k=C,C=null):k=C.sibling;var za=h(o,C,tl.value,T);if(za===null){C===null&&(C=k);break}l&&C&&za.alternate===null&&t(o,C),s=n(za,s,K),ll===null?q=za:ll.sibling=za,ll=za,C=k}if(tl.done)return a(o,C),P&&Bt(o,K),q;if(C===null){for(;!tl.done;K++,tl=m.next())tl=E(o,tl.value,T),tl!==null&&(s=n(tl,s,K),ll===null?q=tl:ll.sibling=tl,ll=tl);return P&&Bt(o,K),q}for(C=u(C);!tl.done;K++,tl=m.next())tl=r(C,o,K,tl.value,T),tl!==null&&(l&&tl.alternate!==null&&C.delete(tl.key===null?K:tl.key),s=n(tl,s,K),ll===null?q=tl:ll.sibling=tl,ll=tl);return l&&C.forEach(function(km){return t(o,km)}),P&&Bt(o,K),q}function sl(o,s,m,T){if(typeof m=="object"&&m!==null&&m.type===Ol&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case Gl:l:{for(var q=m.key;s!==null;){if(s.key===q){if(q=m.type,q===Ol){if(s.tag===7){a(o,s.sibling),T=e(s,m.props.children),T.return=o,o=T;break l}}else if(s.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===Vl&&Ra(q)===s.type){a(o,s.sibling),T=e(s,m.props),wu(T,m),T.return=o,o=T;break l}a(o,s);break}else t(o,s);s=s.sibling}m.type===Ol?(T=Ua(m.props.children,o.mode,T,m.key),T.return=o,o=T):(T=Ze(m.type,m.key,m.props,null,o.mode,T),wu(T,m),T.return=o,o=T)}return c(o);case Dl:l:{for(q=m.key;s!==null;){if(s.key===q)if(s.tag===4&&s.stateNode.containerInfo===m.containerInfo&&s.stateNode.implementation===m.implementation){a(o,s.sibling),T=e(s,m.children||[]),T.return=o,o=T;break l}else{a(o,s);break}else t(o,s);s=s.sibling}T=_c(m,o.mode,T),T.return=o,o=T}return c(o);case Vl:return m=Ra(m),sl(o,s,m,T)}if(Tt(m))return N(o,s,m,T);if(Kl(m)){if(q=Kl(m),typeof q!="function")throw Error(v(150));return m=q.call(m),B(o,s,m,T)}if(typeof m.then=="function")return sl(o,s,$e(m),T);if(m.$$typeof===Y)return sl(o,s,Ke(o,m),T);Fe(o,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,s!==null&&s.tag===6?(a(o,s.sibling),T=e(s,m),T.return=o,o=T):(a(o,s),T=Ac(m,o.mode,T),T.return=o,o=T),c(o)):a(o,s)}return function(o,s,m,T){try{Ju=0;var q=sl(o,s,m,T);return su=null,q}catch(C){if(C===iu||C===we)throw C;var ll=ut(29,C,null,o.mode);return ll.lanes=T,ll.return=o,ll}}}var Ba=js(!0),Cs=js(!1),ua=!1;function Bc(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function xc(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function ea(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function na(l,t,a){var u=l.updateQueue;if(u===null)return null;if(u=u.shared,(al&2)!==0){var e=u.pending;return e===null?t.next=t:(t.next=e.next,e.next=t),u.pending=t,t=Qe(l),hs(l,null,a),t}return Xe(l,u,t,a),Qe(l)}function Wu(l,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,Ai(l,a)}}function Yc(l,t){var a=l.updateQueue,u=l.alternate;if(u!==null&&(u=u.updateQueue,a===u)){var e=null,n=null;if(a=a.firstBaseUpdate,a!==null){do{var c={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};n===null?e=n=c:n=n.next=c,a=a.next}while(a!==null);n===null?e=n=t:n=n.next=t}else e=n=t;a={baseState:u.baseState,firstBaseUpdate:e,lastBaseUpdate:n,shared:u.shared,callbacks:u.callbacks},l.updateQueue=a;return}l=a.lastBaseUpdate,l===null?a.firstBaseUpdate=t:l.next=t,a.lastBaseUpdate=t}var Gc=!1;function $u(){if(Gc){var l=fu;if(l!==null)throw l}}function Fu(l,t,a,u){Gc=!1;var e=l.updateQueue;ua=!1;var n=e.firstBaseUpdate,c=e.lastBaseUpdate,f=e.shared.pending;if(f!==null){e.shared.pending=null;var i=f,y=i.next;i.next=null,c===null?n=y:c.next=y,c=i;var b=l.alternate;b!==null&&(b=b.updateQueue,f=b.lastBaseUpdate,f!==c&&(f===null?b.firstBaseUpdate=y:f.next=y,b.lastBaseUpdate=i))}if(n!==null){var E=e.baseState;c=0,b=y=i=null,f=n;do{var h=f.lane&-536870913,r=h!==f.lane;if(r?(F&h)===h:(u&h)===h){h!==0&&h===cu&&(Gc=!0),b!==null&&(b=b.next={lane:0,tag:f.tag,payload:f.payload,callback:null,next:null});l:{var N=l,B=f;h=t;var sl=a;switch(B.tag){case 1:if(N=B.payload,typeof N=="function"){E=N.call(sl,E,h);break l}E=N;break l;case 3:N.flags=N.flags&-65537|128;case 0:if(N=B.payload,h=typeof N=="function"?N.call(sl,E,h):N,h==null)break l;E=O({},E,h);break l;case 2:ua=!0}}h=f.callback,h!==null&&(l.flags|=64,r&&(l.flags|=8192),r=e.callbacks,r===null?e.callbacks=[h]:r.push(h))}else r={lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},b===null?(y=b=r,i=E):b=b.next=r,c|=h;if(f=f.next,f===null){if(f=e.shared.pending,f===null)break;r=f,f=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}}while(!0);b===null&&(i=E),e.baseState=i,e.firstBaseUpdate=y,e.lastBaseUpdate=b,n===null&&(e.shared.lanes=0),da|=c,l.lanes=c,l.memoizedState=E}}function Hs(l,t){if(typeof l!="function")throw Error(v(191,l));l.call(t)}function Rs(l,t){var a=l.callbacks;if(a!==null)for(l.callbacks=null,l=0;ln?n:8;var c=z.T,f={};z.T=f,ef(l,!1,t,a);try{var i=e(),y=z.S;if(y!==null&&y(f,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var b=X0(i,u);Pu(l,t,b,it(l))}else Pu(l,t,u,it(l))}catch(E){Pu(l,t,{then:function(){},status:"rejected",reason:E},it())}finally{M.p=n,c!==null&&f.types!==null&&(c.types=f.types),z.T=c}}function J0(){}function af(l,t,a,u){if(l.tag!==5)throw Error(v(476));var e=vd(l).queue;od(l,e,t,x,a===null?J0:function(){return md(l),a(u)})}function vd(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:x,baseState:x,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xt,lastRenderedState:x},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xt,lastRenderedState:a},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function md(l){var t=vd(l);t.next===null&&(t=l.alternate.memoizedState),Pu(l,t.next.queue,{},it())}function uf(){return Rl(ge)}function yd(){return Tl().memoizedState}function hd(){return Tl().memoizedState}function w0(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var a=it();l=ea(a);var u=na(t,l,a);u!==null&&(Il(u,t,a),Wu(u,t,a)),t={cache:Cc()},l.payload=t;return}t=t.return}}function W0(l,t,a){var u=it();a={lane:u,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},cn(l)?rd(t,a):(a=Tc(l,t,a,u),a!==null&&(Il(a,l,u),Sd(a,t,u)))}function gd(l,t,a){var u=it();Pu(l,t,a,u)}function Pu(l,t,a,u){var e={lane:u,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(cn(l))rd(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,f=n(c,a);if(e.hasEagerState=!0,e.eagerState=f,at(f,c))return Xe(l,t,e,0),ol===null&&Ge(),!1}catch{}if(a=Tc(l,t,e,u),a!==null)return Il(a,l,u),Sd(a,t,u),!0}return!1}function ef(l,t,a,u){if(u={lane:2,revertLane:xf(),gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},cn(l)){if(t)throw Error(v(479))}else t=Tc(l,a,u,2),t!==null&&Il(t,l,2)}function cn(l){var t=l.alternate;return l===V||t!==null&&t===V}function rd(l,t){ou=Pe=!0;var a=l.pending;a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t}function Sd(l,t,a){if((a&4194048)!==0){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,Ai(l,a)}}var le={readContext:Rl,use:an,useCallback:rl,useContext:rl,useEffect:rl,useImperativeHandle:rl,useLayoutEffect:rl,useInsertionEffect:rl,useMemo:rl,useReducer:rl,useRef:rl,useState:rl,useDebugValue:rl,useDeferredValue:rl,useTransition:rl,useSyncExternalStore:rl,useId:rl,useHostTransitionStatus:rl,useFormState:rl,useActionState:rl,useOptimistic:rl,useMemoCache:rl,useCacheRefresh:rl};le.useEffectEvent=rl;var bd={readContext:Rl,use:an,useCallback:function(l,t){return Zl().memoizedState=[l,t===void 0?null:t],l},useContext:Rl,useEffect:ad,useImperativeHandle:function(l,t,a){a=a!=null?a.concat([l]):null,en(4194308,4,cd.bind(null,t,l),a)},useLayoutEffect:function(l,t){return en(4194308,4,l,t)},useInsertionEffect:function(l,t){en(4,2,l,t)},useMemo:function(l,t){var a=Zl();t=t===void 0?null:t;var u=l();if(xa){Ft(!0);try{l()}finally{Ft(!1)}}return a.memoizedState=[u,t],u},useReducer:function(l,t,a){var u=Zl();if(a!==void 0){var e=a(t);if(xa){Ft(!0);try{a(t)}finally{Ft(!1)}}}else e=t;return u.memoizedState=u.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},u.queue=l,l=l.dispatch=W0.bind(null,V,l),[u.memoizedState,l]},useRef:function(l){var t=Zl();return l={current:l},t.memoizedState=l},useState:function(l){l=kc(l);var t=l.queue,a=gd.bind(null,V,t);return t.dispatch=a,[l.memoizedState,a]},useDebugValue:lf,useDeferredValue:function(l,t){var a=Zl();return tf(a,l,t)},useTransition:function(){var l=kc(!1);return l=od.bind(null,V,l.queue,!0,!1),Zl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,a){var u=V,e=Zl();if(P){if(a===void 0)throw Error(v(407));a=a()}else{if(a=t(),ol===null)throw Error(v(349));(F&127)!==0||Xs(u,t,a)}e.memoizedState=a;var n={value:a,getSnapshot:t};return e.queue=n,ad(Zs.bind(null,u,n,l),[l]),u.flags|=2048,mu(9,{destroy:void 0},Qs.bind(null,u,n,a,t),null),a},useId:function(){var l=Zl(),t=ol.identifierPrefix;if(P){var a=Dt,u=Mt;a=(u&~(1<<32-tt(u)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ln++,0<\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof u.is=="string"?c.createElement("select",{is:u.is}):c.createElement("select"),u.multiple?n.multiple=!0:u.size&&(n.size=u.size);break;default:n=typeof u.is=="string"?c.createElement(e,{is:u.is}):c.createElement(e)}}n[Cl]=t,n[Jl]=u;l:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)n.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break l;for(;c.sibling===null;){if(c.return===null||c.return===t)break l;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=n;l:switch(Bl(n,e,u),e){case"button":case"input":case"select":case"textarea":u=!!u.autoFocus;break l;case"img":u=!0;break l;default:u=!1}u&&Zt(t)}}return hl(t),bf(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,a),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==u&&Zt(t);else{if(typeof u!="string"&&t.stateNode===null)throw Error(v(166));if(l=w.current,eu(t)){if(l=t.stateNode,a=t.memoizedProps,u=null,e=Hl,e!==null)switch(e.tag){case 27:case 5:u=e.memoizedProps}l[Cl]=t,l=!!(l.nodeValue===a||u!==null&&u.suppressHydrationWarning===!0||Go(l.nodeValue,a)),l||ta(t,!0)}else l=Mn(l).createTextNode(u),l[Cl]=t,t.stateNode=l}return hl(t),null;case 31:if(a=t.memoizedState,l===null||l.memoizedState!==null){if(u=eu(t),a!==null){if(l===null){if(!u)throw Error(v(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(v(557));l[Cl]=t}else Na(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;hl(t),l=!1}else a=Dc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=a),l=!0;if(!l)return t.flags&256?(nt(t),t):(nt(t),null);if((t.flags&128)!==0)throw Error(v(558))}return hl(t),null;case 13:if(u=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=eu(t),u!==null&&u.dehydrated!==null){if(l===null){if(!e)throw Error(v(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(v(317));e[Cl]=t}else Na(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;hl(t),e=!1}else e=Dc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),e=!0;if(!e)return t.flags&256?(nt(t),t):(nt(t),null)}return nt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=u!==null,l=l!==null&&l.memoizedState!==null,a&&(u=t.child,e=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(e=u.alternate.memoizedState.cachePool.pool),n=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(n=u.memoizedState.cachePool.pool),n!==e&&(u.flags|=2048)),a!==l&&a&&(t.child.flags|=8192),vn(t,t.updateQueue),hl(t),null);case 4:return bl(),l===null&&Qf(t.stateNode.containerInfo),hl(t),null;case 10:return Yt(t.type),hl(t),null;case 19:if(A(zl),u=t.memoizedState,u===null)return hl(t),null;if(e=(t.flags&128)!==0,n=u.rendering,n===null)if(e)ae(u,!1);else{if(Sl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=Ie(l),n!==null){for(t.flags|=128,ae(u,!1),l=n.updateQueue,t.updateQueue=l,vn(t,l),t.subtreeFlags=0,l=a,a=t.child;a!==null;)gs(a,l),a=a.sibling;return D(zl,zl.current&1|2),P&&Bt(t,u.treeForkCount),t.child}l=l.sibling}u.tail!==null&&Pl()>rn&&(t.flags|=128,e=!0,ae(u,!1),t.lanes=4194304)}else{if(!e)if(l=Ie(n),l!==null){if(t.flags|=128,e=!0,l=l.updateQueue,t.updateQueue=l,vn(t,l),ae(u,!0),u.tail===null&&u.tailMode==="hidden"&&!n.alternate&&!P)return hl(t),null}else 2*Pl()-u.renderingStartTime>rn&&a!==536870912&&(t.flags|=128,e=!0,ae(u,!1),t.lanes=4194304);u.isBackwards?(n.sibling=t.child,t.child=n):(l=u.last,l!==null?l.sibling=n:t.child=n,u.last=n)}return u.tail!==null?(l=u.tail,u.rendering=l,u.tail=l.sibling,u.renderingStartTime=Pl(),l.sibling=null,a=zl.current,D(zl,e?a&1|2:a&1),P&&Bt(t,u.treeForkCount),l):(hl(t),null);case 22:case 23:return nt(t),Qc(),u=t.memoizedState!==null,l!==null?l.memoizedState!==null!==u&&(t.flags|=8192):u&&(t.flags|=8192),u?(a&536870912)!==0&&(t.flags&128)===0&&(hl(t),t.subtreeFlags&6&&(t.flags|=8192)):hl(t),a=t.updateQueue,a!==null&&vn(t,a.retryQueue),a=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(a=l.memoizedState.cachePool.pool),u=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(u=t.memoizedState.cachePool.pool),u!==a&&(t.flags|=2048),l!==null&&A(Ha),null;case 24:return a=null,l!==null&&(a=l.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Yt(El),hl(t),null;case 25:return null;case 30:return null}throw Error(v(156,t.tag))}function P0(l,t){switch(Oc(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Yt(El),bl(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return Ee(t),null;case 31:if(t.memoizedState!==null){if(nt(t),t.alternate===null)throw Error(v(340));Na()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(nt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(v(340));Na()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return A(zl),null;case 4:return bl(),null;case 10:return Yt(t.type),null;case 22:case 23:return nt(t),Qc(),l!==null&&A(Ha),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Yt(El),null;case 25:return null;default:return null}}function Ld(l,t){switch(Oc(t),t.tag){case 3:Yt(El),bl();break;case 26:case 27:case 5:Ee(t);break;case 4:bl();break;case 31:t.memoizedState!==null&&nt(t);break;case 13:nt(t);break;case 19:A(zl);break;case 10:Yt(t.type);break;case 22:case 23:nt(t),Qc(),l!==null&&A(Ha);break;case 24:Yt(El)}}function ue(l,t){try{var a=t.updateQueue,u=a!==null?a.lastEffect:null;if(u!==null){var e=u.next;a=e;do{if((a.tag&l)===l){u=void 0;var n=a.create,c=a.inst;u=n(),c.destroy=u}a=a.next}while(a!==e)}}catch(f){nl(t,t.return,f)}}function ia(l,t,a){try{var u=t.updateQueue,e=u!==null?u.lastEffect:null;if(e!==null){var n=e.next;u=n;do{if((u.tag&l)===l){var c=u.inst,f=c.destroy;if(f!==void 0){c.destroy=void 0,e=t;var i=a,y=f;try{y()}catch(b){nl(e,i,b)}}}u=u.next}while(u!==n)}}catch(b){nl(t,t.return,b)}}function Vd(l){var t=l.updateQueue;if(t!==null){var a=l.stateNode;try{Rs(t,a)}catch(u){nl(l,l.return,u)}}}function Kd(l,t,a){a.props=Ya(l.type,l.memoizedProps),a.state=l.memoizedState;try{a.componentWillUnmount()}catch(u){nl(l,t,u)}}function ee(l,t){try{var a=l.ref;if(a!==null){switch(l.tag){case 26:case 27:case 5:var u=l.stateNode;break;case 30:u=l.stateNode;break;default:u=l.stateNode}typeof a=="function"?l.refCleanup=a(u):a.current=u}}catch(e){nl(l,t,e)}}function Ut(l,t){var a=l.ref,u=l.refCleanup;if(a!==null)if(typeof u=="function")try{u()}catch(e){nl(l,t,e)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(e){nl(l,t,e)}else a.current=null}function Jd(l){var t=l.type,a=l.memoizedProps,u=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&u.focus();break l;case"img":a.src?u.src=a.src:a.srcSet&&(u.srcset=a.srcSet)}}catch(e){nl(l,l.return,e)}}function zf(l,t,a){try{var u=l.stateNode;Tm(u,l.type,a,t),u[Jl]=t}catch(e){nl(l,l.return,e)}}function wd(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&ha(l.type)||l.tag===4}function Tf(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||wd(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&ha(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ef(l,t,a){var u=l.tag;if(u===5||u===6)l=l.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(l,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(l),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=Ht));else if(u!==4&&(u===27&&ha(l.type)&&(a=l.stateNode,t=null),l=l.child,l!==null))for(Ef(l,t,a),l=l.sibling;l!==null;)Ef(l,t,a),l=l.sibling}function mn(l,t,a){var u=l.tag;if(u===5||u===6)l=l.stateNode,t?a.insertBefore(l,t):a.appendChild(l);else if(u!==4&&(u===27&&ha(l.type)&&(a=l.stateNode),l=l.child,l!==null))for(mn(l,t,a),l=l.sibling;l!==null;)mn(l,t,a),l=l.sibling}function Wd(l){var t=l.stateNode,a=l.memoizedProps;try{for(var u=l.type,e=t.attributes;e.length;)t.removeAttributeNode(e[0]);Bl(t,u,a),t[Cl]=l,t[Jl]=a}catch(n){nl(l,l.return,n)}}var Lt=!1,pl=!1,Af=!1,$d=typeof WeakSet=="function"?WeakSet:Set,jl=null;function lm(l,t){if(l=l.containerInfo,Vf=Rn,l=fs(l),hc(l)){if("selectionStart"in l)var a={start:l.selectionStart,end:l.selectionEnd};else l:{a=(a=l.ownerDocument)&&a.defaultView||window;var u=a.getSelection&&a.getSelection();if(u&&u.rangeCount!==0){a=u.anchorNode;var e=u.anchorOffset,n=u.focusNode;u=u.focusOffset;try{a.nodeType,n.nodeType}catch{a=null;break l}var c=0,f=-1,i=-1,y=0,b=0,E=l,h=null;t:for(;;){for(var r;E!==a||e!==0&&E.nodeType!==3||(f=c+e),E!==n||u!==0&&E.nodeType!==3||(i=c+u),E.nodeType===3&&(c+=E.nodeValue.length),(r=E.firstChild)!==null;)h=E,E=r;for(;;){if(E===l)break t;if(h===a&&++y===e&&(f=c),h===n&&++b===u&&(i=c),(r=E.nextSibling)!==null)break;E=h,h=E.parentNode}E=r}a=f===-1||i===-1?null:{start:f,end:i}}else a=null}a=a||{start:0,end:0}}else a=null;for(Kf={focusedElem:l,selectionRange:a},Rn=!1,jl=t;jl!==null;)if(t=jl,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,jl=l;else for(;jl!==null;){switch(t=jl,n=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(a=0;a title"))),Bl(n,u,a),n[Cl]=l,Nl(n),u=n;break l;case"link":var c=av("link","href",e).get(u+(a.href||""));if(c){for(var f=0;fsl&&(c=sl,sl=B,B=c);var o=ns(f,B),s=ns(f,sl);if(o&&s&&(r.rangeCount!==1||r.anchorNode!==o.node||r.anchorOffset!==o.offset||r.focusNode!==s.node||r.focusOffset!==s.offset)){var m=E.createRange();m.setStart(o.node,o.offset),r.removeAllRanges(),B>sl?(r.addRange(m),r.extend(s.node,s.offset)):(m.setEnd(s.node,s.offset),r.addRange(m))}}}}for(E=[],r=f;r=r.parentNode;)r.nodeType===1&&E.push({element:r,left:r.scrollLeft,top:r.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fa?32:a,z.T=null,a=Nf,Nf=null;var n=va,c=Wt;if(Ml=0,Su=va=null,Wt=0,(al&6)!==0)throw Error(v(331));var f=al;if(al|=4,co(n.current),uo(n,n.current,c,a),al=f,de(0,!1),lt&&typeof lt.onPostCommitFiberRoot=="function")try{lt.onPostCommitFiberRoot(Du,n)}catch{}return!0}finally{M.p=e,z.T=u,po(l,t)}}function Mo(l,t,a){t=mt(a,t),t=sf(l.stateNode,t,2),l=na(l,t,2),l!==null&&(Nu(l,2),Nt(l))}function nl(l,t,a){if(l.tag===3)Mo(l,l,a);else for(;t!==null;){if(t.tag===3){Mo(t,l,a);break}else if(t.tag===1){var u=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(oa===null||!oa.has(u))){l=mt(a,l),a=Md(2),u=na(t,a,2),u!==null&&(Dd(a,u,t,l),Nu(u,2),Nt(u));break}}t=t.return}}function Rf(l,t,a){var u=l.pingCache;if(u===null){u=l.pingCache=new um;var e=new Set;u.set(t,e)}else e=u.get(t),e===void 0&&(e=new Set,u.set(t,e));e.has(a)||(Of=!0,e.add(a),l=im.bind(null,l,t,a),t.then(l,l))}function im(l,t,a){var u=l.pingCache;u!==null&&u.delete(t),l.pingedLanes|=l.suspendedLanes&a,l.warmLanes&=~a,ol===l&&(F&a)===a&&(Sl===4||Sl===3&&(F&62914560)===F&&300>Pl()-gn?(al&2)===0&&bu(l,0):Mf|=a,ru===F&&(ru=0)),Nt(l)}function Do(l,t){t===0&&(t=Ti()),l=Da(l,t),l!==null&&(Nu(l,t),Nt(l))}function sm(l){var t=l.memoizedState,a=0;t!==null&&(a=t.retryLane),Do(l,a)}function dm(l,t){var a=0;switch(l.tag){case 31:case 13:var u=l.stateNode,e=l.memoizedState;e!==null&&(a=e.retryLane);break;case 19:u=l.stateNode;break;case 22:u=l.stateNode._retryCache;break;default:throw Error(v(314))}u!==null&&u.delete(t),Do(l,a)}function om(l,t){return Jn(l,t)}var An=null,Tu=null,qf=!1,_n=!1,Bf=!1,ya=0;function Nt(l){l!==Tu&&l.next===null&&(Tu===null?An=Tu=l:Tu=Tu.next=l),_n=!0,qf||(qf=!0,mm())}function de(l,t){if(!Bf&&_n){Bf=!0;do for(var a=!1,u=An;u!==null;){if(l!==0){var e=u.pendingLanes;if(e===0)var n=0;else{var c=u.suspendedLanes,f=u.pingedLanes;n=(1<<31-tt(42|l)+1)-1,n&=e&~(c&~f),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(a=!0,Co(u,n))}else n=F,n=Me(u,u===ol?n:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(n&3)===0||Uu(u,n)||(a=!0,Co(u,n));u=u.next}while(a);Bf=!1}}function vm(){Uo()}function Uo(){_n=qf=!1;var l=0;ya!==0&&Am()&&(l=ya);for(var t=Pl(),a=null,u=An;u!==null;){var e=u.next,n=No(u,t);n===0?(u.next=null,a===null?An=e:a.next=e,e===null&&(Tu=a)):(a=u,(l!==0||(n&3)!==0)&&(_n=!0)),u=e}Ml!==0&&Ml!==5||de(l),ya!==0&&(ya=0)}function No(l,t){for(var a=l.suspendedLanes,u=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0f)break;var b=i.transferSize,E=i.initiatorType;b&&Xo(E)&&(i=i.responseEnd,c+=b*(i"u"?null:document;function Io(l,t,a){var u=Eu;if(u&&typeof t=="string"&&t){var e=ot(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof a=="string"&&(e+='[crossorigin="'+a+'"]'),ko.has(e)||(ko.add(e),l={rel:l,crossOrigin:a,href:t},u.querySelector(e)===null&&(t=u.createElement("link"),Bl(t,"link",l),Nl(t),u.head.appendChild(t)))}}function Cm(l){$t.D(l),Io("dns-prefetch",l,null)}function Hm(l,t){$t.C(l,t),Io("preconnect",l,t)}function Rm(l,t,a){$t.L(l,t,a);var u=Eu;if(u&&l&&t){var e='link[rel="preload"][as="'+ot(t)+'"]';t==="image"&&a&&a.imageSrcSet?(e+='[imagesrcset="'+ot(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(e+='[imagesizes="'+ot(a.imageSizes)+'"]')):e+='[href="'+ot(l)+'"]';var n=e;switch(t){case"style":n=Au(l);break;case"script":n=_u(l)}bt.has(n)||(l=O({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:l,as:t},a),bt.set(n,l),u.querySelector(e)!==null||t==="style"&&u.querySelector(ye(n))||t==="script"&&u.querySelector(he(n))||(t=u.createElement("link"),Bl(t,"link",l),Nl(t),u.head.appendChild(t)))}}function qm(l,t){$t.m(l,t);var a=Eu;if(a&&l){var u=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+ot(u)+'"][href="'+ot(l)+'"]',n=e;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=_u(l)}if(!bt.has(n)&&(l=O({rel:"modulepreload",href:l},t),bt.set(n,l),a.querySelector(e)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(he(n)))return}u=a.createElement("link"),Bl(u,"link",l),Nl(u),a.head.appendChild(u)}}}function Bm(l,t,a){$t.S(l,t,a);var u=Eu;if(u&&l){var e=Ka(u).hoistableStyles,n=Au(l);t=t||"default";var c=e.get(n);if(!c){var f={loading:0,preload:null};if(c=u.querySelector(ye(n)))f.loading=5;else{l=O({rel:"stylesheet",href:l,"data-precedence":t},a),(a=bt.get(n))&&If(l,a);var i=c=u.createElement("link");Nl(i),Bl(i,"link",l),i._p=new Promise(function(y,b){i.onload=y,i.onerror=b}),i.addEventListener("load",function(){f.loading|=1}),i.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Un(c,t,u)}c={type:"stylesheet",instance:c,count:1,state:f},e.set(n,c)}}}function xm(l,t){$t.X(l,t);var a=Eu;if(a&&l){var u=Ka(a).hoistableScripts,e=_u(l),n=u.get(e);n||(n=a.querySelector(he(e)),n||(l=O({src:l,async:!0},t),(t=bt.get(e))&&Pf(l,t),n=a.createElement("script"),Nl(n),Bl(n,"link",l),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},u.set(e,n))}}function Ym(l,t){$t.M(l,t);var a=Eu;if(a&&l){var u=Ka(a).hoistableScripts,e=_u(l),n=u.get(e);n||(n=a.querySelector(he(e)),n||(l=O({src:l,async:!0,type:"module"},t),(t=bt.get(e))&&Pf(l,t),n=a.createElement("script"),Nl(n),Bl(n,"link",l),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},u.set(e,n))}}function Po(l,t,a,u){var e=(e=w.current)?Dn(e):null;if(!e)throw Error(v(446));switch(l){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Au(a.href),a=Ka(e).hoistableStyles,u=a.get(t),u||(u={type:"style",instance:null,count:0,state:null},a.set(t,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){l=Au(a.href);var n=Ka(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(ye(l)))&&!n._p&&(c.instance=n,c.state.loading=5),bt.has(l)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},bt.set(l,a),n||Gm(e,l,a,c.state))),t&&u===null)throw Error(v(528,""));return c}if(t&&u!==null)throw Error(v(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=_u(a),a=Ka(e).hoistableScripts,u=a.get(t),u||(u={type:"script",instance:null,count:0,state:null},a.set(t,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(v(444,l))}}function Au(l){return'href="'+ot(l)+'"'}function ye(l){return'link[rel="stylesheet"]['+l+"]"}function lv(l){return O({},l,{"data-precedence":l.precedence,precedence:null})}function Gm(l,t,a,u){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?u.loading=1:(t=l.createElement("link"),u.preload=t,t.addEventListener("load",function(){return u.loading|=1}),t.addEventListener("error",function(){return u.loading|=2}),Bl(t,"link",a),Nl(t),l.head.appendChild(t))}function _u(l){return'[src="'+ot(l)+'"]'}function he(l){return"script[async]"+l}function tv(l,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var u=l.querySelector('style[data-href~="'+ot(a.href)+'"]');if(u)return t.instance=u,Nl(u),u;var e=O({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return u=(l.ownerDocument||l).createElement("style"),Nl(u),Bl(u,"style",e),Un(u,a.precedence,l),t.instance=u;case"stylesheet":e=Au(a.href);var n=l.querySelector(ye(e));if(n)return t.state.loading|=4,t.instance=n,Nl(n),n;u=lv(a),(e=bt.get(e))&&If(u,e),n=(l.ownerDocument||l).createElement("link"),Nl(n);var c=n;return c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),Bl(n,"link",u),t.state.loading|=4,Un(n,a.precedence,l),t.instance=n;case"script":return n=_u(a.src),(e=l.querySelector(he(n)))?(t.instance=e,Nl(e),e):(u=a,(e=bt.get(n))&&(u=O({},a),Pf(u,e)),l=l.ownerDocument||l,e=l.createElement("script"),Nl(e),Bl(e,"link",u),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(v(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(u=t.instance,t.state.loading|=4,Un(u,a.precedence,l));return t.instance}function Un(l,t,a){for(var u=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=u.length?u[u.length-1]:null,n=e,c=0;c title"):null)}function Xm(l,t,a){if(a===1||t.itemProp!=null)return!1;switch(l){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"?(l=t.disabled,typeof t.precedence=="string"&&l==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 ev(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function Qm(l,t,a,u){if(a.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var e=Au(u.href),n=t.querySelector(ye(e));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=jn.bind(l),t.then(l,l)),a.state.loading|=4,a.instance=n,Nl(n);return}n=t.ownerDocument||t,u=lv(u),(e=bt.get(e))&&If(u,e),n=n.createElement("link"),Nl(n);var c=n;c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),Bl(n,"link",u),a.instance=n}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(l.count++,a=jn.bind(l),t.addEventListener("load",a),t.addEventListener("error",a))}}var li=0;function Zm(l,t){return l.stylesheets&&l.count===0&&Hn(l,l.stylesheets),0li?50:800)+t);return l.unsuspend=a,function(){l.unsuspend=null,clearTimeout(u),clearTimeout(e)}}:null}function jn(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hn(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var Cn=null;function Hn(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,Cn=new Map,t.forEach(Lm,l),Cn=null,jn.call(l))}function Lm(l,t){if(!(t.state.loading&4)){var a=Cn.get(l);if(a)var u=a.get(null);else{a=new Map,Cn.set(l,a);for(var e=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(g)}catch(p){console.error(p)}}return g(),si.exports=ny(),si.exports}var fy=cy();async function Ou(g){if(!g.ok){const p=await g.json().catch(()=>null);throw new Error(p?.detail??`${g.status} ${g.statusText}`)}}async function Dv(){const g=await fetch("/api/config");return await Ou(g),g.json()}async function iy(g){const p=await fetch("/api/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)});await Ou(p)}async function sy(){const g=await fetch("/api/presets");return g.ok?g.json():[]}async function dy(g){const p=await fetch(`/api/presets/${encodeURIComponent(g)}`);return await Ou(p),p.json()}async function oy(g,p){const H=await fetch(`/api/presets/${encodeURIComponent(g)}/save`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)});await Ou(H)}async function vy(g){const p=await fetch(`/api/presets/${encodeURIComponent(g)}/apply`,{method:"POST"});await Ou(p)}async function my(g){const p=await fetch(`/api/presets/${encodeURIComponent(g)}`,{method:"DELETE"});await Ou(p)}function yy({toasts:g,onRemove:p}){return _.jsx("div",{id:"toast-container",children:g.map(H=>_.jsx(hy,{toast:H,onRemove:p},H.id))})}function hy({toast:g,onRemove:p}){return Ll.useEffect(()=>{const H=setTimeout(()=>p(g.id),3100);return()=>clearTimeout(H)},[g.id,p]),_.jsx("div",{className:`toast ${g.type}`,children:g.message})}function gy({config:g,onChange:p}){return _.jsxs("section",{className:"card",id:"connection",children:[_.jsx("h2",{children:"Connection"}),_.jsxs("div",{className:"fields",children:[_.jsxs("div",{className:"field",children:[_.jsx("label",{htmlFor:"port",children:"Serial port"}),_.jsx("input",{type:"text",id:"port",value:g.port,placeholder:"/dev/ttyACM0",onChange:H=>p({port:H.target.value})})]}),_.jsxs("div",{className:"field",children:[_.jsx("label",{htmlFor:"baud",children:"Baud rate"}),_.jsx("input",{type:"number",id:"baud",value:g.baud,onChange:H=>p({baud:parseInt(H.target.value,10)||115200})})]})]})]})}function yi([g,p,H]){return"#"+[g,p,H].map(v=>Math.max(0,Math.min(255,v)).toString(16).padStart(2,"0")).join("")}function ry(g){const p=parseInt(g.replace("#",""),16);return[p>>16&255,p>>8&255,p&255]}function Qn({id:g,label:p,value:H,onChange:v}){const U=yi(H);return _.jsxs("div",{children:[_.jsx("label",{htmlFor:g,children:p}),_.jsxs("div",{className:"color-row",children:[_.jsx("input",{type:"color",id:g,value:U,onChange:G=>v(ry(G.target.value))}),_.jsx("span",{className:"color-hex",children:U})]})]})}function Sy({leds:g,onChange:p}){const H=J=>p({...g,...J}),v=yi(g.low_color),U=yi(g.high_color),G=g.mode==="off"?"#000":g.mode==="static"?U:`linear-gradient(to right, ${v}, ${U})`;return _.jsxs("section",{className:"card",id:"global-leds",children:[_.jsx("h2",{children:"Global LEDs"}),_.jsxs("div",{className:"fields",children:[_.jsxs("div",{className:"field",children:[_.jsx("label",{htmlFor:"led-mode",children:"Mode"}),_.jsxs("select",{id:"led-mode",value:g.mode,onChange:J=>H({mode:J.target.value}),children:[_.jsx("option",{value:"volume",children:"volume — fade low → high"}),_.jsx("option",{value:"static",children:"static — always high color"}),_.jsx("option",{value:"off",children:"off — LEDs disabled"})]})]}),_.jsx("div",{className:"field",style:{opacity:g.mode==="volume"?1:.4},children:_.jsx(Qn,{id:"led-low-color",label:"Low color (0 %)",value:g.low_color,onChange:J=>H({low_color:J})})}),_.jsx("div",{className:"field",children:_.jsx(Qn,{id:"led-high-color",label:"High color (100 %)",value:g.high_color,onChange:J=>H({high_color:J})})})]}),_.jsx("div",{className:"led-preview",style:{background:G}})]})}const by=[{value:"sink_volume",label:"sink_volume — output device"},{value:"source_volume",label:"source_volume — microphone"},{value:"app_volume",label:"app_volume — single app"},{value:"group_volume",label:"group_volume — multiple apps"}],mi={mode:"volume",low_color:[255,0,0],high_color:[0,255,0]};function zy({index:g,knob:p,onChange:H}){const[v,U]=Ll.useState(!!p.led),G=S=>H({...p,...S}),J={mode:p.led?.mode??mi.mode,low_color:p.led?.low_color??mi.low_color,high_color:p.led?.high_color??mi.high_color},ml=S=>G({led:{...J,...S}}),R=()=>{const S=!v;if(U(S),!S){const{led:Q,...O}=p;H(O)}};return _.jsxs("div",{className:"knob-card",children:[_.jsxs("div",{className:"card-title",children:[_.jsx("span",{className:"card-index",children:g}),"Knob ",g]}),_.jsxs("div",{children:[_.jsx("label",{htmlFor:`knob-${g}-action`,children:"Action"}),_.jsx("select",{id:`knob-${g}-action`,value:p.action,onChange:S=>{const Q=S.target.value;G(Q==="group_volume"?{action:Q,targets:p.targets??[],target:void 0}:{action:Q,target:p.target??"default",targets:void 0})},children:by.map(S=>_.jsx("option",{value:S.value,children:S.label},S.value))})]}),p.action==="group_volume"?_.jsxs("div",{children:[_.jsx("label",{htmlFor:`knob-${g}-targets`,children:"Targets (comma-separated)"}),_.jsx("textarea",{id:`knob-${g}-targets`,value:(p.targets??[]).join(", "),placeholder:"spotify, vlc, brave",onChange:S=>G({targets:S.target.value.split(",").map(Q=>Q.trim()).filter(Boolean)})})]}):_.jsxs("div",{children:[_.jsx("label",{htmlFor:`knob-${g}-target`,children:"Target"}),_.jsx("input",{type:"text",id:`knob-${g}-target`,value:p.target??"default",placeholder:"default",onChange:S=>G({target:S.target.value})})]}),_.jsxs("button",{className:"led-override-toggle",onClick:R,children:[_.jsx("span",{children:v?"▾":"▸"}),"LED override"]}),v&&_.jsxs("div",{className:"led-override-panel open",children:[_.jsxs("div",{children:[_.jsx("label",{htmlFor:`knob-${g}-led-mode`,children:"Mode"}),_.jsxs("select",{id:`knob-${g}-led-mode`,value:J.mode,onChange:S=>ml({mode:S.target.value}),children:[_.jsx("option",{value:"volume",children:"volume"}),_.jsx("option",{value:"static",children:"static"}),_.jsx("option",{value:"off",children:"off"})]})]}),_.jsx(Qn,{id:`knob-${g}-led-low`,label:"Low color",value:J.low_color,onChange:S=>ml({low_color:S})}),_.jsx(Qn,{id:`knob-${g}-led-high`,label:"High color",value:J.high_color,onChange:S=>ml({high_color:S})})]})]})}const Ty=[{value:"mute_sink",label:"mute_sink — toggle output mute"},{value:"mute_source",label:"mute_source — toggle mic mute"},{value:"command",label:"command — run shell command"}];function Ey({index:g,btn:p,onChange:H}){const v=p.action==="command";return _.jsxs("div",{className:"button-card",children:[_.jsxs("div",{className:"card-title",children:[_.jsx("span",{className:"card-index",children:g}),"Button ",g]}),_.jsxs("div",{children:[_.jsx("label",{htmlFor:`btn-${g}-action`,children:"Action"}),_.jsx("select",{id:`btn-${g}-action`,value:p.action,onChange:U=>H({...p,action:U.target.value}),children:Ty.map(U=>_.jsx("option",{value:U.value,children:U.label},U.value))})]}),_.jsxs("div",{children:[_.jsx("label",{htmlFor:`btn-${g}-target`,children:v?"Command":"Target"}),_.jsx("input",{type:"text",id:`btn-${g}-target`,value:p.target,placeholder:v?"playerctl play-pause":"default",onChange:U=>H({...p,target:U.target.value})})]})]})}function Ay({presets:g,config:p,onLoad:H,onRefresh:v,onToast:U}){const[G,J]=Ll.useState(""),ml=async()=>{const O=G.trim();if(!O){U("Enter a preset name first","info");return}try{await oy(O,p),U(`Preset "${O}" saved`),J(""),v()}catch(Z){U(`Save preset failed: ${Z.message}`,"error")}},R=async O=>{try{const Z=await dy(O);H(Z),U(`Preset "${O}" loaded — click Save Config to write to disk`,"info")}catch(Z){U(`Load failed: ${Z.message}`,"error")}},S=async O=>{try{await vy(O);const Z=await Dv();H(Z),U(`Preset "${O}" applied — daemon will reload automatically`)}catch(Z){U(`Apply failed: ${Z.message}`,"error")}},Q=async O=>{if(confirm(`Delete preset "${O}"?`))try{await my(O),U(`Preset "${O}" deleted`),v()}catch(Z){U(`Delete failed: ${Z.message}`,"error")}};return _.jsxs("section",{className:"card",id:"presets",children:[_.jsx("h2",{children:"Presets"}),_.jsxs("div",{className:"save-row",children:[_.jsxs("div",{className:"field",children:[_.jsx("label",{htmlFor:"preset-name",children:"Preset name"}),_.jsx("input",{type:"text",id:"preset-name",value:G,placeholder:"my-setup",onChange:O=>J(O.target.value),onKeyDown:O=>O.key==="Enter"&&void ml()})]}),_.jsx("button",{className:"btn-secondary",onClick:()=>{ml()},children:"Save current as preset"})]}),_.jsx("div",{className:"preset-list",children:g.length===0?_.jsx("p",{className:"empty",children:"No presets saved yet."}):g.map(O=>_.jsxs("div",{className:"preset-item",children:[_.jsx("span",{className:"preset-name",children:O}),_.jsxs("div",{className:"preset-actions",children:[_.jsx("button",{className:"btn-secondary btn-sm",onClick:()=>{R(O)},children:"Load"}),_.jsx("button",{className:"btn-primary btn-sm",onClick:()=>{S(O)},children:"Apply"}),_.jsx("button",{className:"btn-danger btn-sm",onClick:()=>{Q(O)},children:"Delete"})]})]},O))})]})}const _y=["0","1","2","3","4"],py=["0","1","2","3","4"];let Oy=0;function My(){const[g,p]=Ll.useState(null),[H,v]=Ll.useState(null),[U,G]=Ll.useState([]),[J,ml]=Ll.useState([]),[R,S]=Ll.useState(!0),[Q,O]=Ll.useState(!1),Z=Ll.useCallback((Y,vl="success")=>{const Ul=++Oy;ml(xl=>[...xl,{id:Ul,message:Y,type:vl}])},[]),Gl=Ll.useCallback(Y=>{ml(vl=>vl.filter(Ul=>Ul.id!==Y))},[]),Dl=Ll.useCallback(async()=>{try{const Y=await sy();G(Y)}catch{}},[]);Ll.useEffect(()=>{(async()=>{try{const Y=await Dv();p(Y),v(Y)}catch(Y){Z(`Failed to load config: ${Y.message}`,"error")}finally{S(!1)}await Dl()})()},[Z,Dl]);const Ol=g!==null&&JSON.stringify(g)!==JSON.stringify(H),zt=async()=>{if(g){O(!0);try{await iy(g),v(g),Z("Config saved — daemon will reload automatically")}catch(Y){Z(`Save failed: ${Y.message}`,"error")}finally{O(!1)}}},Xl=()=>{H&&p(H)},st=Ll.useCallback((Y,vl)=>{p(Ul=>Ul&&{...Ul,[Y]:vl})},[]);return R?_.jsx("div",{id:"loading",children:_.jsx("p",{children:"Connecting to daemon…"})}):g?_.jsxs(_.Fragment,{children:[_.jsxs("header",{id:"app-header",children:[_.jsx("h1",{children:"TurnUp"}),Ol&&_.jsx("span",{id:"dirty-badge",className:"visible",children:"unsaved changes"}),_.jsx("button",{className:"btn-secondary",onClick:Xl,disabled:!Ol,children:"Revert"}),_.jsx("button",{className:"btn-primary",onClick:()=>{zt()},disabled:!Ol||Q,children:Q?"Saving…":"Save Config"})]}),_.jsxs("main",{children:[_.jsx(gy,{config:g,onChange:Y=>p(vl=>vl&&{...vl,...Y})}),_.jsx(Sy,{leds:g.leds,onChange:Y=>st("leds",Y)}),_.jsxs("section",{className:"card",id:"knobs",children:[_.jsx("h2",{children:"Knobs"}),_.jsx("div",{className:"cards-grid",children:_y.map(Y=>_.jsx(zy,{index:Number(Y),knob:g.knobs[Y]??{action:"sink_volume",target:"default"},onChange:vl=>st("knobs",{...g.knobs,[Y]:vl})},Y))})]}),_.jsxs("section",{className:"card",id:"buttons",children:[_.jsx("h2",{children:"Buttons"}),_.jsx("div",{className:"cards-grid",children:py.map(Y=>_.jsx(Ey,{index:Number(Y),btn:g.buttons[Y]??{action:"mute_sink",target:"default"},onChange:vl=>st("buttons",{...g.buttons,[Y]:vl})},Y))})]}),_.jsx(Ay,{presets:U,config:g,onLoad:Y=>p(Y),onRefresh:Dl,onToast:Z})]}),_.jsx(yy,{toasts:J,onRemove:Gl})]}):_.jsx("div",{id:"loading",children:_.jsxs("p",{children:["Could not reach the API server. Is ",_.jsx("code",{children:"turnup-ui"})," running?"]})})}"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});fy.createRoot(document.getElementById("root")).render(_.jsx(Ll.StrictMode,{children:_.jsx(My,{})})); diff --git a/src/turnup/ui/static/index.html b/src/turnup/ui/static/index.html index 8688328..af6b5b2 100644 --- a/src/turnup/ui/static/index.html +++ b/src/turnup/ui/static/index.html @@ -7,8 +7,8 @@ TurnUp - - + +
diff --git a/ui/src/__tests__/KnobCard.test.tsx b/ui/src/__tests__/KnobCard.test.tsx index 0c52a43..f570a4b 100644 --- a/ui/src/__tests__/KnobCard.test.tsx +++ b/ui/src/__tests__/KnobCard.test.tsx @@ -39,12 +39,12 @@ interface RenderOptions { runningApps?: string[]; sinks?: AudioDevice[]; sources?: AudioDevice[]; - onChange?: ReturnType; + onChange?: (knob: KnobConfig) => void; } function renderCard( overrides: Partial = {}, - { runningApps, sinks, sources, onChange = vi.fn() }: RenderOptions = {}, + { runningApps, sinks, sources, onChange = vi.fn() as (knob: KnobConfig) => void }: RenderOptions = {}, ) { const knob: KnobConfig = { action: 'app_volume', diff --git a/ui/vite.config.ts b/ui/vite.config.ts index c9e0128..4937e73 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -1,4 +1,5 @@ -import { defineConfig } from 'vite' +/// +import { defineConfig } from 'vitest/config' import react from '@vitejs/plugin-react' // https://vite.dev/config/