diff --git a/areno/dashboard/dist/assets/index-CCszC6nN.js b/areno/dashboard/dist/assets/index-CCszC6nN.js new file mode 100644 index 00000000..f7b1753e --- /dev/null +++ b/areno/dashboard/dist/assets/index-CCszC6nN.js @@ -0,0 +1,197 @@ +(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))u(s);new MutationObserver(s=>{for(const h of s)if(h.type==="childList")for(const f of h.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&u(f)}).observe(document,{childList:!0,subtree:!0});function r(s){const h={};return s.integrity&&(h.integrity=s.integrity),s.referrerPolicy&&(h.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?h.credentials="include":s.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function u(s){if(s.ep)return;s.ep=!0;const h=r(s);fetch(s.href,h)}})();function qp(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Ds={exports:{}},wa={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Lm;function y0(){if(Lm)return wa;Lm=1;var n=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function r(u,s,h){var f=null;if(h!==void 0&&(f=""+h),s.key!==void 0&&(f=""+s.key),"key"in s){h={};for(var m in s)m!=="key"&&(h[m]=s[m])}else h=s;return s=h.ref,{$$typeof:n,type:u,key:f,ref:s!==void 0?s:null,props:h}}return wa.Fragment=a,wa.jsx=r,wa.jsxs=r,wa}var Bm;function x0(){return Bm||(Bm=1,Ds.exports=y0()),Ds.exports}var b=x0(),Os={exports:{}},_e={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Um;function b0(){if(Um)return _e;Um=1;var n=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),f=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),S=Symbol.iterator;function k(T){return T===null||typeof T!="object"?null:(T=S&&T[S]||T["@@iterator"],typeof T=="function"?T:null)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,V={};function D(T,q,_){this.props=T,this.context=q,this.refs=V,this.updater=_||C}D.prototype.isReactComponent={},D.prototype.setState=function(T,q){if(typeof T!="object"&&typeof T!="function"&&T!=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,T,q,"setState")},D.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function J(){}J.prototype=D.prototype;function X(T,q,_){this.props=T,this.context=q,this.refs=V,this.updater=_||C}var re=X.prototype=new J;re.constructor=X,H(re,D.prototype),re.isPureReactComponent=!0;var se=Array.isArray;function B(){}var W={H:null,A:null,T:null,S:null},de=Object.prototype.hasOwnProperty;function ce(T,q,_){var ne=_.ref;return{$$typeof:n,type:T,key:q,ref:ne!==void 0?ne:null,props:_}}function R(T,q){return ce(T.type,q,T.props)}function te(T){return typeof T=="object"&&T!==null&&T.$$typeof===n}function le(T){var q={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(_){return q[_]})}var Te=/\/+/g;function $(T,q){return typeof T=="object"&&T!==null&&T.key!=null?le(""+T.key):q.toString(36)}function F(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(B,B):(T.status="pending",T.then(function(q){T.status==="pending"&&(T.status="fulfilled",T.value=q)},function(q){T.status==="pending"&&(T.status="rejected",T.reason=q)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function w(T,q,_,ne,he){var oe=typeof T;(oe==="undefined"||oe==="boolean")&&(T=null);var Me=!1;if(T===null)Me=!0;else switch(oe){case"bigint":case"string":case"number":Me=!0;break;case"object":switch(T.$$typeof){case n:case a:Me=!0;break;case x:return Me=T._init,w(Me(T._payload),q,_,ne,he)}}if(Me)return he=he(T),Me=ne===""?"."+$(T,0):ne,se(he)?(_="",Me!=null&&(_=Me.replace(Te,"$&/")+"/"),w(he,q,_,"",function(zt){return zt})):he!=null&&(te(he)&&(he=R(he,_+(he.key==null||T&&T.key===he.key?"":(""+he.key).replace(Te,"$&/")+"/")+Me)),q.push(he)),1;Me=0;var $e=ne===""?".":ne+":";if(se(T))for(var Ye=0;Ye>>1,E=w[Se];if(0>>1;Ses(_,ie))nes(he,_)?(w[Se]=he,w[ne]=ie,Se=ne):(w[Se]=_,w[q]=ie,Se=q);else if(nes(he,ie))w[Se]=he,w[ne]=ie,Se=ne;else break e}}return Z}function s(w,Z){var ie=w.sortIndex-Z.sortIndex;return ie!==0?ie:w.id-Z.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;n.unstable_now=function(){return h.now()}}else{var f=Date,m=f.now();n.unstable_now=function(){return f.now()-m}}var p=[],d=[],x=1,g=null,S=3,k=!1,C=!1,H=!1,V=!1,D=typeof setTimeout=="function"?setTimeout:null,J=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function re(w){for(var Z=r(d);Z!==null;){if(Z.callback===null)u(d);else if(Z.startTime<=w)u(d),Z.sortIndex=Z.expirationTime,a(p,Z);else break;Z=r(d)}}function se(w){if(H=!1,re(w),!C)if(r(p)!==null)C=!0,B||(B=!0,le());else{var Z=r(d);Z!==null&&F(se,Z.startTime-w)}}var B=!1,W=-1,de=5,ce=-1;function R(){return V?!0:!(n.unstable_now()-cew&&R());){var Se=g.callback;if(typeof Se=="function"){g.callback=null,S=g.priorityLevel;var E=Se(g.expirationTime<=w);if(w=n.unstable_now(),typeof E=="function"){g.callback=E,re(w),Z=!0;break t}g===r(p)&&u(p),re(w)}else u(p);g=r(p)}if(g!==null)Z=!0;else{var T=r(d);T!==null&&F(se,T.startTime-w),Z=!1}}break e}finally{g=null,S=ie,k=!1}Z=void 0}}finally{Z?le():B=!1}}}var le;if(typeof X=="function")le=function(){X(te)};else if(typeof MessageChannel<"u"){var Te=new MessageChannel,$=Te.port2;Te.port1.onmessage=te,le=function(){$.postMessage(null)}}else le=function(){D(te,0)};function F(w,Z){W=D(function(){w(n.unstable_now())},Z)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(w){w.callback=null},n.unstable_forceFrameRate=function(w){0>w||125Se?(w.sortIndex=ie,a(d,w),r(p)===null&&w===r(d)&&(H?(J(W),W=-1):H=!0,F(se,ie-Se))):(w.sortIndex=E,a(p,w),C||k||(C=!0,B||(B=!0,le()))),w},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(w){var Z=S;return function(){var ie=S;S=Z;try{return w.apply(this,arguments)}finally{S=ie}}}})(Bs)),Bs}var Ym;function S0(){return Ym||(Ym=1,Ls.exports=v0()),Ls.exports}var Us={exports:{}},St={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Gm;function k0(){if(Gm)return St;Gm=1;var n=xo();function a(p){var d="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(a){console.error(a)}}return n(),Us.exports=k0(),Us.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Qm;function E0(){if(Qm)return Na;Qm=1;var n=S0(),a=xo(),r=_0();function u(e){var t="https://react.dev/errors/"+e;if(1E||(e.current=Se[E],Se[E]=null,E--)}function _(e,t){E++,Se[E]=e.current,e.current=t}var ne=T(null),he=T(null),oe=T(null),Me=T(null);function $e(e,t){switch(_(oe,t),_(he,e),_(ne,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?am(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=am(t),e=rm(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}q(ne),_(ne,e)}function Ye(){q(ne),q(he),q(oe)}function zt(e){e.memoizedState!==null&&_(Me,e);var t=ne.current,l=rm(t,e.type);t!==l&&(_(he,e),_(ne,l))}function Kt(e){he.current===e&&(q(ne),q(he)),Me.current===e&&(q(Me),Ta._currentValue=ie)}var Gn,bl;function rn(e){if(Gn===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);Gn=t&&t[1]||"",bl=-1)":-1c||A[i]!==j[c]){var U=` +`+A[i].replace(" at new "," at ");return e.displayName&&U.includes("")&&(U=U.replace("",e.displayName)),U}while(1<=i&&0<=c);break}}}finally{Vn=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?rn(l):""}function Ql(e,t){switch(e.tag){case 26:case 27:case 5:return rn(e.type);case 16:return rn("Lazy");case 13:return e.child!==t&&t!==null?rn("Suspense Fallback"):rn("Suspense");case 19:return rn("SuspenseList");case 0:case 15:return Qn(e.type,!1);case 11:return Qn(e.type.render,!1);case 1:return Qn(e.type,!0);case 31:return rn("Activity");default:return""}}function Xn(e){try{var t="",l=null;do t+=Ql(e,l),l=e,e=e.return;while(e);return t}catch(i){return` +Error generating stack: `+i.message+` +`+i.stack}}var fn=Object.prototype.hasOwnProperty,vn=n.unstable_scheduleCallback,vl=n.unstable_cancelCallback,Li=n.unstable_shouldYield,Bi=n.unstable_requestPaint,mt=n.unstable_now,Ui=n.unstable_getCurrentPriorityLevel,Y=n.unstable_ImmediatePriority,P=n.unstable_UserBlockingPriority,xe=n.unstable_NormalPriority,Ce=n.unstable_LowPriority,Be=n.unstable_IdlePriority,vt=n.log,ee=n.unstable_setDisableYieldValue,K=null,ve=null;function me(e){if(typeof vt=="function"&&ee(e),ve&&typeof ve.setStrictMode=="function")try{ve.setStrictMode(K,e)}catch{}}var Ee=Math.clz32?Math.clz32:vu,et=Math.log,Bt=Math.LN2;function vu(e){return e>>>=0,e===0?32:31-(et(e)/Bt|0)|0}var hn=256,Zn=262144,Xl=4194304;function dn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Sl(e,t,l){var i=e.pendingLanes;if(i===0)return 0;var c=0,o=e.suspendedLanes,y=e.pingedLanes;e=e.warmLanes;var v=i&134217727;return v!==0?(i=v&~o,i!==0?c=dn(i):(y&=v,y!==0?c=dn(y):l||(l=v&~e,l!==0&&(c=dn(l))))):(v=i&~o,v!==0?c=dn(v):y!==0?c=dn(y):l||(l=i&~e,l!==0&&(c=dn(l)))),c===0?0:t!==0&&t!==c&&(t&o)===0&&(o=c&-c,l=t&-t,o>=l||o===32&&(l&4194048)!==0)?t:c}function Hi(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function iy(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ho(){var e=Xl;return Xl<<=1,(Xl&62914560)===0&&(Xl=4194304),e}function Su(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function qi(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ay(e,t,l,i,c,o){var y=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var v=e.entanglements,A=e.expirationTimes,j=e.hiddenUpdates;for(l=y&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var fy=/[\n"\\]/g;function Jt(e){return e.replace(fy,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function zu(e,t,l,i,c,o,y,v){e.name="",y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"?e.type=y:e.removeAttribute("type"),t!=null?y==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Ft(t)):e.value!==""+Ft(t)&&(e.value=""+Ft(t)):y!=="submit"&&y!=="reset"||e.removeAttribute("value"),t!=null?Cu(e,y,Ft(t)):l!=null?Cu(e,y,Ft(l)):i!=null&&e.removeAttribute("value"),c==null&&o!=null&&(e.defaultChecked=!!o),c!=null&&(e.checked=c&&typeof c!="function"&&typeof c!="symbol"),v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?e.name=""+Ft(v):e.removeAttribute("name")}function Wo(e,t,l,i,c,o,y,v){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(e.type=o),t!=null||l!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){Tu(e);return}l=l!=null?""+Ft(l):"",t=t!=null?""+Ft(t):l,v||t===e.value||(e.value=t),e.defaultValue=t}i=i??c,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=v?e.checked:!!i,e.defaultChecked=!!i,y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"&&(e.name=y),Tu(e)}function Cu(e,t,l){t==="number"&&Za(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function Il(e,t,l,i){if(e=e.options,t){t={};for(var c=0;c"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Du=!1;if(_n)try{var Qi={};Object.defineProperty(Qi,"passive",{get:function(){Du=!0}}),window.addEventListener("test",Qi,Qi),window.removeEventListener("test",Qi,Qi)}catch{Du=!1}var Fn=null,Ou=null,Fa=null;function rf(){if(Fa)return Fa;var e,t=Ou,l=t.length,i,c="value"in Fn?Fn.value:Fn.textContent,o=c.length;for(e=0;e=Ki),hf=" ",df=!1;function mf(e,t){switch(e){case"keyup":return Hy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function pf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ti=!1;function Yy(e,t){switch(e){case"compositionend":return pf(t);case"keypress":return t.which!==32?null:(df=!0,hf);case"textInput":return e=t.data,e===hf&&df?null:e;default:return null}}function Gy(e,t){if(ti)return e==="compositionend"||!Hu&&mf(e,t)?(e=rf(),Fa=Ou=Fn=null,ti=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=i}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=_f(l)}}function Af(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Af(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Tf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Za(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Za(e.document)}return t}function Gu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var $y=_n&&"documentMode"in document&&11>=document.documentMode,ni=null,Vu=null,Ii=null,Qu=!1;function zf(e,t,l){var i=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Qu||ni==null||ni!==Za(i)||(i=ni,"selectionStart"in i&&Gu(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Ii&&$i(Ii,i)||(Ii=i,i=Yr(Vu,"onSelect"),0>=y,c-=y,mn=1<<32-Ee(t)+c|l<ze?(Oe=ue,ue=null):Oe=ue.sibling;var He=O(M,ue,N[ze],G);if(He===null){ue===null&&(ue=Oe);break}e&&ue&&He.alternate===null&&t(M,ue),z=o(He,z,ze),Ue===null?fe=He:Ue.sibling=He,Ue=He,ue=Oe}if(ze===N.length)return l(M,ue),Re&&An(M,ze),fe;if(ue===null){for(;zeze?(Oe=ue,ue=null):Oe=ue.sibling;var gl=O(M,ue,He.value,G);if(gl===null){ue===null&&(ue=Oe);break}e&&ue&&gl.alternate===null&&t(M,ue),z=o(gl,z,ze),Ue===null?fe=gl:Ue.sibling=gl,Ue=gl,ue=Oe}if(He.done)return l(M,ue),Re&&An(M,ze),fe;if(ue===null){for(;!He.done;ze++,He=N.next())He=Q(M,He.value,G),He!==null&&(z=o(He,z,ze),Ue===null?fe=He:Ue.sibling=He,Ue=He);return Re&&An(M,ze),fe}for(ue=i(ue);!He.done;ze++,He=N.next())He=L(ue,M,ze,He.value,G),He!==null&&(e&&He.alternate!==null&&ue.delete(He.key===null?ze:He.key),z=o(He,z,ze),Ue===null?fe=He:Ue.sibling=He,Ue=He);return e&&ue.forEach(function(g0){return t(M,g0)}),Re&&An(M,ze),fe}function Ze(M,z,N,G){if(typeof N=="object"&&N!==null&&N.type===H&&N.key===null&&(N=N.props.children),typeof N=="object"&&N!==null){switch(N.$$typeof){case k:e:{for(var fe=N.key;z!==null;){if(z.key===fe){if(fe=N.type,fe===H){if(z.tag===7){l(M,z.sibling),G=c(z,N.props.children),G.return=M,M=G;break e}}else if(z.elementType===fe||typeof fe=="object"&&fe!==null&&fe.$$typeof===de&&jl(fe)===z.type){l(M,z.sibling),G=c(z,N.props),la(G,N),G.return=M,M=G;break e}l(M,z);break}else t(M,z);z=z.sibling}N.type===H?(G=zl(N.props.children,M.mode,G,N.key),G.return=M,M=G):(G=ir(N.type,N.key,N.props,null,M.mode,G),la(G,N),G.return=M,M=G)}return y(M);case C:e:{for(fe=N.key;z!==null;){if(z.key===fe)if(z.tag===4&&z.stateNode.containerInfo===N.containerInfo&&z.stateNode.implementation===N.implementation){l(M,z.sibling),G=c(z,N.children||[]),G.return=M,M=G;break e}else{l(M,z);break}else t(M,z);z=z.sibling}G=Iu(N,M.mode,G),G.return=M,M=G}return y(M);case de:return N=jl(N),Ze(M,z,N,G)}if(F(N))return ae(M,z,N,G);if(le(N)){if(fe=le(N),typeof fe!="function")throw Error(u(150));return N=fe.call(N),be(M,z,N,G)}if(typeof N.then=="function")return Ze(M,z,fr(N),G);if(N.$$typeof===X)return Ze(M,z,ur(M,N),G);hr(M,N)}return typeof N=="string"&&N!==""||typeof N=="number"||typeof N=="bigint"?(N=""+N,z!==null&&z.tag===6?(l(M,z.sibling),G=c(z,N),G.return=M,M=G):(l(M,z),G=$u(N,M.mode,G),G.return=M,M=G),y(M)):l(M,z)}return function(M,z,N,G){try{na=0;var fe=Ze(M,z,N,G);return di=null,fe}catch(ue){if(ue===hi||ue===sr)throw ue;var Ue=Ht(29,ue,null,M.mode);return Ue.lanes=G,Ue.return=M,Ue}finally{}}}var Ol=$f(!0),If=$f(!1),Pn=!1;function sc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function oc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function el(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function tl(e,t,l){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,(qe&2)!==0){var c=i.pending;return c===null?t.next=t:(t.next=c.next,c.next=t),i.pending=t,t=lr(e),Of(e,null,l),t}return nr(e,i,t,l),lr(e)}function ia(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,l|=i,t.lanes=l,Yo(e,l)}}function fc(e,t){var l=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,l===i)){var c=null,o=null;if(l=l.firstBaseUpdate,l!==null){do{var y={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};o===null?c=o=y:o=o.next=y,l=l.next}while(l!==null);o===null?c=o=t:o=o.next=t}else c=o=t;l={baseState:i.baseState,firstBaseUpdate:c,lastBaseUpdate:o,shared:i.shared,callbacks:i.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var hc=!1;function aa(){if(hc){var e=fi;if(e!==null)throw e}}function ra(e,t,l,i){hc=!1;var c=e.updateQueue;Pn=!1;var o=c.firstBaseUpdate,y=c.lastBaseUpdate,v=c.shared.pending;if(v!==null){c.shared.pending=null;var A=v,j=A.next;A.next=null,y===null?o=j:y.next=j,y=A;var U=e.alternate;U!==null&&(U=U.updateQueue,v=U.lastBaseUpdate,v!==y&&(v===null?U.firstBaseUpdate=j:v.next=j,U.lastBaseUpdate=A))}if(o!==null){var Q=c.baseState;y=0,U=j=A=null,v=o;do{var O=v.lane&-536870913,L=O!==v.lane;if(L?(De&O)===O:(i&O)===O){O!==0&&O===oi&&(hc=!0),U!==null&&(U=U.next={lane:0,tag:v.tag,payload:v.payload,callback:null,next:null});e:{var ae=e,be=v;O=t;var Ze=l;switch(be.tag){case 1:if(ae=be.payload,typeof ae=="function"){Q=ae.call(Ze,Q,O);break e}Q=ae;break e;case 3:ae.flags=ae.flags&-65537|128;case 0:if(ae=be.payload,O=typeof ae=="function"?ae.call(Ze,Q,O):ae,O==null)break e;Q=g({},Q,O);break e;case 2:Pn=!0}}O=v.callback,O!==null&&(e.flags|=64,L&&(e.flags|=8192),L=c.callbacks,L===null?c.callbacks=[O]:L.push(O))}else L={lane:O,tag:v.tag,payload:v.payload,callback:v.callback,next:null},U===null?(j=U=L,A=Q):U=U.next=L,y|=O;if(v=v.next,v===null){if(v=c.shared.pending,v===null)break;L=v,v=L.next,L.next=null,c.lastBaseUpdate=L,c.shared.pending=null}}while(!0);U===null&&(A=Q),c.baseState=A,c.firstBaseUpdate=j,c.lastBaseUpdate=U,o===null&&(c.shared.lanes=0),rl|=y,e.lanes=y,e.memoizedState=Q}}function Wf(e,t){if(typeof e!="function")throw Error(u(191,e));e.call(t)}function Pf(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eo?o:8;var y=w.T,v={};w.T=v,Nc(e,!1,t,l);try{var A=c(),j=w.S;if(j!==null&&j(v,A),A!==null&&typeof A=="object"&&typeof A.then=="function"){var U=a1(A,i);sa(e,t,U,Qt(e))}else sa(e,t,i,Qt(e))}catch(Q){sa(e,t,{then:function(){},status:"rejected",reason:Q},Qt())}finally{Z.p=o,y!==null&&v.types!==null&&(y.types=v.types),w.T=y}}function f1(){}function Mc(e,t,l,i){if(e.tag!==5)throw Error(u(476));var c=Nh(e).queue;wh(e,c,t,ie,l===null?f1:function(){return jh(e),l(i)})}function Nh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ie,baseState:ie,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mn,lastRenderedState:ie},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mn,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function jh(e){var t=Nh(e);t.next===null&&(t=e.alternate.memoizedState),sa(e,t.next.queue,{},Qt())}function wc(){return yt(Ta)}function Dh(){return it().memoizedState}function Oh(){return it().memoizedState}function h1(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=Qt();e=el(l);var i=tl(t,e,l);i!==null&&(Ot(i,t,l),ia(i,t,l)),t={cache:ac()},e.payload=t;return}t=t.return}}function d1(e,t,l){var i=Qt();l={lane:i,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},kr(e)?Lh(t,l):(l=Fu(e,t,l,i),l!==null&&(Ot(l,e,i),Bh(l,t,i)))}function Rh(e,t,l){var i=Qt();sa(e,t,l,i)}function sa(e,t,l,i){var c={lane:i,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(kr(e))Lh(t,c);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var y=t.lastRenderedState,v=o(y,l);if(c.hasEagerState=!0,c.eagerState=v,Ut(v,y))return nr(e,t,c,0),Ke===null&&tr(),!1}catch{}finally{}if(l=Fu(e,t,c,i),l!==null)return Ot(l,e,i),Bh(l,t,i),!0}return!1}function Nc(e,t,l,i){if(i={lane:2,revertLane:ss(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},kr(e)){if(t)throw Error(u(479))}else t=Fu(e,l,i,2),t!==null&&Ot(t,e,2)}function kr(e){var t=e.alternate;return e===Ae||t!==null&&t===Ae}function Lh(e,t){pi=pr=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function Bh(e,t,l){if((l&4194048)!==0){var i=t.lanes;i&=e.pendingLanes,l|=i,t.lanes=l,Yo(e,l)}}var oa={readContext:yt,use:xr,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useLayoutEffect:tt,useInsertionEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useSyncExternalStore:tt,useId:tt,useHostTransitionStatus:tt,useFormState:tt,useActionState:tt,useOptimistic:tt,useMemoCache:tt,useCacheRefresh:tt};oa.useEffectEvent=tt;var Uh={readContext:yt,use:xr,useCallback:function(e,t){return At().memoizedState=[e,t===void 0?null:t],e},useContext:yt,useEffect:Sh,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,vr(4194308,4,Ah.bind(null,t,e),l)},useLayoutEffect:function(e,t){return vr(4194308,4,e,t)},useInsertionEffect:function(e,t){vr(4,2,e,t)},useMemo:function(e,t){var l=At();t=t===void 0?null:t;var i=e();if(Rl){me(!0);try{e()}finally{me(!1)}}return l.memoizedState=[i,t],i},useReducer:function(e,t,l){var i=At();if(l!==void 0){var c=l(t);if(Rl){me(!0);try{l(t)}finally{me(!1)}}}else c=t;return i.memoizedState=i.baseState=c,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:c},i.queue=e,e=e.dispatch=d1.bind(null,Ae,e),[i.memoizedState,e]},useRef:function(e){var t=At();return e={current:e},t.memoizedState=e},useState:function(e){e=Ec(e);var t=e.queue,l=Rh.bind(null,Ae,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:zc,useDeferredValue:function(e,t){var l=At();return Cc(l,e,t)},useTransition:function(){var e=Ec(!1);return e=wh.bind(null,Ae,e.queue,!0,!1),At().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var i=Ae,c=At();if(Re){if(l===void 0)throw Error(u(407));l=l()}else{if(l=t(),Ke===null)throw Error(u(349));(De&127)!==0||ah(i,t,l)}c.memoizedState=l;var o={value:l,getSnapshot:t};return c.queue=o,Sh(uh.bind(null,i,o,e),[e]),i.flags|=2048,yi(9,{destroy:void 0},rh.bind(null,i,o,l,t),null),l},useId:function(){var e=At(),t=Ke.identifierPrefix;if(Re){var l=pn,i=mn;l=(i&~(1<<32-Ee(i)-1)).toString(32)+l,t="_"+t+"R_"+l,l=gr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof i.is=="string"?y.createElement("select",{is:i.is}):y.createElement("select"),i.multiple?o.multiple=!0:i.size&&(o.size=i.size);break;default:o=typeof i.is=="string"?y.createElement(c,{is:i.is}):y.createElement(c)}}o[pt]=t,o[Ct]=i;e:for(y=t.child;y!==null;){if(y.tag===5||y.tag===6)o.appendChild(y.stateNode);else if(y.tag!==4&&y.tag!==27&&y.child!==null){y.child.return=y,y=y.child;continue}if(y===t)break e;for(;y.sibling===null;){if(y.return===null||y.return===t)break e;y=y.return}y.sibling.return=y.return,y=y.sibling}t.stateNode=o;e:switch(bt(o,c,i),c){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&Nn(t)}}return We(t),Xc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&Nn(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(u(166));if(e=oe.current,ci(t)){if(e=t.stateNode,l=t.memoizedProps,i=null,c=gt,c!==null)switch(c.tag){case 27:case 5:i=c.memoizedProps}e[pt]=t,e=!!(e.nodeValue===l||i!==null&&i.suppressHydrationWarning===!0||lm(e.nodeValue,l)),e||In(t,!0)}else e=Gr(e).createTextNode(i),e[pt]=t,t.stateNode=e}return We(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(i=ci(t),l!==null){if(e===null){if(!i)throw Error(u(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(u(557));e[pt]=t}else Cl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;We(t),e=!1}else l=tc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(Yt(t),t):(Yt(t),null);if((t.flags&128)!==0)throw Error(u(558))}return We(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(c=ci(t),i!==null&&i.dehydrated!==null){if(e===null){if(!c)throw Error(u(318));if(c=t.memoizedState,c=c!==null?c.dehydrated:null,!c)throw Error(u(317));c[pt]=t}else Cl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;We(t),c=!1}else c=tc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=c),c=!0;if(!c)return t.flags&256?(Yt(t),t):(Yt(t),null)}return Yt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=i!==null,e=e!==null&&e.memoizedState!==null,l&&(i=t.child,c=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(c=i.alternate.memoizedState.cachePool.pool),o=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(o=i.memoizedState.cachePool.pool),o!==c&&(i.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),zr(t,t.updateQueue),We(t),null);case 4:return Ye(),e===null&&ds(t.stateNode.containerInfo),We(t),null;case 10:return zn(t.type),We(t),null;case 19:if(q(lt),i=t.memoizedState,i===null)return We(t),null;if(c=(t.flags&128)!==0,o=i.rendering,o===null)if(c)ha(i,!1);else{if(nt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(o=mr(e),o!==null){for(t.flags|=128,ha(i,!1),e=o.updateQueue,t.updateQueue=e,zr(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)Rf(l,e),l=l.sibling;return _(lt,lt.current&1|2),Re&&An(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&mt()>jr&&(t.flags|=128,c=!0,ha(i,!1),t.lanes=4194304)}else{if(!c)if(e=mr(o),e!==null){if(t.flags|=128,c=!0,e=e.updateQueue,t.updateQueue=e,zr(t,e),ha(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!Re)return We(t),null}else 2*mt()-i.renderingStartTime>jr&&l!==536870912&&(t.flags|=128,c=!0,ha(i,!1),t.lanes=4194304);i.isBackwards?(o.sibling=t.child,t.child=o):(e=i.last,e!==null?e.sibling=o:t.child=o,i.last=o)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=mt(),e.sibling=null,l=lt.current,_(lt,c?l&1|2:l&1),Re&&An(t,i.treeForkCount),e):(We(t),null);case 22:case 23:return Yt(t),mc(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?(l&536870912)!==0&&(t.flags&128)===0&&(We(t),t.subtreeFlags&6&&(t.flags|=8192)):We(t),l=t.updateQueue,l!==null&&zr(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==l&&(t.flags|=2048),e!==null&&q(Nl),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),zn(at),We(t),null;case 25:return null;case 30:return null}throw Error(u(156,t.tag))}function x1(e,t){switch(Pu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return zn(at),Ye(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Kt(t),null;case 31:if(t.memoizedState!==null){if(Yt(t),t.alternate===null)throw Error(u(340));Cl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Yt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(u(340));Cl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return q(lt),null;case 4:return Ye(),null;case 10:return zn(t.type),null;case 22:case 23:return Yt(t),mc(),e!==null&&q(Nl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return zn(at),null;case 25:return null;default:return null}}function cd(e,t){switch(Pu(t),t.tag){case 3:zn(at),Ye();break;case 26:case 27:case 5:Kt(t);break;case 4:Ye();break;case 31:t.memoizedState!==null&&Yt(t);break;case 13:Yt(t);break;case 19:q(lt);break;case 10:zn(t.type);break;case 22:case 23:Yt(t),mc(),e!==null&&q(Nl);break;case 24:zn(at)}}function da(e,t){try{var l=t.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var c=i.next;l=c;do{if((l.tag&e)===e){i=void 0;var o=l.create,y=l.inst;i=o(),y.destroy=i}l=l.next}while(l!==c)}}catch(v){Ve(t,t.return,v)}}function il(e,t,l){try{var i=t.updateQueue,c=i!==null?i.lastEffect:null;if(c!==null){var o=c.next;i=o;do{if((i.tag&e)===e){var y=i.inst,v=y.destroy;if(v!==void 0){y.destroy=void 0,c=t;var A=l,j=v;try{j()}catch(U){Ve(c,A,U)}}}i=i.next}while(i!==o)}}catch(U){Ve(t,t.return,U)}}function sd(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{Pf(t,l)}catch(i){Ve(e,e.return,i)}}}function od(e,t,l){l.props=Ll(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(i){Ve(e,t,i)}}function ma(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof l=="function"?e.refCleanup=l(i):l.current=i}}catch(c){Ve(e,t,c)}}function gn(e,t){var l=e.ref,i=e.refCleanup;if(l!==null)if(typeof i=="function")try{i()}catch(c){Ve(e,t,c)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(c){Ve(e,t,c)}else l.current=null}function fd(e){var t=e.type,l=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&i.focus();break e;case"img":l.src?i.src=l.src:l.srcSet&&(i.srcset=l.srcSet)}}catch(c){Ve(e,e.return,c)}}function Zc(e,t,l){try{var i=e.stateNode;q1(i,e.type,l,t),i[Ct]=t}catch(c){Ve(e,e.return,c)}}function hd(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&fl(e.type)||e.tag===4}function Kc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||hd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&fl(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fc(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=kn));else if(i!==4&&(i===27&&fl(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(Fc(e,t,l),e=e.sibling;e!==null;)Fc(e,t,l),e=e.sibling}function Cr(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(i!==4&&(i===27&&fl(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Cr(e,t,l),e=e.sibling;e!==null;)Cr(e,t,l),e=e.sibling}function dd(e){var t=e.stateNode,l=e.memoizedProps;try{for(var i=e.type,c=t.attributes;c.length;)t.removeAttributeNode(c[0]);bt(t,i,l),t[pt]=e,t[Ct]=l}catch(o){Ve(e,e.return,o)}}var jn=!1,ct=!1,Jc=!1,md=typeof WeakSet=="function"?WeakSet:Set,dt=null;function b1(e,t){if(e=e.containerInfo,gs=Jr,e=Tf(e),Gu(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var i=l.getSelection&&l.getSelection();if(i&&i.rangeCount!==0){l=i.anchorNode;var c=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{l.nodeType,o.nodeType}catch{l=null;break e}var y=0,v=-1,A=-1,j=0,U=0,Q=e,O=null;t:for(;;){for(var L;Q!==l||c!==0&&Q.nodeType!==3||(v=y+c),Q!==o||i!==0&&Q.nodeType!==3||(A=y+i),Q.nodeType===3&&(y+=Q.nodeValue.length),(L=Q.firstChild)!==null;)O=Q,Q=L;for(;;){if(Q===e)break t;if(O===l&&++j===c&&(v=y),O===o&&++U===i&&(A=y),(L=Q.nextSibling)!==null)break;Q=O,O=Q.parentNode}Q=L}l=v===-1||A===-1?null:{start:v,end:A}}else l=null}l=l||{start:0,end:0}}else l=null;for(ys={focusedElem:e,selectionRange:l},Jr=!1,dt=t;dt!==null;)if(t=dt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,dt=e;else for(;dt!==null;){switch(t=dt,o=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),bt(o,i,l),o[pt]=e,ht(o),i=o;break e;case"link":var y=vm("link","href",c).get(i+(l.href||""));if(y){for(var v=0;vZe&&(y=Ze,Ze=be,be=y);var M=Ef(v,be),z=Ef(v,Ze);if(M&&z&&(L.rangeCount!==1||L.anchorNode!==M.node||L.anchorOffset!==M.offset||L.focusNode!==z.node||L.focusOffset!==z.offset)){var N=Q.createRange();N.setStart(M.node,M.offset),L.removeAllRanges(),be>Ze?(L.addRange(N),L.extend(z.node,z.offset)):(N.setEnd(z.node,z.offset),L.addRange(N))}}}}for(Q=[],L=v;L=L.parentNode;)L.nodeType===1&&Q.push({element:L,left:L.scrollLeft,top:L.scrollTop});for(typeof v.focus=="function"&&v.focus(),v=0;vl?32:l,w.T=null,l=ns,ns=null;var o=cl,y=Bn;if(ot=0,ki=cl=null,Bn=0,(qe&6)!==0)throw Error(u(331));var v=qe;if(qe|=4,Ad(o.current),kd(o,o.current,y,l),qe=v,va(0,!1),ve&&typeof ve.onPostCommitFiberRoot=="function")try{ve.onPostCommitFiberRoot(K,o)}catch{}return!0}finally{Z.p=c,w.T=i,Vd(e,t)}}function Xd(e,t,l){t=It(l,t),t=Rc(e.stateNode,t,2),e=tl(e,t,2),e!==null&&(qi(e,2),yn(e))}function Ve(e,t,l){if(e.tag===3)Xd(e,e,l);else for(;t!==null;){if(t.tag===3){Xd(t,e,l);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&(ul===null||!ul.has(i))){e=It(l,e),l=Zh(2),i=tl(t,l,2),i!==null&&(Kh(l,i,t,e),qi(i,2),yn(i));break}}t=t.return}}function rs(e,t,l){var i=e.pingCache;if(i===null){i=e.pingCache=new k1;var c=new Set;i.set(t,c)}else c=i.get(t),c===void 0&&(c=new Set,i.set(t,c));c.has(l)||(Wc=!0,c.add(l),e=z1.bind(null,e,t,l),t.then(e,e))}function z1(e,t,l){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Ke===e&&(De&l)===l&&(nt===4||nt===3&&(De&62914560)===De&&300>mt()-Nr?(qe&2)===0&&_i(e,0):Pc|=l,Si===De&&(Si=0)),yn(e)}function Zd(e,t){t===0&&(t=Ho()),e=Tl(e,t),e!==null&&(qi(e,t),yn(e))}function C1(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Zd(e,l)}function M1(e,t){var l=0;switch(e.tag){case 31:case 13:var i=e.stateNode,c=e.memoizedState;c!==null&&(l=c.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(u(314))}i!==null&&i.delete(t),Zd(e,l)}function w1(e,t){return vn(e,t)}var Ur=null,Ai=null,us=!1,Hr=!1,cs=!1,ol=0;function yn(e){e!==Ai&&e.next===null&&(Ai===null?Ur=Ai=e:Ai=Ai.next=e),Hr=!0,us||(us=!0,j1())}function va(e,t){if(!cs&&Hr){cs=!0;do for(var l=!1,i=Ur;i!==null;){if(e!==0){var c=i.pendingLanes;if(c===0)var o=0;else{var y=i.suspendedLanes,v=i.pingedLanes;o=(1<<31-Ee(42|e)+1)-1,o&=c&~(y&~v),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(l=!0,$d(i,o))}else o=De,o=Sl(i,i===Ke?o:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(o&3)===0||Hi(i,o)||(l=!0,$d(i,o));i=i.next}while(l);cs=!1}}function N1(){Kd()}function Kd(){Hr=us=!1;var e=0;ol!==0&&G1()&&(e=ol);for(var t=mt(),l=null,i=Ur;i!==null;){var c=i.next,o=Fd(i,t);o===0?(i.next=null,l===null?Ur=c:l.next=c,c===null&&(Ai=l)):(l=i,(e!==0||(o&3)!==0)&&(Hr=!0)),i=c}ot!==0&&ot!==5||va(e),ol!==0&&(ol=0)}function Fd(e,t){for(var l=e.suspendedLanes,i=e.pingedLanes,c=e.expirationTimes,o=e.pendingLanes&-62914561;0v)break;var U=A.transferSize,Q=A.initiatorType;U&&im(Q)&&(A=A.responseEnd,y+=U*(A"u"?null:document;function gm(e,t,l){var i=Ti;if(i&&typeof t=="string"&&t){var c=Jt(t);c='link[rel="'+e+'"][href="'+c+'"]',typeof l=="string"&&(c+='[crossorigin="'+l+'"]'),pm.has(c)||(pm.add(c),e={rel:e,crossOrigin:l,href:t},i.querySelector(c)===null&&(t=i.createElement("link"),bt(t,"link",e),ht(t),i.head.appendChild(t)))}}function I1(e){Un.D(e),gm("dns-prefetch",e,null)}function W1(e,t){Un.C(e,t),gm("preconnect",e,t)}function P1(e,t,l){Un.L(e,t,l);var i=Ti;if(i&&e&&t){var c='link[rel="preload"][as="'+Jt(t)+'"]';t==="image"&&l&&l.imageSrcSet?(c+='[imagesrcset="'+Jt(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(c+='[imagesizes="'+Jt(l.imageSizes)+'"]')):c+='[href="'+Jt(e)+'"]';var o=c;switch(t){case"style":o=zi(e);break;case"script":o=Ci(e)}ln.has(o)||(e=g({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),ln.set(o,e),i.querySelector(c)!==null||t==="style"&&i.querySelector(Ea(o))||t==="script"&&i.querySelector(Aa(o))||(t=i.createElement("link"),bt(t,"link",e),ht(t),i.head.appendChild(t)))}}function e0(e,t){Un.m(e,t);var l=Ti;if(l&&e){var i=t&&typeof t.as=="string"?t.as:"script",c='link[rel="modulepreload"][as="'+Jt(i)+'"][href="'+Jt(e)+'"]',o=c;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Ci(e)}if(!ln.has(o)&&(e=g({rel:"modulepreload",href:e},t),ln.set(o,e),l.querySelector(c)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Aa(o)))return}i=l.createElement("link"),bt(i,"link",e),ht(i),l.head.appendChild(i)}}}function t0(e,t,l){Un.S(e,t,l);var i=Ti;if(i&&e){var c=Jl(i).hoistableStyles,o=zi(e);t=t||"default";var y=c.get(o);if(!y){var v={loading:0,preload:null};if(y=i.querySelector(Ea(o)))v.loading=5;else{e=g({rel:"stylesheet",href:e,"data-precedence":t},l),(l=ln.get(o))&&Es(e,l);var A=y=i.createElement("link");ht(A),bt(A,"link",e),A._p=new Promise(function(j,U){A.onload=j,A.onerror=U}),A.addEventListener("load",function(){v.loading|=1}),A.addEventListener("error",function(){v.loading|=2}),v.loading|=4,Qr(y,t,i)}y={type:"stylesheet",instance:y,count:1,state:v},c.set(o,y)}}}function n0(e,t){Un.X(e,t);var l=Ti;if(l&&e){var i=Jl(l).hoistableScripts,c=Ci(e),o=i.get(c);o||(o=l.querySelector(Aa(c)),o||(e=g({src:e,async:!0},t),(t=ln.get(c))&&As(e,t),o=l.createElement("script"),ht(o),bt(o,"link",e),l.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},i.set(c,o))}}function l0(e,t){Un.M(e,t);var l=Ti;if(l&&e){var i=Jl(l).hoistableScripts,c=Ci(e),o=i.get(c);o||(o=l.querySelector(Aa(c)),o||(e=g({src:e,async:!0,type:"module"},t),(t=ln.get(c))&&As(e,t),o=l.createElement("script"),ht(o),bt(o,"link",e),l.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},i.set(c,o))}}function ym(e,t,l,i){var c=(c=oe.current)?Vr(c):null;if(!c)throw Error(u(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=zi(l.href),l=Jl(c).hoistableStyles,i=l.get(t),i||(i={type:"style",instance:null,count:0,state:null},l.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=zi(l.href);var o=Jl(c).hoistableStyles,y=o.get(e);if(y||(c=c.ownerDocument||c,y={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(e,y),(o=c.querySelector(Ea(e)))&&!o._p&&(y.instance=o,y.state.loading=5),ln.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},ln.set(e,l),o||i0(c,e,l,y.state))),t&&i===null)throw Error(u(528,""));return y}if(t&&i!==null)throw Error(u(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ci(l),l=Jl(c).hoistableScripts,i=l.get(t),i||(i={type:"script",instance:null,count:0,state:null},l.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(u(444,e))}}function zi(e){return'href="'+Jt(e)+'"'}function Ea(e){return'link[rel="stylesheet"]['+e+"]"}function xm(e){return g({},e,{"data-precedence":e.precedence,precedence:null})}function i0(e,t,l,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),bt(t,"link",l),ht(t),e.head.appendChild(t))}function Ci(e){return'[src="'+Jt(e)+'"]'}function Aa(e){return"script[async]"+e}function bm(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+Jt(l.href)+'"]');if(i)return t.instance=i,ht(i),i;var c=g({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),ht(i),bt(i,"style",c),Qr(i,l.precedence,e),t.instance=i;case"stylesheet":c=zi(l.href);var o=e.querySelector(Ea(c));if(o)return t.state.loading|=4,t.instance=o,ht(o),o;i=xm(l),(c=ln.get(c))&&Es(i,c),o=(e.ownerDocument||e).createElement("link"),ht(o);var y=o;return y._p=new Promise(function(v,A){y.onload=v,y.onerror=A}),bt(o,"link",i),t.state.loading|=4,Qr(o,l.precedence,e),t.instance=o;case"script":return o=Ci(l.src),(c=e.querySelector(Aa(o)))?(t.instance=c,ht(c),c):(i=l,(c=ln.get(o))&&(i=g({},l),As(i,c)),e=e.ownerDocument||e,c=e.createElement("script"),ht(c),bt(c,"link",i),e.head.appendChild(c),t.instance=c);case"void":return null;default:throw Error(u(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(i=t.instance,t.state.loading|=4,Qr(i,l.precedence,e));return t.instance}function Qr(e,t,l){for(var i=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),c=i.length?i[i.length-1]:null,o=c,y=0;y title"):null)}function a0(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!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 km(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function r0(e,t,l,i){if(l.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var c=zi(i.href),o=t.querySelector(Ea(c));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Zr.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=o,ht(o);return}o=t.ownerDocument||t,i=xm(i),(c=ln.get(c))&&Es(i,c),o=o.createElement("link"),ht(o);var y=o;y._p=new Promise(function(v,A){y.onload=v,y.onerror=A}),bt(o,"link",i),l.instance=o}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Zr.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var Ts=0;function u0(e,t){return e.stylesheets&&e.count===0&&Fr(e,e.stylesheets),0Ts?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(c)}}:null}function Zr(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Fr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Kr=null;function Fr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Kr=new Map,t.forEach(c0,e),Kr=null,Zr.call(e))}function c0(e,t){if(!(t.state.loading&4)){var l=Kr.get(e);if(l)var i=l.get(null);else{l=new Map,Kr.set(e,l);for(var c=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(a){console.error(a)}}return n(),Rs.exports=E0(),Rs.exports}var T0=A0();function z0(n,a){const r={};return(n[n.length-1]===""?[...n,""]:n).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const C0=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,M0=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,w0={};function Zm(n,a){return(w0.jsx?M0:C0).test(n)}const N0=/[ \t\n\f\r]/g;function j0(n){return typeof n=="object"?n.type==="text"?Km(n.value):!1:Km(n)}function Km(n){return n.replace(N0,"")===""}class Ya{constructor(a,r,u){this.normal=r,this.property=a,u&&(this.space=u)}}Ya.prototype.normal={};Ya.prototype.property={};Ya.prototype.space=void 0;function Yp(n,a){const r={},u={};for(const s of n)Object.assign(r,s.property),Object.assign(u,s.normal);return new Ya(r,u,a)}function io(n){return n.toLowerCase()}class Lt{constructor(a,r){this.attribute=r,this.property=a}}Lt.prototype.attribute="";Lt.prototype.booleanish=!1;Lt.prototype.boolean=!1;Lt.prototype.commaOrSpaceSeparated=!1;Lt.prototype.commaSeparated=!1;Lt.prototype.defined=!1;Lt.prototype.mustUseProperty=!1;Lt.prototype.number=!1;Lt.prototype.overloadedBoolean=!1;Lt.prototype.property="";Lt.prototype.spaceSeparated=!1;Lt.prototype.space=void 0;let D0=0;const ke=Vl(),st=Vl(),ao=Vl(),I=Vl(),Fe=Vl(),Yl=Vl(),Xt=Vl();function Vl(){return 2**++D0}const ro=Object.freeze(Object.defineProperty({__proto__:null,boolean:ke,booleanish:st,commaOrSpaceSeparated:Xt,commaSeparated:Yl,number:I,overloadedBoolean:ao,spaceSeparated:Fe},Symbol.toStringTag,{value:"Module"})),Hs=Object.keys(ro);class bo extends Lt{constructor(a,r,u,s){let h=-1;if(super(a,r),Fm(this,"space",s),typeof u=="number")for(;++h4&&r.slice(0,4)==="data"&&U0.test(a)){if(a.charAt(4)==="-"){const h=a.slice(5).replace(Jm,Y0);u="data"+h.charAt(0).toUpperCase()+h.slice(1)}else{const h=a.slice(4);if(!Jm.test(h)){let f=h.replace(B0,q0);f.charAt(0)!=="-"&&(f="-"+f),a="data"+f}}s=bo}return new s(u,a)}function q0(n){return"-"+n.toLowerCase()}function Y0(n){return n.charAt(1).toUpperCase()}const G0=Yp([Gp,O0,Xp,Zp,Kp],"html"),vo=Yp([Gp,R0,Xp,Zp,Kp],"svg");function V0(n){return n.join(" ").trim()}var wi={},qs,$m;function Q0(){if($m)return qs;$m=1;var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,a=/\n/g,r=/^\s*/,u=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,h=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,f=/^[;\s]*/,m=/^\s+|\s+$/g,p=` +`,d="/",x="*",g="",S="comment",k="declaration";function C(V,D){if(typeof V!="string")throw new TypeError("First argument must be a string");if(!V)return[];D=D||{};var J=1,X=1;function re($){var F=$.match(a);F&&(J+=F.length);var w=$.lastIndexOf(p);X=~w?$.length-w:X+$.length}function se(){var $={line:J,column:X};return function(F){return F.position=new B($),ce(),F}}function B($){this.start=$,this.end={line:J,column:X},this.source=D.source}B.prototype.content=V;function W($){var F=new Error(D.source+":"+J+":"+X+": "+$);if(F.reason=$,F.filename=D.source,F.line=J,F.column=X,F.source=V,!D.silent)throw F}function de($){var F=$.exec(V);if(F){var w=F[0];return re(w),V=V.slice(w.length),F}}function ce(){de(r)}function R($){var F;for($=$||[];F=te();)F!==!1&&$.push(F);return $}function te(){var $=se();if(!(d!=V.charAt(0)||x!=V.charAt(1))){for(var F=2;g!=V.charAt(F)&&(x!=V.charAt(F)||d!=V.charAt(F+1));)++F;if(F+=2,g===V.charAt(F-1))return W("End of comment missing");var w=V.slice(2,F-2);return X+=2,re(w),V=V.slice(F),X+=2,$({type:S,comment:w})}}function le(){var $=se(),F=de(u);if(F){if(te(),!de(s))return W("property missing ':'");var w=de(h),Z=$({type:k,property:H(F[0].replace(n,g)),value:w?H(w[0].replace(n,g)):g});return de(f),Z}}function Te(){var $=[];R($);for(var F;F=le();)F!==!1&&($.push(F),R($));return $}return ce(),Te()}function H(V){return V?V.replace(m,g):g}return qs=C,qs}var Im;function X0(){if(Im)return wi;Im=1;var n=wi&&wi.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(wi,"__esModule",{value:!0}),wi.default=r;const a=n(Q0());function r(u,s){let h=null;if(!u||typeof u!="string")return h;const f=(0,a.default)(u),m=typeof s=="function";return f.forEach(p=>{if(p.type!=="declaration")return;const{property:d,value:x}=p;m?s(d,x,p):x&&(h=h||{},h[d]=x)}),h}return wi}var ja={},Wm;function Z0(){if(Wm)return ja;Wm=1,Object.defineProperty(ja,"__esModule",{value:!0}),ja.camelCase=void 0;var n=/^--[a-zA-Z0-9_-]+$/,a=/-([a-z])/g,r=/^[^-]+$/,u=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,h=function(d){return!d||r.test(d)||n.test(d)},f=function(d,x){return x.toUpperCase()},m=function(d,x){return"".concat(x,"-")},p=function(d,x){return x===void 0&&(x={}),h(d)?d:(d=d.toLowerCase(),x.reactCompat?d=d.replace(s,m):d=d.replace(u,m),d.replace(a,f))};return ja.camelCase=p,ja}var Da,Pm;function K0(){if(Pm)return Da;Pm=1;var n=Da&&Da.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},a=n(X0()),r=Z0();function u(s,h){var f={};return!s||typeof s!="string"||(0,a.default)(s,function(m,p){m&&p&&(f[(0,r.camelCase)(m,h)]=p)}),f}return u.default=u,Da=u,Da}var F0=K0();const J0=qp(F0),Fp=Jp("end"),So=Jp("start");function Jp(n){return a;function a(r){const u=r&&r.position&&r.position[n]||{};if(typeof u.line=="number"&&u.line>0&&typeof u.column=="number"&&u.column>0)return{line:u.line,column:u.column,offset:typeof u.offset=="number"&&u.offset>-1?u.offset:void 0}}}function $0(n){const a=So(n),r=Fp(n);if(a&&r)return{start:a,end:r}}function La(n){return!n||typeof n!="object"?"":"position"in n||"type"in n?ep(n.position):"start"in n||"end"in n?ep(n):"line"in n||"column"in n?uo(n):""}function uo(n){return tp(n&&n.line)+":"+tp(n&&n.column)}function ep(n){return uo(n&&n.start)+"-"+uo(n&&n.end)}function tp(n){return n&&typeof n=="number"?n:1}class Et extends Error{constructor(a,r,u){super(),typeof r=="string"&&(u=r,r=void 0);let s="",h={},f=!1;if(r&&("line"in r&&"column"in r?h={place:r}:"start"in r&&"end"in r?h={place:r}:"type"in r?h={ancestors:[r],place:r.position}:h={...r}),typeof a=="string"?s=a:!h.cause&&a&&(f=!0,s=a.message,h.cause=a),!h.ruleId&&!h.source&&typeof u=="string"){const p=u.indexOf(":");p===-1?h.ruleId=u:(h.source=u.slice(0,p),h.ruleId=u.slice(p+1))}if(!h.place&&h.ancestors&&h.ancestors){const p=h.ancestors[h.ancestors.length-1];p&&(h.place=p.position)}const m=h.place&&"start"in h.place?h.place.start:h.place;this.ancestors=h.ancestors||void 0,this.cause=h.cause||void 0,this.column=m?m.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=m?m.line:void 0,this.name=La(h.place)||"1:1",this.place=h.place||void 0,this.reason=this.message,this.ruleId=h.ruleId||void 0,this.source=h.source||void 0,this.stack=f&&h.cause&&typeof h.cause.stack=="string"?h.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Et.prototype.file="";Et.prototype.name="";Et.prototype.reason="";Et.prototype.message="";Et.prototype.stack="";Et.prototype.column=void 0;Et.prototype.line=void 0;Et.prototype.ancestors=void 0;Et.prototype.cause=void 0;Et.prototype.fatal=void 0;Et.prototype.place=void 0;Et.prototype.ruleId=void 0;Et.prototype.source=void 0;const ko={}.hasOwnProperty,I0=new Map,W0=/[A-Z]/g,P0=new Set(["table","tbody","thead","tfoot","tr"]),ex=new Set(["td","th"]),$p="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function tx(n,a){if(!a||a.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=a.filePath||void 0;let u;if(a.development){if(typeof a.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");u=sx(r,a.jsxDEV)}else{if(typeof a.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof a.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");u=cx(r,a.jsx,a.jsxs)}const s={Fragment:a.Fragment,ancestors:[],components:a.components||{},create:u,elementAttributeNameCase:a.elementAttributeNameCase||"react",evaluater:a.createEvaluater?a.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:a.ignoreInvalidStyle||!1,passKeys:a.passKeys!==!1,passNode:a.passNode||!1,schema:a.space==="svg"?vo:G0,stylePropertyNameCase:a.stylePropertyNameCase||"dom",tableCellAlignToStyle:a.tableCellAlignToStyle!==!1},h=Ip(s,n,void 0);return h&&typeof h!="string"?h:s.create(n,s.Fragment,{children:h||void 0},void 0)}function Ip(n,a,r){if(a.type==="element")return nx(n,a,r);if(a.type==="mdxFlowExpression"||a.type==="mdxTextExpression")return lx(n,a);if(a.type==="mdxJsxFlowElement"||a.type==="mdxJsxTextElement")return ax(n,a,r);if(a.type==="mdxjsEsm")return ix(n,a);if(a.type==="root")return rx(n,a,r);if(a.type==="text")return ux(n,a)}function nx(n,a,r){const u=n.schema;let s=u;a.tagName.toLowerCase()==="svg"&&u.space==="html"&&(s=vo,n.schema=s),n.ancestors.push(a);const h=Pp(n,a.tagName,!1),f=ox(n,a);let m=Eo(n,a);return P0.has(a.tagName)&&(m=m.filter(function(p){return typeof p=="string"?!j0(p):!0})),Wp(n,f,h,a),_o(f,m),n.ancestors.pop(),n.schema=u,n.create(a,h,f,r)}function lx(n,a){if(a.data&&a.data.estree&&n.evaluater){const u=a.data.estree.body[0];return u.type,n.evaluater.evaluateExpression(u.expression)}Ha(n,a.position)}function ix(n,a){if(a.data&&a.data.estree&&n.evaluater)return n.evaluater.evaluateProgram(a.data.estree);Ha(n,a.position)}function ax(n,a,r){const u=n.schema;let s=u;a.name==="svg"&&u.space==="html"&&(s=vo,n.schema=s),n.ancestors.push(a);const h=a.name===null?n.Fragment:Pp(n,a.name,!0),f=fx(n,a),m=Eo(n,a);return Wp(n,f,h,a),_o(f,m),n.ancestors.pop(),n.schema=u,n.create(a,h,f,r)}function rx(n,a,r){const u={};return _o(u,Eo(n,a)),n.create(a,n.Fragment,u,r)}function ux(n,a){return a.value}function Wp(n,a,r,u){typeof r!="string"&&r!==n.Fragment&&n.passNode&&(a.node=u)}function _o(n,a){if(a.length>0){const r=a.length>1?a:a[0];r&&(n.children=r)}}function cx(n,a,r){return u;function u(s,h,f,m){const d=Array.isArray(f.children)?r:a;return m?d(h,f,m):d(h,f)}}function sx(n,a){return r;function r(u,s,h,f){const m=Array.isArray(h.children),p=So(u);return a(s,h,f,m,{columnNumber:p?p.column-1:void 0,fileName:n,lineNumber:p?p.line:void 0},void 0)}}function ox(n,a){const r={};let u,s;for(s in a.properties)if(s!=="children"&&ko.call(a.properties,s)){const h=hx(n,s,a.properties[s]);if(h){const[f,m]=h;n.tableCellAlignToStyle&&f==="align"&&typeof m=="string"&&ex.has(a.tagName)?u=m:r[f]=m}}if(u){const h=r.style||(r.style={});h[n.stylePropertyNameCase==="css"?"text-align":"textAlign"]=u}return r}function fx(n,a){const r={};for(const u of a.attributes)if(u.type==="mdxJsxExpressionAttribute")if(u.data&&u.data.estree&&n.evaluater){const h=u.data.estree.body[0];h.type;const f=h.expression;f.type;const m=f.properties[0];m.type,Object.assign(r,n.evaluater.evaluateExpression(m.argument))}else Ha(n,a.position);else{const s=u.name;let h;if(u.value&&typeof u.value=="object")if(u.value.data&&u.value.data.estree&&n.evaluater){const m=u.value.data.estree.body[0];m.type,h=n.evaluater.evaluateExpression(m.expression)}else Ha(n,a.position);else h=u.value===null?!0:u.value;r[s]=h}return r}function Eo(n,a){const r=[];let u=-1;const s=n.passKeys?new Map:I0;for(;++us?0:s+a:a=a>s?s:a,r=r>0?r:0,u.length<1e4)f=Array.from(u),f.unshift(a,r),n.splice(...f);else for(r&&n.splice(a,r);h0?(Zt(n,n.length,0,a),n):a}const ip={}.hasOwnProperty;function tg(n){const a={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function on(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Tt=xl(/[A-Za-z]/),_t=xl(/[\dA-Za-z]/),Sx=xl(/[#-'*+\--9=?A-Z^-~]/);function su(n){return n!==null&&(n<32||n===127)}const co=xl(/\d/),kx=xl(/[\dA-Fa-f]/),_x=xl(/[!-/:-@[-`{-~]/);function ye(n){return n!==null&&n<-2}function Je(n){return n!==null&&(n<0||n===32)}function je(n){return n===-2||n===-1||n===32}const mu=xl(new RegExp("\\p{P}|\\p{S}","u")),Gl=xl(/\s/);function xl(n){return a;function a(r){return r!==null&&r>-1&&n.test(String.fromCharCode(r))}}function Ri(n){const a=[];let r=-1,u=0,s=0;for(;++r55295&&h<57344){const m=n.charCodeAt(r+1);h<56320&&m>56319&&m<57344?(f=String.fromCharCode(h,m),s=1):f="�"}else f=String.fromCharCode(h);f&&(a.push(n.slice(u,r),encodeURIComponent(f)),u=r+s+1,f=""),s&&(r+=s,s=0)}return a.join("")+n.slice(u)}function Le(n,a,r,u){const s=u?u-1:Number.POSITIVE_INFINITY;let h=0;return f;function f(p){return je(p)?(n.enter(r),m(p)):a(p)}function m(p){return je(p)&&h++f))return;const W=a.events.length;let de=W,ce,R;for(;de--;)if(a.events[de][0]==="exit"&&a.events[de][1].type==="chunkFlow"){if(ce){R=a.events[de][1].end;break}ce=!0}for(D(u),B=W;BX;){const se=r[re];a.containerState=se[1],se[0].exit.call(a,n)}r.length=X}function J(){s.write([null]),h=void 0,s=void 0,a.containerState._closeFlow=void 0}}function Cx(n,a,r){return Le(n,n.attempt(this.parser.constructs.document,a,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ji(n){if(n===null||Je(n)||Gl(n))return 1;if(mu(n))return 2}function pu(n,a,r){const u=[];let s=-1;for(;++s1&&n[r][1].end.offset-n[r][1].start.offset>1?2:1;const g={...n[u][1].end},S={...n[r][1].start};rp(g,-p),rp(S,p),f={type:p>1?"strongSequence":"emphasisSequence",start:g,end:{...n[u][1].end}},m={type:p>1?"strongSequence":"emphasisSequence",start:{...n[r][1].start},end:S},h={type:p>1?"strongText":"emphasisText",start:{...n[u][1].end},end:{...n[r][1].start}},s={type:p>1?"strong":"emphasis",start:{...f.start},end:{...m.end}},n[u][1].end={...f.start},n[r][1].start={...m.end},d=[],n[u][1].end.offset-n[u][1].start.offset&&(d=an(d,[["enter",n[u][1],a],["exit",n[u][1],a]])),d=an(d,[["enter",s,a],["enter",f,a],["exit",f,a],["enter",h,a]]),d=an(d,pu(a.parser.constructs.insideSpan.null,n.slice(u+1,r),a)),d=an(d,[["exit",h,a],["enter",m,a],["exit",m,a],["exit",s,a]]),n[r][1].end.offset-n[r][1].start.offset?(x=2,d=an(d,[["enter",n[r][1],a],["exit",n[r][1],a]])):x=0,Zt(n,u-1,r-u+3,d),r=u+d.length-x-2;break}}for(r=-1;++r0&&je(B)?Le(n,J,"linePrefix",h+1)(B):J(B)}function J(B){return B===null||ye(B)?n.check(up,H,re)(B):(n.enter("codeFlowValue"),X(B))}function X(B){return B===null||ye(B)?(n.exit("codeFlowValue"),J(B)):(n.consume(B),X)}function re(B){return n.exit("codeFenced"),a(B)}function se(B,W,de){let ce=0;return R;function R(F){return B.enter("lineEnding"),B.consume(F),B.exit("lineEnding"),te}function te(F){return B.enter("codeFencedFence"),je(F)?Le(B,le,"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(F):le(F)}function le(F){return F===m?(B.enter("codeFencedFenceSequence"),Te(F)):de(F)}function Te(F){return F===m?(ce++,B.consume(F),Te):ce>=f?(B.exit("codeFencedFenceSequence"),je(F)?Le(B,$,"whitespace")(F):$(F)):de(F)}function $(F){return F===null||ye(F)?(B.exit("codeFencedFence"),W(F)):de(F)}}}function qx(n,a,r){const u=this;return s;function s(f){return f===null?r(f):(n.enter("lineEnding"),n.consume(f),n.exit("lineEnding"),h)}function h(f){return u.parser.lazy[u.now().line]?r(f):a(f)}}const Gs={name:"codeIndented",tokenize:Gx},Yx={partial:!0,tokenize:Vx};function Gx(n,a,r){const u=this;return s;function s(d){return n.enter("codeIndented"),Le(n,h,"linePrefix",5)(d)}function h(d){const x=u.events[u.events.length-1];return x&&x[1].type==="linePrefix"&&x[2].sliceSerialize(x[1],!0).length>=4?f(d):r(d)}function f(d){return d===null?p(d):ye(d)?n.attempt(Yx,f,p)(d):(n.enter("codeFlowValue"),m(d))}function m(d){return d===null||ye(d)?(n.exit("codeFlowValue"),f(d)):(n.consume(d),m)}function p(d){return n.exit("codeIndented"),a(d)}}function Vx(n,a,r){const u=this;return s;function s(f){return u.parser.lazy[u.now().line]?r(f):ye(f)?(n.enter("lineEnding"),n.consume(f),n.exit("lineEnding"),s):Le(n,h,"linePrefix",5)(f)}function h(f){const m=u.events[u.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?a(f):ye(f)?s(f):r(f)}}const Qx={name:"codeText",previous:Zx,resolve:Xx,tokenize:Kx};function Xx(n){let a=n.length-4,r=3,u,s;if((n[r][1].type==="lineEnding"||n[r][1].type==="space")&&(n[a][1].type==="lineEnding"||n[a][1].type==="space")){for(u=r;++u=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+a+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return athis.left.length?this.right.slice(this.right.length-u+this.left.length,this.right.length-a+this.left.length).reverse():this.left.slice(a).concat(this.right.slice(this.right.length-u+this.left.length).reverse())}splice(a,r,u){const s=r||0;this.setCursor(Math.trunc(a));const h=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return u&&Oa(this.left,u),h.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(a){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(a)}pushMany(a){this.setCursor(Number.POSITIVE_INFINITY),Oa(this.left,a)}unshift(a){this.setCursor(0),this.right.push(a)}unshiftMany(a){this.setCursor(0),Oa(this.right,a.reverse())}setCursor(a){if(!(a===this.left.length||a>this.left.length&&this.right.length===0||a<0&&this.left.length===0))if(a=4?a(f):n.interrupt(u.parser.constructs.flow,r,a)(f)}}function ug(n,a,r,u,s,h,f,m,p){const d=p||Number.POSITIVE_INFINITY;let x=0;return g;function g(D){return D===60?(n.enter(u),n.enter(s),n.enter(h),n.consume(D),n.exit(h),S):D===null||D===32||D===41||su(D)?r(D):(n.enter(u),n.enter(f),n.enter(m),n.enter("chunkString",{contentType:"string"}),H(D))}function S(D){return D===62?(n.enter(h),n.consume(D),n.exit(h),n.exit(s),n.exit(u),a):(n.enter(m),n.enter("chunkString",{contentType:"string"}),k(D))}function k(D){return D===62?(n.exit("chunkString"),n.exit(m),S(D)):D===null||D===60||ye(D)?r(D):(n.consume(D),D===92?C:k)}function C(D){return D===60||D===62||D===92?(n.consume(D),k):k(D)}function H(D){return!x&&(D===null||D===41||Je(D))?(n.exit("chunkString"),n.exit(m),n.exit(f),n.exit(u),a(D)):x999||k===null||k===91||k===93&&!p||k===94&&!m&&"_hiddenFootnoteSupport"in f.parser.constructs?r(k):k===93?(n.exit(h),n.enter(s),n.consume(k),n.exit(s),n.exit(u),a):ye(k)?(n.enter("lineEnding"),n.consume(k),n.exit("lineEnding"),x):(n.enter("chunkString",{contentType:"string"}),g(k))}function g(k){return k===null||k===91||k===93||ye(k)||m++>999?(n.exit("chunkString"),x(k)):(n.consume(k),p||(p=!je(k)),k===92?S:g)}function S(k){return k===91||k===92||k===93?(n.consume(k),m++,g):g(k)}}function sg(n,a,r,u,s,h){let f;return m;function m(S){return S===34||S===39||S===40?(n.enter(u),n.enter(s),n.consume(S),n.exit(s),f=S===40?41:S,p):r(S)}function p(S){return S===f?(n.enter(s),n.consume(S),n.exit(s),n.exit(u),a):(n.enter(h),d(S))}function d(S){return S===f?(n.exit(h),p(f)):S===null?r(S):ye(S)?(n.enter("lineEnding"),n.consume(S),n.exit("lineEnding"),Le(n,d,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),x(S))}function x(S){return S===f||S===null||ye(S)?(n.exit("chunkString"),d(S)):(n.consume(S),S===92?g:x)}function g(S){return S===f||S===92?(n.consume(S),x):x(S)}}function Ba(n,a){let r;return u;function u(s){return ye(s)?(n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),r=!0,u):je(s)?Le(n,u,r?"linePrefix":"lineSuffix")(s):a(s)}}const tb={name:"definition",tokenize:lb},nb={partial:!0,tokenize:ib};function lb(n,a,r){const u=this;let s;return h;function h(k){return n.enter("definition"),f(k)}function f(k){return cg.call(u,n,m,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(k)}function m(k){return s=on(u.sliceSerialize(u.events[u.events.length-1][1]).slice(1,-1)),k===58?(n.enter("definitionMarker"),n.consume(k),n.exit("definitionMarker"),p):r(k)}function p(k){return Je(k)?Ba(n,d)(k):d(k)}function d(k){return ug(n,x,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(k)}function x(k){return n.attempt(nb,g,g)(k)}function g(k){return je(k)?Le(n,S,"whitespace")(k):S(k)}function S(k){return k===null||ye(k)?(n.exit("definition"),u.parser.defined.push(s),a(k)):r(k)}}function ib(n,a,r){return u;function u(m){return Je(m)?Ba(n,s)(m):r(m)}function s(m){return sg(n,h,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(m)}function h(m){return je(m)?Le(n,f,"whitespace")(m):f(m)}function f(m){return m===null||ye(m)?a(m):r(m)}}const ab={name:"hardBreakEscape",tokenize:rb};function rb(n,a,r){return u;function u(h){return n.enter("hardBreakEscape"),n.consume(h),s}function s(h){return ye(h)?(n.exit("hardBreakEscape"),a(h)):r(h)}}const ub={name:"headingAtx",resolve:cb,tokenize:sb};function cb(n,a){let r=n.length-2,u=3,s,h;return n[u][1].type==="whitespace"&&(u+=2),r-2>u&&n[r][1].type==="whitespace"&&(r-=2),n[r][1].type==="atxHeadingSequence"&&(u===r-1||r-4>u&&n[r-2][1].type==="whitespace")&&(r-=u+1===r?2:4),r>u&&(s={type:"atxHeadingText",start:n[u][1].start,end:n[r][1].end},h={type:"chunkText",start:n[u][1].start,end:n[r][1].end,contentType:"text"},Zt(n,u,r-u+1,[["enter",s,a],["enter",h,a],["exit",h,a],["exit",s,a]])),n}function sb(n,a,r){let u=0;return s;function s(x){return n.enter("atxHeading"),h(x)}function h(x){return n.enter("atxHeadingSequence"),f(x)}function f(x){return x===35&&u++<6?(n.consume(x),f):x===null||Je(x)?(n.exit("atxHeadingSequence"),m(x)):r(x)}function m(x){return x===35?(n.enter("atxHeadingSequence"),p(x)):x===null||ye(x)?(n.exit("atxHeading"),a(x)):je(x)?Le(n,m,"whitespace")(x):(n.enter("atxHeadingText"),d(x))}function p(x){return x===35?(n.consume(x),p):(n.exit("atxHeadingSequence"),m(x))}function d(x){return x===null||x===35||Je(x)?(n.exit("atxHeadingText"),m(x)):(n.consume(x),d)}}const ob=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],sp=["pre","script","style","textarea"],fb={concrete:!0,name:"htmlFlow",resolveTo:mb,tokenize:pb},hb={partial:!0,tokenize:yb},db={partial:!0,tokenize:gb};function mb(n){let a=n.length;for(;a--&&!(n[a][0]==="enter"&&n[a][1].type==="htmlFlow"););return a>1&&n[a-2][1].type==="linePrefix"&&(n[a][1].start=n[a-2][1].start,n[a+1][1].start=n[a-2][1].start,n.splice(a-2,2)),n}function pb(n,a,r){const u=this;let s,h,f,m,p;return d;function d(_){return x(_)}function x(_){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(_),g}function g(_){return _===33?(n.consume(_),S):_===47?(n.consume(_),h=!0,H):_===63?(n.consume(_),s=3,u.interrupt?a:E):Tt(_)?(n.consume(_),f=String.fromCharCode(_),V):r(_)}function S(_){return _===45?(n.consume(_),s=2,k):_===91?(n.consume(_),s=5,m=0,C):Tt(_)?(n.consume(_),s=4,u.interrupt?a:E):r(_)}function k(_){return _===45?(n.consume(_),u.interrupt?a:E):r(_)}function C(_){const ne="CDATA[";return _===ne.charCodeAt(m++)?(n.consume(_),m===ne.length?u.interrupt?a:le:C):r(_)}function H(_){return Tt(_)?(n.consume(_),f=String.fromCharCode(_),V):r(_)}function V(_){if(_===null||_===47||_===62||Je(_)){const ne=_===47,he=f.toLowerCase();return!ne&&!h&&sp.includes(he)?(s=1,u.interrupt?a(_):le(_)):ob.includes(f.toLowerCase())?(s=6,ne?(n.consume(_),D):u.interrupt?a(_):le(_)):(s=7,u.interrupt&&!u.parser.lazy[u.now().line]?r(_):h?J(_):X(_))}return _===45||_t(_)?(n.consume(_),f+=String.fromCharCode(_),V):r(_)}function D(_){return _===62?(n.consume(_),u.interrupt?a:le):r(_)}function J(_){return je(_)?(n.consume(_),J):R(_)}function X(_){return _===47?(n.consume(_),R):_===58||_===95||Tt(_)?(n.consume(_),re):je(_)?(n.consume(_),X):R(_)}function re(_){return _===45||_===46||_===58||_===95||_t(_)?(n.consume(_),re):se(_)}function se(_){return _===61?(n.consume(_),B):je(_)?(n.consume(_),se):X(_)}function B(_){return _===null||_===60||_===61||_===62||_===96?r(_):_===34||_===39?(n.consume(_),p=_,W):je(_)?(n.consume(_),B):de(_)}function W(_){return _===p?(n.consume(_),p=null,ce):_===null||ye(_)?r(_):(n.consume(_),W)}function de(_){return _===null||_===34||_===39||_===47||_===60||_===61||_===62||_===96||Je(_)?se(_):(n.consume(_),de)}function ce(_){return _===47||_===62||je(_)?X(_):r(_)}function R(_){return _===62?(n.consume(_),te):r(_)}function te(_){return _===null||ye(_)?le(_):je(_)?(n.consume(_),te):r(_)}function le(_){return _===45&&s===2?(n.consume(_),w):_===60&&s===1?(n.consume(_),Z):_===62&&s===4?(n.consume(_),T):_===63&&s===3?(n.consume(_),E):_===93&&s===5?(n.consume(_),Se):ye(_)&&(s===6||s===7)?(n.exit("htmlFlowData"),n.check(hb,q,Te)(_)):_===null||ye(_)?(n.exit("htmlFlowData"),Te(_)):(n.consume(_),le)}function Te(_){return n.check(db,$,q)(_)}function $(_){return n.enter("lineEnding"),n.consume(_),n.exit("lineEnding"),F}function F(_){return _===null||ye(_)?Te(_):(n.enter("htmlFlowData"),le(_))}function w(_){return _===45?(n.consume(_),E):le(_)}function Z(_){return _===47?(n.consume(_),f="",ie):le(_)}function ie(_){if(_===62){const ne=f.toLowerCase();return sp.includes(ne)?(n.consume(_),T):le(_)}return Tt(_)&&f.length<8?(n.consume(_),f+=String.fromCharCode(_),ie):le(_)}function Se(_){return _===93?(n.consume(_),E):le(_)}function E(_){return _===62?(n.consume(_),T):_===45&&s===2?(n.consume(_),E):le(_)}function T(_){return _===null||ye(_)?(n.exit("htmlFlowData"),q(_)):(n.consume(_),T)}function q(_){return n.exit("htmlFlow"),a(_)}}function gb(n,a,r){const u=this;return s;function s(f){return ye(f)?(n.enter("lineEnding"),n.consume(f),n.exit("lineEnding"),h):r(f)}function h(f){return u.parser.lazy[u.now().line]?r(f):a(f)}}function yb(n,a,r){return u;function u(s){return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),n.attempt(Ga,a,r)}}const xb={name:"htmlText",tokenize:bb};function bb(n,a,r){const u=this;let s,h,f;return m;function m(E){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(E),p}function p(E){return E===33?(n.consume(E),d):E===47?(n.consume(E),se):E===63?(n.consume(E),X):Tt(E)?(n.consume(E),de):r(E)}function d(E){return E===45?(n.consume(E),x):E===91?(n.consume(E),h=0,C):Tt(E)?(n.consume(E),J):r(E)}function x(E){return E===45?(n.consume(E),k):r(E)}function g(E){return E===null?r(E):E===45?(n.consume(E),S):ye(E)?(f=g,Z(E)):(n.consume(E),g)}function S(E){return E===45?(n.consume(E),k):g(E)}function k(E){return E===62?w(E):E===45?S(E):g(E)}function C(E){const T="CDATA[";return E===T.charCodeAt(h++)?(n.consume(E),h===T.length?H:C):r(E)}function H(E){return E===null?r(E):E===93?(n.consume(E),V):ye(E)?(f=H,Z(E)):(n.consume(E),H)}function V(E){return E===93?(n.consume(E),D):H(E)}function D(E){return E===62?w(E):E===93?(n.consume(E),D):H(E)}function J(E){return E===null||E===62?w(E):ye(E)?(f=J,Z(E)):(n.consume(E),J)}function X(E){return E===null?r(E):E===63?(n.consume(E),re):ye(E)?(f=X,Z(E)):(n.consume(E),X)}function re(E){return E===62?w(E):X(E)}function se(E){return Tt(E)?(n.consume(E),B):r(E)}function B(E){return E===45||_t(E)?(n.consume(E),B):W(E)}function W(E){return ye(E)?(f=W,Z(E)):je(E)?(n.consume(E),W):w(E)}function de(E){return E===45||_t(E)?(n.consume(E),de):E===47||E===62||Je(E)?ce(E):r(E)}function ce(E){return E===47?(n.consume(E),w):E===58||E===95||Tt(E)?(n.consume(E),R):ye(E)?(f=ce,Z(E)):je(E)?(n.consume(E),ce):w(E)}function R(E){return E===45||E===46||E===58||E===95||_t(E)?(n.consume(E),R):te(E)}function te(E){return E===61?(n.consume(E),le):ye(E)?(f=te,Z(E)):je(E)?(n.consume(E),te):ce(E)}function le(E){return E===null||E===60||E===61||E===62||E===96?r(E):E===34||E===39?(n.consume(E),s=E,Te):ye(E)?(f=le,Z(E)):je(E)?(n.consume(E),le):(n.consume(E),$)}function Te(E){return E===s?(n.consume(E),s=void 0,F):E===null?r(E):ye(E)?(f=Te,Z(E)):(n.consume(E),Te)}function $(E){return E===null||E===34||E===39||E===60||E===61||E===96?r(E):E===47||E===62||Je(E)?ce(E):(n.consume(E),$)}function F(E){return E===47||E===62||Je(E)?ce(E):r(E)}function w(E){return E===62?(n.consume(E),n.exit("htmlTextData"),n.exit("htmlText"),a):r(E)}function Z(E){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(E),n.exit("lineEnding"),ie}function ie(E){return je(E)?Le(n,Se,"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E):Se(E)}function Se(E){return n.enter("htmlTextData"),f(E)}}const zo={name:"labelEnd",resolveAll:_b,resolveTo:Eb,tokenize:Ab},vb={tokenize:Tb},Sb={tokenize:zb},kb={tokenize:Cb};function _b(n){let a=-1;const r=[];for(;++a=3&&(d===null||ye(d))?(n.exit("thematicBreak"),a(d)):r(d)}function p(d){return d===s?(n.consume(d),u++,p):(n.exit("thematicBreakSequence"),je(d)?Le(n,m,"whitespace")(d):m(d))}}const Rt={continuation:{tokenize:Ub},exit:qb,name:"list",tokenize:Bb},Rb={partial:!0,tokenize:Yb},Lb={partial:!0,tokenize:Hb};function Bb(n,a,r){const u=this,s=u.events[u.events.length-1];let h=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,f=0;return m;function m(k){const C=u.containerState.type||(k===42||k===43||k===45?"listUnordered":"listOrdered");if(C==="listUnordered"?!u.containerState.marker||k===u.containerState.marker:co(k)){if(u.containerState.type||(u.containerState.type=C,n.enter(C,{_container:!0})),C==="listUnordered")return n.enter("listItemPrefix"),k===42||k===45?n.check(uu,r,d)(k):d(k);if(!u.interrupt||k===49)return n.enter("listItemPrefix"),n.enter("listItemValue"),p(k)}return r(k)}function p(k){return co(k)&&++f<10?(n.consume(k),p):(!u.interrupt||f<2)&&(u.containerState.marker?k===u.containerState.marker:k===41||k===46)?(n.exit("listItemValue"),d(k)):r(k)}function d(k){return n.enter("listItemMarker"),n.consume(k),n.exit("listItemMarker"),u.containerState.marker=u.containerState.marker||k,n.check(Ga,u.interrupt?r:x,n.attempt(Rb,S,g))}function x(k){return u.containerState.initialBlankLine=!0,h++,S(k)}function g(k){return je(k)?(n.enter("listItemPrefixWhitespace"),n.consume(k),n.exit("listItemPrefixWhitespace"),S):r(k)}function S(k){return u.containerState.size=h+u.sliceSerialize(n.exit("listItemPrefix"),!0).length,a(k)}}function Ub(n,a,r){const u=this;return u.containerState._closeFlow=void 0,n.check(Ga,s,h);function s(m){return u.containerState.furtherBlankLines=u.containerState.furtherBlankLines||u.containerState.initialBlankLine,Le(n,a,"listItemIndent",u.containerState.size+1)(m)}function h(m){return u.containerState.furtherBlankLines||!je(m)?(u.containerState.furtherBlankLines=void 0,u.containerState.initialBlankLine=void 0,f(m)):(u.containerState.furtherBlankLines=void 0,u.containerState.initialBlankLine=void 0,n.attempt(Lb,a,f)(m))}function f(m){return u.containerState._closeFlow=!0,u.interrupt=void 0,Le(n,n.attempt(Rt,a,r),"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(m)}}function Hb(n,a,r){const u=this;return Le(n,s,"listItemIndent",u.containerState.size+1);function s(h){const f=u.events[u.events.length-1];return f&&f[1].type==="listItemIndent"&&f[2].sliceSerialize(f[1],!0).length===u.containerState.size?a(h):r(h)}}function qb(n){n.exit(this.containerState.type)}function Yb(n,a,r){const u=this;return Le(n,s,"listItemPrefixWhitespace",u.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(h){const f=u.events[u.events.length-1];return!je(h)&&f&&f[1].type==="listItemPrefixWhitespace"?a(h):r(h)}}const op={name:"setextUnderline",resolveTo:Gb,tokenize:Vb};function Gb(n,a){let r=n.length,u,s,h;for(;r--;)if(n[r][0]==="enter"){if(n[r][1].type==="content"){u=r;break}n[r][1].type==="paragraph"&&(s=r)}else n[r][1].type==="content"&&n.splice(r,1),!h&&n[r][1].type==="definition"&&(h=r);const f={type:"setextHeading",start:{...n[u][1].start},end:{...n[n.length-1][1].end}};return n[s][1].type="setextHeadingText",h?(n.splice(s,0,["enter",f,a]),n.splice(h+1,0,["exit",n[u][1],a]),n[u][1].end={...n[h][1].end}):n[u][1]=f,n.push(["exit",f,a]),n}function Vb(n,a,r){const u=this;let s;return h;function h(d){let x=u.events.length,g;for(;x--;)if(u.events[x][1].type!=="lineEnding"&&u.events[x][1].type!=="linePrefix"&&u.events[x][1].type!=="content"){g=u.events[x][1].type==="paragraph";break}return!u.parser.lazy[u.now().line]&&(u.interrupt||g)?(n.enter("setextHeadingLine"),s=d,f(d)):r(d)}function f(d){return n.enter("setextHeadingLineSequence"),m(d)}function m(d){return d===s?(n.consume(d),m):(n.exit("setextHeadingLineSequence"),je(d)?Le(n,p,"lineSuffix")(d):p(d))}function p(d){return d===null||ye(d)?(n.exit("setextHeadingLine"),a(d)):r(d)}}const Qb={tokenize:Xb};function Xb(n){const a=this,r=n.attempt(Ga,u,n.attempt(this.parser.constructs.flowInitial,s,Le(n,n.attempt(this.parser.constructs.flow,s,n.attempt($x,s)),"linePrefix")));return r;function u(h){if(h===null){n.consume(h);return}return n.enter("lineEndingBlank"),n.consume(h),n.exit("lineEndingBlank"),a.currentConstruct=void 0,r}function s(h){if(h===null){n.consume(h);return}return n.enter("lineEnding"),n.consume(h),n.exit("lineEnding"),a.currentConstruct=void 0,r}}const Zb={resolveAll:fg()},Kb=og("string"),Fb=og("text");function og(n){return{resolveAll:fg(n==="text"?Jb:void 0),tokenize:a};function a(r){const u=this,s=this.parser.constructs[n],h=r.attempt(s,f,m);return f;function f(x){return d(x)?h(x):m(x)}function m(x){if(x===null){r.consume(x);return}return r.enter("data"),r.consume(x),p}function p(x){return d(x)?(r.exit("data"),h(x)):(r.consume(x),p)}function d(x){if(x===null)return!0;const g=s[x];let S=-1;if(g)for(;++S-1){const m=f[0];typeof m=="string"?f[0]=m.slice(u):f.shift()}h>0&&f.push(n[s].slice(0,h))}return f}function cv(n,a){let r=-1;const u=[];let s;for(;++r0){const vt=xe.tokenStack[xe.tokenStack.length-1];(vt[1]||hp).call(xe,void 0,vt[0])}for(P.position={start:yl(Y.length>0?Y[0][1].start:{line:1,column:1,offset:0}),end:yl(Y.length>0?Y[Y.length-2][1].end:{line:1,column:1,offset:0})},Be=-1;++Be0&&(u.className=["language-"+s[0]]);let h={type:"element",tagName:"code",properties:u,children:[{type:"text",value:r}]};return a.meta&&(h.data={meta:a.meta}),n.patch(a,h),h=n.applyData(a,h),h={type:"element",tagName:"pre",properties:{},children:[h]},n.patch(a,h),h}function kv(n,a){const r={type:"element",tagName:"del",properties:{},children:n.all(a)};return n.patch(a,r),n.applyData(a,r)}function _v(n,a){const r={type:"element",tagName:"em",properties:{},children:n.all(a)};return n.patch(a,r),n.applyData(a,r)}function Ev(n,a){const r=typeof n.options.clobberPrefix=="string"?n.options.clobberPrefix:"user-content-",u=String(a.identifier).toUpperCase(),s=Ri(u.toLowerCase()),h=n.footnoteOrder.indexOf(u);let f,m=n.footnoteCounts.get(u);m===void 0?(m=0,n.footnoteOrder.push(u),f=n.footnoteOrder.length):f=h+1,m+=1,n.footnoteCounts.set(u,m);const p={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+s,id:r+"fnref-"+s+(m>1?"-"+m:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(f)}]};n.patch(a,p);const d={type:"element",tagName:"sup",properties:{},children:[p]};return n.patch(a,d),n.applyData(a,d)}function Av(n,a){const r={type:"element",tagName:"h"+a.depth,properties:{},children:n.all(a)};return n.patch(a,r),n.applyData(a,r)}function Tv(n,a){if(n.options.allowDangerousHtml){const r={type:"raw",value:a.value};return n.patch(a,r),n.applyData(a,r)}}function mg(n,a){const r=a.referenceType;let u="]";if(r==="collapsed"?u+="[]":r==="full"&&(u+="["+(a.label||a.identifier)+"]"),a.type==="imageReference")return[{type:"text",value:"!["+a.alt+u}];const s=n.all(a),h=s[0];h&&h.type==="text"?h.value="["+h.value:s.unshift({type:"text",value:"["});const f=s[s.length-1];return f&&f.type==="text"?f.value+=u:s.push({type:"text",value:u}),s}function zv(n,a){const r=String(a.identifier).toUpperCase(),u=n.definitionById.get(r);if(!u)return mg(n,a);const s={src:Ri(u.url||""),alt:a.alt};u.title!==null&&u.title!==void 0&&(s.title=u.title);const h={type:"element",tagName:"img",properties:s,children:[]};return n.patch(a,h),n.applyData(a,h)}function Cv(n,a){const r={src:Ri(a.url)};a.alt!==null&&a.alt!==void 0&&(r.alt=a.alt),a.title!==null&&a.title!==void 0&&(r.title=a.title);const u={type:"element",tagName:"img",properties:r,children:[]};return n.patch(a,u),n.applyData(a,u)}function Mv(n,a){const r={type:"text",value:a.value.replace(/\r?\n|\r/g," ")};n.patch(a,r);const u={type:"element",tagName:"code",properties:{},children:[r]};return n.patch(a,u),n.applyData(a,u)}function wv(n,a){const r=String(a.identifier).toUpperCase(),u=n.definitionById.get(r);if(!u)return mg(n,a);const s={href:Ri(u.url||"")};u.title!==null&&u.title!==void 0&&(s.title=u.title);const h={type:"element",tagName:"a",properties:s,children:n.all(a)};return n.patch(a,h),n.applyData(a,h)}function Nv(n,a){const r={href:Ri(a.url)};a.title!==null&&a.title!==void 0&&(r.title=a.title);const u={type:"element",tagName:"a",properties:r,children:n.all(a)};return n.patch(a,u),n.applyData(a,u)}function jv(n,a,r){const u=n.all(a),s=r?Dv(r):pg(a),h={},f=[];if(typeof a.checked=="boolean"){const x=u[0];let g;x&&x.type==="element"&&x.tagName==="p"?g=x:(g={type:"element",tagName:"p",properties:{},children:[]},u.unshift(g)),g.children.length>0&&g.children.unshift({type:"text",value:" "}),g.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:a.checked,disabled:!0},children:[]}),h.className=["task-list-item"]}let m=-1;for(;++m1}function Ov(n,a){const r={},u=n.all(a);let s=-1;for(typeof a.start=="number"&&a.start!==1&&(r.start=a.start);++s0){const f={type:"element",tagName:"tbody",properties:{},children:n.wrap(r,!0)},m=So(a.children[1]),p=Fp(a.children[a.children.length-1]);m&&p&&(f.position={start:m,end:p}),s.push(f)}const h={type:"element",tagName:"table",properties:{},children:n.wrap(s,!0)};return n.patch(a,h),n.applyData(a,h)}function Hv(n,a,r){const u=r?r.children:void 0,h=(u?u.indexOf(a):1)===0?"th":"td",f=r&&r.type==="table"?r.align:void 0,m=f?f.length:a.children.length;let p=-1;const d=[];for(;++p0,!0),u[0]),s=u.index+u[0].length,u=r.exec(a);return h.push(pp(a.slice(s),s>0,!1)),h.join("")}function pp(n,a,r){let u=0,s=n.length;if(a){let h=n.codePointAt(u);for(;h===dp||h===mp;)u++,h=n.codePointAt(u)}if(r){let h=n.codePointAt(s-1);for(;h===dp||h===mp;)s--,h=n.codePointAt(s-1)}return s>u?n.slice(u,s):""}function Gv(n,a){const r={type:"text",value:Yv(String(a.value))};return n.patch(a,r),n.applyData(a,r)}function Vv(n,a){const r={type:"element",tagName:"hr",properties:{},children:[]};return n.patch(a,r),n.applyData(a,r)}const Qv={blockquote:bv,break:vv,code:Sv,delete:kv,emphasis:_v,footnoteReference:Ev,heading:Av,html:Tv,imageReference:zv,image:Cv,inlineCode:Mv,linkReference:wv,link:Nv,listItem:jv,list:Ov,paragraph:Rv,root:Lv,strong:Bv,table:Uv,tableCell:qv,tableRow:Hv,text:Gv,thematicBreak:Vv,toml:nu,yaml:nu,definition:nu,footnoteDefinition:nu};function nu(){}const gg=-1,gu=0,Ua=1,ou=2,Co=3,Mo=4,wo=5,No=6,yg=7,xg=8,bg=typeof self=="object"?self:globalThis,gp=(n,a)=>{switch(n){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+n)}return new bg[n](a)},Xv=(n,a)=>{const r=(s,h)=>(n.set(h,s),s),u=s=>{if(n.has(s))return n.get(s);const[h,f]=a[s];switch(h){case gu:case gg:return r(f,s);case Ua:{const m=r([],s);for(const p of f)m.push(u(p));return m}case ou:{const m=r({},s);for(const[p,d]of f)m[u(p)]=u(d);return m}case Co:return r(new Date(f),s);case Mo:{const{source:m,flags:p}=f;return r(new RegExp(m,p),s)}case wo:{const m=r(new Map,s);for(const[p,d]of f)m.set(u(p),u(d));return m}case No:{const m=r(new Set,s);for(const p of f)m.add(u(p));return m}case yg:{const{name:m,message:p}=f;return r(typeof bg[m]=="function"?gp(m,p):new Error(p),s)}case xg:return r(BigInt(f),s);case"BigInt":return r(Object(BigInt(f)),s);case"ArrayBuffer":return r(new Uint8Array(f).buffer,f);case"DataView":{const{buffer:m}=new Uint8Array(f);return r(new DataView(m),f)}}return r(gp(h,f),s)};return u},yp=n=>Xv(new Map,n)(0),ql="",{toString:Zv}={},{keys:Kv}=Object,Ra=n=>{const a=typeof n;if(a!=="object"||!n)return[gu,a];const r=Zv.call(n).slice(8,-1);switch(r){case"Array":return[Ua,ql];case"Object":return[ou,ql];case"Date":return[Co,ql];case"RegExp":return[Mo,ql];case"Map":return[wo,ql];case"Set":return[No,ql];case"DataView":return[Ua,r]}return r.includes("Array")?[Ua,r]:n instanceof Error?[yg,n.name||"Error"]:[ou,r]},lu=([n,a])=>n===gu&&(a==="function"||a==="symbol"),Fv=(n,a,r,u)=>{const s=(f,m)=>{const p=u.push(f)-1;return r.set(m,p),p},h=f=>{if(r.has(f))return r.get(f);let[m,p]=Ra(f);switch(m){case gu:{let x=f;switch(p){case"bigint":m=xg,x=f.toString();break;case"function":case"symbol":if(n)throw new TypeError("unable to serialize "+p);x=null;break;case"undefined":return s([gg],f)}return s([m,x],f)}case Ua:{if(p){let S=f;return p==="DataView"?S=new Uint8Array(f.buffer):p==="ArrayBuffer"&&(S=new Uint8Array(f)),s([p,[...S]],f)}const x=[],g=s([m,x],f);for(const S of f)x.push(h(S));return g}case ou:{if(p)switch(p){case"BigInt":return s([p,f.toString()],f);case"Boolean":case"Number":case"String":return s([p,f.valueOf()],f)}if(a&&"toJSON"in f)return h(f.toJSON());const x=[],g=s([m,x],f);for(const S of Kv(f))(n||!lu(Ra(f[S])))&&x.push([h(S),h(f[S])]);return g}case Co:return s([m,isNaN(f.getTime())?ql:f.toISOString()],f);case Mo:{const{source:x,flags:g}=f;return s([m,{source:x,flags:g}],f)}case wo:{const x=[],g=s([m,x],f);for(const[S,k]of f)(n||!(lu(Ra(S))||lu(Ra(k))))&&x.push([h(S),h(k)]);return g}case No:{const x=[],g=s([m,x],f);for(const S of f)(n||!lu(Ra(S)))&&x.push(h(S));return g}}const{message:d}=f;return s([m,{name:p,message:d}],f)};return h},xp=(n,{json:a,lossy:r}={})=>{const u=[];return Fv(!(a||r),!!a,new Map,u)(n),u},fu=typeof structuredClone=="function"?(n,a)=>a&&("json"in a||"lossy"in a)?yp(xp(n,a)):structuredClone(n):(n,a)=>yp(xp(n,a));function Jv(n,a){const r=[{type:"text",value:"↩"}];return a>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(a)}]}),r}function $v(n,a){return"Back to reference "+(n+1)+(a>1?"-"+a:"")}function Iv(n){const a=typeof n.options.clobberPrefix=="string"?n.options.clobberPrefix:"user-content-",r=n.options.footnoteBackContent||Jv,u=n.options.footnoteBackLabel||$v,s=n.options.footnoteLabel||"Footnotes",h=n.options.footnoteLabelTagName||"h2",f=n.options.footnoteLabelProperties||{className:["sr-only"]},m=[];let p=-1;for(;++p0&&C.push({type:"text",value:" "});let J=typeof r=="string"?r:r(p,k);typeof J=="string"&&(J={type:"text",value:J}),C.push({type:"element",tagName:"a",properties:{href:"#"+a+"fnref-"+S+(k>1?"-"+k:""),dataFootnoteBackref:"",ariaLabel:typeof u=="string"?u:u(p,k),className:["data-footnote-backref"]},children:Array.isArray(J)?J:[J]})}const V=x[x.length-1];if(V&&V.type==="element"&&V.tagName==="p"){const J=V.children[V.children.length-1];J&&J.type==="text"?J.value+=" ":V.children.push({type:"text",value:" "}),V.children.push(...C)}else x.push(...C);const D={type:"element",tagName:"li",properties:{id:a+"fn-"+S},children:n.wrap(x,!0)};n.patch(d,D),m.push(D)}if(m.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:h,properties:{...fu(f),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:n.wrap(m,!0)},{type:"text",value:` +`}]}}const yu=(function(n){if(n==null)return tS;if(typeof n=="function")return xu(n);if(typeof n=="object")return Array.isArray(n)?Wv(n):Pv(n);if(typeof n=="string")return eS(n);throw new Error("Expected function, string, or object as test")});function Wv(n){const a=[];let r=-1;for(;++r":""))+")"})}return S;function S(){let k=vg,C,H,V;if((!a||h(p,d,x[x.length-1]||void 0))&&(k=aS(r(p,x)),k[0]===oo))return k;if("children"in p&&p.children){const D=p;if(D.children&&k[0]!==iS)for(H=(u?D.children.length:-1)+f,V=x.concat(D);H>-1&&H0&&r.push({type:"text",value:` +`}),r}function bp(n){let a=0,r=n.charCodeAt(a);for(;r===9||r===32;)a++,r=n.charCodeAt(a);return n.slice(a)}function vp(n,a){const r=uS(n,a),u=r.one(n,void 0),s=Iv(r),h=Array.isArray(u)?{type:"root",children:u}:u||{type:"root",children:[]};return s&&h.children.push({type:"text",value:` +`},s),h}function hS(n,a){return n&&"run"in n?async function(r,u){const s=vp(r,{file:u,...a});await n.run(s,u)}:function(r,u){return vp(r,{file:u,...n||a})}}function Sp(n){if(n)throw n}var Qs,kp;function dS(){if(kp)return Qs;kp=1;var n=Object.prototype.hasOwnProperty,a=Object.prototype.toString,r=Object.defineProperty,u=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):a.call(d)==="[object Array]"},h=function(d){if(!d||a.call(d)!=="[object Object]")return!1;var x=n.call(d,"constructor"),g=d.constructor&&d.constructor.prototype&&n.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!x&&!g)return!1;var S;for(S in d);return typeof S>"u"||n.call(d,S)},f=function(d,x){r&&x.name==="__proto__"?r(d,x.name,{enumerable:!0,configurable:!0,value:x.newValue,writable:!0}):d[x.name]=x.newValue},m=function(d,x){if(x==="__proto__")if(n.call(d,x)){if(u)return u(d,x).value}else return;return d[x]};return Qs=function p(){var d,x,g,S,k,C,H=arguments[0],V=1,D=arguments.length,J=!1;for(typeof H=="boolean"&&(J=H,H=arguments[1]||{},V=2),(H==null||typeof H!="object"&&typeof H!="function")&&(H={});Vf.length;let p;m&&f.push(s);try{p=n.apply(this,f)}catch(d){const x=d;if(m&&r)throw x;return s(x)}m||(p&&p.then&&typeof p.then=="function"?p.then(h,s):p instanceof Error?s(p):h(p))}function s(f,...m){r||(r=!0,a(f,...m))}function h(f){s(null,f)}}const xn={basename:yS,dirname:xS,extname:bS,join:vS,sep:"/"};function yS(n,a){if(a!==void 0&&typeof a!="string")throw new TypeError('"ext" argument must be a string');Va(n);let r=0,u=-1,s=n.length,h;if(a===void 0||a.length===0||a.length>n.length){for(;s--;)if(n.codePointAt(s)===47){if(h){r=s+1;break}}else u<0&&(h=!0,u=s+1);return u<0?"":n.slice(r,u)}if(a===n)return"";let f=-1,m=a.length-1;for(;s--;)if(n.codePointAt(s)===47){if(h){r=s+1;break}}else f<0&&(h=!0,f=s+1),m>-1&&(n.codePointAt(s)===a.codePointAt(m--)?m<0&&(u=s):(m=-1,u=f));return r===u?u=f:u<0&&(u=n.length),n.slice(r,u)}function xS(n){if(Va(n),n.length===0)return".";let a=-1,r=n.length,u;for(;--r;)if(n.codePointAt(r)===47){if(u){a=r;break}}else u||(u=!0);return a<0?n.codePointAt(0)===47?"/":".":a===1&&n.codePointAt(0)===47?"//":n.slice(0,a)}function bS(n){Va(n);let a=n.length,r=-1,u=0,s=-1,h=0,f;for(;a--;){const m=n.codePointAt(a);if(m===47){if(f){u=a+1;break}continue}r<0&&(f=!0,r=a+1),m===46?s<0?s=a:h!==1&&(h=1):s>-1&&(h=-1)}return s<0||r<0||h===0||h===1&&s===r-1&&s===u+1?"":n.slice(s,r)}function vS(...n){let a=-1,r;for(;++a0&&n.codePointAt(n.length-1)===47&&(r+="/"),a?"/"+r:r}function kS(n,a){let r="",u=0,s=-1,h=0,f=-1,m,p;for(;++f<=n.length;){if(f2){if(p=r.lastIndexOf("/"),p!==r.length-1){p<0?(r="",u=0):(r=r.slice(0,p),u=r.length-1-r.lastIndexOf("/")),s=f,h=0;continue}}else if(r.length>0){r="",u=0,s=f,h=0;continue}}a&&(r=r.length>0?r+"/..":"..",u=2)}else r.length>0?r+="/"+n.slice(s+1,f):r=n.slice(s+1,f),u=f-s-1;s=f,h=0}else m===46&&h>-1?h++:h=-1}return r}function Va(n){if(typeof n!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(n))}const _S={cwd:ES};function ES(){return"/"}function mo(n){return!!(n!==null&&typeof n=="object"&&"href"in n&&n.href&&"protocol"in n&&n.protocol&&n.auth===void 0)}function AS(n){if(typeof n=="string")n=new URL(n);else if(!mo(n)){const a=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+n+"`");throw a.code="ERR_INVALID_ARG_TYPE",a}if(n.protocol!=="file:"){const a=new TypeError("The URL must be of scheme file");throw a.code="ERR_INVALID_URL_SCHEME",a}return TS(n)}function TS(n){if(n.hostname!==""){const u=new TypeError('File URL host must be "localhost" or empty on darwin');throw u.code="ERR_INVALID_FILE_URL_HOST",u}const a=n.pathname;let r=-1;for(;++r0){let[k,...C]=x;const H=u[S][1];ho(H)&&ho(k)&&(k=Xs(!0,H,k)),u[S]=[d,k,...C]}}}}const wS=new Do().freeze();function Js(n,a){if(typeof a!="function")throw new TypeError("Cannot `"+n+"` without `parser`")}function $s(n,a){if(typeof a!="function")throw new TypeError("Cannot `"+n+"` without `compiler`")}function Is(n,a){if(a)throw new Error("Cannot call `"+n+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Ep(n){if(!ho(n)||typeof n.type!="string")throw new TypeError("Expected node, got `"+n+"`")}function Ap(n,a,r){if(!r)throw new Error("`"+n+"` finished async. Use `"+a+"` instead")}function iu(n){return NS(n)?n:new kg(n)}function NS(n){return!!(n&&typeof n=="object"&&"message"in n&&"messages"in n)}function jS(n){return typeof n=="string"||DS(n)}function DS(n){return!!(n&&typeof n=="object"&&"byteLength"in n&&"byteOffset"in n)}const OS="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Tp=[],zp={allowDangerousHtml:!0},RS=/^(https?|ircs?|mailto|xmpp)$/i,LS=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function BS(n){const a=US(n),r=HS(n);return qS(a.runSync(a.parse(r),r),n)}function US(n){const a=n.rehypePlugins||Tp,r=n.remarkPlugins||Tp,u=n.remarkRehypeOptions?{...n.remarkRehypeOptions,...zp}:zp;return wS().use(xv).use(r).use(hS,u).use(a)}function HS(n){const a=n.children||"",r=new kg;return typeof a=="string"&&(r.value=a),r}function qS(n,a){const r=a.allowedElements,u=a.allowElement,s=a.components,h=a.disallowedElements,f=a.skipHtml,m=a.unwrapDisallowed,p=a.urlTransform||YS;for(const x of LS)Object.hasOwn(a,x.from)&&(""+x.from+(x.to?"use `"+x.to+"` instead":"remove it")+OS+x.id,void 0);return jo(n,d),tx(n,{Fragment:b.Fragment,components:s,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function d(x,g,S){if(x.type==="raw"&&S&&typeof g=="number")return f?S.children.splice(g,1):S.children[g]={type:"text",value:x.value},g;if(x.type==="element"){let k;for(k in Ys)if(Object.hasOwn(Ys,k)&&Object.hasOwn(x.properties,k)){const C=x.properties[k],H=Ys[k];(H===null||H.includes(x.tagName))&&(x.properties[k]=p(String(C||""),k,x))}}if(x.type==="element"){let k=r?!r.includes(x.tagName):h?h.includes(x.tagName):!1;if(!k&&u&&typeof g=="number"&&(k=!u(x,g,S)),k&&S&&typeof g=="number")return m&&x.children?S.children.splice(g,1,...x.children):S.children.splice(g,1),g}}}function YS(n){const a=n.indexOf(":"),r=n.indexOf("?"),u=n.indexOf("#"),s=n.indexOf("/");return a===-1||s!==-1&&a>s||r!==-1&&a>r||u!==-1&&a>u||RS.test(n.slice(0,a))?n:""}function Cp(n,a){const r=String(n);if(typeof a!="string")throw new TypeError("Expected character");let u=0,s=r.indexOf(a);for(;s!==-1;)u++,s=r.indexOf(a,s+a.length);return u}function GS(n){if(typeof n!="string")throw new TypeError("Expected a string");return n.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function VS(n,a,r){const s=yu((r||{}).ignore||[]),h=QS(a);let f=-1;for(;++f0?{type:"text",value:B}:void 0),B===!1?S.lastIndex=re+1:(C!==re&&J.push({type:"text",value:d.value.slice(C,re)}),Array.isArray(B)?J.push(...B):B&&J.push(B),C=re+X[0].length,D=!0),!S.global)break;X=S.exec(d.value)}return D?(C?\]}]+$/.exec(n);if(!a)return[n,void 0];n=n.slice(0,a.index);let r=a[0],u=r.indexOf(")");const s=Cp(n,"(");let h=Cp(n,")");for(;u!==-1&&s>h;)n+=r.slice(0,u+1),r=r.slice(u+1),u=r.indexOf(")"),h++;return[n,r]}function _g(n,a){const r=n.input.charCodeAt(n.index-1);return(n.index===0||Gl(r)||mu(r))&&(!a||r!==47)}Eg.peek=d2;function a2(){this.buffer()}function r2(n){this.enter({type:"footnoteReference",identifier:"",label:""},n)}function u2(){this.buffer()}function c2(n){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},n)}function s2(n){const a=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=on(this.sliceSerialize(n)).toLowerCase(),r.label=a}function o2(n){this.exit(n)}function f2(n){const a=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=on(this.sliceSerialize(n)).toLowerCase(),r.label=a}function h2(n){this.exit(n)}function d2(){return"["}function Eg(n,a,r,u){const s=r.createTracker(u);let h=s.move("[^");const f=r.enter("footnoteReference"),m=r.enter("reference");return h+=s.move(r.safe(r.associationId(n),{after:"]",before:h})),m(),f(),h+=s.move("]"),h}function m2(){return{enter:{gfmFootnoteCallString:a2,gfmFootnoteCall:r2,gfmFootnoteDefinitionLabelString:u2,gfmFootnoteDefinition:c2},exit:{gfmFootnoteCallString:s2,gfmFootnoteCall:o2,gfmFootnoteDefinitionLabelString:f2,gfmFootnoteDefinition:h2}}}function p2(n){let a=!1;return n&&n.firstLineBlank&&(a=!0),{handlers:{footnoteDefinition:r,footnoteReference:Eg},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(u,s,h,f){const m=h.createTracker(f);let p=m.move("[^");const d=h.enter("footnoteDefinition"),x=h.enter("label");return p+=m.move(h.safe(h.associationId(u),{before:p,after:"]"})),x(),p+=m.move("]:"),u.children&&u.children.length>0&&(m.shift(4),p+=m.move((a?` +`:" ")+h.indentLines(h.containerFlow(u,m.current()),a?Ag:g2))),d(),p}}function g2(n,a,r){return a===0?n:Ag(n,a,r)}function Ag(n,a,r){return(r?"":" ")+n}const y2=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Tg.peek=k2;function x2(){return{canContainEols:["delete"],enter:{strikethrough:v2},exit:{strikethrough:S2}}}function b2(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:y2}],handlers:{delete:Tg}}}function v2(n){this.enter({type:"delete",children:[]},n)}function S2(n){this.exit(n)}function Tg(n,a,r,u){const s=r.createTracker(u),h=r.enter("strikethrough");let f=s.move("~~");return f+=r.containerPhrasing(n,{...s.current(),before:f,after:"~"}),f+=s.move("~~"),h(),f}function k2(){return"~"}function _2(n){return n.length}function E2(n,a){const r=a||{},u=(r.align||[]).concat(),s=r.stringLength||_2,h=[],f=[],m=[],p=[];let d=0,x=-1;for(;++xd&&(d=n[x].length);++Dp[D])&&(p[D]=X)}H.push(J)}f[x]=H,m[x]=V}let g=-1;if(typeof u=="object"&&"length"in u)for(;++gp[g]&&(p[g]=J),k[g]=J),S[g]=X}f.splice(1,0,S),m.splice(1,0,k),x=-1;const C=[];for(;++x "),h.shift(2);const f=r.indentLines(r.containerFlow(n,h.current()),z2);return s(),f}function z2(n,a,r){return">"+(r?"":" ")+n}function C2(n,a){return wp(n,a.inConstruct,!0)&&!wp(n,a.notInConstruct,!1)}function wp(n,a,r){if(typeof a=="string"&&(a=[a]),!a||a.length===0)return r;let u=-1;for(;++uf&&(f=h):h=1,s=u+a.length,u=r.indexOf(a,s);return f}function w2(n,a){return!!(a.options.fences===!1&&n.value&&!n.lang&&/[^ \r\n]/.test(n.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(n.value))}function N2(n){const a=n.options.fence||"`";if(a!=="`"&&a!=="~")throw new Error("Cannot serialize code with `"+a+"` for `options.fence`, expected `` ` `` or `~`");return a}function j2(n,a,r,u){const s=N2(r),h=n.value||"",f=s==="`"?"GraveAccent":"Tilde";if(w2(n,r)){const g=r.enter("codeIndented"),S=r.indentLines(h,D2);return g(),S}const m=r.createTracker(u),p=s.repeat(Math.max(M2(h,s)+1,3)),d=r.enter("codeFenced");let x=m.move(p);if(n.lang){const g=r.enter(`codeFencedLang${f}`);x+=m.move(r.safe(n.lang,{before:x,after:" ",encode:["`"],...m.current()})),g()}if(n.lang&&n.meta){const g=r.enter(`codeFencedMeta${f}`);x+=m.move(" "),x+=m.move(r.safe(n.meta,{before:x,after:` +`,encode:["`"],...m.current()})),g()}return x+=m.move(` +`),h&&(x+=m.move(h+` +`)),x+=m.move(p),d(),x}function D2(n,a,r){return(r?"":" ")+n}function Oo(n){const a=n.options.quote||'"';if(a!=='"'&&a!=="'")throw new Error("Cannot serialize title with `"+a+"` for `options.quote`, expected `\"`, or `'`");return a}function O2(n,a,r,u){const s=Oo(r),h=s==='"'?"Quote":"Apostrophe",f=r.enter("definition");let m=r.enter("label");const p=r.createTracker(u);let d=p.move("[");return d+=p.move(r.safe(r.associationId(n),{before:d,after:"]",...p.current()})),d+=p.move("]: "),m(),!n.url||/[\0- \u007F]/.test(n.url)?(m=r.enter("destinationLiteral"),d+=p.move("<"),d+=p.move(r.safe(n.url,{before:d,after:">",...p.current()})),d+=p.move(">")):(m=r.enter("destinationRaw"),d+=p.move(r.safe(n.url,{before:d,after:n.title?" ":` +`,...p.current()}))),m(),n.title&&(m=r.enter(`title${h}`),d+=p.move(" "+s),d+=p.move(r.safe(n.title,{before:d,after:s,...p.current()})),d+=p.move(s),m()),f(),d}function R2(n){const a=n.options.emphasis||"*";if(a!=="*"&&a!=="_")throw new Error("Cannot serialize emphasis with `"+a+"` for `options.emphasis`, expected `*`, or `_`");return a}function qa(n){return"&#x"+n.toString(16).toUpperCase()+";"}function hu(n,a,r){const u=ji(n),s=ji(a);return u===void 0?s===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:u===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}zg.peek=L2;function zg(n,a,r,u){const s=R2(r),h=r.enter("emphasis"),f=r.createTracker(u),m=f.move(s);let p=f.move(r.containerPhrasing(n,{after:s,before:m,...f.current()}));const d=p.charCodeAt(0),x=hu(u.before.charCodeAt(u.before.length-1),d,s);x.inside&&(p=qa(d)+p.slice(1));const g=p.charCodeAt(p.length-1),S=hu(u.after.charCodeAt(0),g,s);S.inside&&(p=p.slice(0,-1)+qa(g));const k=f.move(s);return h(),r.attentionEncodeSurroundingInfo={after:S.outside,before:x.outside},m+p+k}function L2(n,a,r){return r.options.emphasis||"*"}function B2(n,a){let r=!1;return jo(n,function(u){if("value"in u&&/\r?\n|\r/.test(u.value)||u.type==="break")return r=!0,oo}),!!((!n.depth||n.depth<3)&&Ao(n)&&(a.options.setext||r))}function U2(n,a,r,u){const s=Math.max(Math.min(6,n.depth||1),1),h=r.createTracker(u);if(B2(n,r)){const x=r.enter("headingSetext"),g=r.enter("phrasing"),S=r.containerPhrasing(n,{...h.current(),before:` +`,after:` +`});return g(),x(),S+` +`+(s===1?"=":"-").repeat(S.length-(Math.max(S.lastIndexOf("\r"),S.lastIndexOf(` +`))+1))}const f="#".repeat(s),m=r.enter("headingAtx"),p=r.enter("phrasing");h.move(f+" ");let d=r.containerPhrasing(n,{before:"# ",after:` +`,...h.current()});return/^[\t ]/.test(d)&&(d=qa(d.charCodeAt(0))+d.slice(1)),d=d?f+" "+d:f,r.options.closeAtx&&(d+=" "+f),p(),m(),d}Cg.peek=H2;function Cg(n){return n.value||""}function H2(){return"<"}Mg.peek=q2;function Mg(n,a,r,u){const s=Oo(r),h=s==='"'?"Quote":"Apostrophe",f=r.enter("image");let m=r.enter("label");const p=r.createTracker(u);let d=p.move("![");return d+=p.move(r.safe(n.alt,{before:d,after:"]",...p.current()})),d+=p.move("]("),m(),!n.url&&n.title||/[\0- \u007F]/.test(n.url)?(m=r.enter("destinationLiteral"),d+=p.move("<"),d+=p.move(r.safe(n.url,{before:d,after:">",...p.current()})),d+=p.move(">")):(m=r.enter("destinationRaw"),d+=p.move(r.safe(n.url,{before:d,after:n.title?" ":")",...p.current()}))),m(),n.title&&(m=r.enter(`title${h}`),d+=p.move(" "+s),d+=p.move(r.safe(n.title,{before:d,after:s,...p.current()})),d+=p.move(s),m()),d+=p.move(")"),f(),d}function q2(){return"!"}wg.peek=Y2;function wg(n,a,r,u){const s=n.referenceType,h=r.enter("imageReference");let f=r.enter("label");const m=r.createTracker(u);let p=m.move("![");const d=r.safe(n.alt,{before:p,after:"]",...m.current()});p+=m.move(d+"]["),f();const x=r.stack;r.stack=[],f=r.enter("reference");const g=r.safe(r.associationId(n),{before:p,after:"]",...m.current()});return f(),r.stack=x,h(),s==="full"||!d||d!==g?p+=m.move(g+"]"):s==="shortcut"?p=p.slice(0,-1):p+=m.move("]"),p}function Y2(){return"!"}Ng.peek=G2;function Ng(n,a,r){let u=n.value||"",s="`",h=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(u);)s+="`";for(/[^ \r\n]/.test(u)&&(/^[ \r\n]/.test(u)&&/[ \r\n]$/.test(u)||/^`|`$/.test(u))&&(u=" "+u+" ");++h\u007F]/.test(n.url))}Dg.peek=V2;function Dg(n,a,r,u){const s=Oo(r),h=s==='"'?"Quote":"Apostrophe",f=r.createTracker(u);let m,p;if(jg(n,r)){const x=r.stack;r.stack=[],m=r.enter("autolink");let g=f.move("<");return g+=f.move(r.containerPhrasing(n,{before:g,after:">",...f.current()})),g+=f.move(">"),m(),r.stack=x,g}m=r.enter("link"),p=r.enter("label");let d=f.move("[");return d+=f.move(r.containerPhrasing(n,{before:d,after:"](",...f.current()})),d+=f.move("]("),p(),!n.url&&n.title||/[\0- \u007F]/.test(n.url)?(p=r.enter("destinationLiteral"),d+=f.move("<"),d+=f.move(r.safe(n.url,{before:d,after:">",...f.current()})),d+=f.move(">")):(p=r.enter("destinationRaw"),d+=f.move(r.safe(n.url,{before:d,after:n.title?" ":")",...f.current()}))),p(),n.title&&(p=r.enter(`title${h}`),d+=f.move(" "+s),d+=f.move(r.safe(n.title,{before:d,after:s,...f.current()})),d+=f.move(s),p()),d+=f.move(")"),m(),d}function V2(n,a,r){return jg(n,r)?"<":"["}Og.peek=Q2;function Og(n,a,r,u){const s=n.referenceType,h=r.enter("linkReference");let f=r.enter("label");const m=r.createTracker(u);let p=m.move("[");const d=r.containerPhrasing(n,{before:p,after:"]",...m.current()});p+=m.move(d+"]["),f();const x=r.stack;r.stack=[],f=r.enter("reference");const g=r.safe(r.associationId(n),{before:p,after:"]",...m.current()});return f(),r.stack=x,h(),s==="full"||!d||d!==g?p+=m.move(g+"]"):s==="shortcut"?p=p.slice(0,-1):p+=m.move("]"),p}function Q2(){return"["}function Ro(n){const a=n.options.bullet||"*";if(a!=="*"&&a!=="+"&&a!=="-")throw new Error("Cannot serialize items with `"+a+"` for `options.bullet`, expected `*`, `+`, or `-`");return a}function X2(n){const a=Ro(n),r=n.options.bulletOther;if(!r)return a==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===a)throw new Error("Expected `bullet` (`"+a+"`) and `bulletOther` (`"+r+"`) to be different");return r}function Z2(n){const a=n.options.bulletOrdered||".";if(a!=="."&&a!==")")throw new Error("Cannot serialize items with `"+a+"` for `options.bulletOrdered`, expected `.` or `)`");return a}function Rg(n){const a=n.options.rule||"*";if(a!=="*"&&a!=="-"&&a!=="_")throw new Error("Cannot serialize rules with `"+a+"` for `options.rule`, expected `*`, `-`, or `_`");return a}function K2(n,a,r,u){const s=r.enter("list"),h=r.bulletCurrent;let f=n.ordered?Z2(r):Ro(r);const m=n.ordered?f==="."?")":".":X2(r);let p=a&&r.bulletLastUsed?f===r.bulletLastUsed:!1;if(!n.ordered){const x=n.children?n.children[0]:void 0;if((f==="*"||f==="-")&&x&&(!x.children||!x.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(p=!0),Rg(r)===f&&x){let g=-1;for(;++g-1?a.start:1)+(r.options.incrementListMarker===!1?0:a.children.indexOf(n))+h);let f=h.length+1;(s==="tab"||s==="mixed"&&(a&&a.type==="list"&&a.spread||n.spread))&&(f=Math.ceil(f/4)*4);const m=r.createTracker(u);m.move(h+" ".repeat(f-h.length)),m.shift(f);const p=r.enter("listItem"),d=r.indentLines(r.containerFlow(n,m.current()),x);return p(),d;function x(g,S,k){return S?(k?"":" ".repeat(f))+g:(k?h:h+" ".repeat(f-h.length))+g}}function $2(n,a,r,u){const s=r.enter("paragraph"),h=r.enter("phrasing"),f=r.containerPhrasing(n,u);return h(),s(),f}const I2=yu(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function W2(n,a,r,u){return(n.children.some(function(f){return I2(f)})?r.containerPhrasing:r.containerFlow).call(r,n,u)}function P2(n){const a=n.options.strong||"*";if(a!=="*"&&a!=="_")throw new Error("Cannot serialize strong with `"+a+"` for `options.strong`, expected `*`, or `_`");return a}Lg.peek=ek;function Lg(n,a,r,u){const s=P2(r),h=r.enter("strong"),f=r.createTracker(u),m=f.move(s+s);let p=f.move(r.containerPhrasing(n,{after:s,before:m,...f.current()}));const d=p.charCodeAt(0),x=hu(u.before.charCodeAt(u.before.length-1),d,s);x.inside&&(p=qa(d)+p.slice(1));const g=p.charCodeAt(p.length-1),S=hu(u.after.charCodeAt(0),g,s);S.inside&&(p=p.slice(0,-1)+qa(g));const k=f.move(s+s);return h(),r.attentionEncodeSurroundingInfo={after:S.outside,before:x.outside},m+p+k}function ek(n,a,r){return r.options.strong||"*"}function tk(n,a,r,u){return r.safe(n.value,u)}function nk(n){const a=n.options.ruleRepetition||3;if(a<3)throw new Error("Cannot serialize rules with repetition `"+a+"` for `options.ruleRepetition`, expected `3` or more");return a}function lk(n,a,r){const u=(Rg(r)+(r.options.ruleSpaces?" ":"")).repeat(nk(r));return r.options.ruleSpaces?u.slice(0,-1):u}const Bg={blockquote:T2,break:Np,code:j2,definition:O2,emphasis:zg,hardBreak:Np,heading:U2,html:Cg,image:Mg,imageReference:wg,inlineCode:Ng,link:Dg,linkReference:Og,list:K2,listItem:J2,paragraph:$2,root:W2,strong:Lg,text:tk,thematicBreak:lk};function ik(){return{enter:{table:ak,tableData:jp,tableHeader:jp,tableRow:uk},exit:{codeText:ck,table:rk,tableData:to,tableHeader:to,tableRow:to}}}function ak(n){const a=n._align;this.enter({type:"table",align:a.map(function(r){return r==="none"?null:r}),children:[]},n),this.data.inTable=!0}function rk(n){this.exit(n),this.data.inTable=void 0}function uk(n){this.enter({type:"tableRow",children:[]},n)}function to(n){this.exit(n)}function jp(n){this.enter({type:"tableCell",children:[]},n)}function ck(n){let a=this.resume();this.data.inTable&&(a=a.replace(/\\([\\|])/g,sk));const r=this.stack[this.stack.length-1];r.type,r.value=a,this.exit(n)}function sk(n,a){return a==="|"?a:n}function ok(n){const a=n||{},r=a.tableCellPadding,u=a.tablePipeAlign,s=a.stringLength,h=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:S,table:f,tableCell:p,tableRow:m}};function f(k,C,H,V){return d(x(k,H,V),k.align)}function m(k,C,H,V){const D=g(k,H,V),J=d([D]);return J.slice(0,J.indexOf(` +`))}function p(k,C,H,V){const D=H.enter("tableCell"),J=H.enter("phrasing"),X=H.containerPhrasing(k,{...V,before:h,after:h});return J(),D(),X}function d(k,C){return E2(k,{align:C,alignDelimiters:u,padding:r,stringLength:s})}function x(k,C,H){const V=k.children;let D=-1;const J=[],X=C.enter("table");for(;++D0&&!r&&(n[n.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const Ck={tokenize:Lk,partial:!0};function Mk(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:Dk,continuation:{tokenize:Ok},exit:Rk}},text:{91:{name:"gfmFootnoteCall",tokenize:jk},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:wk,resolveTo:Nk}}}}function wk(n,a,r){const u=this;let s=u.events.length;const h=u.parser.gfmFootnotes||(u.parser.gfmFootnotes=[]);let f;for(;s--;){const p=u.events[s][1];if(p.type==="labelImage"){f=p;break}if(p.type==="gfmFootnoteCall"||p.type==="labelLink"||p.type==="label"||p.type==="image"||p.type==="link")break}return m;function m(p){if(!f||!f._balanced)return r(p);const d=on(u.sliceSerialize({start:f.end,end:u.now()}));return d.codePointAt(0)!==94||!h.includes(d.slice(1))?r(p):(n.enter("gfmFootnoteCallLabelMarker"),n.consume(p),n.exit("gfmFootnoteCallLabelMarker"),a(p))}}function Nk(n,a){let r=n.length;for(;r--;)if(n[r][1].type==="labelImage"&&n[r][0]==="enter"){n[r][1];break}n[r+1][1].type="data",n[r+3][1].type="gfmFootnoteCallLabelMarker";const u={type:"gfmFootnoteCall",start:Object.assign({},n[r+3][1].start),end:Object.assign({},n[n.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},n[r+3][1].end),end:Object.assign({},n[r+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const h={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},n[n.length-1][1].start)},f={type:"chunkString",contentType:"string",start:Object.assign({},h.start),end:Object.assign({},h.end)},m=[n[r+1],n[r+2],["enter",u,a],n[r+3],n[r+4],["enter",s,a],["exit",s,a],["enter",h,a],["enter",f,a],["exit",f,a],["exit",h,a],n[n.length-2],n[n.length-1],["exit",u,a]];return n.splice(r,n.length-r+1,...m),n}function jk(n,a,r){const u=this,s=u.parser.gfmFootnotes||(u.parser.gfmFootnotes=[]);let h=0,f;return m;function m(g){return n.enter("gfmFootnoteCall"),n.enter("gfmFootnoteCallLabelMarker"),n.consume(g),n.exit("gfmFootnoteCallLabelMarker"),p}function p(g){return g!==94?r(g):(n.enter("gfmFootnoteCallMarker"),n.consume(g),n.exit("gfmFootnoteCallMarker"),n.enter("gfmFootnoteCallString"),n.enter("chunkString").contentType="string",d)}function d(g){if(h>999||g===93&&!f||g===null||g===91||Je(g))return r(g);if(g===93){n.exit("chunkString");const S=n.exit("gfmFootnoteCallString");return s.includes(on(u.sliceSerialize(S)))?(n.enter("gfmFootnoteCallLabelMarker"),n.consume(g),n.exit("gfmFootnoteCallLabelMarker"),n.exit("gfmFootnoteCall"),a):r(g)}return Je(g)||(f=!0),h++,n.consume(g),g===92?x:d}function x(g){return g===91||g===92||g===93?(n.consume(g),h++,d):d(g)}}function Dk(n,a,r){const u=this,s=u.parser.gfmFootnotes||(u.parser.gfmFootnotes=[]);let h,f=0,m;return p;function p(C){return n.enter("gfmFootnoteDefinition")._container=!0,n.enter("gfmFootnoteDefinitionLabel"),n.enter("gfmFootnoteDefinitionLabelMarker"),n.consume(C),n.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(C){return C===94?(n.enter("gfmFootnoteDefinitionMarker"),n.consume(C),n.exit("gfmFootnoteDefinitionMarker"),n.enter("gfmFootnoteDefinitionLabelString"),n.enter("chunkString").contentType="string",x):r(C)}function x(C){if(f>999||C===93&&!m||C===null||C===91||Je(C))return r(C);if(C===93){n.exit("chunkString");const H=n.exit("gfmFootnoteDefinitionLabelString");return h=on(u.sliceSerialize(H)),n.enter("gfmFootnoteDefinitionLabelMarker"),n.consume(C),n.exit("gfmFootnoteDefinitionLabelMarker"),n.exit("gfmFootnoteDefinitionLabel"),S}return Je(C)||(m=!0),f++,n.consume(C),C===92?g:x}function g(C){return C===91||C===92||C===93?(n.consume(C),f++,x):x(C)}function S(C){return C===58?(n.enter("definitionMarker"),n.consume(C),n.exit("definitionMarker"),s.includes(h)||s.push(h),Le(n,k,"gfmFootnoteDefinitionWhitespace")):r(C)}function k(C){return a(C)}}function Ok(n,a,r){return n.check(Ga,a,n.attempt(Ck,a,r))}function Rk(n){n.exit("gfmFootnoteDefinition")}function Lk(n,a,r){const u=this;return Le(n,s,"gfmFootnoteDefinitionIndent",5);function s(h){const f=u.events[u.events.length-1];return f&&f[1].type==="gfmFootnoteDefinitionIndent"&&f[2].sliceSerialize(f[1],!0).length===4?a(h):r(h)}}function Bk(n){let r=(n||{}).singleTilde;const u={name:"strikethrough",tokenize:h,resolveAll:s};return r==null&&(r=!0),{text:{126:u},insideSpan:{null:[u]},attentionMarkers:{null:[126]}};function s(f,m){let p=-1;for(;++p1?p(C):(f.consume(C),g++,k);if(g<2&&!r)return p(C);const V=f.exit("strikethroughSequenceTemporary"),D=ji(C);return V._open=!D||D===2&&!!H,V._close=!H||H===2&&!!D,m(C)}}}class Uk{constructor(){this.map=[]}add(a,r,u){Hk(this,a,r,u)}consume(a){if(this.map.sort(function(h,f){return h[0]-f[0]}),this.map.length===0)return;let r=this.map.length;const u=[];for(;r>0;)r-=1,u.push(a.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),a.length=this.map[r][0];u.push(a.slice()),a.length=0;let s=u.pop();for(;s;){for(const h of s)a.push(h);s=u.pop()}this.map.length=0}}function Hk(n,a,r,u){let s=0;if(!(r===0&&u.length===0)){for(;s-1;){const $=u.events[te][1].type;if($==="lineEnding"||$==="linePrefix")te--;else break}const le=te>-1?u.events[te][1].type:null,Te=le==="tableHead"||le==="tableRow"?B:p;return Te===B&&u.parser.lazy[u.now().line]?r(R):Te(R)}function p(R){return n.enter("tableHead"),n.enter("tableRow"),d(R)}function d(R){return R===124||(f=!0,h+=1),x(R)}function x(R){return R===null?r(R):ye(R)?h>1?(h=0,u.interrupt=!0,n.exit("tableRow"),n.enter("lineEnding"),n.consume(R),n.exit("lineEnding"),k):r(R):je(R)?Le(n,x,"whitespace")(R):(h+=1,f&&(f=!1,s+=1),R===124?(n.enter("tableCellDivider"),n.consume(R),n.exit("tableCellDivider"),f=!0,x):(n.enter("data"),g(R)))}function g(R){return R===null||R===124||Je(R)?(n.exit("data"),x(R)):(n.consume(R),R===92?S:g)}function S(R){return R===92||R===124?(n.consume(R),g):g(R)}function k(R){return u.interrupt=!1,u.parser.lazy[u.now().line]?r(R):(n.enter("tableDelimiterRow"),f=!1,je(R)?Le(n,C,"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):C(R))}function C(R){return R===45||R===58?V(R):R===124?(f=!0,n.enter("tableCellDivider"),n.consume(R),n.exit("tableCellDivider"),H):se(R)}function H(R){return je(R)?Le(n,V,"whitespace")(R):V(R)}function V(R){return R===58?(h+=1,f=!0,n.enter("tableDelimiterMarker"),n.consume(R),n.exit("tableDelimiterMarker"),D):R===45?(h+=1,D(R)):R===null||ye(R)?re(R):se(R)}function D(R){return R===45?(n.enter("tableDelimiterFiller"),J(R)):se(R)}function J(R){return R===45?(n.consume(R),J):R===58?(f=!0,n.exit("tableDelimiterFiller"),n.enter("tableDelimiterMarker"),n.consume(R),n.exit("tableDelimiterMarker"),X):(n.exit("tableDelimiterFiller"),X(R))}function X(R){return je(R)?Le(n,re,"whitespace")(R):re(R)}function re(R){return R===124?C(R):R===null||ye(R)?!f||s!==h?se(R):(n.exit("tableDelimiterRow"),n.exit("tableHead"),a(R)):se(R)}function se(R){return r(R)}function B(R){return n.enter("tableRow"),W(R)}function W(R){return R===124?(n.enter("tableCellDivider"),n.consume(R),n.exit("tableCellDivider"),W):R===null||ye(R)?(n.exit("tableRow"),a(R)):je(R)?Le(n,W,"whitespace")(R):(n.enter("data"),de(R))}function de(R){return R===null||R===124||Je(R)?(n.exit("data"),W(R)):(n.consume(R),R===92?ce:de)}function ce(R){return R===92||R===124?(n.consume(R),de):de(R)}}function Vk(n,a){let r=-1,u=!0,s=0,h=[0,0,0,0],f=[0,0,0,0],m=!1,p=0,d,x,g;const S=new Uk;for(;++rr[2]+1){const C=r[2]+1,H=r[3]-r[2]-1;n.add(C,H,[])}}n.add(r[3]+1,0,[["exit",g,a]])}return s!==void 0&&(h.end=Object.assign({},Ni(a.events,s)),n.add(s,0,[["exit",h,a]]),h=void 0),h}function Op(n,a,r,u,s){const h=[],f=Ni(a.events,r);s&&(s.end=Object.assign({},f),h.push(["exit",s,a])),u.end=Object.assign({},f),h.push(["exit",u,a]),n.add(r+1,0,h)}function Ni(n,a){const r=n[a],u=r[0]==="enter"?"start":"end";return r[1][u]}const Qk={name:"tasklistCheck",tokenize:Zk};function Xk(){return{text:{91:Qk}}}function Zk(n,a,r){const u=this;return s;function s(p){return u.previous!==null||!u._gfmTasklistFirstContentOfListItem?r(p):(n.enter("taskListCheck"),n.enter("taskListCheckMarker"),n.consume(p),n.exit("taskListCheckMarker"),h)}function h(p){return Je(p)?(n.enter("taskListCheckValueUnchecked"),n.consume(p),n.exit("taskListCheckValueUnchecked"),f):p===88||p===120?(n.enter("taskListCheckValueChecked"),n.consume(p),n.exit("taskListCheckValueChecked"),f):r(p)}function f(p){return p===93?(n.enter("taskListCheckMarker"),n.consume(p),n.exit("taskListCheckMarker"),n.exit("taskListCheck"),m):r(p)}function m(p){return ye(p)?a(p):je(p)?n.check({tokenize:Kk},a,r)(p):r(p)}}function Kk(n,a,r){return Le(n,u,"whitespace");function u(s){return s===null?r(s):a(s)}}function Fk(n){return tg([bk(),Mk(),Bk(n),Yk(),Xk()])}const Jk={};function $k(n){const a=this,r=n||Jk,u=a.data(),s=u.micromarkExtensions||(u.micromarkExtensions=[]),h=u.fromMarkdownExtensions||(u.fromMarkdownExtensions=[]),f=u.toMarkdownExtensions||(u.toMarkdownExtensions=[]);s.push(Fk(r)),h.push(pk()),f.push(gk(r))}/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ik=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Zg=(...n)=>n.filter((a,r,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===r).join(" ").trim();/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var Wk={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pk=ge.forwardRef(({color:n="currentColor",size:a=24,strokeWidth:r=2,absoluteStrokeWidth:u,className:s="",children:h,iconNode:f,...m},p)=>ge.createElement("svg",{ref:p,...Wk,width:a,height:a,stroke:n,strokeWidth:u?Number(r)*24/Number(a):r,className:Zg("lucide",s),...m},[...f.map(([d,x])=>ge.createElement(d,x)),...Array.isArray(h)?h:[h]]));/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ft=(n,a)=>{const r=ge.forwardRef(({className:u,...s},h)=>ge.createElement(Pk,{ref:h,iconNode:a,className:Zg(`lucide-${Ik(n)}`,u),...s}));return r.displayName=`${n}`,r};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kg=ft("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e_=ft("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fg=ft("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t_=ft("CircleStop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n_=ft("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jg=ft("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l_=ft("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i_=ft("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a_=ft("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r_=ft("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bo=ft("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $g=ft("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u_=ft("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c_=ft("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const go=ft("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ig=ft("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s_=ft("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o_=ft("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f_=ft("Timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]),bu={non_finite:{label:"Non-finite",color:"#ef4444",shape:"cross"},constant_reward:{label:"Constant reward",color:"#f59e0b",shape:"diamond"},invalid_batch:{label:"Invalid batch",color:"#8b5cf6",shape:"square"},oom:{label:"OOM",color:"#dc2626",shape:"triangle"}},Wg=Object.keys(bu);function h_(n,a){if(!n||!a)return 0;const r=Number(n.step||0),{stepMin:u=0,stepSpan:s=1,width:h=700}=a;return(r-u)/Math.max(s,1)*h+10}function d_(n,a){return Array.isArray(n)?n.filter(r=>{const u=r&&r.kind;return u&&a[u]!==!1}):[]}function m_(n,a,r=20){if(!Array.isArray(n)||a<0||a>=n.length)return[];const u=Math.max(0,a-r),s=Math.min(n.length,a+r+1),h=[];for(let f=u;fMath.abs(Number(u.step||0)-a)<=r).sort((u,s)=>Number(u.step)-Number(s.step)):[]}const Pg=new URL(".",window.location.href).pathname;async function qn(n,a){const r=await fetch(`${Pg}${n.replace(/^\//,"")}`,{headers:{"Content-Type":"application/json",...(a==null?void 0:a.headers)||{}},...a}),u=await r.text(),s=u?JSON.parse(u):{};if(!r.ok)throw new Error(s.error||r.statusText);return s}function kt(...n){return n.filter(Boolean).join(" ")}function no(n,a=2500,r=[]){const[u,s]=ge.useState(null),h=async()=>{try{const f=await n();s(f)}catch{}};return ge.useEffect(()=>{h();const f=setInterval(h,a);return()=>clearInterval(f)},r),{data:u,refresh:h}}const Di=[{role:"assistant",content:"Select a job, then ask about metrics, runtime, logs, or how to start the next AReno task."}],g_="areno-dashboard-agent-chat",ey="areno-dashboard-agent-chat-sessions",Rp="areno-dashboard-agent-active-chat",Lp="areno-dashboard-agent-draft";function y_(){try{const n=JSON.parse(localStorage.getItem(g_)||"[]");return Array.isArray(n)&&n.length?n:Di}catch{return Di}}function cu(n=Di,a="New chat"){const r=Date.now();return{id:`chat-${r}-${Math.random().toString(16).slice(2)}`,title:a,createdAt:r,updatedAt:r,messages:n}}function x_(){try{const n=JSON.parse(localStorage.getItem(ey)||"[]");if(Array.isArray(n)&&n.length)return n.map(a=>{var r;return{...a,messages:(r=a.messages)!=null&&r.length?a.messages:Di}})}catch{}return[cu(y_(),"Default chat")]}function b_(n,a="New chat"){const r=n.find(s=>s.role==="user"&&s.content);if(!r)return a;const u=r.content.replace(/\s+/g," ").trim();return u.length>42?`${u.slice(0,42)}...`:u}const v_={ckpt:"Qwen/Qwen3-0.6B",dataset_path:"yahma/alpaca-cleaned:train",dataset_loader_fn:"examples/sft/alpaca/dataset_loader.py",reward_fn_path:"",ref_ckpt:"",reward_ckpt:"",critic_ckpt:"",agent_fn:"",algo:"sft",model_hub:"modelscope",epochs:10,max_steps:5,world_size:1,tp_size:1,attn_backend:"flash",activation_checkpointing:!0,drop_rollout_state:!1,eager_decode:!1,disable_thinking:!1,batch_size:8,n_samples:8,mini_bs:1,score_micro_bs:8,gradient_accumulation_steps:"",max_prompt_tokens:1024,max_context_len:2048,max_new_tokens:1024,max_running_prompts:"",temperature:1,top_k:-1,top_p:1,greedy:!1,agent_timeout_s:300,train_tool_results:!1,lr:1e-6,min_lr:1e-7,lr_decay_steps:1e3,lr_decay_style:"cosine",adam_beta1:.9,adam_beta2:.999,adam_8bit:!1,weight_decay:.01,grad_clip_norm:1,gspo_clip_eps:3e-4,grpo_clip_eps:.2,dpo_beta:.1,critic_warmup_steps:20,critic_lr:1e-5,use_kl_loss:!0,kl_loss_coef:.001,kl_loss_type:"low_var_kl",clip_eps:.2,clip_ratio_c:3,value_clip_eps:.5,value_loss_coef:.5,gamma:1,lam:.95,tune_params:!1,mem_frac:.9,tune_max_samples:256,save_path:"outputs/dashboard-run",save_interval:100,metrics_dir:"outputs/dashboard-run/metrics",extra_args:""},S_={model_path:"Qwen/Qwen3-0.6B",model_hub:"modelscope",host:"0.0.0.0",port:8e3,world_size:1,tp_size:1,max_running_prompts:16,default_max_tokens:1024,decode_progress_interval_s:0,attn_backend:"flash",eager_decode:!1,disable_thinking:!1,extra_args:""};function k_(){var Y,P,xe,Ce,Be,vt;const[n,a]=ge.useState(null),[r,u]=ge.useState(v_),[s,h]=ge.useState(S_),[f,m]=ge.useState(()=>localStorage.getItem(Lp)||""),[p,d]=ge.useState(()=>x_()),[x,g]=ge.useState(()=>localStorage.getItem(Rp)||""),[S,k]=ge.useState("chat"),[C,H]=ge.useState(()=>{try{return JSON.parse(localStorage.getItem("areno-dashboard-agent-provider")||"{}")}catch{return{}}}),[V,D]=ge.useState("jobs"),[J,X]=ge.useState("train"),[re,se]=ge.useState(()=>localStorage.getItem("areno-dashboard-theme")||"dark"),[B,W]=ge.useState(""),[de,ce]=ge.useState(!1),[R,te]=ge.useState(1),[le,Te]=ge.useState(0),$=ge.useRef(null),F=no(()=>qn("/api/env"),5e3),w=no(()=>qn("/api/jobs"),2e3),Z=no(()=>n?qn(`/api/jobs/${n}`):Promise.resolve(null),3e3,[n]),ie=((Y=w.data)==null?void 0:Y.jobs)||[],Se=10,E=Math.max(1,Math.ceil(ie.length/Se)),T=Math.min(R,E),q=ie.slice((T-1)*Se,T*Se),_=((P=Z.data)==null?void 0:P.job)||(n?ie.find(ee=>ee.id===n):null)||null,ne=ge.useMemo(()=>p.find(ee=>ee.id===x)||p[0]||cu(),[p,x]),he=ne.messages||Di;ge.useEffect(()=>{n&&ie.length&&!ie.some(ee=>ee.id===n)&&a(null)},[ie.length,n]),ge.useEffect(()=>{R>E&&te(E)},[R,E]),ge.useEffect(()=>{document.documentElement.dataset.theme=re,localStorage.setItem("areno-dashboard-theme",re)},[re]),ge.useEffect(()=>{localStorage.setItem("areno-dashboard-agent-provider",JSON.stringify(C))},[C]),ge.useEffect(()=>{localStorage.setItem(ey,JSON.stringify(p.slice(-40)))},[p]),ge.useEffect(()=>{if(!p.length){const ee=cu();d([ee]),g(ee.id);return}p.some(ee=>ee.id===x)||g(p[0].id)},[p,x]),ge.useEffect(()=>{x&&localStorage.setItem(Rp,x)},[x]),ge.useEffect(()=>{localStorage.setItem(Lp,f)},[f]),ge.useEffect(()=>{const ee=$.current;ee&&(ee.scrollTop=ee.scrollHeight)},[he,S]);const oe=[{id:"jobs",label:"Jobs",icon:b.jsx(Kg,{size:16})},{id:"runtime",label:"Runtime",icon:b.jsx(go,{size:16})},{id:"launcher",label:"Launcher",icon:b.jsx(Bo,{size:16})},{id:"agent",label:"Agent",icon:b.jsx(e_,{size:16})}],Me={jobs:_?[_.name,`${_.kind} · ${_.status} · step ${_.step??0}`]:["Jobs","Open an AReno train or serve task to inspect metrics, samples, config, and logs."],runtime:["Runtime Environment","Review areno check, areno env, dependencies, GPU state, and repository context."],launcher:["Task Launcher","Start low-intrusion AReno train or serve subprocesses from explicit configs."],agent:["Agent Console","Chat with an operations agent using the selected job context."]};async function $e(){W("Starting train job...");try{const ee=await qn("/api/jobs/train",{method:"POST",body:JSON.stringify(r)});a(ee.job.id),await w.refresh()}finally{W("")}}async function Ye(){W("Starting serve job...");try{const ee=await qn("/api/jobs/serve",{method:"POST",body:JSON.stringify(s)});a(ee.job.id),await w.refresh()}finally{W("")}}async function zt(ee){W("Stopping job...");try{await qn(`/api/jobs/${ee}/stop`,{method:"POST",body:"{}"}),await w.refresh()}finally{W("")}}async function Kt(){const ee=f.trim();if(!ee)return;m("");const K=`assistant-${Date.now()}`;Gn(ve=>[...ve,{role:"user",content:ee},{id:K,role:"assistant",content:"",events:[],streaming:!0}]),W("Agent analyzing...");try{await Ql({prompt:ee,job_id:(_==null?void 0:_.id)||null,provider:C,history:Vn(he),onEvent:ve=>Xn(K,ve)})}catch(ve){Xn(K,{type:"error",content:`Agent request failed: ${ve.message||ve}`})}finally{Xn(K,{type:"done"}),W("")}}function Gn(ee){const K=ne.id;d(ve=>ve.map(me=>{if(me.id!==K)return me;const Ee=me.messages||Di,et=typeof ee=="function"?ee(Ee):ee;return{...me,messages:et,updatedAt:Date.now(),title:b_(et,me.title)}}))}function bl(){const ee=cu();d(K=>[ee,...K]),g(ee.id),m(""),k("chat")}function rn(ee){g(ee),k("chat")}function Vn(ee){return ee.filter(K=>(K.role==="user"||K.role==="assistant")&&!K.streaming).map(K=>({role:K.role,content:Qn(K)})).filter(K=>K.content).slice(-10)}function Qn(ee){return ee.content?ee.content:(ee.events||[]).filter(K=>K.type==="content"||K.type==="reasoning").map(K=>K.text||"").join(` +`).trim()}async function Ql({prompt:ee,job_id:K,provider:ve,history:me,onEvent:Ee}){const et=await fetch(`${Pg}api/agent/stream`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:ee,job_id:K,provider:ve,history:me})});if(!et.ok||!et.body){const Zn=await et.text();throw new Error(Zn||et.statusText)}const Bt=et.body.getReader(),vu=new TextDecoder;let hn="";for(;;){const{value:Zn,done:Xl}=await Bt.read();if(Xl)break;hn+=vu.decode(Zn,{stream:!0});const dn=hn.split(` +`);hn=dn.pop()||"";for(const Sl of dn)Sl.trim()&&Ee(JSON.parse(Sl))}hn.trim()&&Ee(JSON.parse(hn))}function Xn(ee,K){Gn(ve=>ve.map(me=>me.id!==ee?me:K.type==="content_delta"?fn(me,"content",K.content||""):K.type==="reasoning_delta"?fn(me,"reasoning",K.content||""):K.type==="tool_calls"?Li(me,K.tool_calls||[]):K.type==="tool_call_delta"?vn(me,K.tool_call,!0):K.type==="tool_result"?{...me,events:[...me.events||[],{type:"tool_result",result:K.tool_result}]}:K.type==="error"?{...fn(me,"content",K.content||""),streaming:!1}:K.type==="done"?{...me,streaming:!1}:me))}function fn(ee,K,ve){if(!ve)return ee;const me=[...ee.events||[]],Ee=me[me.length-1];(Ee==null?void 0:Ee.type)===K?me[me.length-1]={...Ee,text:`${Ee.text||""}${ve}`}:me.push({type:K,text:ve});const et=K==="content"?`${ee.content||""}${ve}`:ee.content;return{...ee,content:et,events:me}}function vn(ee,K,ve=!1){if(!K)return ee;const me=[...ee.events||[]],Ee=me.findIndex(et=>et.type==="tool_call"&&vl(et.call,K));return Ee>=0?me[Ee]={...me[Ee],call:K,live:ve}:me.push({type:"tool_call",call:K,live:ve}),{...ee,events:me}}function vl(ee,K){return!ee||!K?!1:!!(ee.id&&K.id&&ee.id===K.id||ee.round!==void 0&&K.round!==void 0&&ee.index!==void 0&&K.index!==void 0&&ee.round===K.round&&ee.index===K.index)}function Li(ee,K){let ve=ee;for(const me of K)ve=vn(ve,me,!1);return ve}function Bi(){var ee;return V==="runtime"?b.jsxs("div",{className:"tabGrid",children:[b.jsx(O_,{env:F.data}),b.jsx(R_,{gpus:((ee=F.data)==null?void 0:ee.gpus)||[]})]}):V==="launcher"?b.jsxs("section",{className:"panel launcher",children:[b.jsxs("div",{className:"panelHeader",children:[b.jsxs("div",{children:[b.jsx("h2",{children:"Task Launcher"}),b.jsx("p",{children:"Builds AReno CLI commands without importing training internals."})]}),b.jsxs("div",{className:"tabs",children:[b.jsx("button",{className:kt(J==="train"&&"active"),onClick:()=>X("train"),children:"Train"}),b.jsx("button",{className:kt(J==="serve"&&"active"),onClick:()=>X("serve"),children:"Serve"})]})]}),J==="train"?b.jsx(tE,{config:r,setConfig:u,onStart:$e}):b.jsx(lE,{config:s,setConfig:h,onStart:Ye})]}):V==="agent"?b.jsxs("section",{className:"panel chatPanel",children:[b.jsxs("div",{className:"panelHeader",children:[b.jsxs("div",{children:[b.jsx("h2",{children:"Agent Chat"}),b.jsx("p",{children:_?`Context: ${_.name}`:"No job selected. The agent will use runtime context only."})]}),b.jsxs("div",{className:"agentHeaderActions",children:[b.jsxs("button",{className:"secondaryButton",onClick:bl,children:[b.jsx($g,{size:15})," New Chat"]}),b.jsxs("button",{className:"secondaryButton",onClick:()=>ce(!0),children:[b.jsx(Ig,{size:15})," Settings"]})]})]}),b.jsxs("div",{className:"agentTabs",children:[b.jsxs("button",{className:kt(S==="chat"&&"active"),onClick:()=>k("chat"),children:[b.jsx(a_,{size:15})," Chat"]}),b.jsxs("button",{className:kt(S==="history"&&"active"),onClick:()=>k("history"),children:[b.jsx(l_,{size:15})," History"]})]}),S==="history"?b.jsx(E_,{sessions:p,activeId:ne.id,onOpen:rn,onNew:bl}):b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"chatMessages",ref:$,children:he.map((K,ve)=>{var me;return b.jsxs("div",{className:kt("chatBubble",K.role),children:[b.jsx("span",{children:K.role}),(me=K.events)!=null&&me.length?b.jsx(z_,{events:K.events}):b.jsx(Uo,{text:K.content}),K.streaming&&b.jsx("div",{className:"streamingHint",children:"thinking..."})]},`${K.id||K.role}-${ve}`)})}),b.jsxs("div",{className:"chatComposer",children:[b.jsx("textarea",{value:f,onChange:K=>m(K.target.value),onKeyDown:K=>{K.key==="Enter"&&!K.shiftKey&&(K.preventDefault(),Kt())}}),b.jsxs("button",{className:"primaryButton",onClick:Kt,children:[b.jsx(c_,{size:16})," Send"]})]})]}),de&&b.jsx(A_,{title:"Agent Settings",onClose:()=>ce(!1),children:b.jsx(__,{provider:C,setProvider:H})})]}):_?b.jsxs("section",{className:"panel detailPanel",children:[b.jsxs("div",{className:"panelHeader",children:[b.jsxs("div",{children:[b.jsx("h2",{children:_.name}),b.jsxs("p",{children:[_.kind," · ",_.status]})]}),b.jsxs("div",{className:"detailActions",children:[b.jsx("button",{className:"secondaryButton",onClick:()=>a(null),children:"Back"}),_.status==="running"&&b.jsxs("button",{className:"dangerButton",onClick:()=>zt(_.id),children:[b.jsx(t_,{size:16})," Stop"]})]})]}),b.jsx(L_,{job:_}),b.jsx(T_,{job:_,refreshNonce:le}),b.jsx(J_,{samples:(_==null?void 0:_.samples)||[]}),b.jsxs("div",{className:"split",children:[b.jsx(I_,{config:_==null?void 0:_.config,launch:_==null?void 0:_.launch}),b.jsx(eE,{logs:(_==null?void 0:_.logs)||[]})]})]}):b.jsxs("section",{className:"panel jobListPage",children:[b.jsxs("div",{className:"panelHeader",children:[b.jsxs("div",{children:[b.jsx("h2",{children:"Jobs"}),b.jsx("p",{children:"Registered AReno train/serve processes. Select a row to open job details."})]}),b.jsxs("div",{className:"pagerControls",children:[b.jsx("button",{className:"secondaryButton",disabled:T<=1,onClick:()=>te(K=>Math.max(1,K-1)),children:"Prev"}),b.jsxs("span",{children:[T," / ",E]}),b.jsx("button",{className:"secondaryButton",disabled:T>=E,onClick:()=>te(K=>Math.min(E,K+1)),children:"Next"})]})]}),b.jsxs("div",{className:"jobList",children:[ie.length===0&&b.jsx(ly,{title:"No jobs yet",text:"Start a train or serve task from the launcher."}),q.map(K=>b.jsxs("button",{className:"jobRow large",onClick:()=>a(K.id),children:[b.jsx("div",{className:"jobIcon",children:K.kind==="serve"?b.jsx(go,{size:16}):b.jsx(i_,{size:16})}),b.jsxs("div",{className:"jobInfo",children:[b.jsx("div",{className:"jobTitle",children:K.name}),b.jsxs("div",{className:"jobMeta",children:[K.kind," · ",K.status," · step ",K.step??0]})]}),b.jsx("span",{className:kt("statusDot",K.status)})]},K.id))]}),ie.length>Se&&b.jsxs("div",{className:"listFooter",children:["Showing ",(T-1)*Se+1,"-",Math.min(T*Se,ie.length)," of ",ie.length," jobs"]})]})}const[mt,Ui]=Me[V]||Me.jobs;return b.jsxs("div",{className:"shell",children:[b.jsxs("aside",{className:"rail",children:[b.jsxs("div",{className:"brand",children:[b.jsx("div",{className:"brandMark",children:"A"}),b.jsxs("div",{children:[b.jsx("div",{className:"brandName",children:"AReno Ops"}),b.jsx("div",{className:"brandMeta",children:"runtime workbench"})]})]}),b.jsx("nav",{className:"nav",children:oe.map(ee=>b.jsxs("button",{className:kt("navItem",V===ee.id&&"active"),onClick:()=>D(ee.id),children:[ee.icon," ",ee.label]},ee.id))}),b.jsxs("div",{className:"railFooter",children:[b.jsx("div",{className:"tinyLabel",children:"Repo"}),b.jsxs("div",{className:"monoLine",children:[((Ce=(xe=F.data)==null?void 0:xe.repo)==null?void 0:Ce.branch)||"unknown"," · ",((vt=(Be=F.data)==null?void 0:Be.repo)==null?void 0:vt.commit)||"no git"]})]})]}),b.jsxs("main",{className:"main",children:[b.jsxs("header",{className:"topbar",children:[b.jsxs("div",{children:[b.jsx("h1",{children:mt}),b.jsx("p",{children:Ui})]}),b.jsxs("div",{className:"topActions",children:[b.jsx("button",{className:"iconButton",onClick:()=>se(re==="dark"?"light":"dark"),title:"Toggle theme",children:re==="dark"?b.jsx(o_,{size:16}):b.jsx(r_,{size:16})}),b.jsx("button",{className:"iconButton",onClick:()=>{F.refresh(),w.refresh(),Z.refresh(),Te(ee=>ee+1)},title:"Refresh",children:b.jsx(u_,{size:16})})]})]}),B&&b.jsx("div",{className:"notice",children:B}),Bi()]})]})}function __({provider:n,setProvider:a}){return b.jsxs("div",{className:"agentConfig modalForm",children:[b.jsx(du,{label:"Base URL",value:n.base_url||"",onChange:r=>a({...n,base_url:r}),compact:!0}),b.jsx(du,{label:"Model",value:n.model||"",onChange:r=>a({...n,model:r}),compact:!0}),b.jsxs("label",{className:"field compact",children:[b.jsx("span",{children:"API key"}),b.jsx("input",{type:"password",value:n.api_key||"",onChange:r=>a({...n,api_key:r.target.value})})]})]})}function E_({sessions:n,activeId:a,onOpen:r,onNew:u}){return b.jsxs("div",{className:"agentHistory",children:[b.jsxs("div",{className:"agentHistoryHeader",children:[b.jsxs("div",{children:[b.jsx("h3",{children:"Chat History"}),b.jsxs("p",{children:[n.length," saved conversations in this browser."]})]}),b.jsxs("button",{className:"secondaryButton",onClick:u,children:[b.jsx($g,{size:15})," New Chat"]})]}),b.jsx("div",{className:"agentHistoryList",children:n.map(s=>{const h=[...s.messages||[]].reverse().find(f=>f.role==="user"||f.content);return b.jsxs("button",{className:kt("agentHistoryItem",s.id===a&&"active"),onClick:()=>r(s.id),children:[b.jsx("strong",{children:s.title||"New chat"}),b.jsx("span",{children:(h==null?void 0:h.content)||"No messages yet."}),b.jsx("small",{children:new Date(s.updatedAt||s.createdAt||Date.now()).toLocaleString()})]},s.id)})})]})}function A_({title:n,children:a,onClose:r}){return b.jsx("div",{className:"modalOverlay",role:"presentation",onMouseDown:r,children:b.jsxs("div",{className:"modalCard",role:"dialog","aria-modal":"true","aria-label":n,onMouseDown:u=>u.stopPropagation(),children:[b.jsxs("div",{className:"modalHeader",children:[b.jsxs("div",{children:[b.jsx("h2",{children:n}),b.jsx("p",{children:"Stored locally in this browser."})]}),b.jsx("button",{className:"iconButton",onClick:r,children:"×"})]}),a]})})}function T_({job:n,refreshNonce:a}){return b.jsxs("div",{className:"jobMetricsGrid",children:[b.jsx("div",{className:"panel insetPanel",children:b.jsx(Y_,{jobId:n==null?void 0:n.id,metricsDir:n==null?void 0:n.metrics_dir,logs:(n==null?void 0:n.logs)||[],refreshNonce:a})}),b.jsx("div",{className:"panel insetPanel",children:b.jsx(K_,{rows:(n==null?void 0:n.timeperf)||[]})})]})}function z_({events:n}){return b.jsx("div",{className:"agentEventList",children:n.map((a,r)=>a.type==="reasoning"?b.jsx(C_,{text:a.text},r):a.type==="content"?b.jsx(Uo,{text:a.text},r):a.type==="tool_call"?b.jsx(M_,{call:a.call,live:a.live},r):a.type==="tool_result"?b.jsx(j_,{result:a.result},r):null)})}function Uo({text:n}){return b.jsx("div",{className:"markdownBlock",children:b.jsx(BS,{remarkPlugins:[$k],children:n||""})})}function C_({text:n}){return b.jsxs("details",{className:"reasoningBlock",children:[b.jsxs("summary",{children:[b.jsx("span",{children:"✓"}),b.jsx("strong",{children:"Completed thinking"})]}),b.jsx(Uo,{text:n})]})}function M_({call:n,live:a=!1}){const u=((n==null?void 0:n.function)||{}).name||(n==null?void 0:n.name)||"tool",s=N_(n);return b.jsxs("details",{className:kt("toolCallCard","toolCallDetails",a&&"live"),children:[b.jsxs("summary",{className:"toolCallHead",children:[b.jsx("span",{children:a?"calling":"tool call"}),b.jsx("b",{children:w_(u,s)}),b.jsx("em",{children:a?"running":""})]}),b.jsx("pre",{children:s})]})}function w_(n,a){const r=ty(a);return!r||r==="{}"?`${n}()`:`${n}(${r})`}function N_(n){return(n.function||{}).arguments||n.arguments||JSON.stringify(n,null,2)}function j_({result:n}){const a=D_(n);return b.jsxs("details",{className:kt("toolCallCard","toolResultDetails",n.ok?"ok":"failed"),children:[b.jsxs("summary",{children:[b.jsx("span",{children:n.ok?"result":"error"}),b.jsxs("b",{children:[n.name||"unknown"," · ",n.ok?"ok":"failed"]}),b.jsx("em",{children:ty(a)||"No output."})]}),b.jsx("pre",{children:a})]})}function ty(n){return String(n||"").replace(/\s+/g," ").trim()}function D_(n){return n.error?n.error:Array.isArray(n.jobs)?n.jobs.map(a=>`${a.id} · ${a.kind} · ${a.status} · step ${a.step??0} · ${a.name}`).join(` +`)||"No jobs.":n.job?`${n.job.id} · ${n.job.kind} · ${n.job.status} · step ${n.job.step??0} +${n.job.name}`:n.env?`ready=${n.env.ready} · gpu=${n.env.gpu_summary||"n/a"} · cwd=${n.env.cwd||"n/a"}`:JSON.stringify(n,null,2)}function O_({env:n}){var m,p,d,x;const a=(n==null?void 0:n.checks)||[],r=(n==null?void 0:n.report)||{},u=r.dependencies||{},s=r.torch||{},h=r.platform||{},f=a.slice(0,12);return b.jsxs("section",{className:"runtimeDeck",children:[b.jsxs("div",{className:"runtimeHero",children:[b.jsx("div",{className:kt("readinessOrb",n!=null&&n.ready?"ready":"blocked"),children:n!=null&&n.ready?"OK":"!"}),b.jsxs("div",{children:[b.jsx("div",{className:"tinyLabel",children:"AReno check"}),b.jsx("h2",{children:n!=null&&n.ready?"Runtime ready for AReno tasks":"Runtime needs attention before heavy jobs"}),b.jsxs("p",{children:[((m=n==null?void 0:n.check_counts)==null?void 0:m.ok)??0," OK · ",((p=n==null?void 0:n.check_counts)==null?void 0:p.warn)??0," WARN · ",((d=n==null?void 0:n.check_counts)==null?void 0:d.fail)??0," FAIL"]})]})]}),b.jsxs("div",{className:"envFacts",children:[b.jsx(ru,{icon:b.jsx(Jg,{size:15}),label:"AReno",value:((x=r.areno)==null?void 0:x.version)||"unknown"}),b.jsx(ru,{icon:b.jsx(n_,{size:15}),label:"PyTorch",value:s.version||"missing"}),b.jsx(ru,{icon:b.jsx(go,{size:15}),label:"CUDA",value:s.cuda_build||"none"}),b.jsx(ru,{icon:b.jsx(Fg,{size:15}),label:"Platform",value:`${h.system||"unknown"} ${h.machine||""}`})]}),b.jsx("div",{className:"checkMatrix",children:f.map(g=>b.jsxs("div",{className:kt("checkItem",g.status.toLowerCase()),children:[b.jsx("span",{children:g.status}),b.jsx("strong",{children:g.name}),b.jsx("small",{children:g.detail||g.next_step||"no detail"})]},g.name))}),b.jsx("div",{className:"dependencyStrip",children:Object.entries(u).map(([g,S])=>b.jsxs("div",{className:kt("depPill",S.imported?"ok":"warn"),children:[g,": ",S.imported?S.version||"imported":"missing"]},g))})]})}function R_({gpus:n}){return n.length?b.jsx("section",{className:"gpuDeck",children:n.map((a,r)=>{const u=Math.min(100,Math.max(0,Number(a.memory_used_mb||0)/Math.max(Number(a.memory_total_mb||1),1)*100)),s=Math.min(100,Math.max(0,Number(a.utilization||0)));return b.jsxs("div",{className:"gpuCard",children:[b.jsxs("div",{className:"gpuHead",children:[b.jsxs("strong",{children:["GPU ",r]}),b.jsx("span",{children:a.name})]}),b.jsxs("div",{className:"gpuMeter",children:[b.jsxs("div",{className:"gpuMeterLabel",children:[b.jsx("span",{children:"Memory"}),b.jsxs("b",{children:[a.memory_used_mb,"/",a.memory_total_mb," MB"]})]}),b.jsx("div",{className:"meterTrack",children:b.jsx("i",{style:{width:`${u}%`}})})]}),b.jsxs("div",{className:"gpuMeter",children:[b.jsxs("div",{className:"gpuMeterLabel",children:[b.jsx("span",{children:"Utilization"}),b.jsxs("b",{children:[s,"%"]})]}),b.jsx("div",{className:"meterTrack util",children:b.jsx("i",{style:{width:`${s}%`}})})]})]},`${a.name}-${r}`)})}):b.jsx("section",{className:"gpuDeck",children:b.jsx("div",{className:"panel",children:b.jsx(ly,{title:"No GPU detected",text:"nvidia-smi did not return device utilization."})})})}function ru({icon:n,label:a,value:r}){return b.jsxs("div",{className:"envFact",children:[b.jsx("span",{children:n}),b.jsxs("div",{children:[b.jsx("label",{children:a}),b.jsx("strong",{children:r})]})]})}function L_({job:n}){const a=ny(n),r=B_(n),u=Math.max(0,a.findIndex(s=>yo(s,r,n)));return b.jsx("div",{className:"timeline",children:a.map((s,h)=>b.jsxs("div",{className:kt("timelineItem",h<=u&&"done",yo(s,r,n)&&"current"),children:[b.jsx("span",{children:h+1}),b.jsx("label",{children:s.label})]},s.id))})}function ny(n){if((n==null?void 0:n.kind)==="serve")return[{id:"created",label:"created"},{id:"load",label:"load",aliases:["registered"]},{id:"serve",label:"serve",aliases:["running"]},{id:"exit",label:"exit",aliases:["exited","failed","succeeded","stopped"]}];const a=U_(n,"algo");return a==="sft"?[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"train",label:"train",aliases:["train_start","train_end","train_skip"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]:a==="dpo"?[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"ref_score",label:"ref score",aliases:["logprob_score_start","logprob_score_end"],roles:["ref"]},{id:"train",label:"train",aliases:["train_start","train_end","train_skip"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]:a==="ppo"?[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"rollout",label:"rollout",aliases:["rollout_start","rollout_end"],roles:["actor"]},{id:"reward",label:"reward",aliases:["score_start","score_end"],roles:["reward"]},{id:"ref_score",label:"ref score",aliases:["logprob_score_start","logprob_score_end"],roles:["ref"]},{id:"old_logprob",label:"old logprob",aliases:["old_logprob_score_start","old_logprob_score_end"],roles:["actor"]},{id:"critic_value",label:"value",aliases:["value_score_start","value_score_end"],roles:["critic"]},{id:"advantage",label:"advantage",aliases:["advantage_start","advantage_end"],roles:["critic"]},{id:"critic_train",label:"critic train",aliases:["train_start","train_end"],roles:["critic"]},{id:"actor_train",label:"actor train",aliases:["train_start","train_end","train_skip"],roles:["actor"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]:[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"rollout",label:"rollout",aliases:["rollout_start","rollout_end"]},{id:"score",label:"score",aliases:["score_start","score_end","reward_score_start","reward_score_end","logprob_score_start","logprob_score_end","old_logprob_score_start","old_logprob_score_end","value_score_start","value_score_end"]},{id:"train",label:"train",aliases:["train_start","train_end","train_skip"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]}function B_(n){if(n!=null&&n.status&&["succeeded","failed","stopped","exited"].includes(n.status))return"done";const a=String((n==null?void 0:n.stage)||"created"),u=ny(n).find(s=>yo(s,a,n));return(u==null?void 0:u.id)||a}function yo(n,a,r){var s,h;return n.id===a||((s=n.aliases)==null?void 0:s.includes(a))?(h=n.roles)!=null&&h.length?n.roles.includes(String((r==null?void 0:r.role)||"")):!0:!1}function U_(n,a){const r=n!=null&&n.config&&Object.keys(n.config).length?n.config:(n==null?void 0:n.launch)||{};if(r[a]!==void 0)return r[a];for(const u of r.sections||[]){const s=(u.items||[]).find(h=>h.key===a);if(s)return s.value}}function H_(n){return(n||[]).map(a=>a.name).sort()}function q_(n,a){return a&&n.includes(a)?a:n[0]||""}function Y_({jobId:n,metricsDir:a,logs:r,refreshNonce:u}){const[s,h]=ge.useState(""),[f,m]=ge.useState(.6),[p,d]=ge.useState([]),[x,g]=ge.useState([]),[S,k]=ge.useState(!1),[C,H]=ge.useState(n),[V,D]=ge.useState([]),[J,X]=ge.useState(()=>Object.fromEntries(Wg.map($=>[$,!0]))),[re,se]=ge.useState(null);n!==C&&(H(n),h(""),d([]),g([]),k(!1),D([]),se(null));const B=H_(p),W=q_(B,s);ge.useEffect(()=>{let $=!1;if(n)return qn(`/api/jobs/${n}/metrics`).then(F=>{if($)return;const w=F.metrics||[];d(w),h(Z=>{var ie;return Z||((ie=w[0])==null?void 0:ie.name)||""})}).catch(()=>{$||d([])}),()=>{$=!0}},[n,u]),ge.useEffect(()=>{let $=!1;if(!n||!W){g([]),k(!1);return}return k(!0),qn(`/api/jobs/${n}/metric?name=${encodeURIComponent(W)}&limit=500`).then(F=>{$||g((F.points||[]).filter(w=>Number.isFinite(Number(w.value))).map(w=>({...w,step:Number(w.step||0),value:Number(w.value)})))}).catch(()=>{$||g([])}).finally(()=>{$||k(!1)}),()=>{$=!0}},[n,W,u]),ge.useEffect(()=>{let $=!1;if(n)return qn(`/api/jobs/${n}/events?limit=500`).then(F=>{$||D(F.events||[])}).catch(()=>{$||D([])}),()=>{$=!0}},[n,u]);const de=W,ce=x.slice(-240),R=X_(ce,f),te=Z_(ce,R),le=ce.length>0?{stepMin:ce[0].step,stepSpan:Math.max(ce[ce.length-1].step-ce[0].step,1),width:700}:null,Te=d_(V,J);return b.jsxs("div",{className:"chart",children:[b.jsxs("div",{className:"chartHeader",children:[b.jsxs("span",{children:[b.jsx(Kg,{size:14})," TensorBoard scalars"]}),b.jsxs("div",{className:"chartControls",children:[b.jsx("select",{value:de,onChange:$=>h($.target.value),children:B.length===0?b.jsx("option",{value:"",children:"no metrics"}):B.map($=>b.jsx("option",{children:$},$))}),b.jsxs("label",{children:["smooth ",f.toFixed(2),b.jsx("input",{type:"range",min:"0",max:"0.99",step:"0.01",value:f,onChange:$=>m(Number($.target.value))})]})]})]}),ce.length===0?b.jsx("div",{className:"plotEmpty",children:S?"Loading selected metric...":"No TensorBoard scalar points loaded yet."}):b.jsx("div",{className:"chartPlotWrap",children:b.jsxs("svg",{className:"metricPlot",viewBox:"0 0 720 180",role:"img",children:[b.jsx("g",{className:"plotGrid",children:[0,1,2,3].map($=>b.jsx("line",{x1:"0",x2:"720",y1:30+$*42,y2:30+$*42},$))}),b.jsx("polyline",{className:"rawLine",points:te.raw}),b.jsx("polyline",{className:"smoothLine",points:te.smooth}),ce.slice(-24).map(($,F)=>{var w,Z;return b.jsx("circle",{cx:((w=te.coords[F+Math.max(0,ce.length-24)])==null?void 0:w.x)||0,cy:((Z=te.coords[F+Math.max(0,ce.length-24)])==null?void 0:Z.y)||0,r:"2.2",children:b.jsx("title",{children:`${de} step ${$.step}: ${$.value}`})},`${$.step}-${F}`)}),le&&b.jsx(G_,{events:Te,plotRange:le,onSelect:se})]})}),b.jsx(V_,{eventTypes:J,setEventTypes:X,events:V}),ce.length>0&&b.jsxs("div",{className:"plotFooter",children:[b.jsxs("span",{children:[de||"metric"," · ",x.length," points"]}),b.jsxs("span",{children:[a||"no metrics dir"," · ",te.minLabel," to ",te.maxLabel]})]}),re&&b.jsx(Q_,{event:re,logs:r,points:x,onClose:()=>se(null)})]})}function G_({events:n,plotRange:a,onSelect:r}){return!n||!n.length?null:b.jsx("g",{className:"eventMarkers",children:n.map((u,s)=>{const h=h_(u,a),f=bu[u.kind]||{color:"#666",shape:"circle"},p={key:`${u.kind}-${u.step}-${s}`,transform:`translate(${h.toFixed(1)}, 168)`,onClick:()=>r(u),style:{cursor:"pointer"}};return f.shape==="cross"?b.jsxs("g",{...p,children:[b.jsx("line",{x1:"-4",y1:"-4",x2:"4",y2:"4",stroke:f.color,strokeWidth:"2"}),b.jsx("line",{x1:"-4",y1:"4",x2:"4",y2:"-4",stroke:f.color,strokeWidth:"2"}),b.jsx("title",{children:`${f.label} @ step ${u.step}: ${u.detail}`})]}):f.shape==="diamond"?b.jsxs("g",{...p,children:[b.jsx("polygon",{points:"0,-5 4,0 0,5 -4,0",fill:f.color,fillOpacity:"0.7",stroke:f.color,strokeWidth:"1"}),b.jsx("title",{children:`${f.label} @ step ${u.step}: ${u.detail}`})]}):f.shape==="square"?b.jsxs("g",{...p,children:[b.jsx("rect",{x:"-4",y:"-4",width:"8",height:"8",fill:f.color,fillOpacity:"0.7",stroke:f.color,strokeWidth:"1"}),b.jsx("title",{children:`${f.label} @ step ${u.step}: ${u.detail}`})]}):f.shape==="triangle"?b.jsxs("g",{...p,children:[b.jsx("polygon",{points:"0,-5 4,3 -4,3",fill:f.color,fillOpacity:"0.7",stroke:f.color,strokeWidth:"1"}),b.jsx("title",{children:`${f.label} @ step ${u.step}: ${u.detail}`})]}):b.jsxs("g",{...p,children:[b.jsx("circle",{r:"3",fill:f.color,fillOpacity:"0.7",stroke:f.color,strokeWidth:"1"}),b.jsx("title",{children:`${f.label} @ step ${u.step}: ${u.detail}`})]})})})}function V_({eventTypes:n,setEventTypes:a,events:r}){return!r||!r.length?null:b.jsx("div",{className:"eventFilters",children:Wg.map(u=>{const s=bu[u],h=r.filter(f=>f.kind===u).length;return h===0?null:b.jsxs("label",{className:"eventFilterLabel",children:[b.jsx("input",{type:"checkbox",checked:n[u]!==!1,onChange:()=>a(f=>({...f,[u]:f[u]===!1}))}),b.jsx("span",{className:"eventFilterSwatch",style:{background:s.color}}),s.label," (",h,")"]},u)})})}function Q_({event:n,logs:a,points:r,onClose:u}){var f,m;const s=bu[n.kind]||{label:n.kind,color:"#666"};let h=null;if(((f=n.log_hint)==null?void 0:f.kind)==="keyword"&&n.log_hint.ref!=null){const p=parseInt(n.log_hint.ref,10),d=m_(a,p,20);h=d.length?b.jsx("pre",{className:"eventLogContext",children:d.map(x=>b.jsxs("div",{className:x.offset===0?"eventLogLine eventLogLineHit":"eventLogLine",children:[b.jsx("span",{className:"eventLogLineNum",children:x.lineIndex}),b.jsx("span",{className:"eventLogLineText",children:x.text})]},x.lineIndex))}):b.jsxs("em",{children:["Log line ",p," no longer available (logs may have rotated)."]})}else if(((m=n.log_hint)==null?void 0:m.kind)==="metric_context"&&n.log_hint.ref){const p=p_(r,n.step,3);h=p.length?b.jsxs("table",{className:"eventMetricContext",children:[b.jsx("thead",{children:b.jsxs("tr",{children:[b.jsx("th",{children:"step"}),b.jsx("th",{children:n.log_hint.ref})]})}),b.jsx("tbody",{children:p.map(d=>b.jsxs("tr",{className:Number(d.step)===n.step?"eventMetricRowHit":"",children:[b.jsx("td",{children:d.step}),b.jsx("td",{children:Number(d.value).toFixed(6)})]},d.step))})]}):b.jsx("em",{children:"No metric context available for this tag."})}else h=b.jsx("em",{children:"No additional context."});return b.jsxs("div",{className:"eventPopover",children:[b.jsxs("div",{className:"eventPopoverHeader",children:[b.jsx("span",{className:"eventPopoverTag",style:{background:s.color},children:s.label}),b.jsx("span",{className:"eventPopoverDetail",children:n.detail}),b.jsx("button",{className:"eventPopoverClose",onClick:u,children:"x"})]}),b.jsxs("div",{className:"eventPopoverMeta",children:[b.jsxs("span",{children:["step: ",n.step]}),b.jsxs("span",{children:["severity: ",n.severity]}),n.fields&&Object.entries(n.fields).map(([p,d])=>b.jsxs("span",{children:[p,": ",typeof d=="number"&&Number.isFinite(d)?d.toExponential(3):String(d)]},p))]}),b.jsx("div",{className:"eventPopoverBody",children:h})]})}function X_(n,a){if(!n.length)return[];const r=Math.min(Math.max(Number(a)||0,0),.999);let u=n[0].value;return n.map(s=>(u=u*r+s.value*(1-r),{...s,value:u}))}function Z_(n,a){if(!n.length)return{raw:"",smooth:"",coords:[],minLabel:"n/a",maxLabel:"n/a"};const r=[...n,...a].map(S=>S.value),u=Math.min(...r),s=Math.max(...r),h=Math.max(s-u,1e-9),f=n[0].step,m=n[n.length-1].step,p=Math.max(m-f,1),d=S=>({x:(S.step-f)/p*700+10,y:168-(S.value-u)/h*146}),x=n.map(d),g=a.map(d);return{raw:x.map(S=>`${S.x.toFixed(1)},${S.y.toFixed(1)}`).join(" "),smooth:g.map(S=>`${S.x.toFixed(1)},${S.y.toFixed(1)}`).join(" "),coords:x,minLabel:Bp(u),maxLabel:Bp(s)}}function Bp(n){return Number.isFinite(n)?Math.abs(n)>=1e3||Math.abs(n)<.001?n.toExponential(2):n.toFixed(4).replace(/0+$/,"").replace(/\.$/,""):"n/a"}function K_({rows:n}){const a=F_(n||[],7).reverse(),r=n!=null&&n.length?n.reduce((h,f)=>h+Number(f.total_s||0),0)/n.length:0,u=Math.max(1,...a.map(h=>Number(h.total_s||0))),s=Array.from(new Set((n||[]).flatMap(h=>(h.segments||[]).map(f=>f.name)))).slice(0,8);return b.jsxs("div",{className:"timePerf",children:[b.jsxs("div",{className:"timePerfHeader",children:[b.jsx("div",{children:b.jsxs("div",{className:"codeTitle inline",children:[b.jsx(f_,{size:14})," Runtime timeperf"]})}),b.jsxs("div",{className:"legend",children:[s.map(h=>b.jsxs("span",{children:[b.jsx("i",{className:Up(h)})," ",h]},h)),b.jsxs("b",{children:["avg ",r?`${r.toFixed(1)}s`:"n/a"]})]})]}),a.length===0?b.jsx("div",{className:"sampleEmpty",children:"No step timing captured yet."}):b.jsx("div",{className:"timeRows",children:a.map(h=>{var d;const f=Number(h.total_s||0),m=Math.max(10,f/u*100),p=(d=h.segments)!=null&&d.length?h.segments:[];return b.jsxs("div",{className:"timeRow",children:[b.jsxs("label",{children:["step ",h.step]}),b.jsx("div",{className:"timeTrack",children:b.jsx("div",{className:"timeStack",style:{width:`${m}%`},children:p.map(x=>{const g=Number(x.seconds||0),S=g/Math.max(f,1)*100;return b.jsx("span",{className:Up(x.name),style:{width:`${S}%`},title:`${x.name}: ${g.toFixed(1)}s`,children:S>11?`${g.toFixed(1)}s`:""},x.name)})})}),b.jsxs("strong",{children:[f.toFixed(1),"s"]})]},`${h.step}-${h.time}`)})})]})}function F_(n,a){if(n.length<=a)return n.slice();const r=n.length-1,u=new Set;for(let s=0;ss-h).slice(-a).map(s=>n[s])}function Up(n){return`seg-${String(n||"other").replace(/[^a-zA-Z0-9]+/g,"-")}`}function J_({samples:n}){const a=ge.useMemo(()=>[...n||[]].sort((g,S)=>Number(g.step||0)-Number(S.step||0)||Number(g.prompt_idx||0)-Number(S.prompt_idx||0)||Number(g.sample_idx||0)-Number(S.sample_idx||0)),[n]),r=ge.useMemo(()=>Array.from(new Set(a.map(g=>Number(g.step||0)))).sort((g,S)=>S-g),[a]),[u,s]=ge.useState(""),[h,f]=ge.useState("");ge.useEffect(()=>{if(!r.length){s(""),f("");return}(u===""||!r.includes(Number(u)))&&(s(String(r[0])),f(""))},[u,r]);const p=(u===""?[]:a.filter(g=>Number(g.step||0)===Number(u))).map((g,S)=>({key:$_(g,S),label:`prompt ${g.prompt_idx??"?"} · sample ${g.sample_idx??"?"}`,sample:g})),d=p.find(g=>g.key===h)||p[p.length-1]||null,x=(d==null?void 0:d.sample)||null;return b.jsxs("div",{className:"sampleCard",children:[b.jsxs("div",{className:"codeTitle sampleTitle",children:[b.jsxs("span",{children:[b.jsx(Jg,{size:14})," Rollout sample"]}),!!a.length&&b.jsxs("div",{className:"sampleControls",children:[b.jsx("select",{value:u,onChange:g=>{s(g.target.value),f("")},children:r.map(g=>b.jsxs("option",{value:g,children:["step ",g]},g))}),b.jsx("select",{value:(d==null?void 0:d.key)||"",onChange:g=>f(g.target.value),children:p.map(g=>b.jsx("option",{value:g.key,children:g.label},g.key))})]})]}),x?b.jsxs("div",{className:"sampleGrid",children:[b.jsxs("div",{children:[b.jsx("span",{children:"Prompt"}),b.jsx("p",{children:x.prompt||"n/a"})]}),b.jsxs("div",{children:[b.jsx("span",{children:"Completion"}),b.jsx("p",{children:x.completion||"n/a"})]})]}):b.jsx("div",{className:"sampleEmpty",children:"No rollout sample captured yet."})]})}function $_(n,a){return`${n.step??"x"}-${n.prompt_idx??"x"}-${n.sample_idx??"x"}-${a}`}function I_({config:n,launch:a}){const r=n&&Object.keys(n).length?n:a||{},u=W_(r);return b.jsxs("div",{className:"codeCard",children:[b.jsxs("div",{className:"codeTitle",children:[b.jsx(Ig,{size:14})," Config"]}),u.length>0?b.jsx("div",{className:"configSections",children:u.map(s=>b.jsxs("div",{className:"configSection",children:[b.jsx("h3",{children:s.title}),b.jsx("div",{className:"configGrid",children:s.items.map(({key:h,value:f})=>b.jsxs("div",{className:"configItem",children:[b.jsx("span",{children:h.replace(/_/g," ")}),b.jsx("strong",{children:P_(f)})]},h))})]},s.title))}):b.jsx("pre",{children:"No config captured yet."})]})}function W_(n){if(Array.isArray(n==null?void 0:n.sections))return n.sections.map(r=>({title:r.title||"Config",items:(r.items||[]).filter(({value:u})=>u!=null&&u!=="")})).filter(r=>r.items.length>0);const a=Object.entries(n||{}).filter(([,r])=>r!=null&&r!=="").map(([r,u])=>({key:r,value:u}));return a.length?[{title:"Launch",items:a}]:[]}function P_(n){return Array.isArray(n)?n.join(" "):typeof n=="object"?JSON.stringify(n):String(n)}function eE({logs:n}){const a=ge.useRef(null);return ge.useEffect(()=>{const r=a.current;r&&(r.scrollTop=r.scrollHeight)},[n.length]),b.jsxs("div",{className:"codeCard",ref:a,children:[b.jsxs("div",{className:"codeTitle",children:[b.jsx(s_,{size:14})," Logs"]}),b.jsx("pre",{children:n.slice(-80).join(` +`)||"No logs yet."})]})}function tE({config:n,setConfig:a,onStart:r}){const u=String(n.algo||"sft").toLowerCase(),s=nE(u),h=(f,m)=>a({...n,[f]:m});return b.jsxs("div",{className:"launcherSections",children:[s.map(f=>b.jsxs("div",{className:"launcherSection",children:[b.jsxs("div",{className:"launcherSectionHeader",children:[b.jsx("strong",{children:f.title}),f.note&&b.jsx("span",{children:f.note})]}),b.jsx("div",{className:"formGrid",children:f.fields.map(m=>b.jsx(du,{label:m.label,value:n[m.key],onChange:p=>h(m.key,p),compact:m.compact,type:m.type,options:m.options},m.key))})]},f.title)),b.jsxs("button",{className:"primaryButton launchButton wide",onClick:r,children:[b.jsx(Bo,{size:16})," Start train"]})]})}function nE(n){const a=["gspo","grpo","ppo"].includes(n),r=a,u=n==="dpo",s=n==="ppo",h=n==="gspo",f=n==="grpo",m=[{title:"Basic",note:"model, data, and trainer loop",fields:[lo("algo","Algorithm",["sft","dpo","gspo","grpo","ppo"],!0),pe("ckpt","Checkpoint"),lo("model_hub","Model hub",["modelscope","hf"],!0),pe("dataset_path","Dataset path"),pe("dataset_loader_fn","Dataset loader"),pe("epochs","Epochs",!0),pe("max_steps","Max steps",!0)]},{title:"Runtime",note:"parallelism, memory, and kernels",fields:[pe("world_size","World",!0),pe("tp_size","TP",!0),lo("attn_backend","Attention",["flash","native"],!0),Hn("activation_checkpointing","Activation ckpt"),Hn("drop_rollout_state","Drop rollout state"),Hn("eager_decode","Eager decode"),Hn("disable_thinking","Disable thinking")]},{title:"Batching",note:"controls train and rollout memory",fields:[pe("batch_size","Batch",!0),...a?[pe("n_samples","Samples",!0),pe("max_running_prompts","Running prompts",!0)]:[],pe("mini_bs","Mini BS",!0),pe("score_micro_bs","Score micro BS",!0),pe("gradient_accumulation_steps","Grad accum",!0)]},{title:a?"Rollout":"Sequence",note:a?"generation and sampling":"token limits for supervised data",fields:[pe("max_prompt_tokens","Prompt tokens",!0),pe("max_new_tokens","New tokens",!0),...r?[pe("max_context_len","Context",!0),pe("agent_fn","Agent fn"),pe("agent_timeout_s","Agent timeout",!0),Hn("train_tool_results","Train tool results")]:[],...a?[pe("temperature","Temp",!0),pe("top_k","Top K",!0),pe("top_p","Top P",!0),Hn("greedy","Greedy")]:[]]},{title:"Optimizer",note:"policy optimizer settings",fields:[pe("lr","LR",!0),pe("min_lr","Min LR",!0),pe("lr_decay_steps","Decay steps",!0),pe("lr_decay_style","Decay style",!0),pe("adam_beta1","Adam beta1",!0),pe("adam_beta2","Adam beta2",!0),pe("weight_decay","Weight decay",!0),pe("grad_clip_norm","Grad clip",!0),Hn("adam_8bit","8-bit Adam")]}],p=[];return(u||s)&&p.push(pe("ref_ckpt","Reference ckpt")),a&&p.push(pe("reward_fn_path","Reward fn")),s&&p.push(pe("reward_ckpt","Reward ckpt"),pe("critic_ckpt","Critic ckpt"),pe("critic_lr","Critic LR",!0),pe("critic_warmup_steps","Critic warmup",!0)),h&&p.push(pe("gspo_clip_eps","GSPO clip",!0)),f&&p.push(pe("grpo_clip_eps","GRPO clip",!0)),u&&p.push(pe("dpo_beta","DPO beta",!0)),s&&p.push(Hn("use_kl_loss","Use KL loss"),pe("kl_loss_coef","KL coef",!0),pe("kl_loss_type","KL type",!0),pe("clip_eps","Clip eps",!0),pe("clip_ratio_c","Clip ratio C",!0),pe("value_clip_eps","Value clip",!0),pe("value_loss_coef","Value coef",!0),pe("gamma","Gamma",!0),pe("lam","Lambda",!0)),p.length>0&&m.push({title:"Algorithm",note:`${n.toUpperCase()}-specific roles and loss`,fields:p}),m.push({title:"Probe",note:"optional smoke and auto tune helpers",fields:[Hn("tune_params","Tune params"),pe("mem_frac","Memory frac",!0),pe("tune_max_samples","Tune samples",!0)]},{title:"Output",note:"checkpointing, metrics, and escape hatch",fields:[pe("save_path","Save path"),pe("save_interval","Save interval",!0),pe("metrics_dir","Metrics dir"),pe("extra_args","Extra args")]}),m}function pe(n,a,r=!1){return{key:n,label:a,compact:r}}function lo(n,a,r,u=!1){return{key:n,label:a,compact:u,type:"select",options:r}}function Hn(n,a){return{key:n,label:a,compact:!0,type:"checkbox"}}function lE({config:n,setConfig:a,onStart:r}){return b.jsxs("div",{className:"formGrid",children:[[["model_path","Model path"],["model_hub","Model hub"],["host","Host"],["port","Port"],["world_size","World"],["tp_size","TP"],["max_running_prompts","Running prompts"],["default_max_tokens","Default max tokens"],["decode_progress_interval_s","Progress interval"],["attn_backend","Attention backend"],["eager_decode","Eager decode"],["disable_thinking","Disable thinking"],["extra_args","Extra args"]].map(([u,s])=>b.jsx(du,{label:s,value:n[u],onChange:h=>a({...n,[u]:h}),compact:u!=="model_path"},u)),b.jsxs("button",{className:"primaryButton launchButton wide",onClick:r,children:[b.jsx(Bo,{size:16})," Start serve"]})]})}function du({label:n,value:a,onChange:r,compact:u,type:s="text",options:h=[]}){return s==="checkbox"?b.jsxs("label",{className:kt("field","compact","checkField"),children:[b.jsx("input",{type:"checkbox",checked:!!a,onChange:f=>r(f.target.checked)}),b.jsx("span",{children:n})]}):b.jsxs("label",{className:kt("field",u&&"compact"),children:[b.jsx("span",{children:n}),s==="select"?b.jsx("select",{value:a??"",onChange:f=>r(f.target.value),children:h.map(f=>b.jsx("option",{value:f,children:f},f))}):b.jsx("input",{value:a??"",onChange:f=>r(f.target.value)})]})}function ly({title:n,text:a}){return b.jsxs("div",{className:"empty",children:[b.jsx(Fg,{size:18}),b.jsx("strong",{children:n}),b.jsx("span",{children:a})]})}const Hp=typeof document<"u"?document.getElementById("root"):null;Hp&&T0.createRoot(Hp).render(b.jsx(k_,{})); diff --git a/areno/dashboard/dist/assets/index-CIfovKBG.css b/areno/dashboard/dist/assets/index-Cu2P_wsA.css similarity index 94% rename from areno/dashboard/dist/assets/index-CIfovKBG.css rename to areno/dashboard/dist/assets/index-Cu2P_wsA.css index 125fbd22..8ddfbd5d 100644 --- a/areno/dashboard/dist/assets/index-CIfovKBG.css +++ b/areno/dashboard/dist/assets/index-Cu2P_wsA.css @@ -1 +1 @@ -:root{color-scheme:dark;--deck-canvas: #0b0f14;--deck-rail: #0f151c;--deck-panel: #121923;--deck-panel-2: #151f2b;--deck-line: rgba(167, 186, 210, .14);--deck-line-strong: rgba(167, 186, 210, .24);--deck-ink: #edf4ff;--deck-text: #b8c6d8;--deck-muted: #728196;--deck-cyan: #38d7ff;--deck-green: #57e39b;--deck-amber: #ffc857;--deck-red: #ff6b7a;--deck-violet: #a993ff;--radius-sm: 7px;--radius-md: 10px;--radius-lg: 14px;--shadow-panel: 0 0 0 1px rgba(167, 186, 210, .08), 0 18px 40px rgba(0, 0, 0, .26);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--deck-canvas);color:var(--deck-ink);-webkit-font-smoothing:antialiased}:root[data-theme=light]{color-scheme:light;--deck-canvas: #f5f7fb;--deck-rail: #ffffff;--deck-panel: #ffffff;--deck-panel-2: #eef4fb;--deck-line: rgba(25, 44, 68, .13);--deck-line-strong: rgba(25, 44, 68, .24);--deck-ink: #142033;--deck-text: #43566f;--deck-muted: #728096;--deck-cyan: #007ea7;--deck-green: #168a57;--deck-amber: #a56a00;--deck-red: #c73446;--deck-violet: #6e56cf;--shadow-panel: 0 0 0 1px rgba(25, 44, 68, .06), 0 16px 36px rgba(34, 56, 83, .1)}*{box-sizing:border-box}body{margin:0;width:100%;overflow-x:hidden;background:var(--deck-canvas)}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{display:grid;grid-template-columns:272px minmax(0,1fr);min-height:100vh;width:100%}.rail{display:flex;flex-direction:column;border-right:1px solid var(--deck-line);background:var(--deck-rail);padding:18px 14px}.brand{display:flex;align-items:center;gap:12px;padding:8px 8px 20px}.brandMark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#101f2c;border:1px solid rgba(56,215,255,.3);color:var(--deck-cyan);font-weight:700}.brandName{font-size:14px;font-weight:650;letter-spacing:0}.brandMeta,.tinyLabel{color:var(--deck-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.nav{display:grid;gap:5px}.navItem{display:flex;align-items:center;gap:10px;width:100%;height:36px;border:0;padding:0 10px;background:transparent;color:var(--deck-text);border-radius:var(--radius-sm);text-decoration:none;font-size:13px;font-weight:560}.navItem.active,.navItem:hover{background:#38d7ff14;color:var(--deck-ink)}.railFooter{margin-top:auto;border-top:1px solid var(--deck-line);padding:14px 8px 4px}.monoLine{margin-top:6px;color:var(--deck-text);font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;font-size:12px;overflow-wrap:anywhere}.main{min-width:0;max-width:100%;overflow-x:hidden;padding:20px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:16px}.topActions{display:inline-flex;gap:8px}h1,h2,p{margin:0}h1{font-size:25px;line-height:1.15;font-weight:680;letter-spacing:0}h2{font-size:15px;line-height:1.3;font-weight:650}p{color:var(--deck-muted);font-size:13px;line-height:1.45;margin-top:5px}.panel{background:var(--deck-panel);border:1px solid var(--deck-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel)}.workspace{min-height:560px}.tabGrid{display:grid;gap:12px}.metricsGrid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:12px;align-items:start}.jobMetricsGrid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:12px;margin-bottom:12px}.insetPanel{box-shadow:none;background:#a7bad208}.runtimeDeck{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px;margin-bottom:12px}.gpuDeck{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.gpuCard{background:var(--deck-panel);border:1px solid var(--deck-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);padding:14px}.gpuHead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px}.gpuHead strong{color:var(--deck-ink);font-size:13px}.gpuHead span{color:var(--deck-muted);font-size:12px;text-align:right;overflow-wrap:anywhere}.gpuMeter{display:grid;gap:7px;margin-top:10px}.gpuMeterLabel{display:flex;justify-content:space-between;gap:12px;color:var(--deck-muted);font-size:11px;font-weight:700}.gpuMeterLabel b{color:var(--deck-text);font-variant-numeric:tabular-nums}.meterTrack{height:9px;border-radius:999px;background:#a7bad21f;overflow:hidden}.meterTrack i{display:block;height:100%;border-radius:inherit;background:var(--deck-violet)}.meterTrack.util i{background:var(--deck-cyan)}.runtimeHero,.envFacts,.checkMatrix,.dependencyStrip{background:var(--deck-panel);border:1px solid var(--deck-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel)}.runtimeHero{display:flex;align-items:center;gap:16px;min-height:116px;padding:16px}.readinessOrb{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;font-weight:800;font-size:17px;border:1px solid var(--deck-line);background:#0b1118}.readinessOrb.ready{color:var(--deck-green);border-color:#57e39b59;box-shadow:inset 0 0 24px #57e39b0f}.readinessOrb.blocked{color:var(--deck-amber);border-color:#ffc85759;box-shadow:inset 0 0 24px #ffc8570f}.envFacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;background:var(--deck-line)}.envFact{display:flex;align-items:center;gap:10px;min-height:57px;padding:12px;background:var(--deck-panel)}.envFact>span{display:grid;place-items:center;width:28px;height:28px;color:var(--deck-cyan);border:1px solid var(--deck-line);border-radius:8px;background:#0b1118}.envFact label{display:block;color:var(--deck-muted);font-size:11px;font-weight:650;margin-bottom:3px}.envFact strong{display:block;color:var(--deck-ink);font-size:13px;font-weight:650;overflow-wrap:anywhere}.checkMatrix{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;overflow:hidden;background:var(--deck-line)}.checkItem{min-height:76px;padding:11px;background:var(--deck-panel)}.checkItem span{display:inline-flex;align-items:center;height:20px;border-radius:999px;padding:0 7px;font-size:10px;font-weight:800;margin-bottom:8px}.checkItem.ok span{color:var(--deck-green);background:#57e39b1a}.checkItem.warn span{color:var(--deck-amber);background:#ffc8571a}.checkItem.fail span{color:var(--deck-red);background:#ff6b7a1a}.checkItem strong,.checkItem small{display:block}.checkItem strong{color:var(--deck-ink);font-size:12px;font-weight:650}.checkItem small{margin-top:5px;color:var(--deck-muted);font-size:11px;line-height:1.35;overflow-wrap:anywhere}.dependencyStrip{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px;padding:10px}.depPill{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:999px;border:1px solid var(--deck-line);color:var(--deck-text);background:#0b1118;font-size:12px;font-weight:600}.depPill.ok{border-color:#57e39b40}.depPill.warn{border-color:#ffc85740}.panel{min-width:0;padding:14px}.panelHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px;min-width:0}.panelHeader>div{min-width:0}.jobList{display:grid;gap:7px}.jobListPage .jobList{gap:10px}.pagerControls{display:inline-flex;align-items:center;gap:8px;flex-shrink:0}.pagerControls span,.listFooter{color:var(--deck-muted);font-size:12px;font-variant-numeric:tabular-nums}.pagerControls button:disabled{cursor:not-allowed;opacity:.42}.listFooter{margin-top:12px;text-align:right}.jobRow{display:grid;grid-template-columns:34px 1fr 10px;align-items:center;gap:10px;width:100%;min-height:56px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:inherit;padding:7px;text-align:left}.jobRow.large{grid-template-columns:42px 1fr 10px;min-height:72px;padding:11px}.jobRow.large .jobIcon{width:42px;height:42px}.detailActions{display:inline-flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;gap:8px}.jobRow:hover,.jobRow.selected{background:var(--deck-panel-2);border-color:var(--deck-line)}.jobIcon{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#0b1119;color:var(--deck-cyan);border:1px solid var(--deck-line)}.jobTitle{font-size:13px;font-weight:620}.jobMeta{margin-top:4px;color:var(--deck-muted);font-size:12px}.statusDot{width:8px;height:8px;border-radius:50%;background:var(--deck-muted)}.statusDot.running{background:var(--deck-green);box-shadow:0 0 0 4px #57e39b1a}.statusDot.failed{background:var(--deck-red)}.statusDot.stopped{background:var(--deck-amber)}.timeline{display:flex;gap:8px;margin-bottom:12px;overflow-x:auto;padding-bottom:4px}.timelineItem{flex:0 0 136px;min-width:136px;display:flex;align-items:center;gap:8px;height:38px;padding:0 10px;border-radius:var(--radius-md);background:#0c121a;border:1px solid var(--deck-line);color:var(--deck-muted)}.timelineItem span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#ffffff0d;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.timelineItem.done{color:var(--deck-text)}.timelineItem.current{border-color:#38d7ff73;color:var(--deck-cyan)}.chart{min-height:272px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0c121a;padding:12px;margin-bottom:12px}.chartControls{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:10px;min-width:0}.chartControls select{height:28px;width:min(230px,100%);min-width:0;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#0b1118;color:var(--deck-text);padding:0 8px;outline:none}.chartControls label{display:flex;align-items:center;gap:7px;color:var(--deck-muted);font-size:11px;white-space:nowrap}.chartControls input[type=range]{width:92px;height:4px;accent-color:var(--deck-cyan)}.sampleCard{margin-bottom:12px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0b1118;overflow:hidden}.sampleGrid{display:grid;grid-template-columns:.9fr 1.1fr;gap:1px;background:var(--deck-line)}.sampleGrid>div,.sampleEmpty{min-height:116px;padding:11px;background:#0b1118}.sampleGrid span{display:block;color:var(--deck-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:7px}.sampleGrid p,.sampleEmpty{color:var(--deck-text);font-size:12px;line-height:1.5;max-height:150px;overflow:auto;white-space:pre-wrap}.sampleEmpty{color:var(--deck-muted)}.chartHeader{display:flex;align-items:center;justify-content:space-between;color:var(--deck-muted);font-size:12px;margin-bottom:12px}.chartHeader span{display:flex;align-items:center;gap:6px}.metricPlot{display:block;width:100%;height:180px;overflow:visible}.plotGrid line{stroke:#a7bad21a;stroke-width:1}.rawLine,.smoothLine{fill:none;stroke-linejoin:round;stroke-linecap:round}.rawLine{stroke:#728196bf;stroke-width:1.3}.smoothLine{stroke:var(--deck-cyan);stroke-width:2.7;filter:drop-shadow(0 0 8px rgba(56,215,255,.2))}.metricPlot circle{fill:var(--deck-ink);stroke:var(--deck-canvas);stroke-width:1.2}.plotFooter{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;margin-top:8px;color:var(--deck-muted);font-size:11px;font-variant-numeric:tabular-nums}.plotEmpty{display:grid;place-items:center;height:180px;color:var(--deck-muted);border:1px dashed var(--deck-line-strong);border-radius:var(--radius-md)}.timePerf{margin-bottom:12px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0b1118;padding:12px}.timePerfHeader{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.codeTitle.inline{position:static;height:auto;padding:0;border:0;background:transparent}.legend{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:9px 12px;color:var(--deck-muted);font-size:11px}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:8px;height:8px;border-radius:50%}.legend b{color:var(--deck-text);font-weight:700;font-variant-numeric:tabular-nums}.timeRows{display:grid;gap:8px}.timeRow{display:grid;grid-template-columns:64px minmax(0,1fr) 70px;align-items:center;gap:10px}.timeRow label,.timeRow strong{color:var(--deck-text);font-size:12px;font-weight:650;font-variant-numeric:tabular-nums}.timeRow strong{text-align:right}.timeTrack{height:28px;border-radius:6px;background:#141b25;border:1px solid rgba(167,186,210,.1);overflow:hidden}.timeStack{display:flex;height:100%;min-width:18px}.timeStack span{display:flex;align-items:center;justify-content:center;min-width:3px;color:#ffffffeb;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;overflow:hidden;white-space:nowrap}.seg-rollout,.legend .seg-rollout{background:#20c997}.seg-train,.legend .seg-train{background:#bf2bd9}.seg-other,.legend .seg-other{background:#2851f5}.seg-reward,.legend .seg-reward{background:#d33672}.seg-advantages,.legend .seg-advantages{background:#5a3ee6}.seg-actor-log-probs,.legend .seg-actor-log-probs{background:#e243d2}.seg-ref-log-probs,.legend .seg-ref-log-probs,.seg-old-policy-log-probs,.legend .seg-old-policy-log-probs{background:#c43f66}.seg-value,.legend .seg-value{background:#8b5cf6}.seg-sync-weight,.legend .seg-sync-weight,.seg-save,.legend .seg-save{background:#83b81a}.seg-make-sample,.legend .seg-make-sample{background:#b96a19}.split{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px}.codeCard{min-width:0;min-height:250px;max-height:360px;overflow:auto;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0b1118}.codeTitle{position:sticky;top:0;display:flex;align-items:center;gap:7px;height:34px;padding:0 11px;border-bottom:1px solid var(--deck-line);background:#0d131b;color:var(--deck-text);font-size:12px;font-weight:650}.sampleTitle{justify-content:space-between;gap:10px;min-height:34px;height:auto;padding-top:4px;padding-bottom:4px}.sampleTitle>span{display:inline-flex;align-items:center;gap:7px}.sampleControls{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.sampleControls select{height:26px;max-width:170px;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#0b1118;color:var(--deck-text);padding:0 8px;font-size:11px;outline:none}pre{margin:0;padding:11px;color:#d2deee;font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.configSections{display:grid;gap:12px;padding:11px}.configSection{min-width:0}.configSection h3{margin:0 0 8px;color:var(--deck-text);font-size:12px;font-weight:750;letter-spacing:0}.configGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.configItem{min-width:0;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#a7bad20d;padding:9px}.configItem span{display:block;color:var(--deck-muted);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}.configItem strong{display:block;color:var(--deck-ink);font-size:12px;font-weight:620;line-height:1.35;overflow-wrap:anywhere}.lowerGrid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:12px;margin-top:12px}.tabs{display:flex;gap:3px;padding:3px;border-radius:var(--radius-md);border:1px solid var(--deck-line);background:#0c121a}.tabs button{height:28px;border:0;border-radius:7px;background:transparent;color:var(--deck-muted);padding:0 12px;font-size:12px;font-weight:650}.tabs button.active{color:var(--deck-ink);background:var(--deck-panel-2)}.secondaryButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:34px;border:1px solid var(--deck-line);border-radius:var(--radius-sm);padding:0 12px;color:var(--deck-text);background:transparent;font-size:12px;font-weight:700}.launcherSections{display:grid;gap:14px}.launcherSection{display:grid;gap:10px;border:1px solid var(--deck-line);border-radius:var(--radius-md);padding:14px;background:var(--deck-panel-2)}.launcherSectionHeader{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.launcherSectionHeader strong{color:var(--deck-ink);font-size:13px;font-weight:760}.launcherSectionHeader span{color:var(--deck-faint);font-size:11px;font-weight:600;text-align:right}.formGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.field{display:grid;gap:6px;grid-column:span 2}.field.compact{grid-column:span 1}.field span{color:var(--deck-muted);font-size:11px;font-weight:650}input,select,textarea{width:100%;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#0b1118;color:var(--deck-ink);outline:none}input,select{height:34px;padding:0 10px;font-size:13px}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--deck-muted) 50%),linear-gradient(135deg,var(--deck-muted) 50%,transparent 50%);background-position:calc(100% - 14px) 14px,calc(100% - 9px) 14px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:28px}.checkField{display:flex;min-height:34px;align-items:center;gap:9px;align-self:end;border:1px solid var(--deck-line);border-radius:var(--radius-sm);padding:0 10px;background:#0b1118}.checkField input{width:15px;height:15px;padding:0;accent-color:var(--deck-cyan)}.checkField span{color:var(--deck-text);font-size:12px;font-weight:650}textarea{min-height:96px;resize:vertical;padding:10px;line-height:1.45}input:focus,select:focus,textarea:focus{border-color:#38d7ff85;box-shadow:0 0 0 3px #38d7ff1a}.primaryButton,.dangerButton,.iconButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;border-radius:var(--radius-sm);border:1px solid var(--deck-line);padding:0 12px;font-weight:650;font-size:13px}.primaryButton{color:#001018;border-color:#38d7ffcc;background:var(--deck-cyan)}.primaryButton.wide{grid-column:1 / -1}.launchButton{min-height:44px;border-radius:var(--radius-md);letter-spacing:0;width:100%}.dangerButton{color:var(--deck-red);background:#ff6b7a1a;border-color:#ff6b7a57}.dangerButton:hover{background:#ff6b7a29;border-color:#ff6b7a7a}.iconButton{width:36px;padding:0;color:var(--deck-text);background:var(--deck-panel)}.notice,.error{min-height:38px;display:flex;align-items:center;border-radius:var(--radius-md);padding:0 12px;margin-bottom:12px;font-size:13px;border:1px solid var(--deck-line)}.notice{color:var(--deck-cyan);background:#38d7ff14}.error{color:#ffd6db;background:#ff6b7a1a}.agentPanel{display:flex;flex-direction:column;gap:12px}.agentConfig{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px;align-items:end;margin-bottom:12px}.agentConfig.modalForm{grid-template-columns:1fr;margin-bottom:0}.modalOverlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;background:#03080fa8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:24px}.modalCard{width:min(560px,100%);border:1px solid var(--deck-line);border-radius:16px;background:var(--deck-panel);box-shadow:0 24px 80px #0000006b;padding:16px}.modalHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.chatPanel{display:grid;grid-template-rows:auto auto minmax(360px,1fr) auto;min-height:650px}.agentHeaderActions{display:inline-flex;align-items:center;gap:8px}.agentTabs{display:inline-flex;align-items:center;gap:6px;width:max-content;margin:4px 0 0 clamp(28px,5vw,112px);padding:4px;border:1px solid var(--deck-line);border-radius:999px;background:var(--deck-soft)}.agentTabs button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:999px;padding:7px 12px;background:transparent;color:var(--deck-muted);font-size:12px;font-weight:750}.agentTabs button.active{background:var(--deck-panel);color:var(--deck-ink);box-shadow:0 8px 22px #00000024}.chatMessages{display:flex;flex-direction:column;gap:24px;min-height:360px;max-height:56vh;overflow:auto;border:0;border-radius:var(--radius-lg);background:transparent;padding:48px clamp(28px,5vw,112px) 18px}.chatBubble{max-width:min(1280px,100%);border:0;border-radius:0;background:transparent;padding:0;color:var(--deck-text)}.chatBubble.user{align-self:flex-end;max-width:min(680px,72%);border-radius:14px;background:#1a86ff;color:#fff;box-shadow:0 12px 28px #1a86ff29;padding:13px 20px}.chatBubble.assistant{align-self:flex-start;width:min(1280px,100%)}.chatBubble>span{display:block;margin-bottom:5px;color:var(--deck-muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.chatBubble.user>span{display:none}.chatBubble.assistant>span{display:none}.chatBubble p{margin:0;white-space:pre-wrap;color:var(--deck-text)}.chatBubble.user p,.chatBubble.user .markdownBlock{color:#fff;font-size:13px;font-weight:650}.reasoningBlock{position:relative;margin:4px 0 18px;padding-left:34px;color:var(--deck-muted);background:transparent}.reasoningBlock:before{content:"";position:absolute;top:28px;bottom:0;left:15px;width:2px;border-radius:999px;background:var(--deck-line)}.reasoningBlock summary{display:inline-flex;align-items:center;gap:9px;cursor:pointer;list-style:none;min-height:28px}.reasoningBlock summary::-webkit-details-marker{display:none}.reasoningBlock summary span{display:inline-grid;place-items:center;width:18px;height:18px;border:1px solid var(--deck-line-strong);border-radius:999px;color:var(--deck-muted);font-size:11px}.reasoningBlock summary strong{color:var(--deck-muted);font-size:12px;font-weight:650}.reasoningBlock summary:after{content:"⌄";color:var(--deck-muted);font-size:15px}.agentEventList{display:grid;gap:16px}.agentEventList>.markdownBlock{width:min(780px,calc(100% - 64px));margin-left:34px}.markdownBlock{color:var(--deck-text);font-size:13px;line-height:1.58;overflow-wrap:anywhere}.markdownBlock>*:first-child{margin-top:0}.markdownBlock>*:last-child{margin-bottom:0}.markdownBlock p,.markdownBlock ul,.markdownBlock ol{margin:0 0 8px}.markdownBlock ul,.markdownBlock ol{padding-left:20px}.markdownBlock code{border:1px solid var(--deck-line);border-radius:5px;padding:1px 4px;background:#38d7ff14;color:var(--deck-ink)}.markdownBlock pre{max-height:220px;overflow:auto;border:1px solid var(--deck-line);border-radius:8px;padding:10px;background:#04080d38}.markdownBlock table{display:block;width:100%;max-width:100%;margin:10px 0;overflow:auto;border-collapse:collapse;border:1px solid var(--deck-line);border-radius:8px}.markdownBlock th,.markdownBlock td{padding:7px 9px;border-bottom:1px solid var(--deck-line);text-align:left;white-space:nowrap}.markdownBlock th{color:var(--deck-ink);background:#38d7ff14;font-size:11px;font-weight:750}.markdownBlock tr:last-child td{border-bottom:0}.reasoningBlock .markdownBlock{width:min(780px,calc(100% - 64px));max-height:160px;overflow:auto;margin-left:34px;padding:14px 0 2px;color:var(--deck-muted)}.toolCallList{display:grid;gap:8px;margin-top:0}.toolCallCard{width:min(780px,calc(100% - 64px));margin-left:34px;border:1px solid rgba(148,163,184,.24);border-radius:11px;background:var(--deck-panel);box-shadow:none;overflow:hidden}.toolCallCard.ok{border-color:var(--deck-line-strong);background:var(--deck-panel)}.toolCallCard.failed{border-color:#ff6b7a47;background:#ff6b7a14}.toolCallCard.live{border-color:#57e39b6b;background:#57e39b12}.toolCallDetails summary,.toolResultDetails summary{display:grid;grid-template-columns:auto minmax(96px,auto) minmax(0,1fr);align-items:center;gap:8px;min-height:36px;padding:0 12px;cursor:pointer;border-bottom:1px solid var(--deck-line);list-style-position:outside}.toolCallDetails:not([open]) summary,.toolResultDetails:not([open]) summary{border-bottom:0}.toolCallDetails summary::marker,.toolResultDetails summary::marker{color:var(--deck-muted)}.toolResultDetails summary span{display:inline-flex;align-items:center;justify-content:center;min-width:58px;height:19px;border:1px solid rgba(87,227,155,.28);border-radius:999px;background:#57e39b1a;color:var(--deck-green);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.toolCallDetails summary span{position:relative;width:14px;min-width:14px;height:14px;overflow:hidden;color:transparent}.toolCallDetails summary span:before{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:999px;background:#35c737}.toolResultDetails.ok summary span{border-color:#57e39b38;background:#57e39b17;color:var(--deck-green)}.toolResultDetails.failed summary span{border-color:#ff6b7a47;background:#ff6b7a1a;color:var(--deck-red)}.toolCallDetails summary b,.toolResultDetails summary b{color:var(--deck-ink);font-size:12px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolCallDetails summary em,.toolResultDetails summary em{min-width:0;overflow:hidden;color:var(--deck-muted);font-size:11px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.toolCallHead{border-bottom:1px solid var(--deck-line)}.toolCallHead span{margin:0;color:var(--deck-cyan)}.toolCallHead b{color:var(--deck-ink);font-size:11px}.toolCallCard pre{max-height:140px;overflow:auto;background:transparent;border-top:1px solid var(--deck-line);padding:10px 12px;font-size:11px}.toolResultDetails pre{max-height:240px}.streamingHint{margin-top:8px;color:var(--deck-cyan);font-size:11px;font-weight:700}.chatComposer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;margin-top:12px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:var(--deck-panel);padding:10px}.chatComposer textarea{min-height:72px;border:0;padding:8px;background:transparent;resize:none;font-size:13px}.agentHistory{min-height:360px;max-height:56vh;overflow:auto;padding:28px clamp(28px,5vw,112px) 18px}.agentHistoryHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.agentHistoryHeader h3{margin:0 0 4px;font-size:16px}.agentHistoryHeader p{margin:0;color:var(--deck-muted);font-size:12px}.agentHistoryList{display:grid;gap:10px}.agentHistoryItem{display:grid;gap:5px;width:min(840px,100%);border:1px solid var(--deck-line);border-radius:13px;background:var(--deck-panel);padding:13px 15px;text-align:left}.agentHistoryItem.active{border-color:#38d7ff7a;box-shadow:0 0 0 1px #38d7ff2e}.agentHistoryItem strong{color:var(--deck-ink);font-size:13px}.agentHistoryItem span{overflow:hidden;color:var(--deck-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.agentHistoryItem small{color:var(--deck-subtle);font-size:11px}.agentOutput{min-height:152px;border-radius:var(--radius-lg);border:1px solid var(--deck-line);background:#0b1118;color:var(--deck-text);padding:12px;font-size:13px;line-height:1.5;white-space:pre-wrap}.empty{display:grid;place-items:center;gap:8px;min-height:180px;color:var(--deck-muted);border:1px dashed var(--deck-line-strong);border-radius:var(--radius-lg);text-align:center;padding:16px}.empty strong{color:var(--deck-text);font-size:13px}.empty span{font-size:12px}:root[data-theme=light] .brandMark,:root[data-theme=light] .readinessOrb,:root[data-theme=light] .envFact,:root[data-theme=light] .envFact>span,:root[data-theme=light] .checkItem,:root[data-theme=light] .depPill,:root[data-theme=light] .timelineItem,:root[data-theme=light] .chart,:root[data-theme=light] .sampleCard,:root[data-theme=light] .sampleGrid>div,:root[data-theme=light] .sampleEmpty,:root[data-theme=light] .timePerf,:root[data-theme=light] .codeCard,:root[data-theme=light] .codeTitle,:root[data-theme=light] input,:root[data-theme=light] textarea,:root[data-theme=light] select,:root[data-theme=light] .checkField,:root[data-theme=light] .agentOutput,:root[data-theme=light] .chatComposer,:root[data-theme=light] .timeTrack,:root[data-theme=light] .tabs{background:var(--deck-panel)}:root[data-theme=light] .chartControls select,:root[data-theme=light] .configItem{background:#fff;color:var(--deck-ink)}:root[data-theme=light] .dangerButton{color:#a51d2d;background:#fff1f3;border-color:#c7344647}:root[data-theme=light] .primaryButton{color:#fff;background:#007ea7;border-color:#007ea7;box-shadow:0 8px 18px #007ea72e}:root[data-theme=light] .launchButton{background:#006d94;border-color:#006d94}:root[data-theme=light] .jobIcon{background:#f3f7fb}:root[data-theme=light] .chatBubble.user{background:#1683ff;color:#fff}:root[data-theme=light] .chatMessages{background:transparent}:root[data-theme=light] .toolCallCard{box-shadow:0 6px 18px #1420330f}:root[data-theme=light] .rawLine{stroke:#55657aa6}:root[data-theme=light] pre{color:#25344a}@media(max-width:980px){.shell{grid-template-columns:1fr}.rail{position:sticky;top:0;z-index:20;border-right:0;border-bottom:1px solid var(--deck-line);padding:10px}.brand,.railFooter{display:none}.nav{display:flex;gap:6px;overflow-x:auto}.navItem{width:auto;flex:0 0 auto}.main{padding:12px}.topbar,.panelHeader,.timePerfHeader{flex-direction:column;align-items:stretch}.runtimeDeck,.jobMetricsGrid,.metricsGrid,.split,.sampleGrid,.formGrid{grid-template-columns:1fr}.field,.field.compact{grid-column:span 1}.checkMatrix,.envFacts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.checkMatrix,.envFacts{grid-template-columns:1fr}.jobRow.large{grid-template-columns:34px minmax(0,1fr)}.jobRow.large .statusDot{display:none}.timeRow{grid-template-columns:52px minmax(0,1fr)}.timeRow strong{grid-column:2;text-align:left}} +:root{color-scheme:dark;--deck-canvas: #0b0f14;--deck-rail: #0f151c;--deck-panel: #121923;--deck-panel-2: #151f2b;--deck-line: rgba(167, 186, 210, .14);--deck-line-strong: rgba(167, 186, 210, .24);--deck-ink: #edf4ff;--deck-text: #b8c6d8;--deck-muted: #728196;--deck-cyan: #38d7ff;--deck-green: #57e39b;--deck-amber: #ffc857;--deck-red: #ff6b7a;--deck-violet: #a993ff;--radius-sm: 7px;--radius-md: 10px;--radius-lg: 14px;--shadow-panel: 0 0 0 1px rgba(167, 186, 210, .08), 0 18px 40px rgba(0, 0, 0, .26);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--deck-canvas);color:var(--deck-ink);-webkit-font-smoothing:antialiased}:root[data-theme=light]{color-scheme:light;--deck-canvas: #f5f7fb;--deck-rail: #ffffff;--deck-panel: #ffffff;--deck-panel-2: #eef4fb;--deck-line: rgba(25, 44, 68, .13);--deck-line-strong: rgba(25, 44, 68, .24);--deck-ink: #142033;--deck-text: #43566f;--deck-muted: #728096;--deck-cyan: #007ea7;--deck-green: #168a57;--deck-amber: #a56a00;--deck-red: #c73446;--deck-violet: #6e56cf;--shadow-panel: 0 0 0 1px rgba(25, 44, 68, .06), 0 16px 36px rgba(34, 56, 83, .1)}*{box-sizing:border-box}body{margin:0;width:100%;overflow-x:hidden;background:var(--deck-canvas)}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{display:grid;grid-template-columns:272px minmax(0,1fr);min-height:100vh;width:100%}.rail{display:flex;flex-direction:column;border-right:1px solid var(--deck-line);background:var(--deck-rail);padding:18px 14px}.brand{display:flex;align-items:center;gap:12px;padding:8px 8px 20px}.brandMark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#101f2c;border:1px solid rgba(56,215,255,.3);color:var(--deck-cyan);font-weight:700}.brandName{font-size:14px;font-weight:650;letter-spacing:0}.brandMeta,.tinyLabel{color:var(--deck-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.nav{display:grid;gap:5px}.navItem{display:flex;align-items:center;gap:10px;width:100%;height:36px;border:0;padding:0 10px;background:transparent;color:var(--deck-text);border-radius:var(--radius-sm);text-decoration:none;font-size:13px;font-weight:560}.navItem.active,.navItem:hover{background:#38d7ff14;color:var(--deck-ink)}.railFooter{margin-top:auto;border-top:1px solid var(--deck-line);padding:14px 8px 4px}.monoLine{margin-top:6px;color:var(--deck-text);font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;font-size:12px;overflow-wrap:anywhere}.main{min-width:0;max-width:100%;overflow-x:hidden;padding:20px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:16px}.topActions{display:inline-flex;gap:8px}h1,h2,p{margin:0}h1{font-size:25px;line-height:1.15;font-weight:680;letter-spacing:0}h2{font-size:15px;line-height:1.3;font-weight:650}p{color:var(--deck-muted);font-size:13px;line-height:1.45;margin-top:5px}.panel{background:var(--deck-panel);border:1px solid var(--deck-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel)}.workspace{min-height:560px}.tabGrid{display:grid;gap:12px}.metricsGrid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:12px;align-items:start}.jobMetricsGrid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:12px;margin-bottom:12px}.insetPanel{box-shadow:none;background:#a7bad208}.runtimeDeck{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px;margin-bottom:12px}.gpuDeck{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.gpuCard{background:var(--deck-panel);border:1px solid var(--deck-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);padding:14px}.gpuHead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px}.gpuHead strong{color:var(--deck-ink);font-size:13px}.gpuHead span{color:var(--deck-muted);font-size:12px;text-align:right;overflow-wrap:anywhere}.gpuMeter{display:grid;gap:7px;margin-top:10px}.gpuMeterLabel{display:flex;justify-content:space-between;gap:12px;color:var(--deck-muted);font-size:11px;font-weight:700}.gpuMeterLabel b{color:var(--deck-text);font-variant-numeric:tabular-nums}.meterTrack{height:9px;border-radius:999px;background:#a7bad21f;overflow:hidden}.meterTrack i{display:block;height:100%;border-radius:inherit;background:var(--deck-violet)}.meterTrack.util i{background:var(--deck-cyan)}.runtimeHero,.envFacts,.checkMatrix,.dependencyStrip{background:var(--deck-panel);border:1px solid var(--deck-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel)}.runtimeHero{display:flex;align-items:center;gap:16px;min-height:116px;padding:16px}.readinessOrb{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;font-weight:800;font-size:17px;border:1px solid var(--deck-line);background:#0b1118}.readinessOrb.ready{color:var(--deck-green);border-color:#57e39b59;box-shadow:inset 0 0 24px #57e39b0f}.readinessOrb.blocked{color:var(--deck-amber);border-color:#ffc85759;box-shadow:inset 0 0 24px #ffc8570f}.envFacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;background:var(--deck-line)}.envFact{display:flex;align-items:center;gap:10px;min-height:57px;padding:12px;background:var(--deck-panel)}.envFact>span{display:grid;place-items:center;width:28px;height:28px;color:var(--deck-cyan);border:1px solid var(--deck-line);border-radius:8px;background:#0b1118}.envFact label{display:block;color:var(--deck-muted);font-size:11px;font-weight:650;margin-bottom:3px}.envFact strong{display:block;color:var(--deck-ink);font-size:13px;font-weight:650;overflow-wrap:anywhere}.checkMatrix{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;overflow:hidden;background:var(--deck-line)}.checkItem{min-height:76px;padding:11px;background:var(--deck-panel)}.checkItem span{display:inline-flex;align-items:center;height:20px;border-radius:999px;padding:0 7px;font-size:10px;font-weight:800;margin-bottom:8px}.checkItem.ok span{color:var(--deck-green);background:#57e39b1a}.checkItem.warn span{color:var(--deck-amber);background:#ffc8571a}.checkItem.fail span{color:var(--deck-red);background:#ff6b7a1a}.checkItem strong,.checkItem small{display:block}.checkItem strong{color:var(--deck-ink);font-size:12px;font-weight:650}.checkItem small{margin-top:5px;color:var(--deck-muted);font-size:11px;line-height:1.35;overflow-wrap:anywhere}.dependencyStrip{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px;padding:10px}.depPill{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:999px;border:1px solid var(--deck-line);color:var(--deck-text);background:#0b1118;font-size:12px;font-weight:600}.depPill.ok{border-color:#57e39b40}.depPill.warn{border-color:#ffc85740}.panel{min-width:0;padding:14px}.panelHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px;min-width:0}.panelHeader>div{min-width:0}.jobList{display:grid;gap:7px}.jobListPage .jobList{gap:10px}.pagerControls{display:inline-flex;align-items:center;gap:8px;flex-shrink:0}.pagerControls span,.listFooter{color:var(--deck-muted);font-size:12px;font-variant-numeric:tabular-nums}.pagerControls button:disabled{cursor:not-allowed;opacity:.42}.listFooter{margin-top:12px;text-align:right}.jobRow{display:grid;grid-template-columns:34px 1fr 10px;align-items:center;gap:10px;width:100%;min-height:56px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:inherit;padding:7px;text-align:left}.jobRow.large{grid-template-columns:42px 1fr 10px;min-height:72px;padding:11px}.jobRow.large .jobIcon{width:42px;height:42px}.detailActions{display:inline-flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;gap:8px}.jobRow:hover,.jobRow.selected{background:var(--deck-panel-2);border-color:var(--deck-line)}.jobIcon{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#0b1119;color:var(--deck-cyan);border:1px solid var(--deck-line)}.jobTitle{font-size:13px;font-weight:620}.jobMeta{margin-top:4px;color:var(--deck-muted);font-size:12px}.statusDot{width:8px;height:8px;border-radius:50%;background:var(--deck-muted)}.statusDot.running{background:var(--deck-green);box-shadow:0 0 0 4px #57e39b1a}.statusDot.failed{background:var(--deck-red)}.statusDot.stopped{background:var(--deck-amber)}.timeline{display:flex;gap:8px;margin-bottom:12px;overflow-x:auto;padding-bottom:4px}.timelineItem{flex:0 0 136px;min-width:136px;display:flex;align-items:center;gap:8px;height:38px;padding:0 10px;border-radius:var(--radius-md);background:#0c121a;border:1px solid var(--deck-line);color:var(--deck-muted)}.timelineItem span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#ffffff0d;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.timelineItem.done{color:var(--deck-text)}.timelineItem.current{border-color:#38d7ff73;color:var(--deck-cyan)}.chart{min-height:272px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0c121a;padding:12px;margin-bottom:12px}.chartControls{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:10px;min-width:0}.chartControls select{height:28px;width:min(230px,100%);min-width:0;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#0b1118;color:var(--deck-text);padding:0 8px;outline:none}.chartControls label{display:flex;align-items:center;gap:7px;color:var(--deck-muted);font-size:11px;white-space:nowrap}.chartControls input[type=range]{width:92px;height:4px;accent-color:var(--deck-cyan)}.sampleCard{margin-bottom:12px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0b1118;overflow:hidden}.sampleGrid{display:grid;grid-template-columns:.9fr 1.1fr;gap:1px;background:var(--deck-line)}.sampleGrid>div,.sampleEmpty{min-height:116px;padding:11px;background:#0b1118}.sampleGrid span{display:block;color:var(--deck-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:7px}.sampleGrid p,.sampleEmpty{color:var(--deck-text);font-size:12px;line-height:1.5;max-height:150px;overflow:auto;white-space:pre-wrap}.sampleEmpty{color:var(--deck-muted)}.chartHeader{display:flex;align-items:center;justify-content:space-between;color:var(--deck-muted);font-size:12px;margin-bottom:12px}.chartHeader span{display:flex;align-items:center;gap:6px}.metricPlot{display:block;width:100%;height:180px;overflow:visible}.plotGrid line{stroke:#a7bad21a;stroke-width:1}.rawLine,.smoothLine{fill:none;stroke-linejoin:round;stroke-linecap:round}.rawLine{stroke:#728196bf;stroke-width:1.3}.smoothLine{stroke:var(--deck-cyan);stroke-width:2.7;filter:drop-shadow(0 0 8px rgba(56,215,255,.2))}.metricPlot circle{fill:var(--deck-ink);stroke:var(--deck-canvas);stroke-width:1.2}.plotFooter{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;margin-top:8px;color:var(--deck-muted);font-size:11px;font-variant-numeric:tabular-nums}.plotEmpty{display:grid;place-items:center;height:180px;color:var(--deck-muted);border:1px dashed var(--deck-line-strong);border-radius:var(--radius-md)}.timePerf{margin-bottom:12px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0b1118;padding:12px}.timePerfHeader{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.codeTitle.inline{position:static;height:auto;padding:0;border:0;background:transparent}.legend{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:9px 12px;color:var(--deck-muted);font-size:11px}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:8px;height:8px;border-radius:50%}.legend b{color:var(--deck-text);font-weight:700;font-variant-numeric:tabular-nums}.timeRows{display:grid;gap:8px}.timeRow{display:grid;grid-template-columns:64px minmax(0,1fr) 70px;align-items:center;gap:10px}.timeRow label,.timeRow strong{color:var(--deck-text);font-size:12px;font-weight:650;font-variant-numeric:tabular-nums}.timeRow strong{text-align:right}.timeTrack{height:28px;border-radius:6px;background:#141b25;border:1px solid rgba(167,186,210,.1);overflow:hidden}.timeStack{display:flex;height:100%;min-width:18px}.timeStack span{display:flex;align-items:center;justify-content:center;min-width:3px;color:#ffffffeb;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;overflow:hidden;white-space:nowrap}.seg-rollout,.legend .seg-rollout{background:#20c997}.seg-train,.legend .seg-train{background:#bf2bd9}.seg-other,.legend .seg-other{background:#2851f5}.seg-reward,.legend .seg-reward{background:#d33672}.seg-advantages,.legend .seg-advantages{background:#5a3ee6}.seg-actor-log-probs,.legend .seg-actor-log-probs{background:#e243d2}.seg-ref-log-probs,.legend .seg-ref-log-probs,.seg-old-policy-log-probs,.legend .seg-old-policy-log-probs{background:#c43f66}.seg-value,.legend .seg-value{background:#8b5cf6}.seg-sync-weight,.legend .seg-sync-weight,.seg-save,.legend .seg-save{background:#83b81a}.seg-make-sample,.legend .seg-make-sample{background:#b96a19}.split{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px}.codeCard{min-width:0;min-height:250px;max-height:360px;overflow:auto;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:#0b1118}.codeTitle{position:sticky;top:0;display:flex;align-items:center;gap:7px;height:34px;padding:0 11px;border-bottom:1px solid var(--deck-line);background:#0d131b;color:var(--deck-text);font-size:12px;font-weight:650}.sampleTitle{justify-content:space-between;gap:10px;min-height:34px;height:auto;padding-top:4px;padding-bottom:4px}.sampleTitle>span{display:inline-flex;align-items:center;gap:7px}.sampleControls{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.sampleControls select{height:26px;max-width:170px;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#0b1118;color:var(--deck-text);padding:0 8px;font-size:11px;outline:none}pre{margin:0;padding:11px;color:#d2deee;font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.configSections{display:grid;gap:12px;padding:11px}.configSection{min-width:0}.configSection h3{margin:0 0 8px;color:var(--deck-text);font-size:12px;font-weight:750;letter-spacing:0}.configGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.configItem{min-width:0;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#a7bad20d;padding:9px}.configItem span{display:block;color:var(--deck-muted);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}.configItem strong{display:block;color:var(--deck-ink);font-size:12px;font-weight:620;line-height:1.35;overflow-wrap:anywhere}.lowerGrid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:12px;margin-top:12px}.tabs{display:flex;gap:3px;padding:3px;border-radius:var(--radius-md);border:1px solid var(--deck-line);background:#0c121a}.tabs button{height:28px;border:0;border-radius:7px;background:transparent;color:var(--deck-muted);padding:0 12px;font-size:12px;font-weight:650}.tabs button.active{color:var(--deck-ink);background:var(--deck-panel-2)}.secondaryButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:34px;border:1px solid var(--deck-line);border-radius:var(--radius-sm);padding:0 12px;color:var(--deck-text);background:transparent;font-size:12px;font-weight:700}.launcherSections{display:grid;gap:14px}.launcherSection{display:grid;gap:10px;border:1px solid var(--deck-line);border-radius:var(--radius-md);padding:14px;background:var(--deck-panel-2)}.launcherSectionHeader{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.launcherSectionHeader strong{color:var(--deck-ink);font-size:13px;font-weight:760}.launcherSectionHeader span{color:var(--deck-faint);font-size:11px;font-weight:600;text-align:right}.formGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.field{display:grid;gap:6px;grid-column:span 2}.field.compact{grid-column:span 1}.field span{color:var(--deck-muted);font-size:11px;font-weight:650}input,select,textarea{width:100%;border:1px solid var(--deck-line);border-radius:var(--radius-sm);background:#0b1118;color:var(--deck-ink);outline:none}input,select{height:34px;padding:0 10px;font-size:13px}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--deck-muted) 50%),linear-gradient(135deg,var(--deck-muted) 50%,transparent 50%);background-position:calc(100% - 14px) 14px,calc(100% - 9px) 14px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:28px}.checkField{display:flex;min-height:34px;align-items:center;gap:9px;align-self:end;border:1px solid var(--deck-line);border-radius:var(--radius-sm);padding:0 10px;background:#0b1118}.checkField input{width:15px;height:15px;padding:0;accent-color:var(--deck-cyan)}.checkField span{color:var(--deck-text);font-size:12px;font-weight:650}textarea{min-height:96px;resize:vertical;padding:10px;line-height:1.45}input:focus,select:focus,textarea:focus{border-color:#38d7ff85;box-shadow:0 0 0 3px #38d7ff1a}.primaryButton,.dangerButton,.iconButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;border-radius:var(--radius-sm);border:1px solid var(--deck-line);padding:0 12px;font-weight:650;font-size:13px}.primaryButton{color:#001018;border-color:#38d7ffcc;background:var(--deck-cyan)}.primaryButton.wide{grid-column:1 / -1}.launchButton{min-height:44px;border-radius:var(--radius-md);letter-spacing:0;width:100%}.dangerButton{color:var(--deck-red);background:#ff6b7a1a;border-color:#ff6b7a57}.dangerButton:hover{background:#ff6b7a29;border-color:#ff6b7a7a}.iconButton{width:36px;padding:0;color:var(--deck-text);background:var(--deck-panel)}.notice,.error{min-height:38px;display:flex;align-items:center;border-radius:var(--radius-md);padding:0 12px;margin-bottom:12px;font-size:13px;border:1px solid var(--deck-line)}.notice{color:var(--deck-cyan);background:#38d7ff14}.error{color:#ffd6db;background:#ff6b7a1a}.agentPanel{display:flex;flex-direction:column;gap:12px}.agentConfig{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px;align-items:end;margin-bottom:12px}.agentConfig.modalForm{grid-template-columns:1fr;margin-bottom:0}.modalOverlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;background:#03080fa8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:24px}.modalCard{width:min(560px,100%);border:1px solid var(--deck-line);border-radius:16px;background:var(--deck-panel);box-shadow:0 24px 80px #0000006b;padding:16px}.modalHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.chatPanel{display:grid;grid-template-rows:auto auto minmax(360px,1fr) auto;min-height:650px}.agentHeaderActions{display:inline-flex;align-items:center;gap:8px}.agentTabs{display:inline-flex;align-items:center;gap:6px;width:max-content;margin:4px 0 0 clamp(28px,5vw,112px);padding:4px;border:1px solid var(--deck-line);border-radius:999px;background:var(--deck-soft)}.agentTabs button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:999px;padding:7px 12px;background:transparent;color:var(--deck-muted);font-size:12px;font-weight:750}.agentTabs button.active{background:var(--deck-panel);color:var(--deck-ink);box-shadow:0 8px 22px #00000024}.chatMessages{display:flex;flex-direction:column;gap:24px;min-height:360px;max-height:56vh;overflow:auto;border:0;border-radius:var(--radius-lg);background:transparent;padding:48px clamp(28px,5vw,112px) 18px}.chatBubble{max-width:min(1280px,100%);border:0;border-radius:0;background:transparent;padding:0;color:var(--deck-text)}.chatBubble.user{align-self:flex-end;max-width:min(680px,72%);border-radius:14px;background:#1a86ff;color:#fff;box-shadow:0 12px 28px #1a86ff29;padding:13px 20px}.chatBubble.assistant{align-self:flex-start;width:min(1280px,100%)}.chatBubble>span{display:block;margin-bottom:5px;color:var(--deck-muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.chatBubble.user>span{display:none}.chatBubble.assistant>span{display:none}.chatBubble p{margin:0;white-space:pre-wrap;color:var(--deck-text)}.chatBubble.user p,.chatBubble.user .markdownBlock{color:#fff;font-size:13px;font-weight:650}.reasoningBlock{position:relative;margin:4px 0 18px;padding-left:34px;color:var(--deck-muted);background:transparent}.reasoningBlock:before{content:"";position:absolute;top:28px;bottom:0;left:15px;width:2px;border-radius:999px;background:var(--deck-line)}.reasoningBlock summary{display:inline-flex;align-items:center;gap:9px;cursor:pointer;list-style:none;min-height:28px}.reasoningBlock summary::-webkit-details-marker{display:none}.reasoningBlock summary span{display:inline-grid;place-items:center;width:18px;height:18px;border:1px solid var(--deck-line-strong);border-radius:999px;color:var(--deck-muted);font-size:11px}.reasoningBlock summary strong{color:var(--deck-muted);font-size:12px;font-weight:650}.reasoningBlock summary:after{content:"⌄";color:var(--deck-muted);font-size:15px}.agentEventList{display:grid;gap:16px}.agentEventList>.markdownBlock{width:min(780px,calc(100% - 64px));margin-left:34px}.markdownBlock{color:var(--deck-text);font-size:13px;line-height:1.58;overflow-wrap:anywhere}.markdownBlock>*:first-child{margin-top:0}.markdownBlock>*:last-child{margin-bottom:0}.markdownBlock p,.markdownBlock ul,.markdownBlock ol{margin:0 0 8px}.markdownBlock ul,.markdownBlock ol{padding-left:20px}.markdownBlock code{border:1px solid var(--deck-line);border-radius:5px;padding:1px 4px;background:#38d7ff14;color:var(--deck-ink)}.markdownBlock pre{max-height:220px;overflow:auto;border:1px solid var(--deck-line);border-radius:8px;padding:10px;background:#04080d38}.markdownBlock table{display:block;width:100%;max-width:100%;margin:10px 0;overflow:auto;border-collapse:collapse;border:1px solid var(--deck-line);border-radius:8px}.markdownBlock th,.markdownBlock td{padding:7px 9px;border-bottom:1px solid var(--deck-line);text-align:left;white-space:nowrap}.markdownBlock th{color:var(--deck-ink);background:#38d7ff14;font-size:11px;font-weight:750}.markdownBlock tr:last-child td{border-bottom:0}.reasoningBlock .markdownBlock{width:min(780px,calc(100% - 64px));max-height:160px;overflow:auto;margin-left:34px;padding:14px 0 2px;color:var(--deck-muted)}.toolCallList{display:grid;gap:8px;margin-top:0}.toolCallCard{width:min(780px,calc(100% - 64px));margin-left:34px;border:1px solid rgba(148,163,184,.24);border-radius:11px;background:var(--deck-panel);box-shadow:none;overflow:hidden}.toolCallCard.ok{border-color:var(--deck-line-strong);background:var(--deck-panel)}.toolCallCard.failed{border-color:#ff6b7a47;background:#ff6b7a14}.toolCallCard.live{border-color:#57e39b6b;background:#57e39b12}.toolCallDetails summary,.toolResultDetails summary{display:grid;grid-template-columns:auto minmax(96px,auto) minmax(0,1fr);align-items:center;gap:8px;min-height:36px;padding:0 12px;cursor:pointer;border-bottom:1px solid var(--deck-line);list-style-position:outside}.toolCallDetails:not([open]) summary,.toolResultDetails:not([open]) summary{border-bottom:0}.toolCallDetails summary::marker,.toolResultDetails summary::marker{color:var(--deck-muted)}.toolResultDetails summary span{display:inline-flex;align-items:center;justify-content:center;min-width:58px;height:19px;border:1px solid rgba(87,227,155,.28);border-radius:999px;background:#57e39b1a;color:var(--deck-green);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.toolCallDetails summary span{position:relative;width:14px;min-width:14px;height:14px;overflow:hidden;color:transparent}.toolCallDetails summary span:before{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:999px;background:#35c737}.toolResultDetails.ok summary span{border-color:#57e39b38;background:#57e39b17;color:var(--deck-green)}.toolResultDetails.failed summary span{border-color:#ff6b7a47;background:#ff6b7a1a;color:var(--deck-red)}.toolCallDetails summary b,.toolResultDetails summary b{color:var(--deck-ink);font-size:12px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolCallDetails summary em,.toolResultDetails summary em{min-width:0;overflow:hidden;color:var(--deck-muted);font-size:11px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.toolCallHead{border-bottom:1px solid var(--deck-line)}.toolCallHead span{margin:0;color:var(--deck-cyan)}.toolCallHead b{color:var(--deck-ink);font-size:11px}.toolCallCard pre{max-height:140px;overflow:auto;background:transparent;border-top:1px solid var(--deck-line);padding:10px 12px;font-size:11px}.toolResultDetails pre{max-height:240px}.streamingHint{margin-top:8px;color:var(--deck-cyan);font-size:11px;font-weight:700}.chatComposer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;margin-top:12px;border:1px solid var(--deck-line);border-radius:var(--radius-lg);background:var(--deck-panel);padding:10px}.chatComposer textarea{min-height:72px;border:0;padding:8px;background:transparent;resize:none;font-size:13px}.agentHistory{min-height:360px;max-height:56vh;overflow:auto;padding:28px clamp(28px,5vw,112px) 18px}.agentHistoryHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.agentHistoryHeader h3{margin:0 0 4px;font-size:16px}.agentHistoryHeader p{margin:0;color:var(--deck-muted);font-size:12px}.agentHistoryList{display:grid;gap:10px}.agentHistoryItem{display:grid;gap:5px;width:min(840px,100%);border:1px solid var(--deck-line);border-radius:13px;background:var(--deck-panel);padding:13px 15px;text-align:left}.agentHistoryItem.active{border-color:#38d7ff7a;box-shadow:0 0 0 1px #38d7ff2e}.agentHistoryItem strong{color:var(--deck-ink);font-size:13px}.agentHistoryItem span{overflow:hidden;color:var(--deck-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.agentHistoryItem small{color:var(--deck-subtle);font-size:11px}.agentOutput{min-height:152px;border-radius:var(--radius-lg);border:1px solid var(--deck-line);background:#0b1118;color:var(--deck-text);padding:12px;font-size:13px;line-height:1.5;white-space:pre-wrap}.empty{display:grid;place-items:center;gap:8px;min-height:180px;color:var(--deck-muted);border:1px dashed var(--deck-line-strong);border-radius:var(--radius-lg);text-align:center;padding:16px}.empty strong{color:var(--deck-text);font-size:13px}.empty span{font-size:12px}:root[data-theme=light] .brandMark,:root[data-theme=light] .readinessOrb,:root[data-theme=light] .envFact,:root[data-theme=light] .envFact>span,:root[data-theme=light] .checkItem,:root[data-theme=light] .depPill,:root[data-theme=light] .timelineItem,:root[data-theme=light] .chart,:root[data-theme=light] .sampleCard,:root[data-theme=light] .sampleGrid>div,:root[data-theme=light] .sampleEmpty,:root[data-theme=light] .timePerf,:root[data-theme=light] .codeCard,:root[data-theme=light] .codeTitle,:root[data-theme=light] input,:root[data-theme=light] textarea,:root[data-theme=light] select,:root[data-theme=light] .checkField,:root[data-theme=light] .agentOutput,:root[data-theme=light] .chatComposer,:root[data-theme=light] .timeTrack,:root[data-theme=light] .tabs{background:var(--deck-panel)}:root[data-theme=light] .chartControls select,:root[data-theme=light] .configItem{background:#fff;color:var(--deck-ink)}:root[data-theme=light] .dangerButton{color:#a51d2d;background:#fff1f3;border-color:#c7344647}:root[data-theme=light] .primaryButton{color:#fff;background:#007ea7;border-color:#007ea7;box-shadow:0 8px 18px #007ea72e}:root[data-theme=light] .launchButton{background:#006d94;border-color:#006d94}:root[data-theme=light] .jobIcon{background:#f3f7fb}:root[data-theme=light] .chatBubble.user{background:#1683ff;color:#fff}:root[data-theme=light] .chatMessages{background:transparent}:root[data-theme=light] .toolCallCard{box-shadow:0 6px 18px #1420330f}:root[data-theme=light] .rawLine{stroke:#55657aa6}:root[data-theme=light] pre{color:#25344a}@media(max-width:980px){.shell{grid-template-columns:1fr}.rail{position:sticky;top:0;z-index:20;border-right:0;border-bottom:1px solid var(--deck-line);padding:10px}.brand,.railFooter{display:none}.nav{display:flex;gap:6px;overflow-x:auto}.navItem{width:auto;flex:0 0 auto}.main{padding:12px}.topbar,.panelHeader,.timePerfHeader{flex-direction:column;align-items:stretch}.runtimeDeck,.jobMetricsGrid,.metricsGrid,.split,.sampleGrid,.formGrid{grid-template-columns:1fr}.field,.field.compact{grid-column:span 1}.checkMatrix,.envFacts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.checkMatrix,.envFacts{grid-template-columns:1fr}.jobRow.large{grid-template-columns:34px minmax(0,1fr)}.jobRow.large .statusDot{display:none}.timeRow{grid-template-columns:52px minmax(0,1fr)}.timeRow strong{grid-column:2;text-align:left}}.chartPlotWrap{position:relative}.eventMarkers{pointer-events:all}.eventFilters{display:flex;flex-wrap:wrap;gap:8px 14px;padding:4px 0 0;font-size:11px}.eventFilterLabel{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:var(--text-dim, #94a3b8)}.eventFilterLabel input{margin:0}.eventFilterSwatch{display:inline-block;width:10px;height:10px;border-radius:2px}.eventPopover{margin-top:8px;border:1px solid var(--border, #334155);border-radius:6px;background:var(--panel-bg, #1e293b);padding:10px 12px;font-size:12px;max-height:320px;overflow-y:auto}.eventPopoverHeader{display:flex;align-items:center;gap:8px;margin-bottom:6px}.eventPopoverTag{display:inline-block;padding:1px 7px;border-radius:3px;color:#fff;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.eventPopoverDetail{flex:1;color:var(--text, #e2e8f0)}.eventPopoverClose{background:none;border:none;color:var(--text-dim, #94a3b8);cursor:pointer;font-size:14px;padding:0 2px}.eventPopoverMeta{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--text-dim, #94a3b8);margin-bottom:8px;font-size:11px}.eventLogContext{margin:0;font-family:monospace;font-size:11px;max-height:200px;overflow-y:auto}.eventLogLine{display:flex;gap:8px;padding:1px 0}.eventLogLineHit{background:#dc262626;border-radius:2px}.eventLogLineNum{color:var(--text-dim, #64748b);min-width:30px;text-align:right}.eventLogLineText{white-space:pre-wrap;word-break:break-all}.eventMetricContext{width:100%;border-collapse:collapse;font-size:11px}.eventMetricContext th,.eventMetricContext td{text-align:left;padding:2px 8px;border-bottom:1px solid var(--border, #334155)}.eventMetricRowHit{background:#f59e0b26} diff --git a/areno/dashboard/dist/assets/index-DF61sRZi.js b/areno/dashboard/dist/assets/index-DF61sRZi.js deleted file mode 100644 index f2cf5a86..00000000 --- a/areno/dashboard/dist/assets/index-DF61sRZi.js +++ /dev/null @@ -1,197 +0,0 @@ -(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))u(s);new MutationObserver(s=>{for(const h of s)if(h.type==="childList")for(const f of h.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&u(f)}).observe(document,{childList:!0,subtree:!0});function r(s){const h={};return s.integrity&&(h.integrity=s.integrity),s.referrerPolicy&&(h.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?h.credentials="include":s.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function u(s){if(s.ep)return;s.ep=!0;const h=r(s);fetch(s.href,h)}})();function Hp(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Oo={exports:{}},Ma={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Rm;function p0(){if(Rm)return Ma;Rm=1;var n=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function r(u,s,h){var f=null;if(h!==void 0&&(f=""+h),s.key!==void 0&&(f=""+s.key),"key"in s){h={};for(var m in s)m!=="key"&&(h[m]=s[m])}else h=s;return s=h.ref,{$$typeof:n,type:u,key:f,ref:s!==void 0?s:null,props:h}}return Ma.Fragment=a,Ma.jsx=r,Ma.jsxs=r,Ma}var Lm;function g0(){return Lm||(Lm=1,Oo.exports=p0()),Oo.exports}var k=g0(),jo={exports:{}},_e={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Bm;function y0(){if(Bm)return _e;Bm=1;var n=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),f=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),v=Symbol.iterator;function S(T){return T===null||typeof T!="object"?null:(T=v&&T[v]||T["@@iterator"],typeof T=="function"?T:null)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},U=Object.assign,V={};function O(T,q,_){this.props=T,this.context=q,this.refs=V,this.updater=_||C}O.prototype.isReactComponent={},O.prototype.setState=function(T,q){if(typeof T!="object"&&typeof T!="function"&&T!=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,T,q,"setState")},O.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function K(){}K.prototype=O.prototype;function X(T,q,_){this.props=T,this.context=q,this.refs=V,this.updater=_||C}var ae=X.prototype=new K;ae.constructor=X,U(ae,O.prototype),ae.isPureReactComponent=!0;var ee=Array.isArray;function L(){}var J={H:null,A:null,T:null,S:null},he=Object.prototype.hasOwnProperty;function xe(T,q,_){var te=_.ref;return{$$typeof:n,type:T,key:q,ref:te!==void 0?te:null,props:_}}function R(T,q){return xe(T.type,q,T.props)}function ne(T){return typeof T=="object"&&T!==null&&T.$$typeof===n}function le(T){var q={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(_){return q[_]})}var Ce=/\/+/g;function ue(T,q){return typeof T=="object"&&T!==null&&T.key!=null?le(""+T.key):q.toString(36)}function $(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(L,L):(T.status="pending",T.then(function(q){T.status==="pending"&&(T.status="fulfilled",T.value=q)},function(q){T.status==="pending"&&(T.status="rejected",T.reason=q)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function D(T,q,_,te,fe){var oe=typeof T;(oe==="undefined"||oe==="boolean")&&(T=null);var we=!1;if(T===null)we=!0;else switch(oe){case"bigint":case"string":case"number":we=!0;break;case"object":switch(T.$$typeof){case n:case a:we=!0;break;case x:return we=T._init,D(we(T._payload),q,_,te,fe)}}if(we)return fe=fe(T),we=te===""?"."+ue(T,0):te,ee(fe)?(_="",we!=null&&(_=we.replace(Ce,"$&/")+"/"),D(fe,q,_,"",function(zt){return zt})):fe!=null&&(ne(fe)&&(fe=R(fe,_+(fe.key==null||T&&T.key===fe.key?"":(""+fe.key).replace(Ce,"$&/")+"/")+we)),q.push(fe)),1;we=0;var Ie=te===""?".":te+":";if(ee(T))for(var Ye=0;Ye>>1,E=D[Se];if(0>>1;Ses(_,ie))tes(fe,_)?(D[Se]=fe,D[te]=ie,Se=te):(D[Se]=_,D[q]=ie,Se=q);else if(tes(fe,ie))D[Se]=fe,D[te]=ie,Se=te;else break e}}return F}function s(D,F){var ie=D.sortIndex-F.sortIndex;return ie!==0?ie:D.id-F.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;n.unstable_now=function(){return h.now()}}else{var f=Date,m=f.now();n.unstable_now=function(){return f.now()-m}}var p=[],d=[],x=1,y=null,v=3,S=!1,C=!1,U=!1,V=!1,O=typeof setTimeout=="function"?setTimeout:null,K=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function ae(D){for(var F=r(d);F!==null;){if(F.callback===null)u(d);else if(F.startTime<=D)u(d),F.sortIndex=F.expirationTime,a(p,F);else break;F=r(d)}}function ee(D){if(U=!1,ae(D),!C)if(r(p)!==null)C=!0,L||(L=!0,le());else{var F=r(d);F!==null&&$(ee,F.startTime-D)}}var L=!1,J=-1,he=5,xe=-1;function R(){return V?!0:!(n.unstable_now()-xeD&&R());){var Se=y.callback;if(typeof Se=="function"){y.callback=null,v=y.priorityLevel;var E=Se(y.expirationTime<=D);if(D=n.unstable_now(),typeof E=="function"){y.callback=E,ae(D),F=!0;break t}y===r(p)&&u(p),ae(D)}else u(p);y=r(p)}if(y!==null)F=!0;else{var T=r(d);T!==null&&$(ee,T.startTime-D),F=!1}}break e}finally{y=null,v=ie,S=!1}F=void 0}}finally{F?le():L=!1}}}var le;if(typeof X=="function")le=function(){X(ne)};else if(typeof MessageChannel<"u"){var Ce=new MessageChannel,ue=Ce.port2;Ce.port1.onmessage=ne,le=function(){ue.postMessage(null)}}else le=function(){O(ne,0)};function $(D,F){J=O(function(){D(n.unstable_now())},F)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(D){D.callback=null},n.unstable_forceFrameRate=function(D){0>D||125Se?(D.sortIndex=ie,a(d,D),r(p)===null&&D===r(d)&&(U?(K(J),J=-1):U=!0,$(ee,ie-Se))):(D.sortIndex=E,a(p,D),C||S||(C=!0,L||(L=!0,le()))),D},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(D){var F=v;return function(){var ie=v;v=F;try{return D.apply(this,arguments)}finally{v=ie}}}})(Bo)),Bo}var qm;function b0(){return qm||(qm=1,Lo.exports=x0()),Lo.exports}var Uo={exports:{}},St={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ym;function v0(){if(Ym)return St;Ym=1;var n=ys();function a(p){var d="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(a){console.error(a)}}return n(),Uo.exports=v0(),Uo.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Vm;function k0(){if(Vm)return Na;Vm=1;var n=b0(),a=ys(),r=S0();function u(e){var t="https://react.dev/errors/"+e;if(1E||(e.current=Se[E],Se[E]=null,E--)}function _(e,t){E++,Se[E]=e.current,e.current=t}var te=T(null),fe=T(null),oe=T(null),we=T(null);function Ie(e,t){switch(_(oe,t),_(fe,e),_(te,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?im(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=im(t),e=am(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}q(te),_(te,e)}function Ye(){q(te),q(fe),q(oe)}function zt(e){e.memoizedState!==null&&_(we,e);var t=te.current,l=am(t,e.type);t!==l&&(_(fe,e),_(te,l))}function Kt(e){fe.current===e&&(q(te),q(fe)),we.current===e&&(q(we),Ta._currentValue=ie)}var Yn,bl;function rn(e){if(Yn===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);Yn=t&&t[1]||"",bl=-1)":-1c||A[i]!==N[c]){var H=` -`+A[i].replace(" at new "," at ");return e.displayName&&H.includes("")&&(H=H.replace("",e.displayName)),H}while(1<=i&&0<=c);break}}}finally{Gn=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?rn(l):""}function Ql(e,t){switch(e.tag){case 26:case 27:case 5:return rn(e.type);case 16:return rn("Lazy");case 13:return e.child!==t&&t!==null?rn("Suspense Fallback"):rn("Suspense");case 19:return rn("SuspenseList");case 0:case 15:return Vn(e.type,!1);case 11:return Vn(e.type.render,!1);case 1:return Vn(e.type,!0);case 31:return rn("Activity");default:return""}}function Qn(e){try{var t="",l=null;do t+=Ql(e,l),l=e,e=e.return;while(e);return t}catch(i){return` -Error generating stack: `+i.message+` -`+i.stack}}var fn=Object.prototype.hasOwnProperty,vn=n.unstable_scheduleCallback,vl=n.unstable_cancelCallback,Li=n.unstable_shouldYield,Bi=n.unstable_requestPaint,mt=n.unstable_now,Ui=n.unstable_getCurrentPriorityLevel,Y=n.unstable_ImmediatePriority,W=n.unstable_UserBlockingPriority,ge=n.unstable_NormalPriority,ze=n.unstable_LowPriority,Be=n.unstable_IdlePriority,vt=n.log,P=n.unstable_setDisableYieldValue,Z=null,ve=null;function de(e){if(typeof vt=="function"&&P(e),ve&&typeof ve.setStrictMode=="function")try{ve.setStrictMode(Z,e)}catch{}}var Ee=Math.clz32?Math.clz32:bu,et=Math.log,Bt=Math.LN2;function bu(e){return e>>>=0,e===0?32:31-(et(e)/Bt|0)|0}var hn=256,Xn=262144,Xl=4194304;function dn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Sl(e,t,l){var i=e.pendingLanes;if(i===0)return 0;var c=0,o=e.suspendedLanes,g=e.pingedLanes;e=e.warmLanes;var b=i&134217727;return b!==0?(i=b&~o,i!==0?c=dn(i):(g&=b,g!==0?c=dn(g):l||(l=b&~e,l!==0&&(c=dn(l))))):(b=i&~o,b!==0?c=dn(b):g!==0?c=dn(g):l||(l=i&~e,l!==0&&(c=dn(l)))),c===0?0:t!==0&&t!==c&&(t&o)===0&&(o=c&-c,l=t&-t,o>=l||o===32&&(l&4194048)!==0)?t:c}function Hi(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ny(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Us(){var e=Xl;return Xl<<=1,(Xl&62914560)===0&&(Xl=4194304),e}function vu(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function qi(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ly(e,t,l,i,c,o){var g=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var b=e.entanglements,A=e.expirationTimes,N=e.hiddenUpdates;for(l=g&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var oy=/[\n"\\]/g;function Jt(e){return e.replace(oy,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Tu(e,t,l,i,c,o,g,b){e.name="",g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.type=g:e.removeAttribute("type"),t!=null?g==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Ft(t)):e.value!==""+Ft(t)&&(e.value=""+Ft(t)):g!=="submit"&&g!=="reset"||e.removeAttribute("value"),t!=null?zu(e,g,Ft(t)):l!=null?zu(e,g,Ft(l)):i!=null&&e.removeAttribute("value"),c==null&&o!=null&&(e.defaultChecked=!!o),c!=null&&(e.checked=c&&typeof c!="function"&&typeof c!="symbol"),b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?e.name=""+Ft(b):e.removeAttribute("name")}function $s(e,t,l,i,c,o,g,b){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(e.type=o),t!=null||l!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){Au(e);return}l=l!=null?""+Ft(l):"",t=t!=null?""+Ft(t):l,b||t===e.value||(e.value=t),e.defaultValue=t}i=i??c,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=b?e.checked:!!i,e.defaultChecked=!!i,g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(e.name=g),Au(e)}function zu(e,t,l){t==="number"&&Za(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function $l(e,t,l,i){if(e=e.options,t){t={};for(var c=0;c"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Du=!1;if(_n)try{var Qi={};Object.defineProperty(Qi,"passive",{get:function(){Du=!0}}),window.addEventListener("test",Qi,Qi),window.removeEventListener("test",Qi,Qi)}catch{Du=!1}var Kn=null,Ou=null,Fa=null;function af(){if(Fa)return Fa;var e,t=Ou,l=t.length,i,c="value"in Kn?Kn.value:Kn.textContent,o=c.length;for(e=0;e=Ki),ff=" ",hf=!1;function df(e,t){switch(e){case"keyup":return By.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function mf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ti=!1;function Hy(e,t){switch(e){case"compositionend":return mf(t);case"keypress":return t.which!==32?null:(hf=!0,ff);case"textInput":return e=t.data,e===ff&&hf?null:e;default:return null}}function qy(e,t){if(ti)return e==="compositionend"||!Uu&&df(e,t)?(e=af(),Fa=Ou=Kn=null,ti=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=i}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=kf(l)}}function Ef(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ef(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Af(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Za(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Za(e.document)}return t}function Yu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Fy=_n&&"documentMode"in document&&11>=document.documentMode,ni=null,Gu=null,$i=null,Vu=!1;function Tf(e,t,l){var i=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Vu||ni==null||ni!==Za(i)||(i=ni,"selectionStart"in i&&Yu(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),$i&&Ii($i,i)||($i=i,i=Yr(Gu,"onSelect"),0>=g,c-=g,mn=1<<32-Ee(t)+c|l<Te?(je=ce,ce=null):je=ce.sibling;var He=j(w,ce,M[Te],G);if(He===null){ce===null&&(ce=je);break}e&&ce&&He.alternate===null&&t(w,ce),z=o(He,z,Te),Ue===null?se=He:Ue.sibling=He,Ue=He,ce=je}if(Te===M.length)return l(w,ce),Re&&An(w,Te),se;if(ce===null){for(;TeTe?(je=ce,ce=null):je=ce.sibling;var pl=j(w,ce,He.value,G);if(pl===null){ce===null&&(ce=je);break}e&&ce&&pl.alternate===null&&t(w,ce),z=o(pl,z,Te),Ue===null?se=pl:Ue.sibling=pl,Ue=pl,ce=je}if(He.done)return l(w,ce),Re&&An(w,Te),se;if(ce===null){for(;!He.done;Te++,He=M.next())He=Q(w,He.value,G),He!==null&&(z=o(He,z,Te),Ue===null?se=He:Ue.sibling=He,Ue=He);return Re&&An(w,Te),se}for(ce=i(ce);!He.done;Te++,He=M.next())He=B(ce,w,Te,He.value,G),He!==null&&(e&&He.alternate!==null&&ce.delete(He.key===null?Te:He.key),z=o(He,z,Te),Ue===null?se=He:Ue.sibling=He,Ue=He);return e&&ce.forEach(function(m0){return t(w,m0)}),Re&&An(w,Te),se}function Ze(w,z,M,G){if(typeof M=="object"&&M!==null&&M.type===U&&M.key===null&&(M=M.props.children),typeof M=="object"&&M!==null){switch(M.$$typeof){case S:e:{for(var se=M.key;z!==null;){if(z.key===se){if(se=M.type,se===U){if(z.tag===7){l(w,z.sibling),G=c(z,M.props.children),G.return=w,w=G;break e}}else if(z.elementType===se||typeof se=="object"&&se!==null&&se.$$typeof===he&&Dl(se)===z.type){l(w,z.sibling),G=c(z,M.props),la(G,M),G.return=w,w=G;break e}l(w,z);break}else t(w,z);z=z.sibling}M.type===U?(G=zl(M.props.children,w.mode,G,M.key),G.return=w,w=G):(G=ir(M.type,M.key,M.props,null,w.mode,G),la(G,M),G.return=w,w=G)}return g(w);case C:e:{for(se=M.key;z!==null;){if(z.key===se)if(z.tag===4&&z.stateNode.containerInfo===M.containerInfo&&z.stateNode.implementation===M.implementation){l(w,z.sibling),G=c(z,M.children||[]),G.return=w,w=G;break e}else{l(w,z);break}else t(w,z);z=z.sibling}G=Iu(M,w.mode,G),G.return=w,w=G}return g(w);case he:return M=Dl(M),Ze(w,z,M,G)}if($(M))return re(w,z,M,G);if(le(M)){if(se=le(M),typeof se!="function")throw Error(u(150));return M=se.call(M),ye(w,z,M,G)}if(typeof M.then=="function")return Ze(w,z,fr(M),G);if(M.$$typeof===X)return Ze(w,z,ur(w,M),G);hr(w,M)}return typeof M=="string"&&M!==""||typeof M=="number"||typeof M=="bigint"?(M=""+M,z!==null&&z.tag===6?(l(w,z.sibling),G=c(z,M),G.return=w,w=G):(l(w,z),G=Ju(M,w.mode,G),G.return=w,w=G),g(w)):l(w,z)}return function(w,z,M,G){try{na=0;var se=Ze(w,z,M,G);return di=null,se}catch(ce){if(ce===hi||ce===or)throw ce;var Ue=Ht(29,ce,null,w.mode);return Ue.lanes=G,Ue.return=w,Ue}finally{}}}var jl=Jf(!0),If=Jf(!1),Wn=!1;function cc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function oc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Pn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function el(e,t,l){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,(qe&2)!==0){var c=i.pending;return c===null?t.next=t:(t.next=c.next,c.next=t),i.pending=t,t=lr(e),Of(e,null,l),t}return nr(e,i,t,l),lr(e)}function ia(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,l|=i,t.lanes=l,qs(e,l)}}function sc(e,t){var l=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,l===i)){var c=null,o=null;if(l=l.firstBaseUpdate,l!==null){do{var g={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};o===null?c=o=g:o=o.next=g,l=l.next}while(l!==null);o===null?c=o=t:o=o.next=t}else c=o=t;l={baseState:i.baseState,firstBaseUpdate:c,lastBaseUpdate:o,shared:i.shared,callbacks:i.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var fc=!1;function aa(){if(fc){var e=fi;if(e!==null)throw e}}function ra(e,t,l,i){fc=!1;var c=e.updateQueue;Wn=!1;var o=c.firstBaseUpdate,g=c.lastBaseUpdate,b=c.shared.pending;if(b!==null){c.shared.pending=null;var A=b,N=A.next;A.next=null,g===null?o=N:g.next=N,g=A;var H=e.alternate;H!==null&&(H=H.updateQueue,b=H.lastBaseUpdate,b!==g&&(b===null?H.firstBaseUpdate=N:b.next=N,H.lastBaseUpdate=A))}if(o!==null){var Q=c.baseState;g=0,H=N=A=null,b=o;do{var j=b.lane&-536870913,B=j!==b.lane;if(B?(Oe&j)===j:(i&j)===j){j!==0&&j===si&&(fc=!0),H!==null&&(H=H.next={lane:0,tag:b.tag,payload:b.payload,callback:null,next:null});e:{var re=e,ye=b;j=t;var Ze=l;switch(ye.tag){case 1:if(re=ye.payload,typeof re=="function"){Q=re.call(Ze,Q,j);break e}Q=re;break e;case 3:re.flags=re.flags&-65537|128;case 0:if(re=ye.payload,j=typeof re=="function"?re.call(Ze,Q,j):re,j==null)break e;Q=y({},Q,j);break e;case 2:Wn=!0}}j=b.callback,j!==null&&(e.flags|=64,B&&(e.flags|=8192),B=c.callbacks,B===null?c.callbacks=[j]:B.push(j))}else B={lane:j,tag:b.tag,payload:b.payload,callback:b.callback,next:null},H===null?(N=H=B,A=Q):H=H.next=B,g|=j;if(b=b.next,b===null){if(b=c.shared.pending,b===null)break;B=b,b=B.next,B.next=null,c.lastBaseUpdate=B,c.shared.pending=null}}while(!0);H===null&&(A=Q),c.baseState=A,c.firstBaseUpdate=N,c.lastBaseUpdate=H,o===null&&(c.shared.lanes=0),al|=g,e.lanes=g,e.memoizedState=Q}}function $f(e,t){if(typeof e!="function")throw Error(u(191,e));e.call(t)}function Wf(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eo?o:8;var g=D.T,b={};D.T=b,Mc(e,!1,t,l);try{var A=c(),N=D.S;if(N!==null&&N(b,A),A!==null&&typeof A=="object"&&typeof A.then=="function"){var H=l1(A,i);oa(e,t,H,Qt(e))}else oa(e,t,i,Qt(e))}catch(Q){oa(e,t,{then:function(){},status:"rejected",reason:Q},Qt())}finally{F.p=o,g!==null&&b.types!==null&&(g.types=b.types),D.T=g}}function o1(){}function Cc(e,t,l,i){if(e.tag!==5)throw Error(u(476));var c=Mh(e).queue;wh(e,c,t,ie,l===null?o1:function(){return Nh(e),l(i)})}function Mh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ie,baseState:ie,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:wn,lastRenderedState:ie},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:wn,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Nh(e){var t=Mh(e);t.next===null&&(t=e.alternate.memoizedState),oa(e,t.next.queue,{},Qt())}function wc(){return yt(Ta)}function Dh(){return it().memoizedState}function Oh(){return it().memoizedState}function s1(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=Qt();e=Pn(l);var i=el(t,e,l);i!==null&&(jt(i,t,l),ia(i,t,l)),t={cache:ic()},e.payload=t;return}t=t.return}}function f1(e,t,l){var i=Qt();l={lane:i,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},kr(e)?Rh(t,l):(l=Ku(e,t,l,i),l!==null&&(jt(l,e,i),Lh(l,t,i)))}function jh(e,t,l){var i=Qt();oa(e,t,l,i)}function oa(e,t,l,i){var c={lane:i,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(kr(e))Rh(t,c);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var g=t.lastRenderedState,b=o(g,l);if(c.hasEagerState=!0,c.eagerState=b,Ut(b,g))return nr(e,t,c,0),Ke===null&&tr(),!1}catch{}finally{}if(l=Ku(e,t,c,i),l!==null)return jt(l,e,i),Lh(l,t,i),!0}return!1}function Mc(e,t,l,i){if(i={lane:2,revertLane:co(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},kr(e)){if(t)throw Error(u(479))}else t=Ku(e,l,i,2),t!==null&&jt(t,e,2)}function kr(e){var t=e.alternate;return e===Ae||t!==null&&t===Ae}function Rh(e,t){pi=pr=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function Lh(e,t,l){if((l&4194048)!==0){var i=t.lanes;i&=e.pendingLanes,l|=i,t.lanes=l,qs(e,l)}}var sa={readContext:yt,use:xr,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useLayoutEffect:tt,useInsertionEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useSyncExternalStore:tt,useId:tt,useHostTransitionStatus:tt,useFormState:tt,useActionState:tt,useOptimistic:tt,useMemoCache:tt,useCacheRefresh:tt};sa.useEffectEvent=tt;var Bh={readContext:yt,use:xr,useCallback:function(e,t){return At().memoizedState=[e,t===void 0?null:t],e},useContext:yt,useEffect:vh,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,vr(4194308,4,Eh.bind(null,t,e),l)},useLayoutEffect:function(e,t){return vr(4194308,4,e,t)},useInsertionEffect:function(e,t){vr(4,2,e,t)},useMemo:function(e,t){var l=At();t=t===void 0?null:t;var i=e();if(Rl){de(!0);try{e()}finally{de(!1)}}return l.memoizedState=[i,t],i},useReducer:function(e,t,l){var i=At();if(l!==void 0){var c=l(t);if(Rl){de(!0);try{l(t)}finally{de(!1)}}}else c=t;return i.memoizedState=i.baseState=c,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:c},i.queue=e,e=e.dispatch=f1.bind(null,Ae,e),[i.memoizedState,e]},useRef:function(e){var t=At();return e={current:e},t.memoizedState=e},useState:function(e){e=_c(e);var t=e.queue,l=jh.bind(null,Ae,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:Tc,useDeferredValue:function(e,t){var l=At();return zc(l,e,t)},useTransition:function(){var e=_c(!1);return e=wh.bind(null,Ae,e.queue,!0,!1),At().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var i=Ae,c=At();if(Re){if(l===void 0)throw Error(u(407));l=l()}else{if(l=t(),Ke===null)throw Error(u(349));(Oe&127)!==0||ih(i,t,l)}c.memoizedState=l;var o={value:l,getSnapshot:t};return c.queue=o,vh(rh.bind(null,i,o,e),[e]),i.flags|=2048,yi(9,{destroy:void 0},ah.bind(null,i,o,l,t),null),l},useId:function(){var e=At(),t=Ke.identifierPrefix;if(Re){var l=pn,i=mn;l=(i&~(1<<32-Ee(i)-1)).toString(32)+l,t="_"+t+"R_"+l,l=gr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof i.is=="string"?g.createElement("select",{is:i.is}):g.createElement("select"),i.multiple?o.multiple=!0:i.size&&(o.size=i.size);break;default:o=typeof i.is=="string"?g.createElement(c,{is:i.is}):g.createElement(c)}}o[pt]=t,o[Ct]=i;e:for(g=t.child;g!==null;){if(g.tag===5||g.tag===6)o.appendChild(g.stateNode);else if(g.tag!==4&&g.tag!==27&&g.child!==null){g.child.return=g,g=g.child;continue}if(g===t)break e;for(;g.sibling===null;){if(g.return===null||g.return===t)break e;g=g.return}g.sibling.return=g.return,g=g.sibling}t.stateNode=o;e:switch(bt(o,c,i),c){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&Nn(t)}}return We(t),Qc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&Nn(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(u(166));if(e=oe.current,ci(t)){if(e=t.stateNode,l=t.memoizedProps,i=null,c=gt,c!==null)switch(c.tag){case 27:case 5:i=c.memoizedProps}e[pt]=t,e=!!(e.nodeValue===l||i!==null&&i.suppressHydrationWarning===!0||nm(e.nodeValue,l)),e||In(t,!0)}else e=Gr(e).createTextNode(i),e[pt]=t,t.stateNode=e}return We(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(i=ci(t),l!==null){if(e===null){if(!i)throw Error(u(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(u(557));e[pt]=t}else Cl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;We(t),e=!1}else l=ec(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(Yt(t),t):(Yt(t),null);if((t.flags&128)!==0)throw Error(u(558))}return We(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(c=ci(t),i!==null&&i.dehydrated!==null){if(e===null){if(!c)throw Error(u(318));if(c=t.memoizedState,c=c!==null?c.dehydrated:null,!c)throw Error(u(317));c[pt]=t}else Cl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;We(t),c=!1}else c=ec(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=c),c=!0;if(!c)return t.flags&256?(Yt(t),t):(Yt(t),null)}return Yt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=i!==null,e=e!==null&&e.memoizedState!==null,l&&(i=t.child,c=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(c=i.alternate.memoizedState.cachePool.pool),o=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(o=i.memoizedState.cachePool.pool),o!==c&&(i.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),zr(t,t.updateQueue),We(t),null);case 4:return Ye(),e===null&&ho(t.stateNode.containerInfo),We(t),null;case 10:return zn(t.type),We(t),null;case 19:if(q(lt),i=t.memoizedState,i===null)return We(t),null;if(c=(t.flags&128)!==0,o=i.rendering,o===null)if(c)ha(i,!1);else{if(nt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(o=mr(e),o!==null){for(t.flags|=128,ha(i,!1),e=o.updateQueue,t.updateQueue=e,zr(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)jf(l,e),l=l.sibling;return _(lt,lt.current&1|2),Re&&An(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&mt()>Dr&&(t.flags|=128,c=!0,ha(i,!1),t.lanes=4194304)}else{if(!c)if(e=mr(o),e!==null){if(t.flags|=128,c=!0,e=e.updateQueue,t.updateQueue=e,zr(t,e),ha(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!Re)return We(t),null}else 2*mt()-i.renderingStartTime>Dr&&l!==536870912&&(t.flags|=128,c=!0,ha(i,!1),t.lanes=4194304);i.isBackwards?(o.sibling=t.child,t.child=o):(e=i.last,e!==null?e.sibling=o:t.child=o,i.last=o)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=mt(),e.sibling=null,l=lt.current,_(lt,c?l&1|2:l&1),Re&&An(t,i.treeForkCount),e):(We(t),null);case 22:case 23:return Yt(t),dc(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?(l&536870912)!==0&&(t.flags&128)===0&&(We(t),t.subtreeFlags&6&&(t.flags|=8192)):We(t),l=t.updateQueue,l!==null&&zr(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==l&&(t.flags|=2048),e!==null&&q(Nl),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),zn(at),We(t),null;case 25:return null;case 30:return null}throw Error(u(156,t.tag))}function g1(e,t){switch(Wu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return zn(at),Ye(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Kt(t),null;case 31:if(t.memoizedState!==null){if(Yt(t),t.alternate===null)throw Error(u(340));Cl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Yt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(u(340));Cl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return q(lt),null;case 4:return Ye(),null;case 10:return zn(t.type),null;case 22:case 23:return Yt(t),dc(),e!==null&&q(Nl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return zn(at),null;case 25:return null;default:return null}}function ud(e,t){switch(Wu(t),t.tag){case 3:zn(at),Ye();break;case 26:case 27:case 5:Kt(t);break;case 4:Ye();break;case 31:t.memoizedState!==null&&Yt(t);break;case 13:Yt(t);break;case 19:q(lt);break;case 10:zn(t.type);break;case 22:case 23:Yt(t),dc(),e!==null&&q(Nl);break;case 24:zn(at)}}function da(e,t){try{var l=t.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var c=i.next;l=c;do{if((l.tag&e)===e){i=void 0;var o=l.create,g=l.inst;i=o(),g.destroy=i}l=l.next}while(l!==c)}}catch(b){Ve(t,t.return,b)}}function ll(e,t,l){try{var i=t.updateQueue,c=i!==null?i.lastEffect:null;if(c!==null){var o=c.next;i=o;do{if((i.tag&e)===e){var g=i.inst,b=g.destroy;if(b!==void 0){g.destroy=void 0,c=t;var A=l,N=b;try{N()}catch(H){Ve(c,A,H)}}}i=i.next}while(i!==o)}}catch(H){Ve(t,t.return,H)}}function cd(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{Wf(t,l)}catch(i){Ve(e,e.return,i)}}}function od(e,t,l){l.props=Ll(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(i){Ve(e,t,i)}}function ma(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof l=="function"?e.refCleanup=l(i):l.current=i}}catch(c){Ve(e,t,c)}}function gn(e,t){var l=e.ref,i=e.refCleanup;if(l!==null)if(typeof i=="function")try{i()}catch(c){Ve(e,t,c)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(c){Ve(e,t,c)}else l.current=null}function sd(e){var t=e.type,l=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&i.focus();break e;case"img":l.src?i.src=l.src:l.srcSet&&(i.srcset=l.srcSet)}}catch(c){Ve(e,e.return,c)}}function Xc(e,t,l){try{var i=e.stateNode;U1(i,e.type,l,t),i[Ct]=t}catch(c){Ve(e,e.return,c)}}function fd(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&sl(e.type)||e.tag===4}function Zc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||fd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&sl(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Kc(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=kn));else if(i!==4&&(i===27&&sl(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(Kc(e,t,l),e=e.sibling;e!==null;)Kc(e,t,l),e=e.sibling}function Cr(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(i!==4&&(i===27&&sl(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Cr(e,t,l),e=e.sibling;e!==null;)Cr(e,t,l),e=e.sibling}function hd(e){var t=e.stateNode,l=e.memoizedProps;try{for(var i=e.type,c=t.attributes;c.length;)t.removeAttributeNode(c[0]);bt(t,i,l),t[pt]=e,t[Ct]=l}catch(o){Ve(e,e.return,o)}}var Dn=!1,ct=!1,Fc=!1,dd=typeof WeakSet=="function"?WeakSet:Set,dt=null;function y1(e,t){if(e=e.containerInfo,go=Jr,e=Af(e),Yu(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var i=l.getSelection&&l.getSelection();if(i&&i.rangeCount!==0){l=i.anchorNode;var c=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{l.nodeType,o.nodeType}catch{l=null;break e}var g=0,b=-1,A=-1,N=0,H=0,Q=e,j=null;t:for(;;){for(var B;Q!==l||c!==0&&Q.nodeType!==3||(b=g+c),Q!==o||i!==0&&Q.nodeType!==3||(A=g+i),Q.nodeType===3&&(g+=Q.nodeValue.length),(B=Q.firstChild)!==null;)j=Q,Q=B;for(;;){if(Q===e)break t;if(j===l&&++N===c&&(b=g),j===o&&++H===i&&(A=g),(B=Q.nextSibling)!==null)break;Q=j,j=Q.parentNode}Q=B}l=b===-1||A===-1?null:{start:b,end:A}}else l=null}l=l||{start:0,end:0}}else l=null;for(yo={focusedElem:e,selectionRange:l},Jr=!1,dt=t;dt!==null;)if(t=dt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,dt=e;else for(;dt!==null;){switch(t=dt,o=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),bt(o,i,l),o[pt]=e,ht(o),i=o;break e;case"link":var g=bm("link","href",c).get(i+(l.href||""));if(g){for(var b=0;bZe&&(g=Ze,Ze=ye,ye=g);var w=_f(b,ye),z=_f(b,Ze);if(w&&z&&(B.rangeCount!==1||B.anchorNode!==w.node||B.anchorOffset!==w.offset||B.focusNode!==z.node||B.focusOffset!==z.offset)){var M=Q.createRange();M.setStart(w.node,w.offset),B.removeAllRanges(),ye>Ze?(B.addRange(M),B.extend(z.node,z.offset)):(M.setEnd(z.node,z.offset),B.addRange(M))}}}}for(Q=[],B=b;B=B.parentNode;)B.nodeType===1&&Q.push({element:B,left:B.scrollLeft,top:B.scrollTop});for(typeof b.focus=="function"&&b.focus(),b=0;bl?32:l,D.T=null,l=to,to=null;var o=ul,g=Bn;if(st=0,ki=ul=null,Bn=0,(qe&6)!==0)throw Error(u(331));var b=qe;if(qe|=4,Ed(o.current),Sd(o,o.current,g,l),qe=b,va(0,!1),ve&&typeof ve.onPostCommitFiberRoot=="function")try{ve.onPostCommitFiberRoot(Z,o)}catch{}return!0}finally{F.p=c,D.T=i,Gd(e,t)}}function Qd(e,t,l){t=$t(l,t),t=jc(e.stateNode,t,2),e=el(e,t,2),e!==null&&(qi(e,2),yn(e))}function Ve(e,t,l){if(e.tag===3)Qd(e,e,l);else for(;t!==null;){if(t.tag===3){Qd(t,e,l);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&(rl===null||!rl.has(i))){e=$t(l,e),l=Xh(2),i=el(t,l,2),i!==null&&(Zh(l,i,t,e),qi(i,2),yn(i));break}}t=t.return}}function ao(e,t,l){var i=e.pingCache;if(i===null){i=e.pingCache=new v1;var c=new Set;i.set(t,c)}else c=i.get(t),c===void 0&&(c=new Set,i.set(t,c));c.has(l)||($c=!0,c.add(l),e=A1.bind(null,e,t,l),t.then(e,e))}function A1(e,t,l){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Ke===e&&(Oe&l)===l&&(nt===4||nt===3&&(Oe&62914560)===Oe&&300>mt()-Nr?(qe&2)===0&&_i(e,0):Wc|=l,Si===Oe&&(Si=0)),yn(e)}function Xd(e,t){t===0&&(t=Us()),e=Tl(e,t),e!==null&&(qi(e,t),yn(e))}function T1(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Xd(e,l)}function z1(e,t){var l=0;switch(e.tag){case 31:case 13:var i=e.stateNode,c=e.memoizedState;c!==null&&(l=c.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(u(314))}i!==null&&i.delete(t),Xd(e,l)}function C1(e,t){return vn(e,t)}var Ur=null,Ai=null,ro=!1,Hr=!1,uo=!1,ol=0;function yn(e){e!==Ai&&e.next===null&&(Ai===null?Ur=Ai=e:Ai=Ai.next=e),Hr=!0,ro||(ro=!0,M1())}function va(e,t){if(!uo&&Hr){uo=!0;do for(var l=!1,i=Ur;i!==null;){if(e!==0){var c=i.pendingLanes;if(c===0)var o=0;else{var g=i.suspendedLanes,b=i.pingedLanes;o=(1<<31-Ee(42|e)+1)-1,o&=c&~(g&~b),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(l=!0,Jd(i,o))}else o=Oe,o=Sl(i,i===Ke?o:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(o&3)===0||Hi(i,o)||(l=!0,Jd(i,o));i=i.next}while(l);uo=!1}}function w1(){Zd()}function Zd(){Hr=ro=!1;var e=0;ol!==0&&q1()&&(e=ol);for(var t=mt(),l=null,i=Ur;i!==null;){var c=i.next,o=Kd(i,t);o===0?(i.next=null,l===null?Ur=c:l.next=c,c===null&&(Ai=l)):(l=i,(e!==0||(o&3)!==0)&&(Hr=!0)),i=c}st!==0&&st!==5||va(e),ol!==0&&(ol=0)}function Kd(e,t){for(var l=e.suspendedLanes,i=e.pingedLanes,c=e.expirationTimes,o=e.pendingLanes&-62914561;0b)break;var H=A.transferSize,Q=A.initiatorType;H&&lm(Q)&&(A=A.responseEnd,g+=H*(A"u"?null:document;function pm(e,t,l){var i=Ti;if(i&&typeof t=="string"&&t){var c=Jt(t);c='link[rel="'+e+'"][href="'+c+'"]',typeof l=="string"&&(c+='[crossorigin="'+l+'"]'),mm.has(c)||(mm.add(c),e={rel:e,crossOrigin:l,href:t},i.querySelector(c)===null&&(t=i.createElement("link"),bt(t,"link",e),ht(t),i.head.appendChild(t)))}}function J1(e){Un.D(e),pm("dns-prefetch",e,null)}function I1(e,t){Un.C(e,t),pm("preconnect",e,t)}function $1(e,t,l){Un.L(e,t,l);var i=Ti;if(i&&e&&t){var c='link[rel="preload"][as="'+Jt(t)+'"]';t==="image"&&l&&l.imageSrcSet?(c+='[imagesrcset="'+Jt(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(c+='[imagesizes="'+Jt(l.imageSizes)+'"]')):c+='[href="'+Jt(e)+'"]';var o=c;switch(t){case"style":o=zi(e);break;case"script":o=Ci(e)}ln.has(o)||(e=y({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),ln.set(o,e),i.querySelector(c)!==null||t==="style"&&i.querySelector(Ea(o))||t==="script"&&i.querySelector(Aa(o))||(t=i.createElement("link"),bt(t,"link",e),ht(t),i.head.appendChild(t)))}}function W1(e,t){Un.m(e,t);var l=Ti;if(l&&e){var i=t&&typeof t.as=="string"?t.as:"script",c='link[rel="modulepreload"][as="'+Jt(i)+'"][href="'+Jt(e)+'"]',o=c;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Ci(e)}if(!ln.has(o)&&(e=y({rel:"modulepreload",href:e},t),ln.set(o,e),l.querySelector(c)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Aa(o)))return}i=l.createElement("link"),bt(i,"link",e),ht(i),l.head.appendChild(i)}}}function P1(e,t,l){Un.S(e,t,l);var i=Ti;if(i&&e){var c=Jl(i).hoistableStyles,o=zi(e);t=t||"default";var g=c.get(o);if(!g){var b={loading:0,preload:null};if(g=i.querySelector(Ea(o)))b.loading=5;else{e=y({rel:"stylesheet",href:e,"data-precedence":t},l),(l=ln.get(o))&&Eo(e,l);var A=g=i.createElement("link");ht(A),bt(A,"link",e),A._p=new Promise(function(N,H){A.onload=N,A.onerror=H}),A.addEventListener("load",function(){b.loading|=1}),A.addEventListener("error",function(){b.loading|=2}),b.loading|=4,Qr(g,t,i)}g={type:"stylesheet",instance:g,count:1,state:b},c.set(o,g)}}}function e0(e,t){Un.X(e,t);var l=Ti;if(l&&e){var i=Jl(l).hoistableScripts,c=Ci(e),o=i.get(c);o||(o=l.querySelector(Aa(c)),o||(e=y({src:e,async:!0},t),(t=ln.get(c))&&Ao(e,t),o=l.createElement("script"),ht(o),bt(o,"link",e),l.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},i.set(c,o))}}function t0(e,t){Un.M(e,t);var l=Ti;if(l&&e){var i=Jl(l).hoistableScripts,c=Ci(e),o=i.get(c);o||(o=l.querySelector(Aa(c)),o||(e=y({src:e,async:!0,type:"module"},t),(t=ln.get(c))&&Ao(e,t),o=l.createElement("script"),ht(o),bt(o,"link",e),l.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},i.set(c,o))}}function gm(e,t,l,i){var c=(c=oe.current)?Vr(c):null;if(!c)throw Error(u(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=zi(l.href),l=Jl(c).hoistableStyles,i=l.get(t),i||(i={type:"style",instance:null,count:0,state:null},l.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=zi(l.href);var o=Jl(c).hoistableStyles,g=o.get(e);if(g||(c=c.ownerDocument||c,g={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(e,g),(o=c.querySelector(Ea(e)))&&!o._p&&(g.instance=o,g.state.loading=5),ln.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},ln.set(e,l),o||n0(c,e,l,g.state))),t&&i===null)throw Error(u(528,""));return g}if(t&&i!==null)throw Error(u(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ci(l),l=Jl(c).hoistableScripts,i=l.get(t),i||(i={type:"script",instance:null,count:0,state:null},l.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(u(444,e))}}function zi(e){return'href="'+Jt(e)+'"'}function Ea(e){return'link[rel="stylesheet"]['+e+"]"}function ym(e){return y({},e,{"data-precedence":e.precedence,precedence:null})}function n0(e,t,l,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),bt(t,"link",l),ht(t),e.head.appendChild(t))}function Ci(e){return'[src="'+Jt(e)+'"]'}function Aa(e){return"script[async]"+e}function xm(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+Jt(l.href)+'"]');if(i)return t.instance=i,ht(i),i;var c=y({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),ht(i),bt(i,"style",c),Qr(i,l.precedence,e),t.instance=i;case"stylesheet":c=zi(l.href);var o=e.querySelector(Ea(c));if(o)return t.state.loading|=4,t.instance=o,ht(o),o;i=ym(l),(c=ln.get(c))&&Eo(i,c),o=(e.ownerDocument||e).createElement("link"),ht(o);var g=o;return g._p=new Promise(function(b,A){g.onload=b,g.onerror=A}),bt(o,"link",i),t.state.loading|=4,Qr(o,l.precedence,e),t.instance=o;case"script":return o=Ci(l.src),(c=e.querySelector(Aa(o)))?(t.instance=c,ht(c),c):(i=l,(c=ln.get(o))&&(i=y({},l),Ao(i,c)),e=e.ownerDocument||e,c=e.createElement("script"),ht(c),bt(c,"link",i),e.head.appendChild(c),t.instance=c);case"void":return null;default:throw Error(u(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(i=t.instance,t.state.loading|=4,Qr(i,l.precedence,e));return t.instance}function Qr(e,t,l){for(var i=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),c=i.length?i[i.length-1]:null,o=c,g=0;g title"):null)}function l0(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!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 Sm(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function i0(e,t,l,i){if(l.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var c=zi(i.href),o=t.querySelector(Ea(c));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Zr.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=o,ht(o);return}o=t.ownerDocument||t,i=ym(i),(c=ln.get(c))&&Eo(i,c),o=o.createElement("link"),ht(o);var g=o;g._p=new Promise(function(b,A){g.onload=b,g.onerror=A}),bt(o,"link",i),l.instance=o}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Zr.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var To=0;function a0(e,t){return e.stylesheets&&e.count===0&&Fr(e,e.stylesheets),0To?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(c)}}:null}function Zr(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Fr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Kr=null;function Fr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Kr=new Map,t.forEach(r0,e),Kr=null,Zr.call(e))}function r0(e,t){if(!(t.state.loading&4)){var l=Kr.get(e);if(l)var i=l.get(null);else{l=new Map,Kr.set(e,l);for(var c=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(a){console.error(a)}}return n(),Ro.exports=k0(),Ro.exports}var E0=_0();function A0(n,a){const r={};return(n[n.length-1]===""?[...n,""]:n).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const T0=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,z0=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,C0={};function Xm(n,a){return(C0.jsx?z0:T0).test(n)}const w0=/[ \t\n\f\r]/g;function M0(n){return typeof n=="object"?n.type==="text"?Zm(n.value):!1:Zm(n)}function Zm(n){return n.replace(w0,"")===""}class Ya{constructor(a,r,u){this.normal=r,this.property=a,u&&(this.space=u)}}Ya.prototype.normal={};Ya.prototype.property={};Ya.prototype.space=void 0;function qp(n,a){const r={},u={};for(const s of n)Object.assign(r,s.property),Object.assign(u,s.normal);return new Ya(r,u,a)}function is(n){return n.toLowerCase()}class Lt{constructor(a,r){this.attribute=r,this.property=a}}Lt.prototype.attribute="";Lt.prototype.booleanish=!1;Lt.prototype.boolean=!1;Lt.prototype.commaOrSpaceSeparated=!1;Lt.prototype.commaSeparated=!1;Lt.prototype.defined=!1;Lt.prototype.mustUseProperty=!1;Lt.prototype.number=!1;Lt.prototype.overloadedBoolean=!1;Lt.prototype.property="";Lt.prototype.spaceSeparated=!1;Lt.prototype.space=void 0;let N0=0;const ke=Vl(),ot=Vl(),as=Vl(),I=Vl(),Fe=Vl(),Yl=Vl(),Xt=Vl();function Vl(){return 2**++N0}const rs=Object.freeze(Object.defineProperty({__proto__:null,boolean:ke,booleanish:ot,commaOrSpaceSeparated:Xt,commaSeparated:Yl,number:I,overloadedBoolean:as,spaceSeparated:Fe},Symbol.toStringTag,{value:"Module"})),Ho=Object.keys(rs);class xs extends Lt{constructor(a,r,u,s){let h=-1;if(super(a,r),Km(this,"space",s),typeof u=="number")for(;++h4&&r.slice(0,4)==="data"&&L0.test(a)){if(a.charAt(4)==="-"){const h=a.slice(5).replace(Fm,H0);u="data"+h.charAt(0).toUpperCase()+h.slice(1)}else{const h=a.slice(4);if(!Fm.test(h)){let f=h.replace(R0,U0);f.charAt(0)!=="-"&&(f="-"+f),a="data"+f}}s=xs}return new s(u,a)}function U0(n){return"-"+n.toLowerCase()}function H0(n){return n.charAt(1).toUpperCase()}const q0=qp([Yp,D0,Qp,Xp,Zp],"html"),bs=qp([Yp,O0,Qp,Xp,Zp],"svg");function Y0(n){return n.join(" ").trim()}var Mi={},qo,Jm;function G0(){if(Jm)return qo;Jm=1;var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,a=/\n/g,r=/^\s*/,u=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,h=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,f=/^[;\s]*/,m=/^\s+|\s+$/g,p=` -`,d="/",x="*",y="",v="comment",S="declaration";function C(V,O){if(typeof V!="string")throw new TypeError("First argument must be a string");if(!V)return[];O=O||{};var K=1,X=1;function ae(ue){var $=ue.match(a);$&&(K+=$.length);var D=ue.lastIndexOf(p);X=~D?ue.length-D:X+ue.length}function ee(){var ue={line:K,column:X};return function($){return $.position=new L(ue),xe(),$}}function L(ue){this.start=ue,this.end={line:K,column:X},this.source=O.source}L.prototype.content=V;function J(ue){var $=new Error(O.source+":"+K+":"+X+": "+ue);if($.reason=ue,$.filename=O.source,$.line=K,$.column=X,$.source=V,!O.silent)throw $}function he(ue){var $=ue.exec(V);if($){var D=$[0];return ae(D),V=V.slice(D.length),$}}function xe(){he(r)}function R(ue){var $;for(ue=ue||[];$=ne();)$!==!1&&ue.push($);return ue}function ne(){var ue=ee();if(!(d!=V.charAt(0)||x!=V.charAt(1))){for(var $=2;y!=V.charAt($)&&(x!=V.charAt($)||d!=V.charAt($+1));)++$;if($+=2,y===V.charAt($-1))return J("End of comment missing");var D=V.slice(2,$-2);return X+=2,ae(D),V=V.slice($),X+=2,ue({type:v,comment:D})}}function le(){var ue=ee(),$=he(u);if($){if(ne(),!he(s))return J("property missing ':'");var D=he(h),F=ue({type:S,property:U($[0].replace(n,y)),value:D?U(D[0].replace(n,y)):y});return he(f),F}}function Ce(){var ue=[];R(ue);for(var $;$=le();)$!==!1&&(ue.push($),R(ue));return ue}return xe(),Ce()}function U(V){return V?V.replace(m,y):y}return qo=C,qo}var Im;function V0(){if(Im)return Mi;Im=1;var n=Mi&&Mi.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(Mi,"__esModule",{value:!0}),Mi.default=r;const a=n(G0());function r(u,s){let h=null;if(!u||typeof u!="string")return h;const f=(0,a.default)(u),m=typeof s=="function";return f.forEach(p=>{if(p.type!=="declaration")return;const{property:d,value:x}=p;m?s(d,x,p):x&&(h=h||{},h[d]=x)}),h}return Mi}var Da={},$m;function Q0(){if($m)return Da;$m=1,Object.defineProperty(Da,"__esModule",{value:!0}),Da.camelCase=void 0;var n=/^--[a-zA-Z0-9_-]+$/,a=/-([a-z])/g,r=/^[^-]+$/,u=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,h=function(d){return!d||r.test(d)||n.test(d)},f=function(d,x){return x.toUpperCase()},m=function(d,x){return"".concat(x,"-")},p=function(d,x){return x===void 0&&(x={}),h(d)?d:(d=d.toLowerCase(),x.reactCompat?d=d.replace(s,m):d=d.replace(u,m),d.replace(a,f))};return Da.camelCase=p,Da}var Oa,Wm;function X0(){if(Wm)return Oa;Wm=1;var n=Oa&&Oa.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},a=n(V0()),r=Q0();function u(s,h){var f={};return!s||typeof s!="string"||(0,a.default)(s,function(m,p){m&&p&&(f[(0,r.camelCase)(m,h)]=p)}),f}return u.default=u,Oa=u,Oa}var Z0=X0();const K0=Hp(Z0),Kp=Fp("end"),vs=Fp("start");function Fp(n){return a;function a(r){const u=r&&r.position&&r.position[n]||{};if(typeof u.line=="number"&&u.line>0&&typeof u.column=="number"&&u.column>0)return{line:u.line,column:u.column,offset:typeof u.offset=="number"&&u.offset>-1?u.offset:void 0}}}function F0(n){const a=vs(n),r=Kp(n);if(a&&r)return{start:a,end:r}}function La(n){return!n||typeof n!="object"?"":"position"in n||"type"in n?Pm(n.position):"start"in n||"end"in n?Pm(n):"line"in n||"column"in n?us(n):""}function us(n){return ep(n&&n.line)+":"+ep(n&&n.column)}function Pm(n){return us(n&&n.start)+"-"+us(n&&n.end)}function ep(n){return n&&typeof n=="number"?n:1}class Et extends Error{constructor(a,r,u){super(),typeof r=="string"&&(u=r,r=void 0);let s="",h={},f=!1;if(r&&("line"in r&&"column"in r?h={place:r}:"start"in r&&"end"in r?h={place:r}:"type"in r?h={ancestors:[r],place:r.position}:h={...r}),typeof a=="string"?s=a:!h.cause&&a&&(f=!0,s=a.message,h.cause=a),!h.ruleId&&!h.source&&typeof u=="string"){const p=u.indexOf(":");p===-1?h.ruleId=u:(h.source=u.slice(0,p),h.ruleId=u.slice(p+1))}if(!h.place&&h.ancestors&&h.ancestors){const p=h.ancestors[h.ancestors.length-1];p&&(h.place=p.position)}const m=h.place&&"start"in h.place?h.place.start:h.place;this.ancestors=h.ancestors||void 0,this.cause=h.cause||void 0,this.column=m?m.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=m?m.line:void 0,this.name=La(h.place)||"1:1",this.place=h.place||void 0,this.reason=this.message,this.ruleId=h.ruleId||void 0,this.source=h.source||void 0,this.stack=f&&h.cause&&typeof h.cause.stack=="string"?h.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Et.prototype.file="";Et.prototype.name="";Et.prototype.reason="";Et.prototype.message="";Et.prototype.stack="";Et.prototype.column=void 0;Et.prototype.line=void 0;Et.prototype.ancestors=void 0;Et.prototype.cause=void 0;Et.prototype.fatal=void 0;Et.prototype.place=void 0;Et.prototype.ruleId=void 0;Et.prototype.source=void 0;const Ss={}.hasOwnProperty,J0=new Map,I0=/[A-Z]/g,$0=new Set(["table","tbody","thead","tfoot","tr"]),W0=new Set(["td","th"]),Jp="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function P0(n,a){if(!a||a.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=a.filePath||void 0;let u;if(a.development){if(typeof a.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");u=ux(r,a.jsxDEV)}else{if(typeof a.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof a.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");u=rx(r,a.jsx,a.jsxs)}const s={Fragment:a.Fragment,ancestors:[],components:a.components||{},create:u,elementAttributeNameCase:a.elementAttributeNameCase||"react",evaluater:a.createEvaluater?a.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:a.ignoreInvalidStyle||!1,passKeys:a.passKeys!==!1,passNode:a.passNode||!1,schema:a.space==="svg"?bs:q0,stylePropertyNameCase:a.stylePropertyNameCase||"dom",tableCellAlignToStyle:a.tableCellAlignToStyle!==!1},h=Ip(s,n,void 0);return h&&typeof h!="string"?h:s.create(n,s.Fragment,{children:h||void 0},void 0)}function Ip(n,a,r){if(a.type==="element")return ex(n,a,r);if(a.type==="mdxFlowExpression"||a.type==="mdxTextExpression")return tx(n,a);if(a.type==="mdxJsxFlowElement"||a.type==="mdxJsxTextElement")return lx(n,a,r);if(a.type==="mdxjsEsm")return nx(n,a);if(a.type==="root")return ix(n,a,r);if(a.type==="text")return ax(n,a)}function ex(n,a,r){const u=n.schema;let s=u;a.tagName.toLowerCase()==="svg"&&u.space==="html"&&(s=bs,n.schema=s),n.ancestors.push(a);const h=Wp(n,a.tagName,!1),f=cx(n,a);let m=_s(n,a);return $0.has(a.tagName)&&(m=m.filter(function(p){return typeof p=="string"?!M0(p):!0})),$p(n,f,h,a),ks(f,m),n.ancestors.pop(),n.schema=u,n.create(a,h,f,r)}function tx(n,a){if(a.data&&a.data.estree&&n.evaluater){const u=a.data.estree.body[0];return u.type,n.evaluater.evaluateExpression(u.expression)}Ha(n,a.position)}function nx(n,a){if(a.data&&a.data.estree&&n.evaluater)return n.evaluater.evaluateProgram(a.data.estree);Ha(n,a.position)}function lx(n,a,r){const u=n.schema;let s=u;a.name==="svg"&&u.space==="html"&&(s=bs,n.schema=s),n.ancestors.push(a);const h=a.name===null?n.Fragment:Wp(n,a.name,!0),f=ox(n,a),m=_s(n,a);return $p(n,f,h,a),ks(f,m),n.ancestors.pop(),n.schema=u,n.create(a,h,f,r)}function ix(n,a,r){const u={};return ks(u,_s(n,a)),n.create(a,n.Fragment,u,r)}function ax(n,a){return a.value}function $p(n,a,r,u){typeof r!="string"&&r!==n.Fragment&&n.passNode&&(a.node=u)}function ks(n,a){if(a.length>0){const r=a.length>1?a:a[0];r&&(n.children=r)}}function rx(n,a,r){return u;function u(s,h,f,m){const d=Array.isArray(f.children)?r:a;return m?d(h,f,m):d(h,f)}}function ux(n,a){return r;function r(u,s,h,f){const m=Array.isArray(h.children),p=vs(u);return a(s,h,f,m,{columnNumber:p?p.column-1:void 0,fileName:n,lineNumber:p?p.line:void 0},void 0)}}function cx(n,a){const r={};let u,s;for(s in a.properties)if(s!=="children"&&Ss.call(a.properties,s)){const h=sx(n,s,a.properties[s]);if(h){const[f,m]=h;n.tableCellAlignToStyle&&f==="align"&&typeof m=="string"&&W0.has(a.tagName)?u=m:r[f]=m}}if(u){const h=r.style||(r.style={});h[n.stylePropertyNameCase==="css"?"text-align":"textAlign"]=u}return r}function ox(n,a){const r={};for(const u of a.attributes)if(u.type==="mdxJsxExpressionAttribute")if(u.data&&u.data.estree&&n.evaluater){const h=u.data.estree.body[0];h.type;const f=h.expression;f.type;const m=f.properties[0];m.type,Object.assign(r,n.evaluater.evaluateExpression(m.argument))}else Ha(n,a.position);else{const s=u.name;let h;if(u.value&&typeof u.value=="object")if(u.value.data&&u.value.data.estree&&n.evaluater){const m=u.value.data.estree.body[0];m.type,h=n.evaluater.evaluateExpression(m.expression)}else Ha(n,a.position);else h=u.value===null?!0:u.value;r[s]=h}return r}function _s(n,a){const r=[];let u=-1;const s=n.passKeys?new Map:J0;for(;++us?0:s+a:a=a>s?s:a,r=r>0?r:0,u.length<1e4)f=Array.from(u),f.unshift(a,r),n.splice(...f);else for(r&&n.splice(a,r);h0?(Zt(n,n.length,0,a),n):a}const lp={}.hasOwnProperty;function eg(n){const a={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function sn(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Tt=xl(/[A-Za-z]/),_t=xl(/[\dA-Za-z]/),bx=xl(/[#-'*+\--9=?A-Z^-~]/);function ou(n){return n!==null&&(n<32||n===127)}const cs=xl(/\d/),vx=xl(/[\dA-Fa-f]/),Sx=xl(/[!-/:-@[-`{-~]/);function pe(n){return n!==null&&n<-2}function Je(n){return n!==null&&(n<0||n===32)}function De(n){return n===-2||n===-1||n===32}const mu=xl(new RegExp("\\p{P}|\\p{S}","u")),Gl=xl(/\s/);function xl(n){return a;function a(r){return r!==null&&r>-1&&n.test(String.fromCharCode(r))}}function Ri(n){const a=[];let r=-1,u=0,s=0;for(;++r55295&&h<57344){const m=n.charCodeAt(r+1);h<56320&&m>56319&&m<57344?(f=String.fromCharCode(h,m),s=1):f="�"}else f=String.fromCharCode(h);f&&(a.push(n.slice(u,r),encodeURIComponent(f)),u=r+s+1,f=""),s&&(r+=s,s=0)}return a.join("")+n.slice(u)}function Le(n,a,r,u){const s=u?u-1:Number.POSITIVE_INFINITY;let h=0;return f;function f(p){return De(p)?(n.enter(r),m(p)):a(p)}function m(p){return De(p)&&h++f))return;const J=a.events.length;let he=J,xe,R;for(;he--;)if(a.events[he][0]==="exit"&&a.events[he][1].type==="chunkFlow"){if(xe){R=a.events[he][1].end;break}xe=!0}for(O(u),L=J;LX;){const ee=r[ae];a.containerState=ee[1],ee[0].exit.call(a,n)}r.length=X}function K(){s.write([null]),h=void 0,s=void 0,a.containerState._closeFlow=void 0}}function Tx(n,a,r){return Le(n,n.attempt(this.parser.constructs.document,a,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Di(n){if(n===null||Je(n)||Gl(n))return 1;if(mu(n))return 2}function pu(n,a,r){const u=[];let s=-1;for(;++s1&&n[r][1].end.offset-n[r][1].start.offset>1?2:1;const y={...n[u][1].end},v={...n[r][1].start};ap(y,-p),ap(v,p),f={type:p>1?"strongSequence":"emphasisSequence",start:y,end:{...n[u][1].end}},m={type:p>1?"strongSequence":"emphasisSequence",start:{...n[r][1].start},end:v},h={type:p>1?"strongText":"emphasisText",start:{...n[u][1].end},end:{...n[r][1].start}},s={type:p>1?"strong":"emphasis",start:{...f.start},end:{...m.end}},n[u][1].end={...f.start},n[r][1].start={...m.end},d=[],n[u][1].end.offset-n[u][1].start.offset&&(d=an(d,[["enter",n[u][1],a],["exit",n[u][1],a]])),d=an(d,[["enter",s,a],["enter",f,a],["exit",f,a],["enter",h,a]]),d=an(d,pu(a.parser.constructs.insideSpan.null,n.slice(u+1,r),a)),d=an(d,[["exit",h,a],["enter",m,a],["exit",m,a],["exit",s,a]]),n[r][1].end.offset-n[r][1].start.offset?(x=2,d=an(d,[["enter",n[r][1],a],["exit",n[r][1],a]])):x=0,Zt(n,u-1,r-u+3,d),r=u+d.length-x-2;break}}for(r=-1;++r0&&De(L)?Le(n,K,"linePrefix",h+1)(L):K(L)}function K(L){return L===null||pe(L)?n.check(rp,U,ae)(L):(n.enter("codeFlowValue"),X(L))}function X(L){return L===null||pe(L)?(n.exit("codeFlowValue"),K(L)):(n.consume(L),X)}function ae(L){return n.exit("codeFenced"),a(L)}function ee(L,J,he){let xe=0;return R;function R($){return L.enter("lineEnding"),L.consume($),L.exit("lineEnding"),ne}function ne($){return L.enter("codeFencedFence"),De($)?Le(L,le,"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)($):le($)}function le($){return $===m?(L.enter("codeFencedFenceSequence"),Ce($)):he($)}function Ce($){return $===m?(xe++,L.consume($),Ce):xe>=f?(L.exit("codeFencedFenceSequence"),De($)?Le(L,ue,"whitespace")($):ue($)):he($)}function ue($){return $===null||pe($)?(L.exit("codeFencedFence"),J($)):he($)}}}function Ux(n,a,r){const u=this;return s;function s(f){return f===null?r(f):(n.enter("lineEnding"),n.consume(f),n.exit("lineEnding"),h)}function h(f){return u.parser.lazy[u.now().line]?r(f):a(f)}}const Go={name:"codeIndented",tokenize:qx},Hx={partial:!0,tokenize:Yx};function qx(n,a,r){const u=this;return s;function s(d){return n.enter("codeIndented"),Le(n,h,"linePrefix",5)(d)}function h(d){const x=u.events[u.events.length-1];return x&&x[1].type==="linePrefix"&&x[2].sliceSerialize(x[1],!0).length>=4?f(d):r(d)}function f(d){return d===null?p(d):pe(d)?n.attempt(Hx,f,p)(d):(n.enter("codeFlowValue"),m(d))}function m(d){return d===null||pe(d)?(n.exit("codeFlowValue"),f(d)):(n.consume(d),m)}function p(d){return n.exit("codeIndented"),a(d)}}function Yx(n,a,r){const u=this;return s;function s(f){return u.parser.lazy[u.now().line]?r(f):pe(f)?(n.enter("lineEnding"),n.consume(f),n.exit("lineEnding"),s):Le(n,h,"linePrefix",5)(f)}function h(f){const m=u.events[u.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?a(f):pe(f)?s(f):r(f)}}const Gx={name:"codeText",previous:Qx,resolve:Vx,tokenize:Xx};function Vx(n){let a=n.length-4,r=3,u,s;if((n[r][1].type==="lineEnding"||n[r][1].type==="space")&&(n[a][1].type==="lineEnding"||n[a][1].type==="space")){for(u=r;++u=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+a+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return athis.left.length?this.right.slice(this.right.length-u+this.left.length,this.right.length-a+this.left.length).reverse():this.left.slice(a).concat(this.right.slice(this.right.length-u+this.left.length).reverse())}splice(a,r,u){const s=r||0;this.setCursor(Math.trunc(a));const h=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return u&&ja(this.left,u),h.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(a){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(a)}pushMany(a){this.setCursor(Number.POSITIVE_INFINITY),ja(this.left,a)}unshift(a){this.setCursor(0),this.right.push(a)}unshiftMany(a){this.setCursor(0),ja(this.right,a.reverse())}setCursor(a){if(!(a===this.left.length||a>this.left.length&&this.right.length===0||a<0&&this.left.length===0))if(a=4?a(f):n.interrupt(u.parser.constructs.flow,r,a)(f)}}function rg(n,a,r,u,s,h,f,m,p){const d=p||Number.POSITIVE_INFINITY;let x=0;return y;function y(O){return O===60?(n.enter(u),n.enter(s),n.enter(h),n.consume(O),n.exit(h),v):O===null||O===32||O===41||ou(O)?r(O):(n.enter(u),n.enter(f),n.enter(m),n.enter("chunkString",{contentType:"string"}),U(O))}function v(O){return O===62?(n.enter(h),n.consume(O),n.exit(h),n.exit(s),n.exit(u),a):(n.enter(m),n.enter("chunkString",{contentType:"string"}),S(O))}function S(O){return O===62?(n.exit("chunkString"),n.exit(m),v(O)):O===null||O===60||pe(O)?r(O):(n.consume(O),O===92?C:S)}function C(O){return O===60||O===62||O===92?(n.consume(O),S):S(O)}function U(O){return!x&&(O===null||O===41||Je(O))?(n.exit("chunkString"),n.exit(m),n.exit(f),n.exit(u),a(O)):x999||S===null||S===91||S===93&&!p||S===94&&!m&&"_hiddenFootnoteSupport"in f.parser.constructs?r(S):S===93?(n.exit(h),n.enter(s),n.consume(S),n.exit(s),n.exit(u),a):pe(S)?(n.enter("lineEnding"),n.consume(S),n.exit("lineEnding"),x):(n.enter("chunkString",{contentType:"string"}),y(S))}function y(S){return S===null||S===91||S===93||pe(S)||m++>999?(n.exit("chunkString"),x(S)):(n.consume(S),p||(p=!De(S)),S===92?v:y)}function v(S){return S===91||S===92||S===93?(n.consume(S),m++,y):y(S)}}function cg(n,a,r,u,s,h){let f;return m;function m(v){return v===34||v===39||v===40?(n.enter(u),n.enter(s),n.consume(v),n.exit(s),f=v===40?41:v,p):r(v)}function p(v){return v===f?(n.enter(s),n.consume(v),n.exit(s),n.exit(u),a):(n.enter(h),d(v))}function d(v){return v===f?(n.exit(h),p(f)):v===null?r(v):pe(v)?(n.enter("lineEnding"),n.consume(v),n.exit("lineEnding"),Le(n,d,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),x(v))}function x(v){return v===f||v===null||pe(v)?(n.exit("chunkString"),d(v)):(n.consume(v),v===92?y:x)}function y(v){return v===f||v===92?(n.consume(v),x):x(v)}}function Ba(n,a){let r;return u;function u(s){return pe(s)?(n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),r=!0,u):De(s)?Le(n,u,r?"linePrefix":"lineSuffix")(s):a(s)}}const Px={name:"definition",tokenize:tb},eb={partial:!0,tokenize:nb};function tb(n,a,r){const u=this;let s;return h;function h(S){return n.enter("definition"),f(S)}function f(S){return ug.call(u,n,m,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(S)}function m(S){return s=sn(u.sliceSerialize(u.events[u.events.length-1][1]).slice(1,-1)),S===58?(n.enter("definitionMarker"),n.consume(S),n.exit("definitionMarker"),p):r(S)}function p(S){return Je(S)?Ba(n,d)(S):d(S)}function d(S){return rg(n,x,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(S)}function x(S){return n.attempt(eb,y,y)(S)}function y(S){return De(S)?Le(n,v,"whitespace")(S):v(S)}function v(S){return S===null||pe(S)?(n.exit("definition"),u.parser.defined.push(s),a(S)):r(S)}}function nb(n,a,r){return u;function u(m){return Je(m)?Ba(n,s)(m):r(m)}function s(m){return cg(n,h,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(m)}function h(m){return De(m)?Le(n,f,"whitespace")(m):f(m)}function f(m){return m===null||pe(m)?a(m):r(m)}}const lb={name:"hardBreakEscape",tokenize:ib};function ib(n,a,r){return u;function u(h){return n.enter("hardBreakEscape"),n.consume(h),s}function s(h){return pe(h)?(n.exit("hardBreakEscape"),a(h)):r(h)}}const ab={name:"headingAtx",resolve:rb,tokenize:ub};function rb(n,a){let r=n.length-2,u=3,s,h;return n[u][1].type==="whitespace"&&(u+=2),r-2>u&&n[r][1].type==="whitespace"&&(r-=2),n[r][1].type==="atxHeadingSequence"&&(u===r-1||r-4>u&&n[r-2][1].type==="whitespace")&&(r-=u+1===r?2:4),r>u&&(s={type:"atxHeadingText",start:n[u][1].start,end:n[r][1].end},h={type:"chunkText",start:n[u][1].start,end:n[r][1].end,contentType:"text"},Zt(n,u,r-u+1,[["enter",s,a],["enter",h,a],["exit",h,a],["exit",s,a]])),n}function ub(n,a,r){let u=0;return s;function s(x){return n.enter("atxHeading"),h(x)}function h(x){return n.enter("atxHeadingSequence"),f(x)}function f(x){return x===35&&u++<6?(n.consume(x),f):x===null||Je(x)?(n.exit("atxHeadingSequence"),m(x)):r(x)}function m(x){return x===35?(n.enter("atxHeadingSequence"),p(x)):x===null||pe(x)?(n.exit("atxHeading"),a(x)):De(x)?Le(n,m,"whitespace")(x):(n.enter("atxHeadingText"),d(x))}function p(x){return x===35?(n.consume(x),p):(n.exit("atxHeadingSequence"),m(x))}function d(x){return x===null||x===35||Je(x)?(n.exit("atxHeadingText"),m(x)):(n.consume(x),d)}}const cb=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],cp=["pre","script","style","textarea"],ob={concrete:!0,name:"htmlFlow",resolveTo:hb,tokenize:db},sb={partial:!0,tokenize:pb},fb={partial:!0,tokenize:mb};function hb(n){let a=n.length;for(;a--&&!(n[a][0]==="enter"&&n[a][1].type==="htmlFlow"););return a>1&&n[a-2][1].type==="linePrefix"&&(n[a][1].start=n[a-2][1].start,n[a+1][1].start=n[a-2][1].start,n.splice(a-2,2)),n}function db(n,a,r){const u=this;let s,h,f,m,p;return d;function d(_){return x(_)}function x(_){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(_),y}function y(_){return _===33?(n.consume(_),v):_===47?(n.consume(_),h=!0,U):_===63?(n.consume(_),s=3,u.interrupt?a:E):Tt(_)?(n.consume(_),f=String.fromCharCode(_),V):r(_)}function v(_){return _===45?(n.consume(_),s=2,S):_===91?(n.consume(_),s=5,m=0,C):Tt(_)?(n.consume(_),s=4,u.interrupt?a:E):r(_)}function S(_){return _===45?(n.consume(_),u.interrupt?a:E):r(_)}function C(_){const te="CDATA[";return _===te.charCodeAt(m++)?(n.consume(_),m===te.length?u.interrupt?a:le:C):r(_)}function U(_){return Tt(_)?(n.consume(_),f=String.fromCharCode(_),V):r(_)}function V(_){if(_===null||_===47||_===62||Je(_)){const te=_===47,fe=f.toLowerCase();return!te&&!h&&cp.includes(fe)?(s=1,u.interrupt?a(_):le(_)):cb.includes(f.toLowerCase())?(s=6,te?(n.consume(_),O):u.interrupt?a(_):le(_)):(s=7,u.interrupt&&!u.parser.lazy[u.now().line]?r(_):h?K(_):X(_))}return _===45||_t(_)?(n.consume(_),f+=String.fromCharCode(_),V):r(_)}function O(_){return _===62?(n.consume(_),u.interrupt?a:le):r(_)}function K(_){return De(_)?(n.consume(_),K):R(_)}function X(_){return _===47?(n.consume(_),R):_===58||_===95||Tt(_)?(n.consume(_),ae):De(_)?(n.consume(_),X):R(_)}function ae(_){return _===45||_===46||_===58||_===95||_t(_)?(n.consume(_),ae):ee(_)}function ee(_){return _===61?(n.consume(_),L):De(_)?(n.consume(_),ee):X(_)}function L(_){return _===null||_===60||_===61||_===62||_===96?r(_):_===34||_===39?(n.consume(_),p=_,J):De(_)?(n.consume(_),L):he(_)}function J(_){return _===p?(n.consume(_),p=null,xe):_===null||pe(_)?r(_):(n.consume(_),J)}function he(_){return _===null||_===34||_===39||_===47||_===60||_===61||_===62||_===96||Je(_)?ee(_):(n.consume(_),he)}function xe(_){return _===47||_===62||De(_)?X(_):r(_)}function R(_){return _===62?(n.consume(_),ne):r(_)}function ne(_){return _===null||pe(_)?le(_):De(_)?(n.consume(_),ne):r(_)}function le(_){return _===45&&s===2?(n.consume(_),D):_===60&&s===1?(n.consume(_),F):_===62&&s===4?(n.consume(_),T):_===63&&s===3?(n.consume(_),E):_===93&&s===5?(n.consume(_),Se):pe(_)&&(s===6||s===7)?(n.exit("htmlFlowData"),n.check(sb,q,Ce)(_)):_===null||pe(_)?(n.exit("htmlFlowData"),Ce(_)):(n.consume(_),le)}function Ce(_){return n.check(fb,ue,q)(_)}function ue(_){return n.enter("lineEnding"),n.consume(_),n.exit("lineEnding"),$}function $(_){return _===null||pe(_)?Ce(_):(n.enter("htmlFlowData"),le(_))}function D(_){return _===45?(n.consume(_),E):le(_)}function F(_){return _===47?(n.consume(_),f="",ie):le(_)}function ie(_){if(_===62){const te=f.toLowerCase();return cp.includes(te)?(n.consume(_),T):le(_)}return Tt(_)&&f.length<8?(n.consume(_),f+=String.fromCharCode(_),ie):le(_)}function Se(_){return _===93?(n.consume(_),E):le(_)}function E(_){return _===62?(n.consume(_),T):_===45&&s===2?(n.consume(_),E):le(_)}function T(_){return _===null||pe(_)?(n.exit("htmlFlowData"),q(_)):(n.consume(_),T)}function q(_){return n.exit("htmlFlow"),a(_)}}function mb(n,a,r){const u=this;return s;function s(f){return pe(f)?(n.enter("lineEnding"),n.consume(f),n.exit("lineEnding"),h):r(f)}function h(f){return u.parser.lazy[u.now().line]?r(f):a(f)}}function pb(n,a,r){return u;function u(s){return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),n.attempt(Ga,a,r)}}const gb={name:"htmlText",tokenize:yb};function yb(n,a,r){const u=this;let s,h,f;return m;function m(E){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(E),p}function p(E){return E===33?(n.consume(E),d):E===47?(n.consume(E),ee):E===63?(n.consume(E),X):Tt(E)?(n.consume(E),he):r(E)}function d(E){return E===45?(n.consume(E),x):E===91?(n.consume(E),h=0,C):Tt(E)?(n.consume(E),K):r(E)}function x(E){return E===45?(n.consume(E),S):r(E)}function y(E){return E===null?r(E):E===45?(n.consume(E),v):pe(E)?(f=y,F(E)):(n.consume(E),y)}function v(E){return E===45?(n.consume(E),S):y(E)}function S(E){return E===62?D(E):E===45?v(E):y(E)}function C(E){const T="CDATA[";return E===T.charCodeAt(h++)?(n.consume(E),h===T.length?U:C):r(E)}function U(E){return E===null?r(E):E===93?(n.consume(E),V):pe(E)?(f=U,F(E)):(n.consume(E),U)}function V(E){return E===93?(n.consume(E),O):U(E)}function O(E){return E===62?D(E):E===93?(n.consume(E),O):U(E)}function K(E){return E===null||E===62?D(E):pe(E)?(f=K,F(E)):(n.consume(E),K)}function X(E){return E===null?r(E):E===63?(n.consume(E),ae):pe(E)?(f=X,F(E)):(n.consume(E),X)}function ae(E){return E===62?D(E):X(E)}function ee(E){return Tt(E)?(n.consume(E),L):r(E)}function L(E){return E===45||_t(E)?(n.consume(E),L):J(E)}function J(E){return pe(E)?(f=J,F(E)):De(E)?(n.consume(E),J):D(E)}function he(E){return E===45||_t(E)?(n.consume(E),he):E===47||E===62||Je(E)?xe(E):r(E)}function xe(E){return E===47?(n.consume(E),D):E===58||E===95||Tt(E)?(n.consume(E),R):pe(E)?(f=xe,F(E)):De(E)?(n.consume(E),xe):D(E)}function R(E){return E===45||E===46||E===58||E===95||_t(E)?(n.consume(E),R):ne(E)}function ne(E){return E===61?(n.consume(E),le):pe(E)?(f=ne,F(E)):De(E)?(n.consume(E),ne):xe(E)}function le(E){return E===null||E===60||E===61||E===62||E===96?r(E):E===34||E===39?(n.consume(E),s=E,Ce):pe(E)?(f=le,F(E)):De(E)?(n.consume(E),le):(n.consume(E),ue)}function Ce(E){return E===s?(n.consume(E),s=void 0,$):E===null?r(E):pe(E)?(f=Ce,F(E)):(n.consume(E),Ce)}function ue(E){return E===null||E===34||E===39||E===60||E===61||E===96?r(E):E===47||E===62||Je(E)?xe(E):(n.consume(E),ue)}function $(E){return E===47||E===62||Je(E)?xe(E):r(E)}function D(E){return E===62?(n.consume(E),n.exit("htmlTextData"),n.exit("htmlText"),a):r(E)}function F(E){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(E),n.exit("lineEnding"),ie}function ie(E){return De(E)?Le(n,Se,"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E):Se(E)}function Se(E){return n.enter("htmlTextData"),f(E)}}const Ts={name:"labelEnd",resolveAll:Sb,resolveTo:kb,tokenize:_b},xb={tokenize:Eb},bb={tokenize:Ab},vb={tokenize:Tb};function Sb(n){let a=-1;const r=[];for(;++a=3&&(d===null||pe(d))?(n.exit("thematicBreak"),a(d)):r(d)}function p(d){return d===s?(n.consume(d),u++,p):(n.exit("thematicBreakSequence"),De(d)?Le(n,m,"whitespace")(d):m(d))}}const Rt={continuation:{tokenize:Lb},exit:Ub,name:"list",tokenize:Rb},Ob={partial:!0,tokenize:Hb},jb={partial:!0,tokenize:Bb};function Rb(n,a,r){const u=this,s=u.events[u.events.length-1];let h=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,f=0;return m;function m(S){const C=u.containerState.type||(S===42||S===43||S===45?"listUnordered":"listOrdered");if(C==="listUnordered"?!u.containerState.marker||S===u.containerState.marker:cs(S)){if(u.containerState.type||(u.containerState.type=C,n.enter(C,{_container:!0})),C==="listUnordered")return n.enter("listItemPrefix"),S===42||S===45?n.check(uu,r,d)(S):d(S);if(!u.interrupt||S===49)return n.enter("listItemPrefix"),n.enter("listItemValue"),p(S)}return r(S)}function p(S){return cs(S)&&++f<10?(n.consume(S),p):(!u.interrupt||f<2)&&(u.containerState.marker?S===u.containerState.marker:S===41||S===46)?(n.exit("listItemValue"),d(S)):r(S)}function d(S){return n.enter("listItemMarker"),n.consume(S),n.exit("listItemMarker"),u.containerState.marker=u.containerState.marker||S,n.check(Ga,u.interrupt?r:x,n.attempt(Ob,v,y))}function x(S){return u.containerState.initialBlankLine=!0,h++,v(S)}function y(S){return De(S)?(n.enter("listItemPrefixWhitespace"),n.consume(S),n.exit("listItemPrefixWhitespace"),v):r(S)}function v(S){return u.containerState.size=h+u.sliceSerialize(n.exit("listItemPrefix"),!0).length,a(S)}}function Lb(n,a,r){const u=this;return u.containerState._closeFlow=void 0,n.check(Ga,s,h);function s(m){return u.containerState.furtherBlankLines=u.containerState.furtherBlankLines||u.containerState.initialBlankLine,Le(n,a,"listItemIndent",u.containerState.size+1)(m)}function h(m){return u.containerState.furtherBlankLines||!De(m)?(u.containerState.furtherBlankLines=void 0,u.containerState.initialBlankLine=void 0,f(m)):(u.containerState.furtherBlankLines=void 0,u.containerState.initialBlankLine=void 0,n.attempt(jb,a,f)(m))}function f(m){return u.containerState._closeFlow=!0,u.interrupt=void 0,Le(n,n.attempt(Rt,a,r),"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(m)}}function Bb(n,a,r){const u=this;return Le(n,s,"listItemIndent",u.containerState.size+1);function s(h){const f=u.events[u.events.length-1];return f&&f[1].type==="listItemIndent"&&f[2].sliceSerialize(f[1],!0).length===u.containerState.size?a(h):r(h)}}function Ub(n){n.exit(this.containerState.type)}function Hb(n,a,r){const u=this;return Le(n,s,"listItemPrefixWhitespace",u.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(h){const f=u.events[u.events.length-1];return!De(h)&&f&&f[1].type==="listItemPrefixWhitespace"?a(h):r(h)}}const op={name:"setextUnderline",resolveTo:qb,tokenize:Yb};function qb(n,a){let r=n.length,u,s,h;for(;r--;)if(n[r][0]==="enter"){if(n[r][1].type==="content"){u=r;break}n[r][1].type==="paragraph"&&(s=r)}else n[r][1].type==="content"&&n.splice(r,1),!h&&n[r][1].type==="definition"&&(h=r);const f={type:"setextHeading",start:{...n[u][1].start},end:{...n[n.length-1][1].end}};return n[s][1].type="setextHeadingText",h?(n.splice(s,0,["enter",f,a]),n.splice(h+1,0,["exit",n[u][1],a]),n[u][1].end={...n[h][1].end}):n[u][1]=f,n.push(["exit",f,a]),n}function Yb(n,a,r){const u=this;let s;return h;function h(d){let x=u.events.length,y;for(;x--;)if(u.events[x][1].type!=="lineEnding"&&u.events[x][1].type!=="linePrefix"&&u.events[x][1].type!=="content"){y=u.events[x][1].type==="paragraph";break}return!u.parser.lazy[u.now().line]&&(u.interrupt||y)?(n.enter("setextHeadingLine"),s=d,f(d)):r(d)}function f(d){return n.enter("setextHeadingLineSequence"),m(d)}function m(d){return d===s?(n.consume(d),m):(n.exit("setextHeadingLineSequence"),De(d)?Le(n,p,"lineSuffix")(d):p(d))}function p(d){return d===null||pe(d)?(n.exit("setextHeadingLine"),a(d)):r(d)}}const Gb={tokenize:Vb};function Vb(n){const a=this,r=n.attempt(Ga,u,n.attempt(this.parser.constructs.flowInitial,s,Le(n,n.attempt(this.parser.constructs.flow,s,n.attempt(Fx,s)),"linePrefix")));return r;function u(h){if(h===null){n.consume(h);return}return n.enter("lineEndingBlank"),n.consume(h),n.exit("lineEndingBlank"),a.currentConstruct=void 0,r}function s(h){if(h===null){n.consume(h);return}return n.enter("lineEnding"),n.consume(h),n.exit("lineEnding"),a.currentConstruct=void 0,r}}const Qb={resolveAll:sg()},Xb=og("string"),Zb=og("text");function og(n){return{resolveAll:sg(n==="text"?Kb:void 0),tokenize:a};function a(r){const u=this,s=this.parser.constructs[n],h=r.attempt(s,f,m);return f;function f(x){return d(x)?h(x):m(x)}function m(x){if(x===null){r.consume(x);return}return r.enter("data"),r.consume(x),p}function p(x){return d(x)?(r.exit("data"),h(x)):(r.consume(x),p)}function d(x){if(x===null)return!0;const y=s[x];let v=-1;if(y)for(;++v-1){const m=f[0];typeof m=="string"?f[0]=m.slice(u):f.shift()}h>0&&f.push(n[s].slice(0,h))}return f}function rv(n,a){let r=-1;const u=[];let s;for(;++r0){const vt=ge.tokenStack[ge.tokenStack.length-1];(vt[1]||fp).call(ge,void 0,vt[0])}for(W.position={start:gl(Y.length>0?Y[0][1].start:{line:1,column:1,offset:0}),end:gl(Y.length>0?Y[Y.length-2][1].end:{line:1,column:1,offset:0})},Be=-1;++Be0&&(u.className=["language-"+s[0]]);let h={type:"element",tagName:"code",properties:u,children:[{type:"text",value:r}]};return a.meta&&(h.data={meta:a.meta}),n.patch(a,h),h=n.applyData(a,h),h={type:"element",tagName:"pre",properties:{},children:[h]},n.patch(a,h),h}function vv(n,a){const r={type:"element",tagName:"del",properties:{},children:n.all(a)};return n.patch(a,r),n.applyData(a,r)}function Sv(n,a){const r={type:"element",tagName:"em",properties:{},children:n.all(a)};return n.patch(a,r),n.applyData(a,r)}function kv(n,a){const r=typeof n.options.clobberPrefix=="string"?n.options.clobberPrefix:"user-content-",u=String(a.identifier).toUpperCase(),s=Ri(u.toLowerCase()),h=n.footnoteOrder.indexOf(u);let f,m=n.footnoteCounts.get(u);m===void 0?(m=0,n.footnoteOrder.push(u),f=n.footnoteOrder.length):f=h+1,m+=1,n.footnoteCounts.set(u,m);const p={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+s,id:r+"fnref-"+s+(m>1?"-"+m:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(f)}]};n.patch(a,p);const d={type:"element",tagName:"sup",properties:{},children:[p]};return n.patch(a,d),n.applyData(a,d)}function _v(n,a){const r={type:"element",tagName:"h"+a.depth,properties:{},children:n.all(a)};return n.patch(a,r),n.applyData(a,r)}function Ev(n,a){if(n.options.allowDangerousHtml){const r={type:"raw",value:a.value};return n.patch(a,r),n.applyData(a,r)}}function dg(n,a){const r=a.referenceType;let u="]";if(r==="collapsed"?u+="[]":r==="full"&&(u+="["+(a.label||a.identifier)+"]"),a.type==="imageReference")return[{type:"text",value:"!["+a.alt+u}];const s=n.all(a),h=s[0];h&&h.type==="text"?h.value="["+h.value:s.unshift({type:"text",value:"["});const f=s[s.length-1];return f&&f.type==="text"?f.value+=u:s.push({type:"text",value:u}),s}function Av(n,a){const r=String(a.identifier).toUpperCase(),u=n.definitionById.get(r);if(!u)return dg(n,a);const s={src:Ri(u.url||""),alt:a.alt};u.title!==null&&u.title!==void 0&&(s.title=u.title);const h={type:"element",tagName:"img",properties:s,children:[]};return n.patch(a,h),n.applyData(a,h)}function Tv(n,a){const r={src:Ri(a.url)};a.alt!==null&&a.alt!==void 0&&(r.alt=a.alt),a.title!==null&&a.title!==void 0&&(r.title=a.title);const u={type:"element",tagName:"img",properties:r,children:[]};return n.patch(a,u),n.applyData(a,u)}function zv(n,a){const r={type:"text",value:a.value.replace(/\r?\n|\r/g," ")};n.patch(a,r);const u={type:"element",tagName:"code",properties:{},children:[r]};return n.patch(a,u),n.applyData(a,u)}function Cv(n,a){const r=String(a.identifier).toUpperCase(),u=n.definitionById.get(r);if(!u)return dg(n,a);const s={href:Ri(u.url||"")};u.title!==null&&u.title!==void 0&&(s.title=u.title);const h={type:"element",tagName:"a",properties:s,children:n.all(a)};return n.patch(a,h),n.applyData(a,h)}function wv(n,a){const r={href:Ri(a.url)};a.title!==null&&a.title!==void 0&&(r.title=a.title);const u={type:"element",tagName:"a",properties:r,children:n.all(a)};return n.patch(a,u),n.applyData(a,u)}function Mv(n,a,r){const u=n.all(a),s=r?Nv(r):mg(a),h={},f=[];if(typeof a.checked=="boolean"){const x=u[0];let y;x&&x.type==="element"&&x.tagName==="p"?y=x:(y={type:"element",tagName:"p",properties:{},children:[]},u.unshift(y)),y.children.length>0&&y.children.unshift({type:"text",value:" "}),y.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:a.checked,disabled:!0},children:[]}),h.className=["task-list-item"]}let m=-1;for(;++m1}function Dv(n,a){const r={},u=n.all(a);let s=-1;for(typeof a.start=="number"&&a.start!==1&&(r.start=a.start);++s0){const f={type:"element",tagName:"tbody",properties:{},children:n.wrap(r,!0)},m=vs(a.children[1]),p=Kp(a.children[a.children.length-1]);m&&p&&(f.position={start:m,end:p}),s.push(f)}const h={type:"element",tagName:"table",properties:{},children:n.wrap(s,!0)};return n.patch(a,h),n.applyData(a,h)}function Bv(n,a,r){const u=r?r.children:void 0,h=(u?u.indexOf(a):1)===0?"th":"td",f=r&&r.type==="table"?r.align:void 0,m=f?f.length:a.children.length;let p=-1;const d=[];for(;++p0,!0),u[0]),s=u.index+u[0].length,u=r.exec(a);return h.push(mp(a.slice(s),s>0,!1)),h.join("")}function mp(n,a,r){let u=0,s=n.length;if(a){let h=n.codePointAt(u);for(;h===hp||h===dp;)u++,h=n.codePointAt(u)}if(r){let h=n.codePointAt(s-1);for(;h===hp||h===dp;)s--,h=n.codePointAt(s-1)}return s>u?n.slice(u,s):""}function qv(n,a){const r={type:"text",value:Hv(String(a.value))};return n.patch(a,r),n.applyData(a,r)}function Yv(n,a){const r={type:"element",tagName:"hr",properties:{},children:[]};return n.patch(a,r),n.applyData(a,r)}const Gv={blockquote:yv,break:xv,code:bv,delete:vv,emphasis:Sv,footnoteReference:kv,heading:_v,html:Ev,imageReference:Av,image:Tv,inlineCode:zv,linkReference:Cv,link:wv,listItem:Mv,list:Dv,paragraph:Ov,root:jv,strong:Rv,table:Lv,tableCell:Uv,tableRow:Bv,text:qv,thematicBreak:Yv,toml:nu,yaml:nu,definition:nu,footnoteDefinition:nu};function nu(){}const pg=-1,gu=0,Ua=1,su=2,zs=3,Cs=4,ws=5,Ms=6,gg=7,yg=8,xg=typeof self=="object"?self:globalThis,pp=(n,a)=>{switch(n){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+n)}return new xg[n](a)},Vv=(n,a)=>{const r=(s,h)=>(n.set(h,s),s),u=s=>{if(n.has(s))return n.get(s);const[h,f]=a[s];switch(h){case gu:case pg:return r(f,s);case Ua:{const m=r([],s);for(const p of f)m.push(u(p));return m}case su:{const m=r({},s);for(const[p,d]of f)m[u(p)]=u(d);return m}case zs:return r(new Date(f),s);case Cs:{const{source:m,flags:p}=f;return r(new RegExp(m,p),s)}case ws:{const m=r(new Map,s);for(const[p,d]of f)m.set(u(p),u(d));return m}case Ms:{const m=r(new Set,s);for(const p of f)m.add(u(p));return m}case gg:{const{name:m,message:p}=f;return r(typeof xg[m]=="function"?pp(m,p):new Error(p),s)}case yg:return r(BigInt(f),s);case"BigInt":return r(Object(BigInt(f)),s);case"ArrayBuffer":return r(new Uint8Array(f).buffer,f);case"DataView":{const{buffer:m}=new Uint8Array(f);return r(new DataView(m),f)}}return r(pp(h,f),s)};return u},gp=n=>Vv(new Map,n)(0),ql="",{toString:Qv}={},{keys:Xv}=Object,Ra=n=>{const a=typeof n;if(a!=="object"||!n)return[gu,a];const r=Qv.call(n).slice(8,-1);switch(r){case"Array":return[Ua,ql];case"Object":return[su,ql];case"Date":return[zs,ql];case"RegExp":return[Cs,ql];case"Map":return[ws,ql];case"Set":return[Ms,ql];case"DataView":return[Ua,r]}return r.includes("Array")?[Ua,r]:n instanceof Error?[gg,n.name||"Error"]:[su,r]},lu=([n,a])=>n===gu&&(a==="function"||a==="symbol"),Zv=(n,a,r,u)=>{const s=(f,m)=>{const p=u.push(f)-1;return r.set(m,p),p},h=f=>{if(r.has(f))return r.get(f);let[m,p]=Ra(f);switch(m){case gu:{let x=f;switch(p){case"bigint":m=yg,x=f.toString();break;case"function":case"symbol":if(n)throw new TypeError("unable to serialize "+p);x=null;break;case"undefined":return s([pg],f)}return s([m,x],f)}case Ua:{if(p){let v=f;return p==="DataView"?v=new Uint8Array(f.buffer):p==="ArrayBuffer"&&(v=new Uint8Array(f)),s([p,[...v]],f)}const x=[],y=s([m,x],f);for(const v of f)x.push(h(v));return y}case su:{if(p)switch(p){case"BigInt":return s([p,f.toString()],f);case"Boolean":case"Number":case"String":return s([p,f.valueOf()],f)}if(a&&"toJSON"in f)return h(f.toJSON());const x=[],y=s([m,x],f);for(const v of Xv(f))(n||!lu(Ra(f[v])))&&x.push([h(v),h(f[v])]);return y}case zs:return s([m,isNaN(f.getTime())?ql:f.toISOString()],f);case Cs:{const{source:x,flags:y}=f;return s([m,{source:x,flags:y}],f)}case ws:{const x=[],y=s([m,x],f);for(const[v,S]of f)(n||!(lu(Ra(v))||lu(Ra(S))))&&x.push([h(v),h(S)]);return y}case Ms:{const x=[],y=s([m,x],f);for(const v of f)(n||!lu(Ra(v)))&&x.push(h(v));return y}}const{message:d}=f;return s([m,{name:p,message:d}],f)};return h},yp=(n,{json:a,lossy:r}={})=>{const u=[];return Zv(!(a||r),!!a,new Map,u)(n),u},fu=typeof structuredClone=="function"?(n,a)=>a&&("json"in a||"lossy"in a)?gp(yp(n,a)):structuredClone(n):(n,a)=>gp(yp(n,a));function Kv(n,a){const r=[{type:"text",value:"↩"}];return a>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(a)}]}),r}function Fv(n,a){return"Back to reference "+(n+1)+(a>1?"-"+a:"")}function Jv(n){const a=typeof n.options.clobberPrefix=="string"?n.options.clobberPrefix:"user-content-",r=n.options.footnoteBackContent||Kv,u=n.options.footnoteBackLabel||Fv,s=n.options.footnoteLabel||"Footnotes",h=n.options.footnoteLabelTagName||"h2",f=n.options.footnoteLabelProperties||{className:["sr-only"]},m=[];let p=-1;for(;++p0&&C.push({type:"text",value:" "});let K=typeof r=="string"?r:r(p,S);typeof K=="string"&&(K={type:"text",value:K}),C.push({type:"element",tagName:"a",properties:{href:"#"+a+"fnref-"+v+(S>1?"-"+S:""),dataFootnoteBackref:"",ariaLabel:typeof u=="string"?u:u(p,S),className:["data-footnote-backref"]},children:Array.isArray(K)?K:[K]})}const V=x[x.length-1];if(V&&V.type==="element"&&V.tagName==="p"){const K=V.children[V.children.length-1];K&&K.type==="text"?K.value+=" ":V.children.push({type:"text",value:" "}),V.children.push(...C)}else x.push(...C);const O={type:"element",tagName:"li",properties:{id:a+"fn-"+v},children:n.wrap(x,!0)};n.patch(d,O),m.push(O)}if(m.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:h,properties:{...fu(f),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:n.wrap(m,!0)},{type:"text",value:` -`}]}}const yu=(function(n){if(n==null)return Pv;if(typeof n=="function")return xu(n);if(typeof n=="object")return Array.isArray(n)?Iv(n):$v(n);if(typeof n=="string")return Wv(n);throw new Error("Expected function, string, or object as test")});function Iv(n){const a=[];let r=-1;for(;++r":""))+")"})}return v;function v(){let S=bg,C,U,V;if((!a||h(p,d,x[x.length-1]||void 0))&&(S=lS(r(p,x)),S[0]===ss))return S;if("children"in p&&p.children){const O=p;if(O.children&&S[0]!==nS)for(U=(u?O.children.length:-1)+f,V=x.concat(O);U>-1&&U0&&r.push({type:"text",value:` -`}),r}function xp(n){let a=0,r=n.charCodeAt(a);for(;r===9||r===32;)a++,r=n.charCodeAt(a);return n.slice(a)}function bp(n,a){const r=aS(n,a),u=r.one(n,void 0),s=Jv(r),h=Array.isArray(u)?{type:"root",children:u}:u||{type:"root",children:[]};return s&&h.children.push({type:"text",value:` -`},s),h}function sS(n,a){return n&&"run"in n?async function(r,u){const s=bp(r,{file:u,...a});await n.run(s,u)}:function(r,u){return bp(r,{file:u,...n||a})}}function vp(n){if(n)throw n}var Qo,Sp;function fS(){if(Sp)return Qo;Sp=1;var n=Object.prototype.hasOwnProperty,a=Object.prototype.toString,r=Object.defineProperty,u=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):a.call(d)==="[object Array]"},h=function(d){if(!d||a.call(d)!=="[object Object]")return!1;var x=n.call(d,"constructor"),y=d.constructor&&d.constructor.prototype&&n.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!x&&!y)return!1;var v;for(v in d);return typeof v>"u"||n.call(d,v)},f=function(d,x){r&&x.name==="__proto__"?r(d,x.name,{enumerable:!0,configurable:!0,value:x.newValue,writable:!0}):d[x.name]=x.newValue},m=function(d,x){if(x==="__proto__")if(n.call(d,x)){if(u)return u(d,x).value}else return;return d[x]};return Qo=function p(){var d,x,y,v,S,C,U=arguments[0],V=1,O=arguments.length,K=!1;for(typeof U=="boolean"&&(K=U,U=arguments[1]||{},V=2),(U==null||typeof U!="object"&&typeof U!="function")&&(U={});Vf.length;let p;m&&f.push(s);try{p=n.apply(this,f)}catch(d){const x=d;if(m&&r)throw x;return s(x)}m||(p&&p.then&&typeof p.then=="function"?p.then(h,s):p instanceof Error?s(p):h(p))}function s(f,...m){r||(r=!0,a(f,...m))}function h(f){s(null,f)}}const xn={basename:pS,dirname:gS,extname:yS,join:xS,sep:"/"};function pS(n,a){if(a!==void 0&&typeof a!="string")throw new TypeError('"ext" argument must be a string');Va(n);let r=0,u=-1,s=n.length,h;if(a===void 0||a.length===0||a.length>n.length){for(;s--;)if(n.codePointAt(s)===47){if(h){r=s+1;break}}else u<0&&(h=!0,u=s+1);return u<0?"":n.slice(r,u)}if(a===n)return"";let f=-1,m=a.length-1;for(;s--;)if(n.codePointAt(s)===47){if(h){r=s+1;break}}else f<0&&(h=!0,f=s+1),m>-1&&(n.codePointAt(s)===a.codePointAt(m--)?m<0&&(u=s):(m=-1,u=f));return r===u?u=f:u<0&&(u=n.length),n.slice(r,u)}function gS(n){if(Va(n),n.length===0)return".";let a=-1,r=n.length,u;for(;--r;)if(n.codePointAt(r)===47){if(u){a=r;break}}else u||(u=!0);return a<0?n.codePointAt(0)===47?"/":".":a===1&&n.codePointAt(0)===47?"//":n.slice(0,a)}function yS(n){Va(n);let a=n.length,r=-1,u=0,s=-1,h=0,f;for(;a--;){const m=n.codePointAt(a);if(m===47){if(f){u=a+1;break}continue}r<0&&(f=!0,r=a+1),m===46?s<0?s=a:h!==1&&(h=1):s>-1&&(h=-1)}return s<0||r<0||h===0||h===1&&s===r-1&&s===u+1?"":n.slice(s,r)}function xS(...n){let a=-1,r;for(;++a0&&n.codePointAt(n.length-1)===47&&(r+="/"),a?"/"+r:r}function vS(n,a){let r="",u=0,s=-1,h=0,f=-1,m,p;for(;++f<=n.length;){if(f2){if(p=r.lastIndexOf("/"),p!==r.length-1){p<0?(r="",u=0):(r=r.slice(0,p),u=r.length-1-r.lastIndexOf("/")),s=f,h=0;continue}}else if(r.length>0){r="",u=0,s=f,h=0;continue}}a&&(r=r.length>0?r+"/..":"..",u=2)}else r.length>0?r+="/"+n.slice(s+1,f):r=n.slice(s+1,f),u=f-s-1;s=f,h=0}else m===46&&h>-1?h++:h=-1}return r}function Va(n){if(typeof n!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(n))}const SS={cwd:kS};function kS(){return"/"}function ds(n){return!!(n!==null&&typeof n=="object"&&"href"in n&&n.href&&"protocol"in n&&n.protocol&&n.auth===void 0)}function _S(n){if(typeof n=="string")n=new URL(n);else if(!ds(n)){const a=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+n+"`");throw a.code="ERR_INVALID_ARG_TYPE",a}if(n.protocol!=="file:"){const a=new TypeError("The URL must be of scheme file");throw a.code="ERR_INVALID_URL_SCHEME",a}return ES(n)}function ES(n){if(n.hostname!==""){const u=new TypeError('File URL host must be "localhost" or empty on darwin');throw u.code="ERR_INVALID_FILE_URL_HOST",u}const a=n.pathname;let r=-1;for(;++r0){let[S,...C]=x;const U=u[v][1];hs(U)&&hs(S)&&(S=Xo(!0,U,S)),u[v]=[d,S,...C]}}}}const CS=new Ds().freeze();function Jo(n,a){if(typeof a!="function")throw new TypeError("Cannot `"+n+"` without `parser`")}function Io(n,a){if(typeof a!="function")throw new TypeError("Cannot `"+n+"` without `compiler`")}function $o(n,a){if(a)throw new Error("Cannot call `"+n+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function _p(n){if(!hs(n)||typeof n.type!="string")throw new TypeError("Expected node, got `"+n+"`")}function Ep(n,a,r){if(!r)throw new Error("`"+n+"` finished async. Use `"+a+"` instead")}function iu(n){return wS(n)?n:new Sg(n)}function wS(n){return!!(n&&typeof n=="object"&&"message"in n&&"messages"in n)}function MS(n){return typeof n=="string"||NS(n)}function NS(n){return!!(n&&typeof n=="object"&&"byteLength"in n&&"byteOffset"in n)}const DS="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Ap=[],Tp={allowDangerousHtml:!0},OS=/^(https?|ircs?|mailto|xmpp)$/i,jS=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function RS(n){const a=LS(n),r=BS(n);return US(a.runSync(a.parse(r),r),n)}function LS(n){const a=n.rehypePlugins||Ap,r=n.remarkPlugins||Ap,u=n.remarkRehypeOptions?{...n.remarkRehypeOptions,...Tp}:Tp;return CS().use(gv).use(r).use(sS,u).use(a)}function BS(n){const a=n.children||"",r=new Sg;return typeof a=="string"&&(r.value=a),r}function US(n,a){const r=a.allowedElements,u=a.allowElement,s=a.components,h=a.disallowedElements,f=a.skipHtml,m=a.unwrapDisallowed,p=a.urlTransform||HS;for(const x of jS)Object.hasOwn(a,x.from)&&(""+x.from+(x.to?"use `"+x.to+"` instead":"remove it")+DS+x.id,void 0);return Ns(n,d),P0(n,{Fragment:k.Fragment,components:s,ignoreInvalidStyle:!0,jsx:k.jsx,jsxs:k.jsxs,passKeys:!0,passNode:!0});function d(x,y,v){if(x.type==="raw"&&v&&typeof y=="number")return f?v.children.splice(y,1):v.children[y]={type:"text",value:x.value},y;if(x.type==="element"){let S;for(S in Yo)if(Object.hasOwn(Yo,S)&&Object.hasOwn(x.properties,S)){const C=x.properties[S],U=Yo[S];(U===null||U.includes(x.tagName))&&(x.properties[S]=p(String(C||""),S,x))}}if(x.type==="element"){let S=r?!r.includes(x.tagName):h?h.includes(x.tagName):!1;if(!S&&u&&typeof y=="number"&&(S=!u(x,y,v)),S&&v&&typeof y=="number")return m&&x.children?v.children.splice(y,1,...x.children):v.children.splice(y,1),y}}}function HS(n){const a=n.indexOf(":"),r=n.indexOf("?"),u=n.indexOf("#"),s=n.indexOf("/");return a===-1||s!==-1&&a>s||r!==-1&&a>r||u!==-1&&a>u||OS.test(n.slice(0,a))?n:""}function zp(n,a){const r=String(n);if(typeof a!="string")throw new TypeError("Expected character");let u=0,s=r.indexOf(a);for(;s!==-1;)u++,s=r.indexOf(a,s+a.length);return u}function qS(n){if(typeof n!="string")throw new TypeError("Expected a string");return n.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function YS(n,a,r){const s=yu((r||{}).ignore||[]),h=GS(a);let f=-1;for(;++f0?{type:"text",value:L}:void 0),L===!1?v.lastIndex=ae+1:(C!==ae&&K.push({type:"text",value:d.value.slice(C,ae)}),Array.isArray(L)?K.push(...L):L&&K.push(L),C=ae+X[0].length,O=!0),!v.global)break;X=v.exec(d.value)}return O?(C?\]}]+$/.exec(n);if(!a)return[n,void 0];n=n.slice(0,a.index);let r=a[0],u=r.indexOf(")");const s=zp(n,"(");let h=zp(n,")");for(;u!==-1&&s>h;)n+=r.slice(0,u+1),r=r.slice(u+1),u=r.indexOf(")"),h++;return[n,r]}function kg(n,a){const r=n.input.charCodeAt(n.index-1);return(n.index===0||Gl(r)||mu(r))&&(!a||r!==47)}_g.peek=f2;function l2(){this.buffer()}function i2(n){this.enter({type:"footnoteReference",identifier:"",label:""},n)}function a2(){this.buffer()}function r2(n){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},n)}function u2(n){const a=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=sn(this.sliceSerialize(n)).toLowerCase(),r.label=a}function c2(n){this.exit(n)}function o2(n){const a=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=sn(this.sliceSerialize(n)).toLowerCase(),r.label=a}function s2(n){this.exit(n)}function f2(){return"["}function _g(n,a,r,u){const s=r.createTracker(u);let h=s.move("[^");const f=r.enter("footnoteReference"),m=r.enter("reference");return h+=s.move(r.safe(r.associationId(n),{after:"]",before:h})),m(),f(),h+=s.move("]"),h}function h2(){return{enter:{gfmFootnoteCallString:l2,gfmFootnoteCall:i2,gfmFootnoteDefinitionLabelString:a2,gfmFootnoteDefinition:r2},exit:{gfmFootnoteCallString:u2,gfmFootnoteCall:c2,gfmFootnoteDefinitionLabelString:o2,gfmFootnoteDefinition:s2}}}function d2(n){let a=!1;return n&&n.firstLineBlank&&(a=!0),{handlers:{footnoteDefinition:r,footnoteReference:_g},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(u,s,h,f){const m=h.createTracker(f);let p=m.move("[^");const d=h.enter("footnoteDefinition"),x=h.enter("label");return p+=m.move(h.safe(h.associationId(u),{before:p,after:"]"})),x(),p+=m.move("]:"),u.children&&u.children.length>0&&(m.shift(4),p+=m.move((a?` -`:" ")+h.indentLines(h.containerFlow(u,m.current()),a?Eg:m2))),d(),p}}function m2(n,a,r){return a===0?n:Eg(n,a,r)}function Eg(n,a,r){return(r?"":" ")+n}const p2=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Ag.peek=v2;function g2(){return{canContainEols:["delete"],enter:{strikethrough:x2},exit:{strikethrough:b2}}}function y2(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:p2}],handlers:{delete:Ag}}}function x2(n){this.enter({type:"delete",children:[]},n)}function b2(n){this.exit(n)}function Ag(n,a,r,u){const s=r.createTracker(u),h=r.enter("strikethrough");let f=s.move("~~");return f+=r.containerPhrasing(n,{...s.current(),before:f,after:"~"}),f+=s.move("~~"),h(),f}function v2(){return"~"}function S2(n){return n.length}function k2(n,a){const r=a||{},u=(r.align||[]).concat(),s=r.stringLength||S2,h=[],f=[],m=[],p=[];let d=0,x=-1;for(;++xd&&(d=n[x].length);++Op[O])&&(p[O]=X)}U.push(K)}f[x]=U,m[x]=V}let y=-1;if(typeof u=="object"&&"length"in u)for(;++yp[y]&&(p[y]=K),S[y]=K),v[y]=X}f.splice(1,0,v),m.splice(1,0,S),x=-1;const C=[];for(;++x "),h.shift(2);const f=r.indentLines(r.containerFlow(n,h.current()),A2);return s(),f}function A2(n,a,r){return">"+(r?"":" ")+n}function T2(n,a){return wp(n,a.inConstruct,!0)&&!wp(n,a.notInConstruct,!1)}function wp(n,a,r){if(typeof a=="string"&&(a=[a]),!a||a.length===0)return r;let u=-1;for(;++uf&&(f=h):h=1,s=u+a.length,u=r.indexOf(a,s);return f}function C2(n,a){return!!(a.options.fences===!1&&n.value&&!n.lang&&/[^ \r\n]/.test(n.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(n.value))}function w2(n){const a=n.options.fence||"`";if(a!=="`"&&a!=="~")throw new Error("Cannot serialize code with `"+a+"` for `options.fence`, expected `` ` `` or `~`");return a}function M2(n,a,r,u){const s=w2(r),h=n.value||"",f=s==="`"?"GraveAccent":"Tilde";if(C2(n,r)){const y=r.enter("codeIndented"),v=r.indentLines(h,N2);return y(),v}const m=r.createTracker(u),p=s.repeat(Math.max(z2(h,s)+1,3)),d=r.enter("codeFenced");let x=m.move(p);if(n.lang){const y=r.enter(`codeFencedLang${f}`);x+=m.move(r.safe(n.lang,{before:x,after:" ",encode:["`"],...m.current()})),y()}if(n.lang&&n.meta){const y=r.enter(`codeFencedMeta${f}`);x+=m.move(" "),x+=m.move(r.safe(n.meta,{before:x,after:` -`,encode:["`"],...m.current()})),y()}return x+=m.move(` -`),h&&(x+=m.move(h+` -`)),x+=m.move(p),d(),x}function N2(n,a,r){return(r?"":" ")+n}function Os(n){const a=n.options.quote||'"';if(a!=='"'&&a!=="'")throw new Error("Cannot serialize title with `"+a+"` for `options.quote`, expected `\"`, or `'`");return a}function D2(n,a,r,u){const s=Os(r),h=s==='"'?"Quote":"Apostrophe",f=r.enter("definition");let m=r.enter("label");const p=r.createTracker(u);let d=p.move("[");return d+=p.move(r.safe(r.associationId(n),{before:d,after:"]",...p.current()})),d+=p.move("]: "),m(),!n.url||/[\0- \u007F]/.test(n.url)?(m=r.enter("destinationLiteral"),d+=p.move("<"),d+=p.move(r.safe(n.url,{before:d,after:">",...p.current()})),d+=p.move(">")):(m=r.enter("destinationRaw"),d+=p.move(r.safe(n.url,{before:d,after:n.title?" ":` -`,...p.current()}))),m(),n.title&&(m=r.enter(`title${h}`),d+=p.move(" "+s),d+=p.move(r.safe(n.title,{before:d,after:s,...p.current()})),d+=p.move(s),m()),f(),d}function O2(n){const a=n.options.emphasis||"*";if(a!=="*"&&a!=="_")throw new Error("Cannot serialize emphasis with `"+a+"` for `options.emphasis`, expected `*`, or `_`");return a}function qa(n){return"&#x"+n.toString(16).toUpperCase()+";"}function hu(n,a,r){const u=Di(n),s=Di(a);return u===void 0?s===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:u===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Tg.peek=j2;function Tg(n,a,r,u){const s=O2(r),h=r.enter("emphasis"),f=r.createTracker(u),m=f.move(s);let p=f.move(r.containerPhrasing(n,{after:s,before:m,...f.current()}));const d=p.charCodeAt(0),x=hu(u.before.charCodeAt(u.before.length-1),d,s);x.inside&&(p=qa(d)+p.slice(1));const y=p.charCodeAt(p.length-1),v=hu(u.after.charCodeAt(0),y,s);v.inside&&(p=p.slice(0,-1)+qa(y));const S=f.move(s);return h(),r.attentionEncodeSurroundingInfo={after:v.outside,before:x.outside},m+p+S}function j2(n,a,r){return r.options.emphasis||"*"}function R2(n,a){let r=!1;return Ns(n,function(u){if("value"in u&&/\r?\n|\r/.test(u.value)||u.type==="break")return r=!0,ss}),!!((!n.depth||n.depth<3)&&Es(n)&&(a.options.setext||r))}function L2(n,a,r,u){const s=Math.max(Math.min(6,n.depth||1),1),h=r.createTracker(u);if(R2(n,r)){const x=r.enter("headingSetext"),y=r.enter("phrasing"),v=r.containerPhrasing(n,{...h.current(),before:` -`,after:` -`});return y(),x(),v+` -`+(s===1?"=":"-").repeat(v.length-(Math.max(v.lastIndexOf("\r"),v.lastIndexOf(` -`))+1))}const f="#".repeat(s),m=r.enter("headingAtx"),p=r.enter("phrasing");h.move(f+" ");let d=r.containerPhrasing(n,{before:"# ",after:` -`,...h.current()});return/^[\t ]/.test(d)&&(d=qa(d.charCodeAt(0))+d.slice(1)),d=d?f+" "+d:f,r.options.closeAtx&&(d+=" "+f),p(),m(),d}zg.peek=B2;function zg(n){return n.value||""}function B2(){return"<"}Cg.peek=U2;function Cg(n,a,r,u){const s=Os(r),h=s==='"'?"Quote":"Apostrophe",f=r.enter("image");let m=r.enter("label");const p=r.createTracker(u);let d=p.move("![");return d+=p.move(r.safe(n.alt,{before:d,after:"]",...p.current()})),d+=p.move("]("),m(),!n.url&&n.title||/[\0- \u007F]/.test(n.url)?(m=r.enter("destinationLiteral"),d+=p.move("<"),d+=p.move(r.safe(n.url,{before:d,after:">",...p.current()})),d+=p.move(">")):(m=r.enter("destinationRaw"),d+=p.move(r.safe(n.url,{before:d,after:n.title?" ":")",...p.current()}))),m(),n.title&&(m=r.enter(`title${h}`),d+=p.move(" "+s),d+=p.move(r.safe(n.title,{before:d,after:s,...p.current()})),d+=p.move(s),m()),d+=p.move(")"),f(),d}function U2(){return"!"}wg.peek=H2;function wg(n,a,r,u){const s=n.referenceType,h=r.enter("imageReference");let f=r.enter("label");const m=r.createTracker(u);let p=m.move("![");const d=r.safe(n.alt,{before:p,after:"]",...m.current()});p+=m.move(d+"]["),f();const x=r.stack;r.stack=[],f=r.enter("reference");const y=r.safe(r.associationId(n),{before:p,after:"]",...m.current()});return f(),r.stack=x,h(),s==="full"||!d||d!==y?p+=m.move(y+"]"):s==="shortcut"?p=p.slice(0,-1):p+=m.move("]"),p}function H2(){return"!"}Mg.peek=q2;function Mg(n,a,r){let u=n.value||"",s="`",h=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(u);)s+="`";for(/[^ \r\n]/.test(u)&&(/^[ \r\n]/.test(u)&&/[ \r\n]$/.test(u)||/^`|`$/.test(u))&&(u=" "+u+" ");++h\u007F]/.test(n.url))}Dg.peek=Y2;function Dg(n,a,r,u){const s=Os(r),h=s==='"'?"Quote":"Apostrophe",f=r.createTracker(u);let m,p;if(Ng(n,r)){const x=r.stack;r.stack=[],m=r.enter("autolink");let y=f.move("<");return y+=f.move(r.containerPhrasing(n,{before:y,after:">",...f.current()})),y+=f.move(">"),m(),r.stack=x,y}m=r.enter("link"),p=r.enter("label");let d=f.move("[");return d+=f.move(r.containerPhrasing(n,{before:d,after:"](",...f.current()})),d+=f.move("]("),p(),!n.url&&n.title||/[\0- \u007F]/.test(n.url)?(p=r.enter("destinationLiteral"),d+=f.move("<"),d+=f.move(r.safe(n.url,{before:d,after:">",...f.current()})),d+=f.move(">")):(p=r.enter("destinationRaw"),d+=f.move(r.safe(n.url,{before:d,after:n.title?" ":")",...f.current()}))),p(),n.title&&(p=r.enter(`title${h}`),d+=f.move(" "+s),d+=f.move(r.safe(n.title,{before:d,after:s,...f.current()})),d+=f.move(s),p()),d+=f.move(")"),m(),d}function Y2(n,a,r){return Ng(n,r)?"<":"["}Og.peek=G2;function Og(n,a,r,u){const s=n.referenceType,h=r.enter("linkReference");let f=r.enter("label");const m=r.createTracker(u);let p=m.move("[");const d=r.containerPhrasing(n,{before:p,after:"]",...m.current()});p+=m.move(d+"]["),f();const x=r.stack;r.stack=[],f=r.enter("reference");const y=r.safe(r.associationId(n),{before:p,after:"]",...m.current()});return f(),r.stack=x,h(),s==="full"||!d||d!==y?p+=m.move(y+"]"):s==="shortcut"?p=p.slice(0,-1):p+=m.move("]"),p}function G2(){return"["}function js(n){const a=n.options.bullet||"*";if(a!=="*"&&a!=="+"&&a!=="-")throw new Error("Cannot serialize items with `"+a+"` for `options.bullet`, expected `*`, `+`, or `-`");return a}function V2(n){const a=js(n),r=n.options.bulletOther;if(!r)return a==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===a)throw new Error("Expected `bullet` (`"+a+"`) and `bulletOther` (`"+r+"`) to be different");return r}function Q2(n){const a=n.options.bulletOrdered||".";if(a!=="."&&a!==")")throw new Error("Cannot serialize items with `"+a+"` for `options.bulletOrdered`, expected `.` or `)`");return a}function jg(n){const a=n.options.rule||"*";if(a!=="*"&&a!=="-"&&a!=="_")throw new Error("Cannot serialize rules with `"+a+"` for `options.rule`, expected `*`, `-`, or `_`");return a}function X2(n,a,r,u){const s=r.enter("list"),h=r.bulletCurrent;let f=n.ordered?Q2(r):js(r);const m=n.ordered?f==="."?")":".":V2(r);let p=a&&r.bulletLastUsed?f===r.bulletLastUsed:!1;if(!n.ordered){const x=n.children?n.children[0]:void 0;if((f==="*"||f==="-")&&x&&(!x.children||!x.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(p=!0),jg(r)===f&&x){let y=-1;for(;++y-1?a.start:1)+(r.options.incrementListMarker===!1?0:a.children.indexOf(n))+h);let f=h.length+1;(s==="tab"||s==="mixed"&&(a&&a.type==="list"&&a.spread||n.spread))&&(f=Math.ceil(f/4)*4);const m=r.createTracker(u);m.move(h+" ".repeat(f-h.length)),m.shift(f);const p=r.enter("listItem"),d=r.indentLines(r.containerFlow(n,m.current()),x);return p(),d;function x(y,v,S){return v?(S?"":" ".repeat(f))+y:(S?h:h+" ".repeat(f-h.length))+y}}function F2(n,a,r,u){const s=r.enter("paragraph"),h=r.enter("phrasing"),f=r.containerPhrasing(n,u);return h(),s(),f}const J2=yu(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function I2(n,a,r,u){return(n.children.some(function(f){return J2(f)})?r.containerPhrasing:r.containerFlow).call(r,n,u)}function $2(n){const a=n.options.strong||"*";if(a!=="*"&&a!=="_")throw new Error("Cannot serialize strong with `"+a+"` for `options.strong`, expected `*`, or `_`");return a}Rg.peek=W2;function Rg(n,a,r,u){const s=$2(r),h=r.enter("strong"),f=r.createTracker(u),m=f.move(s+s);let p=f.move(r.containerPhrasing(n,{after:s,before:m,...f.current()}));const d=p.charCodeAt(0),x=hu(u.before.charCodeAt(u.before.length-1),d,s);x.inside&&(p=qa(d)+p.slice(1));const y=p.charCodeAt(p.length-1),v=hu(u.after.charCodeAt(0),y,s);v.inside&&(p=p.slice(0,-1)+qa(y));const S=f.move(s+s);return h(),r.attentionEncodeSurroundingInfo={after:v.outside,before:x.outside},m+p+S}function W2(n,a,r){return r.options.strong||"*"}function P2(n,a,r,u){return r.safe(n.value,u)}function ek(n){const a=n.options.ruleRepetition||3;if(a<3)throw new Error("Cannot serialize rules with repetition `"+a+"` for `options.ruleRepetition`, expected `3` or more");return a}function tk(n,a,r){const u=(jg(r)+(r.options.ruleSpaces?" ":"")).repeat(ek(r));return r.options.ruleSpaces?u.slice(0,-1):u}const Lg={blockquote:E2,break:Mp,code:M2,definition:D2,emphasis:Tg,hardBreak:Mp,heading:L2,html:zg,image:Cg,imageReference:wg,inlineCode:Mg,link:Dg,linkReference:Og,list:X2,listItem:K2,paragraph:F2,root:I2,strong:Rg,text:P2,thematicBreak:tk};function nk(){return{enter:{table:lk,tableData:Np,tableHeader:Np,tableRow:ak},exit:{codeText:rk,table:ik,tableData:ts,tableHeader:ts,tableRow:ts}}}function lk(n){const a=n._align;this.enter({type:"table",align:a.map(function(r){return r==="none"?null:r}),children:[]},n),this.data.inTable=!0}function ik(n){this.exit(n),this.data.inTable=void 0}function ak(n){this.enter({type:"tableRow",children:[]},n)}function ts(n){this.exit(n)}function Np(n){this.enter({type:"tableCell",children:[]},n)}function rk(n){let a=this.resume();this.data.inTable&&(a=a.replace(/\\([\\|])/g,uk));const r=this.stack[this.stack.length-1];r.type,r.value=a,this.exit(n)}function uk(n,a){return a==="|"?a:n}function ck(n){const a=n||{},r=a.tableCellPadding,u=a.tablePipeAlign,s=a.stringLength,h=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:v,table:f,tableCell:p,tableRow:m}};function f(S,C,U,V){return d(x(S,U,V),S.align)}function m(S,C,U,V){const O=y(S,U,V),K=d([O]);return K.slice(0,K.indexOf(` -`))}function p(S,C,U,V){const O=U.enter("tableCell"),K=U.enter("phrasing"),X=U.containerPhrasing(S,{...V,before:h,after:h});return K(),O(),X}function d(S,C){return k2(S,{align:C,alignDelimiters:u,padding:r,stringLength:s})}function x(S,C,U){const V=S.children;let O=-1;const K=[],X=C.enter("table");for(;++O0&&!r&&(n[n.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const Tk={tokenize:jk,partial:!0};function zk(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:Nk,continuation:{tokenize:Dk},exit:Ok}},text:{91:{name:"gfmFootnoteCall",tokenize:Mk},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:Ck,resolveTo:wk}}}}function Ck(n,a,r){const u=this;let s=u.events.length;const h=u.parser.gfmFootnotes||(u.parser.gfmFootnotes=[]);let f;for(;s--;){const p=u.events[s][1];if(p.type==="labelImage"){f=p;break}if(p.type==="gfmFootnoteCall"||p.type==="labelLink"||p.type==="label"||p.type==="image"||p.type==="link")break}return m;function m(p){if(!f||!f._balanced)return r(p);const d=sn(u.sliceSerialize({start:f.end,end:u.now()}));return d.codePointAt(0)!==94||!h.includes(d.slice(1))?r(p):(n.enter("gfmFootnoteCallLabelMarker"),n.consume(p),n.exit("gfmFootnoteCallLabelMarker"),a(p))}}function wk(n,a){let r=n.length;for(;r--;)if(n[r][1].type==="labelImage"&&n[r][0]==="enter"){n[r][1];break}n[r+1][1].type="data",n[r+3][1].type="gfmFootnoteCallLabelMarker";const u={type:"gfmFootnoteCall",start:Object.assign({},n[r+3][1].start),end:Object.assign({},n[n.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},n[r+3][1].end),end:Object.assign({},n[r+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const h={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},n[n.length-1][1].start)},f={type:"chunkString",contentType:"string",start:Object.assign({},h.start),end:Object.assign({},h.end)},m=[n[r+1],n[r+2],["enter",u,a],n[r+3],n[r+4],["enter",s,a],["exit",s,a],["enter",h,a],["enter",f,a],["exit",f,a],["exit",h,a],n[n.length-2],n[n.length-1],["exit",u,a]];return n.splice(r,n.length-r+1,...m),n}function Mk(n,a,r){const u=this,s=u.parser.gfmFootnotes||(u.parser.gfmFootnotes=[]);let h=0,f;return m;function m(y){return n.enter("gfmFootnoteCall"),n.enter("gfmFootnoteCallLabelMarker"),n.consume(y),n.exit("gfmFootnoteCallLabelMarker"),p}function p(y){return y!==94?r(y):(n.enter("gfmFootnoteCallMarker"),n.consume(y),n.exit("gfmFootnoteCallMarker"),n.enter("gfmFootnoteCallString"),n.enter("chunkString").contentType="string",d)}function d(y){if(h>999||y===93&&!f||y===null||y===91||Je(y))return r(y);if(y===93){n.exit("chunkString");const v=n.exit("gfmFootnoteCallString");return s.includes(sn(u.sliceSerialize(v)))?(n.enter("gfmFootnoteCallLabelMarker"),n.consume(y),n.exit("gfmFootnoteCallLabelMarker"),n.exit("gfmFootnoteCall"),a):r(y)}return Je(y)||(f=!0),h++,n.consume(y),y===92?x:d}function x(y){return y===91||y===92||y===93?(n.consume(y),h++,d):d(y)}}function Nk(n,a,r){const u=this,s=u.parser.gfmFootnotes||(u.parser.gfmFootnotes=[]);let h,f=0,m;return p;function p(C){return n.enter("gfmFootnoteDefinition")._container=!0,n.enter("gfmFootnoteDefinitionLabel"),n.enter("gfmFootnoteDefinitionLabelMarker"),n.consume(C),n.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(C){return C===94?(n.enter("gfmFootnoteDefinitionMarker"),n.consume(C),n.exit("gfmFootnoteDefinitionMarker"),n.enter("gfmFootnoteDefinitionLabelString"),n.enter("chunkString").contentType="string",x):r(C)}function x(C){if(f>999||C===93&&!m||C===null||C===91||Je(C))return r(C);if(C===93){n.exit("chunkString");const U=n.exit("gfmFootnoteDefinitionLabelString");return h=sn(u.sliceSerialize(U)),n.enter("gfmFootnoteDefinitionLabelMarker"),n.consume(C),n.exit("gfmFootnoteDefinitionLabelMarker"),n.exit("gfmFootnoteDefinitionLabel"),v}return Je(C)||(m=!0),f++,n.consume(C),C===92?y:x}function y(C){return C===91||C===92||C===93?(n.consume(C),f++,x):x(C)}function v(C){return C===58?(n.enter("definitionMarker"),n.consume(C),n.exit("definitionMarker"),s.includes(h)||s.push(h),Le(n,S,"gfmFootnoteDefinitionWhitespace")):r(C)}function S(C){return a(C)}}function Dk(n,a,r){return n.check(Ga,a,n.attempt(Tk,a,r))}function Ok(n){n.exit("gfmFootnoteDefinition")}function jk(n,a,r){const u=this;return Le(n,s,"gfmFootnoteDefinitionIndent",5);function s(h){const f=u.events[u.events.length-1];return f&&f[1].type==="gfmFootnoteDefinitionIndent"&&f[2].sliceSerialize(f[1],!0).length===4?a(h):r(h)}}function Rk(n){let r=(n||{}).singleTilde;const u={name:"strikethrough",tokenize:h,resolveAll:s};return r==null&&(r=!0),{text:{126:u},insideSpan:{null:[u]},attentionMarkers:{null:[126]}};function s(f,m){let p=-1;for(;++p1?p(C):(f.consume(C),y++,S);if(y<2&&!r)return p(C);const V=f.exit("strikethroughSequenceTemporary"),O=Di(C);return V._open=!O||O===2&&!!U,V._close=!U||U===2&&!!O,m(C)}}}class Lk{constructor(){this.map=[]}add(a,r,u){Bk(this,a,r,u)}consume(a){if(this.map.sort(function(h,f){return h[0]-f[0]}),this.map.length===0)return;let r=this.map.length;const u=[];for(;r>0;)r-=1,u.push(a.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),a.length=this.map[r][0];u.push(a.slice()),a.length=0;let s=u.pop();for(;s;){for(const h of s)a.push(h);s=u.pop()}this.map.length=0}}function Bk(n,a,r,u){let s=0;if(!(r===0&&u.length===0)){for(;s-1;){const ue=u.events[ne][1].type;if(ue==="lineEnding"||ue==="linePrefix")ne--;else break}const le=ne>-1?u.events[ne][1].type:null,Ce=le==="tableHead"||le==="tableRow"?L:p;return Ce===L&&u.parser.lazy[u.now().line]?r(R):Ce(R)}function p(R){return n.enter("tableHead"),n.enter("tableRow"),d(R)}function d(R){return R===124||(f=!0,h+=1),x(R)}function x(R){return R===null?r(R):pe(R)?h>1?(h=0,u.interrupt=!0,n.exit("tableRow"),n.enter("lineEnding"),n.consume(R),n.exit("lineEnding"),S):r(R):De(R)?Le(n,x,"whitespace")(R):(h+=1,f&&(f=!1,s+=1),R===124?(n.enter("tableCellDivider"),n.consume(R),n.exit("tableCellDivider"),f=!0,x):(n.enter("data"),y(R)))}function y(R){return R===null||R===124||Je(R)?(n.exit("data"),x(R)):(n.consume(R),R===92?v:y)}function v(R){return R===92||R===124?(n.consume(R),y):y(R)}function S(R){return u.interrupt=!1,u.parser.lazy[u.now().line]?r(R):(n.enter("tableDelimiterRow"),f=!1,De(R)?Le(n,C,"linePrefix",u.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):C(R))}function C(R){return R===45||R===58?V(R):R===124?(f=!0,n.enter("tableCellDivider"),n.consume(R),n.exit("tableCellDivider"),U):ee(R)}function U(R){return De(R)?Le(n,V,"whitespace")(R):V(R)}function V(R){return R===58?(h+=1,f=!0,n.enter("tableDelimiterMarker"),n.consume(R),n.exit("tableDelimiterMarker"),O):R===45?(h+=1,O(R)):R===null||pe(R)?ae(R):ee(R)}function O(R){return R===45?(n.enter("tableDelimiterFiller"),K(R)):ee(R)}function K(R){return R===45?(n.consume(R),K):R===58?(f=!0,n.exit("tableDelimiterFiller"),n.enter("tableDelimiterMarker"),n.consume(R),n.exit("tableDelimiterMarker"),X):(n.exit("tableDelimiterFiller"),X(R))}function X(R){return De(R)?Le(n,ae,"whitespace")(R):ae(R)}function ae(R){return R===124?C(R):R===null||pe(R)?!f||s!==h?ee(R):(n.exit("tableDelimiterRow"),n.exit("tableHead"),a(R)):ee(R)}function ee(R){return r(R)}function L(R){return n.enter("tableRow"),J(R)}function J(R){return R===124?(n.enter("tableCellDivider"),n.consume(R),n.exit("tableCellDivider"),J):R===null||pe(R)?(n.exit("tableRow"),a(R)):De(R)?Le(n,J,"whitespace")(R):(n.enter("data"),he(R))}function he(R){return R===null||R===124||Je(R)?(n.exit("data"),J(R)):(n.consume(R),R===92?xe:he)}function xe(R){return R===92||R===124?(n.consume(R),he):he(R)}}function Yk(n,a){let r=-1,u=!0,s=0,h=[0,0,0,0],f=[0,0,0,0],m=!1,p=0,d,x,y;const v=new Lk;for(;++rr[2]+1){const C=r[2]+1,U=r[3]-r[2]-1;n.add(C,U,[])}}n.add(r[3]+1,0,[["exit",y,a]])}return s!==void 0&&(h.end=Object.assign({},Ni(a.events,s)),n.add(s,0,[["exit",h,a]]),h=void 0),h}function Op(n,a,r,u,s){const h=[],f=Ni(a.events,r);s&&(s.end=Object.assign({},f),h.push(["exit",s,a])),u.end=Object.assign({},f),h.push(["exit",u,a]),n.add(r+1,0,h)}function Ni(n,a){const r=n[a],u=r[0]==="enter"?"start":"end";return r[1][u]}const Gk={name:"tasklistCheck",tokenize:Qk};function Vk(){return{text:{91:Gk}}}function Qk(n,a,r){const u=this;return s;function s(p){return u.previous!==null||!u._gfmTasklistFirstContentOfListItem?r(p):(n.enter("taskListCheck"),n.enter("taskListCheckMarker"),n.consume(p),n.exit("taskListCheckMarker"),h)}function h(p){return Je(p)?(n.enter("taskListCheckValueUnchecked"),n.consume(p),n.exit("taskListCheckValueUnchecked"),f):p===88||p===120?(n.enter("taskListCheckValueChecked"),n.consume(p),n.exit("taskListCheckValueChecked"),f):r(p)}function f(p){return p===93?(n.enter("taskListCheckMarker"),n.consume(p),n.exit("taskListCheckMarker"),n.exit("taskListCheck"),m):r(p)}function m(p){return pe(p)?a(p):De(p)?n.check({tokenize:Xk},a,r)(p):r(p)}}function Xk(n,a,r){return Le(n,u,"whitespace");function u(s){return s===null?r(s):a(s)}}function Zk(n){return eg([yk(),zk(),Rk(n),Hk(),Vk()])}const Kk={};function Fk(n){const a=this,r=n||Kk,u=a.data(),s=u.micromarkExtensions||(u.micromarkExtensions=[]),h=u.fromMarkdownExtensions||(u.fromMarkdownExtensions=[]),f=u.toMarkdownExtensions||(u.toMarkdownExtensions=[]);s.push(Zk(r)),h.push(dk()),f.push(mk(r))}/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Jk=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Xg=(...n)=>n.filter((a,r,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===r).join(" ").trim();/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var Ik={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const $k=be.forwardRef(({color:n="currentColor",size:a=24,strokeWidth:r=2,absoluteStrokeWidth:u,className:s="",children:h,iconNode:f,...m},p)=>be.createElement("svg",{ref:p,...Ik,width:a,height:a,stroke:n,strokeWidth:u?Number(r)*24/Number(a):r,className:Xg("lucide",s),...m},[...f.map(([d,x])=>be.createElement(d,x)),...Array.isArray(h)?h:[h]]));/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ft=(n,a)=>{const r=be.forwardRef(({className:u,...s},h)=>be.createElement($k,{ref:h,iconNode:a,className:Xg(`lucide-${Jk(n)}`,u),...s}));return r.displayName=`${n}`,r};/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Zg=ft("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Wk=ft("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Kg=ft("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pk=ft("CircleStop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const e_=ft("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Fg=ft("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const t_=ft("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const n_=ft("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const l_=ft("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const i_=ft("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ls=ft("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Jg=ft("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const a_=ft("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const r_=ft("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ps=ft("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ig=ft("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const u_=ft("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const c_=ft("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const o_=ft("Timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]),$g=new URL(".",window.location.href).pathname;async function yl(n,a){const r=await fetch(`${$g}${n.replace(/^\//,"")}`,{headers:{"Content-Type":"application/json",...(a==null?void 0:a.headers)||{}},...a}),u=await r.text(),s=u?JSON.parse(u):{};if(!r.ok)throw new Error(s.error||r.statusText);return s}function kt(...n){return n.filter(Boolean).join(" ")}function ns(n,a=2500,r=[]){const[u,s]=be.useState(null),h=async()=>{try{const f=await n();s(f)}catch{}};return be.useEffect(()=>{h();const f=setInterval(h,a);return()=>clearInterval(f)},r),{data:u,refresh:h}}const Oi=[{role:"assistant",content:"Select a job, then ask about metrics, runtime, logs, or how to start the next AReno task."}],s_="areno-dashboard-agent-chat",Wg="areno-dashboard-agent-chat-sessions",jp="areno-dashboard-agent-active-chat",Rp="areno-dashboard-agent-draft";function f_(){try{const n=JSON.parse(localStorage.getItem(s_)||"[]");return Array.isArray(n)&&n.length?n:Oi}catch{return Oi}}function cu(n=Oi,a="New chat"){const r=Date.now();return{id:`chat-${r}-${Math.random().toString(16).slice(2)}`,title:a,createdAt:r,updatedAt:r,messages:n}}function h_(){try{const n=JSON.parse(localStorage.getItem(Wg)||"[]");if(Array.isArray(n)&&n.length)return n.map(a=>{var r;return{...a,messages:(r=a.messages)!=null&&r.length?a.messages:Oi}})}catch{}return[cu(f_(),"Default chat")]}function d_(n,a="New chat"){const r=n.find(s=>s.role==="user"&&s.content);if(!r)return a;const u=r.content.replace(/\s+/g," ").trim();return u.length>42?`${u.slice(0,42)}...`:u}const m_={ckpt:"Qwen/Qwen3-0.6B",dataset_path:"yahma/alpaca-cleaned:train",dataset_loader_fn:"examples/sft/alpaca/dataset_loader.py",reward_fn_path:"",ref_ckpt:"",reward_ckpt:"",critic_ckpt:"",agent_fn:"",algo:"sft",model_hub:"modelscope",epochs:10,max_steps:5,world_size:1,tp_size:1,attn_backend:"flash",activation_checkpointing:!0,drop_rollout_state:!1,eager_decode:!1,disable_thinking:!1,batch_size:8,n_samples:8,mini_bs:1,score_micro_bs:8,gradient_accumulation_steps:"",max_prompt_tokens:1024,max_context_len:2048,max_new_tokens:1024,max_running_prompts:"",temperature:1,top_k:-1,top_p:1,greedy:!1,agent_timeout_s:300,train_tool_results:!1,lr:1e-6,min_lr:1e-7,lr_decay_steps:1e3,lr_decay_style:"cosine",adam_beta1:.9,adam_beta2:.999,adam_8bit:!1,weight_decay:.01,grad_clip_norm:1,gspo_clip_eps:3e-4,grpo_clip_eps:.2,dpo_beta:.1,critic_warmup_steps:20,critic_lr:1e-5,use_kl_loss:!0,kl_loss_coef:.001,kl_loss_type:"low_var_kl",clip_eps:.2,clip_ratio_c:3,value_clip_eps:.5,value_loss_coef:.5,gamma:1,lam:.95,tune_params:!1,mem_frac:.9,tune_max_samples:256,save_path:"outputs/dashboard-run",save_interval:100,metrics_dir:"outputs/dashboard-run/metrics",extra_args:""},p_={model_path:"Qwen/Qwen3-0.6B",model_hub:"modelscope",host:"0.0.0.0",port:8e3,world_size:1,tp_size:1,max_running_prompts:16,default_max_tokens:1024,decode_progress_interval_s:0,attn_backend:"flash",eager_decode:!1,disable_thinking:!1,extra_args:""};function g_(){var Y,W,ge,ze,Be,vt;const[n,a]=be.useState(null),[r,u]=be.useState(m_),[s,h]=be.useState(p_),[f,m]=be.useState(()=>localStorage.getItem(Rp)||""),[p,d]=be.useState(()=>h_()),[x,y]=be.useState(()=>localStorage.getItem(jp)||""),[v,S]=be.useState("chat"),[C,U]=be.useState(()=>{try{return JSON.parse(localStorage.getItem("areno-dashboard-agent-provider")||"{}")}catch{return{}}}),[V,O]=be.useState("jobs"),[K,X]=be.useState("train"),[ae,ee]=be.useState(()=>localStorage.getItem("areno-dashboard-theme")||"dark"),[L,J]=be.useState(""),[he,xe]=be.useState(!1),[R,ne]=be.useState(1),[le,Ce]=be.useState(0),ue=be.useRef(null),$=ns(()=>yl("/api/env"),5e3),D=ns(()=>yl("/api/jobs"),2e3),F=ns(()=>n?yl(`/api/jobs/${n}`):Promise.resolve(null),3e3,[n]),ie=((Y=D.data)==null?void 0:Y.jobs)||[],Se=10,E=Math.max(1,Math.ceil(ie.length/Se)),T=Math.min(R,E),q=ie.slice((T-1)*Se,T*Se),_=((W=F.data)==null?void 0:W.job)||(n?ie.find(P=>P.id===n):null)||null,te=be.useMemo(()=>p.find(P=>P.id===x)||p[0]||cu(),[p,x]),fe=te.messages||Oi;be.useEffect(()=>{n&&ie.length&&!ie.some(P=>P.id===n)&&a(null)},[ie.length,n]),be.useEffect(()=>{R>E&&ne(E)},[R,E]),be.useEffect(()=>{document.documentElement.dataset.theme=ae,localStorage.setItem("areno-dashboard-theme",ae)},[ae]),be.useEffect(()=>{localStorage.setItem("areno-dashboard-agent-provider",JSON.stringify(C))},[C]),be.useEffect(()=>{localStorage.setItem(Wg,JSON.stringify(p.slice(-40)))},[p]),be.useEffect(()=>{if(!p.length){const P=cu();d([P]),y(P.id);return}p.some(P=>P.id===x)||y(p[0].id)},[p,x]),be.useEffect(()=>{x&&localStorage.setItem(jp,x)},[x]),be.useEffect(()=>{localStorage.setItem(Rp,f)},[f]),be.useEffect(()=>{const P=ue.current;P&&(P.scrollTop=P.scrollHeight)},[fe,v]);const oe=[{id:"jobs",label:"Jobs",icon:k.jsx(Zg,{size:16})},{id:"runtime",label:"Runtime",icon:k.jsx(ps,{size:16})},{id:"launcher",label:"Launcher",icon:k.jsx(Ls,{size:16})},{id:"agent",label:"Agent",icon:k.jsx(Wk,{size:16})}],we={jobs:_?[_.name,`${_.kind} · ${_.status} · step ${_.step??0}`]:["Jobs","Open an AReno train or serve task to inspect metrics, samples, config, and logs."],runtime:["Runtime Environment","Review areno check, areno env, dependencies, GPU state, and repository context."],launcher:["Task Launcher","Start low-intrusion AReno train or serve subprocesses from explicit configs."],agent:["Agent Console","Chat with an operations agent using the selected job context."]};async function Ie(){J("Starting train job...");try{const P=await yl("/api/jobs/train",{method:"POST",body:JSON.stringify(r)});a(P.job.id),await D.refresh()}finally{J("")}}async function Ye(){J("Starting serve job...");try{const P=await yl("/api/jobs/serve",{method:"POST",body:JSON.stringify(s)});a(P.job.id),await D.refresh()}finally{J("")}}async function zt(P){J("Stopping job...");try{await yl(`/api/jobs/${P}/stop`,{method:"POST",body:"{}"}),await D.refresh()}finally{J("")}}async function Kt(){const P=f.trim();if(!P)return;m("");const Z=`assistant-${Date.now()}`;Yn(ve=>[...ve,{role:"user",content:P},{id:Z,role:"assistant",content:"",events:[],streaming:!0}]),J("Agent analyzing...");try{await Ql({prompt:P,job_id:(_==null?void 0:_.id)||null,provider:C,history:Gn(fe),onEvent:ve=>Qn(Z,ve)})}catch(ve){Qn(Z,{type:"error",content:`Agent request failed: ${ve.message||ve}`})}finally{Qn(Z,{type:"done"}),J("")}}function Yn(P){const Z=te.id;d(ve=>ve.map(de=>{if(de.id!==Z)return de;const Ee=de.messages||Oi,et=typeof P=="function"?P(Ee):P;return{...de,messages:et,updatedAt:Date.now(),title:d_(et,de.title)}}))}function bl(){const P=cu();d(Z=>[P,...Z]),y(P.id),m(""),S("chat")}function rn(P){y(P),S("chat")}function Gn(P){return P.filter(Z=>(Z.role==="user"||Z.role==="assistant")&&!Z.streaming).map(Z=>({role:Z.role,content:Vn(Z)})).filter(Z=>Z.content).slice(-10)}function Vn(P){return P.content?P.content:(P.events||[]).filter(Z=>Z.type==="content"||Z.type==="reasoning").map(Z=>Z.text||"").join(` -`).trim()}async function Ql({prompt:P,job_id:Z,provider:ve,history:de,onEvent:Ee}){const et=await fetch(`${$g}api/agent/stream`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:P,job_id:Z,provider:ve,history:de})});if(!et.ok||!et.body){const Xn=await et.text();throw new Error(Xn||et.statusText)}const Bt=et.body.getReader(),bu=new TextDecoder;let hn="";for(;;){const{value:Xn,done:Xl}=await Bt.read();if(Xl)break;hn+=bu.decode(Xn,{stream:!0});const dn=hn.split(` -`);hn=dn.pop()||"";for(const Sl of dn)Sl.trim()&&Ee(JSON.parse(Sl))}hn.trim()&&Ee(JSON.parse(hn))}function Qn(P,Z){Yn(ve=>ve.map(de=>de.id!==P?de:Z.type==="content_delta"?fn(de,"content",Z.content||""):Z.type==="reasoning_delta"?fn(de,"reasoning",Z.content||""):Z.type==="tool_calls"?Li(de,Z.tool_calls||[]):Z.type==="tool_call_delta"?vn(de,Z.tool_call,!0):Z.type==="tool_result"?{...de,events:[...de.events||[],{type:"tool_result",result:Z.tool_result}]}:Z.type==="error"?{...fn(de,"content",Z.content||""),streaming:!1}:Z.type==="done"?{...de,streaming:!1}:de))}function fn(P,Z,ve){if(!ve)return P;const de=[...P.events||[]],Ee=de[de.length-1];(Ee==null?void 0:Ee.type)===Z?de[de.length-1]={...Ee,text:`${Ee.text||""}${ve}`}:de.push({type:Z,text:ve});const et=Z==="content"?`${P.content||""}${ve}`:P.content;return{...P,content:et,events:de}}function vn(P,Z,ve=!1){if(!Z)return P;const de=[...P.events||[]],Ee=de.findIndex(et=>et.type==="tool_call"&&vl(et.call,Z));return Ee>=0?de[Ee]={...de[Ee],call:Z,live:ve}:de.push({type:"tool_call",call:Z,live:ve}),{...P,events:de}}function vl(P,Z){return!P||!Z?!1:!!(P.id&&Z.id&&P.id===Z.id||P.round!==void 0&&Z.round!==void 0&&P.index!==void 0&&Z.index!==void 0&&P.round===Z.round&&P.index===Z.index)}function Li(P,Z){let ve=P;for(const de of Z)ve=vn(ve,de,!1);return ve}function Bi(){var P;return V==="runtime"?k.jsxs("div",{className:"tabGrid",children:[k.jsx(C_,{env:$.data}),k.jsx(w_,{gpus:((P=$.data)==null?void 0:P.gpus)||[]})]}):V==="launcher"?k.jsxs("section",{className:"panel launcher",children:[k.jsxs("div",{className:"panelHeader",children:[k.jsxs("div",{children:[k.jsx("h2",{children:"Task Launcher"}),k.jsx("p",{children:"Builds AReno CLI commands without importing training internals."})]}),k.jsxs("div",{className:"tabs",children:[k.jsx("button",{className:kt(K==="train"&&"active"),onClick:()=>X("train"),children:"Train"}),k.jsx("button",{className:kt(K==="serve"&&"active"),onClick:()=>X("serve"),children:"Serve"})]})]}),K==="train"?k.jsx(Z_,{config:r,setConfig:u,onStart:Ie}):k.jsx(F_,{config:s,setConfig:h,onStart:Ye})]}):V==="agent"?k.jsxs("section",{className:"panel chatPanel",children:[k.jsxs("div",{className:"panelHeader",children:[k.jsxs("div",{children:[k.jsx("h2",{children:"Agent Chat"}),k.jsx("p",{children:_?`Context: ${_.name}`:"No job selected. The agent will use runtime context only."})]}),k.jsxs("div",{className:"agentHeaderActions",children:[k.jsxs("button",{className:"secondaryButton",onClick:bl,children:[k.jsx(Jg,{size:15})," New Chat"]}),k.jsxs("button",{className:"secondaryButton",onClick:()=>xe(!0),children:[k.jsx(Ig,{size:15})," Settings"]})]})]}),k.jsxs("div",{className:"agentTabs",children:[k.jsxs("button",{className:kt(v==="chat"&&"active"),onClick:()=>S("chat"),children:[k.jsx(l_,{size:15})," Chat"]}),k.jsxs("button",{className:kt(v==="history"&&"active"),onClick:()=>S("history"),children:[k.jsx(t_,{size:15})," History"]})]}),v==="history"?k.jsx(x_,{sessions:p,activeId:te.id,onOpen:rn,onNew:bl}):k.jsxs(k.Fragment,{children:[k.jsx("div",{className:"chatMessages",ref:ue,children:fe.map((Z,ve)=>{var de;return k.jsxs("div",{className:kt("chatBubble",Z.role),children:[k.jsx("span",{children:Z.role}),(de=Z.events)!=null&&de.length?k.jsx(S_,{events:Z.events}):k.jsx(Bs,{text:Z.content}),Z.streaming&&k.jsx("div",{className:"streamingHint",children:"thinking..."})]},`${Z.id||Z.role}-${ve}`)})}),k.jsxs("div",{className:"chatComposer",children:[k.jsx("textarea",{value:f,onChange:Z=>m(Z.target.value),onKeyDown:Z=>{Z.key==="Enter"&&!Z.shiftKey&&(Z.preventDefault(),Kt())}}),k.jsxs("button",{className:"primaryButton",onClick:Kt,children:[k.jsx(r_,{size:16})," Send"]})]})]}),he&&k.jsx(b_,{title:"Agent Settings",onClose:()=>xe(!1),children:k.jsx(y_,{provider:C,setProvider:U})})]}):_?k.jsxs("section",{className:"panel detailPanel",children:[k.jsxs("div",{className:"panelHeader",children:[k.jsxs("div",{children:[k.jsx("h2",{children:_.name}),k.jsxs("p",{children:[_.kind," · ",_.status]})]}),k.jsxs("div",{className:"detailActions",children:[k.jsx("button",{className:"secondaryButton",onClick:()=>a(null),children:"Back"}),_.status==="running"&&k.jsxs("button",{className:"dangerButton",onClick:()=>zt(_.id),children:[k.jsx(Pk,{size:16})," Stop"]})]})]}),k.jsx(M_,{job:_}),k.jsx(v_,{job:_,refreshNonce:le}),k.jsx(q_,{samples:(_==null?void 0:_.samples)||[]}),k.jsxs("div",{className:"split",children:[k.jsx(G_,{config:_==null?void 0:_.config,launch:_==null?void 0:_.launch}),k.jsx(X_,{logs:(_==null?void 0:_.logs)||[]})]})]}):k.jsxs("section",{className:"panel jobListPage",children:[k.jsxs("div",{className:"panelHeader",children:[k.jsxs("div",{children:[k.jsx("h2",{children:"Jobs"}),k.jsx("p",{children:"Registered AReno train/serve processes. Select a row to open job details."})]}),k.jsxs("div",{className:"pagerControls",children:[k.jsx("button",{className:"secondaryButton",disabled:T<=1,onClick:()=>ne(Z=>Math.max(1,Z-1)),children:"Prev"}),k.jsxs("span",{children:[T," / ",E]}),k.jsx("button",{className:"secondaryButton",disabled:T>=E,onClick:()=>ne(Z=>Math.min(E,Z+1)),children:"Next"})]})]}),k.jsxs("div",{className:"jobList",children:[ie.length===0&&k.jsx(ty,{title:"No jobs yet",text:"Start a train or serve task from the launcher."}),q.map(Z=>k.jsxs("button",{className:"jobRow large",onClick:()=>a(Z.id),children:[k.jsx("div",{className:"jobIcon",children:Z.kind==="serve"?k.jsx(ps,{size:16}):k.jsx(n_,{size:16})}),k.jsxs("div",{className:"jobInfo",children:[k.jsx("div",{className:"jobTitle",children:Z.name}),k.jsxs("div",{className:"jobMeta",children:[Z.kind," · ",Z.status," · step ",Z.step??0]})]}),k.jsx("span",{className:kt("statusDot",Z.status)})]},Z.id))]}),ie.length>Se&&k.jsxs("div",{className:"listFooter",children:["Showing ",(T-1)*Se+1,"-",Math.min(T*Se,ie.length)," of ",ie.length," jobs"]})]})}const[mt,Ui]=we[V]||we.jobs;return k.jsxs("div",{className:"shell",children:[k.jsxs("aside",{className:"rail",children:[k.jsxs("div",{className:"brand",children:[k.jsx("div",{className:"brandMark",children:"A"}),k.jsxs("div",{children:[k.jsx("div",{className:"brandName",children:"AReno Ops"}),k.jsx("div",{className:"brandMeta",children:"runtime workbench"})]})]}),k.jsx("nav",{className:"nav",children:oe.map(P=>k.jsxs("button",{className:kt("navItem",V===P.id&&"active"),onClick:()=>O(P.id),children:[P.icon," ",P.label]},P.id))}),k.jsxs("div",{className:"railFooter",children:[k.jsx("div",{className:"tinyLabel",children:"Repo"}),k.jsxs("div",{className:"monoLine",children:[((ze=(ge=$.data)==null?void 0:ge.repo)==null?void 0:ze.branch)||"unknown"," · ",((vt=(Be=$.data)==null?void 0:Be.repo)==null?void 0:vt.commit)||"no git"]})]})]}),k.jsxs("main",{className:"main",children:[k.jsxs("header",{className:"topbar",children:[k.jsxs("div",{children:[k.jsx("h1",{children:mt}),k.jsx("p",{children:Ui})]}),k.jsxs("div",{className:"topActions",children:[k.jsx("button",{className:"iconButton",onClick:()=>ee(ae==="dark"?"light":"dark"),title:"Toggle theme",children:ae==="dark"?k.jsx(c_,{size:16}):k.jsx(i_,{size:16})}),k.jsx("button",{className:"iconButton",onClick:()=>{$.refresh(),D.refresh(),F.refresh(),Ce(P=>P+1)},title:"Refresh",children:k.jsx(a_,{size:16})})]})]}),L&&k.jsx("div",{className:"notice",children:L}),Bi()]})]})}function y_({provider:n,setProvider:a}){return k.jsxs("div",{className:"agentConfig modalForm",children:[k.jsx(du,{label:"Base URL",value:n.base_url||"",onChange:r=>a({...n,base_url:r}),compact:!0}),k.jsx(du,{label:"Model",value:n.model||"",onChange:r=>a({...n,model:r}),compact:!0}),k.jsxs("label",{className:"field compact",children:[k.jsx("span",{children:"API key"}),k.jsx("input",{type:"password",value:n.api_key||"",onChange:r=>a({...n,api_key:r.target.value})})]})]})}function x_({sessions:n,activeId:a,onOpen:r,onNew:u}){return k.jsxs("div",{className:"agentHistory",children:[k.jsxs("div",{className:"agentHistoryHeader",children:[k.jsxs("div",{children:[k.jsx("h3",{children:"Chat History"}),k.jsxs("p",{children:[n.length," saved conversations in this browser."]})]}),k.jsxs("button",{className:"secondaryButton",onClick:u,children:[k.jsx(Jg,{size:15})," New Chat"]})]}),k.jsx("div",{className:"agentHistoryList",children:n.map(s=>{const h=[...s.messages||[]].reverse().find(f=>f.role==="user"||f.content);return k.jsxs("button",{className:kt("agentHistoryItem",s.id===a&&"active"),onClick:()=>r(s.id),children:[k.jsx("strong",{children:s.title||"New chat"}),k.jsx("span",{children:(h==null?void 0:h.content)||"No messages yet."}),k.jsx("small",{children:new Date(s.updatedAt||s.createdAt||Date.now()).toLocaleString()})]},s.id)})})]})}function b_({title:n,children:a,onClose:r}){return k.jsx("div",{className:"modalOverlay",role:"presentation",onMouseDown:r,children:k.jsxs("div",{className:"modalCard",role:"dialog","aria-modal":"true","aria-label":n,onMouseDown:u=>u.stopPropagation(),children:[k.jsxs("div",{className:"modalHeader",children:[k.jsxs("div",{children:[k.jsx("h2",{children:n}),k.jsx("p",{children:"Stored locally in this browser."})]}),k.jsx("button",{className:"iconButton",onClick:r,children:"×"})]}),a]})})}function v_({job:n,refreshNonce:a}){return k.jsxs("div",{className:"jobMetricsGrid",children:[k.jsx("div",{className:"panel insetPanel",children:k.jsx(R_,{jobId:n==null?void 0:n.id,metricsDir:n==null?void 0:n.metrics_dir,refreshNonce:a})}),k.jsx("div",{className:"panel insetPanel",children:k.jsx(U_,{rows:(n==null?void 0:n.timeperf)||[]})})]})}function S_({events:n}){return k.jsx("div",{className:"agentEventList",children:n.map((a,r)=>a.type==="reasoning"?k.jsx(k_,{text:a.text},r):a.type==="content"?k.jsx(Bs,{text:a.text},r):a.type==="tool_call"?k.jsx(__,{call:a.call,live:a.live},r):a.type==="tool_result"?k.jsx(T_,{result:a.result},r):null)})}function Bs({text:n}){return k.jsx("div",{className:"markdownBlock",children:k.jsx(RS,{remarkPlugins:[Fk],children:n||""})})}function k_({text:n}){return k.jsxs("details",{className:"reasoningBlock",children:[k.jsxs("summary",{children:[k.jsx("span",{children:"✓"}),k.jsx("strong",{children:"Completed thinking"})]}),k.jsx(Bs,{text:n})]})}function __({call:n,live:a=!1}){const u=((n==null?void 0:n.function)||{}).name||(n==null?void 0:n.name)||"tool",s=A_(n);return k.jsxs("details",{className:kt("toolCallCard","toolCallDetails",a&&"live"),children:[k.jsxs("summary",{className:"toolCallHead",children:[k.jsx("span",{children:a?"calling":"tool call"}),k.jsx("b",{children:E_(u,s)}),k.jsx("em",{children:a?"running":""})]}),k.jsx("pre",{children:s})]})}function E_(n,a){const r=Pg(a);return!r||r==="{}"?`${n}()`:`${n}(${r})`}function A_(n){return(n.function||{}).arguments||n.arguments||JSON.stringify(n,null,2)}function T_({result:n}){const a=z_(n);return k.jsxs("details",{className:kt("toolCallCard","toolResultDetails",n.ok?"ok":"failed"),children:[k.jsxs("summary",{children:[k.jsx("span",{children:n.ok?"result":"error"}),k.jsxs("b",{children:[n.name||"unknown"," · ",n.ok?"ok":"failed"]}),k.jsx("em",{children:Pg(a)||"No output."})]}),k.jsx("pre",{children:a})]})}function Pg(n){return String(n||"").replace(/\s+/g," ").trim()}function z_(n){return n.error?n.error:Array.isArray(n.jobs)?n.jobs.map(a=>`${a.id} · ${a.kind} · ${a.status} · step ${a.step??0} · ${a.name}`).join(` -`)||"No jobs.":n.job?`${n.job.id} · ${n.job.kind} · ${n.job.status} · step ${n.job.step??0} -${n.job.name}`:n.env?`ready=${n.env.ready} · gpu=${n.env.gpu_summary||"n/a"} · cwd=${n.env.cwd||"n/a"}`:JSON.stringify(n,null,2)}function C_({env:n}){var m,p,d,x;const a=(n==null?void 0:n.checks)||[],r=(n==null?void 0:n.report)||{},u=r.dependencies||{},s=r.torch||{},h=r.platform||{},f=a.slice(0,12);return k.jsxs("section",{className:"runtimeDeck",children:[k.jsxs("div",{className:"runtimeHero",children:[k.jsx("div",{className:kt("readinessOrb",n!=null&&n.ready?"ready":"blocked"),children:n!=null&&n.ready?"OK":"!"}),k.jsxs("div",{children:[k.jsx("div",{className:"tinyLabel",children:"AReno check"}),k.jsx("h2",{children:n!=null&&n.ready?"Runtime ready for AReno tasks":"Runtime needs attention before heavy jobs"}),k.jsxs("p",{children:[((m=n==null?void 0:n.check_counts)==null?void 0:m.ok)??0," OK · ",((p=n==null?void 0:n.check_counts)==null?void 0:p.warn)??0," WARN · ",((d=n==null?void 0:n.check_counts)==null?void 0:d.fail)??0," FAIL"]})]})]}),k.jsxs("div",{className:"envFacts",children:[k.jsx(ru,{icon:k.jsx(Fg,{size:15}),label:"AReno",value:((x=r.areno)==null?void 0:x.version)||"unknown"}),k.jsx(ru,{icon:k.jsx(e_,{size:15}),label:"PyTorch",value:s.version||"missing"}),k.jsx(ru,{icon:k.jsx(ps,{size:15}),label:"CUDA",value:s.cuda_build||"none"}),k.jsx(ru,{icon:k.jsx(Kg,{size:15}),label:"Platform",value:`${h.system||"unknown"} ${h.machine||""}`})]}),k.jsx("div",{className:"checkMatrix",children:f.map(y=>k.jsxs("div",{className:kt("checkItem",y.status.toLowerCase()),children:[k.jsx("span",{children:y.status}),k.jsx("strong",{children:y.name}),k.jsx("small",{children:y.detail||y.next_step||"no detail"})]},y.name))}),k.jsx("div",{className:"dependencyStrip",children:Object.entries(u).map(([y,v])=>k.jsxs("div",{className:kt("depPill",v.imported?"ok":"warn"),children:[y,": ",v.imported?v.version||"imported":"missing"]},y))})]})}function w_({gpus:n}){return n.length?k.jsx("section",{className:"gpuDeck",children:n.map((a,r)=>{const u=Math.min(100,Math.max(0,Number(a.memory_used_mb||0)/Math.max(Number(a.memory_total_mb||1),1)*100)),s=Math.min(100,Math.max(0,Number(a.utilization||0)));return k.jsxs("div",{className:"gpuCard",children:[k.jsxs("div",{className:"gpuHead",children:[k.jsxs("strong",{children:["GPU ",r]}),k.jsx("span",{children:a.name})]}),k.jsxs("div",{className:"gpuMeter",children:[k.jsxs("div",{className:"gpuMeterLabel",children:[k.jsx("span",{children:"Memory"}),k.jsxs("b",{children:[a.memory_used_mb,"/",a.memory_total_mb," MB"]})]}),k.jsx("div",{className:"meterTrack",children:k.jsx("i",{style:{width:`${u}%`}})})]}),k.jsxs("div",{className:"gpuMeter",children:[k.jsxs("div",{className:"gpuMeterLabel",children:[k.jsx("span",{children:"Utilization"}),k.jsxs("b",{children:[s,"%"]})]}),k.jsx("div",{className:"meterTrack util",children:k.jsx("i",{style:{width:`${s}%`}})})]})]},`${a.name}-${r}`)})}):k.jsx("section",{className:"gpuDeck",children:k.jsx("div",{className:"panel",children:k.jsx(ty,{title:"No GPU detected",text:"nvidia-smi did not return device utilization."})})})}function ru({icon:n,label:a,value:r}){return k.jsxs("div",{className:"envFact",children:[k.jsx("span",{children:n}),k.jsxs("div",{children:[k.jsx("label",{children:a}),k.jsx("strong",{children:r})]})]})}function M_({job:n}){const a=ey(n),r=N_(n),u=Math.max(0,a.findIndex(s=>gs(s,r,n)));return k.jsx("div",{className:"timeline",children:a.map((s,h)=>k.jsxs("div",{className:kt("timelineItem",h<=u&&"done",gs(s,r,n)&&"current"),children:[k.jsx("span",{children:h+1}),k.jsx("label",{children:s.label})]},s.id))})}function ey(n){if((n==null?void 0:n.kind)==="serve")return[{id:"created",label:"created"},{id:"load",label:"load",aliases:["registered"]},{id:"serve",label:"serve",aliases:["running"]},{id:"exit",label:"exit",aliases:["exited","failed","succeeded","stopped"]}];const a=D_(n,"algo");return a==="sft"?[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"train",label:"train",aliases:["train_start","train_end","train_skip"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]:a==="dpo"?[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"ref_score",label:"ref score",aliases:["logprob_score_start","logprob_score_end"],roles:["ref"]},{id:"train",label:"train",aliases:["train_start","train_end","train_skip"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]:a==="ppo"?[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"rollout",label:"rollout",aliases:["rollout_start","rollout_end"],roles:["actor"]},{id:"reward",label:"reward",aliases:["score_start","score_end"],roles:["reward"]},{id:"ref_score",label:"ref score",aliases:["logprob_score_start","logprob_score_end"],roles:["ref"]},{id:"old_logprob",label:"old logprob",aliases:["old_logprob_score_start","old_logprob_score_end"],roles:["actor"]},{id:"critic_value",label:"value",aliases:["value_score_start","value_score_end"],roles:["critic"]},{id:"advantage",label:"advantage",aliases:["advantage_start","advantage_end"],roles:["critic"]},{id:"critic_train",label:"critic train",aliases:["train_start","train_end"],roles:["critic"]},{id:"actor_train",label:"actor train",aliases:["train_start","train_end","train_skip"],roles:["actor"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]:[{id:"created",label:"created",aliases:["registered","epoch_start"]},{id:"rollout",label:"rollout",aliases:["rollout_start","rollout_end"]},{id:"score",label:"score",aliases:["score_start","score_end","reward_score_start","reward_score_end","logprob_score_start","logprob_score_end","old_logprob_score_start","old_logprob_score_end","value_score_start","value_score_end"]},{id:"train",label:"train",aliases:["train_start","train_end","train_skip"]},{id:"save",label:"save",aliases:["save_checkpoint_start","save_checkpoint_end"]},{id:"done",label:"done",aliases:["max_steps_reached","epoch_end","exited","failed","succeeded","stopped"]}]}function N_(n){if(n!=null&&n.status&&["succeeded","failed","stopped","exited"].includes(n.status))return"done";const a=String((n==null?void 0:n.stage)||"created"),u=ey(n).find(s=>gs(s,a,n));return(u==null?void 0:u.id)||a}function gs(n,a,r){var s,h;return n.id===a||((s=n.aliases)==null?void 0:s.includes(a))?(h=n.roles)!=null&&h.length?n.roles.includes(String((r==null?void 0:r.role)||"")):!0:!1}function D_(n,a){const r=n!=null&&n.config&&Object.keys(n.config).length?n.config:(n==null?void 0:n.launch)||{};if(r[a]!==void 0)return r[a];for(const u of r.sections||[]){const s=(u.items||[]).find(h=>h.key===a);if(s)return s.value}}function O_(n){return(n||[]).map(a=>a.name).sort()}function j_(n,a){return a&&n.includes(a)?a:n[0]||""}function R_({jobId:n,metricsDir:a,refreshNonce:r}){const[u,s]=be.useState(""),[h,f]=be.useState(.6),[m,p]=be.useState([]),[d,x]=be.useState([]),[y,v]=be.useState(!1),[S,C]=be.useState(n);n!==S&&(C(n),s(""),p([]),x([]),v(!1));const U=O_(m),V=j_(U,u);be.useEffect(()=>{let ee=!1;if(n)return yl(`/api/jobs/${n}/metrics`).then(L=>{if(ee)return;const J=L.metrics||[];p(J),s(he=>{var xe;return he||((xe=J[0])==null?void 0:xe.name)||""})}).catch(()=>{ee||p([])}),()=>{ee=!0}},[n,r]),be.useEffect(()=>{let ee=!1;if(!n||!V){x([]),v(!1);return}return v(!0),yl(`/api/jobs/${n}/metric?name=${encodeURIComponent(V)}&limit=500`).then(L=>{ee||x((L.points||[]).filter(J=>Number.isFinite(Number(J.value))).map(J=>({...J,step:Number(J.step||0),value:Number(J.value)})))}).catch(()=>{ee||x([])}).finally(()=>{ee||v(!1)}),()=>{ee=!0}},[n,V,r]);const O=V,K=d.slice(-240),X=L_(K,h),ae=B_(K,X);return k.jsxs("div",{className:"chart",children:[k.jsxs("div",{className:"chartHeader",children:[k.jsxs("span",{children:[k.jsx(Zg,{size:14})," TensorBoard scalars"]}),k.jsxs("div",{className:"chartControls",children:[k.jsx("select",{value:O,onChange:ee=>s(ee.target.value),children:U.length===0?k.jsx("option",{value:"",children:"no metrics"}):U.map(ee=>k.jsx("option",{children:ee},ee))}),k.jsxs("label",{children:["smooth ",h.toFixed(2),k.jsx("input",{type:"range",min:"0",max:"0.99",step:"0.01",value:h,onChange:ee=>f(Number(ee.target.value))})]})]})]}),K.length===0?k.jsx("div",{className:"plotEmpty",children:y?"Loading selected metric...":"No TensorBoard scalar points loaded yet."}):k.jsxs("svg",{className:"metricPlot",viewBox:"0 0 720 180",role:"img",children:[k.jsx("g",{className:"plotGrid",children:[0,1,2,3].map(ee=>k.jsx("line",{x1:"0",x2:"720",y1:30+ee*42,y2:30+ee*42},ee))}),k.jsx("polyline",{className:"rawLine",points:ae.raw}),k.jsx("polyline",{className:"smoothLine",points:ae.smooth}),K.slice(-24).map((ee,L)=>{var J,he;return k.jsx("circle",{cx:((J=ae.coords[L+Math.max(0,K.length-24)])==null?void 0:J.x)||0,cy:((he=ae.coords[L+Math.max(0,K.length-24)])==null?void 0:he.y)||0,r:"2.2",children:k.jsx("title",{children:`${O} step ${ee.step}: ${ee.value}`})},`${ee.step}-${L}`)})]}),k.jsxs("div",{className:"plotFooter",children:[k.jsxs("span",{children:[O||"metric"," · ",d.length," points"]}),k.jsxs("span",{children:[a||"no metrics dir"," · ",ae.minLabel," to ",ae.maxLabel]})]})]})}function L_(n,a){if(!n.length)return[];const r=Math.min(Math.max(Number(a)||0,0),.999);let u=n[0].value;return n.map(s=>(u=u*r+s.value*(1-r),{...s,value:u}))}function B_(n,a){if(!n.length)return{raw:"",smooth:"",coords:[],minLabel:"n/a",maxLabel:"n/a"};const r=[...n,...a].map(v=>v.value),u=Math.min(...r),s=Math.max(...r),h=Math.max(s-u,1e-9),f=n[0].step,m=n[n.length-1].step,p=Math.max(m-f,1),d=v=>({x:(v.step-f)/p*700+10,y:168-(v.value-u)/h*146}),x=n.map(d),y=a.map(d);return{raw:x.map(v=>`${v.x.toFixed(1)},${v.y.toFixed(1)}`).join(" "),smooth:y.map(v=>`${v.x.toFixed(1)},${v.y.toFixed(1)}`).join(" "),coords:x,minLabel:Lp(u),maxLabel:Lp(s)}}function Lp(n){return Number.isFinite(n)?Math.abs(n)>=1e3||Math.abs(n)<.001?n.toExponential(2):n.toFixed(4).replace(/0+$/,"").replace(/\.$/,""):"n/a"}function U_({rows:n}){const a=H_(n||[],7).reverse(),r=n!=null&&n.length?n.reduce((h,f)=>h+Number(f.total_s||0),0)/n.length:0,u=Math.max(1,...a.map(h=>Number(h.total_s||0))),s=Array.from(new Set((n||[]).flatMap(h=>(h.segments||[]).map(f=>f.name)))).slice(0,8);return k.jsxs("div",{className:"timePerf",children:[k.jsxs("div",{className:"timePerfHeader",children:[k.jsx("div",{children:k.jsxs("div",{className:"codeTitle inline",children:[k.jsx(o_,{size:14})," Runtime timeperf"]})}),k.jsxs("div",{className:"legend",children:[s.map(h=>k.jsxs("span",{children:[k.jsx("i",{className:Bp(h)})," ",h]},h)),k.jsxs("b",{children:["avg ",r?`${r.toFixed(1)}s`:"n/a"]})]})]}),a.length===0?k.jsx("div",{className:"sampleEmpty",children:"No step timing captured yet."}):k.jsx("div",{className:"timeRows",children:a.map(h=>{var d;const f=Number(h.total_s||0),m=Math.max(10,f/u*100),p=(d=h.segments)!=null&&d.length?h.segments:[];return k.jsxs("div",{className:"timeRow",children:[k.jsxs("label",{children:["step ",h.step]}),k.jsx("div",{className:"timeTrack",children:k.jsx("div",{className:"timeStack",style:{width:`${m}%`},children:p.map(x=>{const y=Number(x.seconds||0),v=y/Math.max(f,1)*100;return k.jsx("span",{className:Bp(x.name),style:{width:`${v}%`},title:`${x.name}: ${y.toFixed(1)}s`,children:v>11?`${y.toFixed(1)}s`:""},x.name)})})}),k.jsxs("strong",{children:[f.toFixed(1),"s"]})]},`${h.step}-${h.time}`)})})]})}function H_(n,a){if(n.length<=a)return n.slice();const r=n.length-1,u=new Set;for(let s=0;ss-h).slice(-a).map(s=>n[s])}function Bp(n){return`seg-${String(n||"other").replace(/[^a-zA-Z0-9]+/g,"-")}`}function q_({samples:n}){const a=be.useMemo(()=>[...n||[]].sort((y,v)=>Number(y.step||0)-Number(v.step||0)||Number(y.prompt_idx||0)-Number(v.prompt_idx||0)||Number(y.sample_idx||0)-Number(v.sample_idx||0)),[n]),r=be.useMemo(()=>Array.from(new Set(a.map(y=>Number(y.step||0)))).sort((y,v)=>v-y),[a]),[u,s]=be.useState(""),[h,f]=be.useState("");be.useEffect(()=>{if(!r.length){s(""),f("");return}(u===""||!r.includes(Number(u)))&&(s(String(r[0])),f(""))},[u,r]);const p=(u===""?[]:a.filter(y=>Number(y.step||0)===Number(u))).map((y,v)=>({key:Y_(y,v),label:`prompt ${y.prompt_idx??"?"} · sample ${y.sample_idx??"?"}`,sample:y})),d=p.find(y=>y.key===h)||p[p.length-1]||null,x=(d==null?void 0:d.sample)||null;return k.jsxs("div",{className:"sampleCard",children:[k.jsxs("div",{className:"codeTitle sampleTitle",children:[k.jsxs("span",{children:[k.jsx(Fg,{size:14})," Rollout sample"]}),!!a.length&&k.jsxs("div",{className:"sampleControls",children:[k.jsx("select",{value:u,onChange:y=>{s(y.target.value),f("")},children:r.map(y=>k.jsxs("option",{value:y,children:["step ",y]},y))}),k.jsx("select",{value:(d==null?void 0:d.key)||"",onChange:y=>f(y.target.value),children:p.map(y=>k.jsx("option",{value:y.key,children:y.label},y.key))})]})]}),x?k.jsxs("div",{className:"sampleGrid",children:[k.jsxs("div",{children:[k.jsx("span",{children:"Prompt"}),k.jsx("p",{children:x.prompt||"n/a"})]}),k.jsxs("div",{children:[k.jsx("span",{children:"Completion"}),k.jsx("p",{children:x.completion||"n/a"})]})]}):k.jsx("div",{className:"sampleEmpty",children:"No rollout sample captured yet."})]})}function Y_(n,a){return`${n.step??"x"}-${n.prompt_idx??"x"}-${n.sample_idx??"x"}-${a}`}function G_({config:n,launch:a}){const r=n&&Object.keys(n).length?n:a||{},u=V_(r);return k.jsxs("div",{className:"codeCard",children:[k.jsxs("div",{className:"codeTitle",children:[k.jsx(Ig,{size:14})," Config"]}),u.length>0?k.jsx("div",{className:"configSections",children:u.map(s=>k.jsxs("div",{className:"configSection",children:[k.jsx("h3",{children:s.title}),k.jsx("div",{className:"configGrid",children:s.items.map(({key:h,value:f})=>k.jsxs("div",{className:"configItem",children:[k.jsx("span",{children:h.replace(/_/g," ")}),k.jsx("strong",{children:Q_(f)})]},h))})]},s.title))}):k.jsx("pre",{children:"No config captured yet."})]})}function V_(n){if(Array.isArray(n==null?void 0:n.sections))return n.sections.map(r=>({title:r.title||"Config",items:(r.items||[]).filter(({value:u})=>u!=null&&u!=="")})).filter(r=>r.items.length>0);const a=Object.entries(n||{}).filter(([,r])=>r!=null&&r!=="").map(([r,u])=>({key:r,value:u}));return a.length?[{title:"Launch",items:a}]:[]}function Q_(n){return Array.isArray(n)?n.join(" "):typeof n=="object"?JSON.stringify(n):String(n)}function X_({logs:n}){const a=be.useRef(null);return be.useEffect(()=>{const r=a.current;r&&(r.scrollTop=r.scrollHeight)},[n.length]),k.jsxs("div",{className:"codeCard",ref:a,children:[k.jsxs("div",{className:"codeTitle",children:[k.jsx(u_,{size:14})," Logs"]}),k.jsx("pre",{children:n.slice(-80).join(` -`)||"No logs yet."})]})}function Z_({config:n,setConfig:a,onStart:r}){const u=String(n.algo||"sft").toLowerCase(),s=K_(u),h=(f,m)=>a({...n,[f]:m});return k.jsxs("div",{className:"launcherSections",children:[s.map(f=>k.jsxs("div",{className:"launcherSection",children:[k.jsxs("div",{className:"launcherSectionHeader",children:[k.jsx("strong",{children:f.title}),f.note&&k.jsx("span",{children:f.note})]}),k.jsx("div",{className:"formGrid",children:f.fields.map(m=>k.jsx(du,{label:m.label,value:n[m.key],onChange:p=>h(m.key,p),compact:m.compact,type:m.type,options:m.options},m.key))})]},f.title)),k.jsxs("button",{className:"primaryButton launchButton wide",onClick:r,children:[k.jsx(Ls,{size:16})," Start train"]})]})}function K_(n){const a=["gspo","grpo","ppo"].includes(n),r=a,u=n==="dpo",s=n==="ppo",h=n==="gspo",f=n==="grpo",m=[{title:"Basic",note:"model, data, and trainer loop",fields:[ls("algo","Algorithm",["sft","dpo","gspo","grpo","ppo"],!0),me("ckpt","Checkpoint"),ls("model_hub","Model hub",["modelscope","hf"],!0),me("dataset_path","Dataset path"),me("dataset_loader_fn","Dataset loader"),me("epochs","Epochs",!0),me("max_steps","Max steps",!0)]},{title:"Runtime",note:"parallelism, memory, and kernels",fields:[me("world_size","World",!0),me("tp_size","TP",!0),ls("attn_backend","Attention",["flash","native"],!0),Hn("activation_checkpointing","Activation ckpt"),Hn("drop_rollout_state","Drop rollout state"),Hn("eager_decode","Eager decode"),Hn("disable_thinking","Disable thinking")]},{title:"Batching",note:"controls train and rollout memory",fields:[me("batch_size","Batch",!0),...a?[me("n_samples","Samples",!0),me("max_running_prompts","Running prompts",!0)]:[],me("mini_bs","Mini BS",!0),me("score_micro_bs","Score micro BS",!0),me("gradient_accumulation_steps","Grad accum",!0)]},{title:a?"Rollout":"Sequence",note:a?"generation and sampling":"token limits for supervised data",fields:[me("max_prompt_tokens","Prompt tokens",!0),me("max_new_tokens","New tokens",!0),...r?[me("max_context_len","Context",!0),me("agent_fn","Agent fn"),me("agent_timeout_s","Agent timeout",!0),Hn("train_tool_results","Train tool results")]:[],...a?[me("temperature","Temp",!0),me("top_k","Top K",!0),me("top_p","Top P",!0),Hn("greedy","Greedy")]:[]]},{title:"Optimizer",note:"policy optimizer settings",fields:[me("lr","LR",!0),me("min_lr","Min LR",!0),me("lr_decay_steps","Decay steps",!0),me("lr_decay_style","Decay style",!0),me("adam_beta1","Adam beta1",!0),me("adam_beta2","Adam beta2",!0),me("weight_decay","Weight decay",!0),me("grad_clip_norm","Grad clip",!0),Hn("adam_8bit","8-bit Adam")]}],p=[];return(u||s)&&p.push(me("ref_ckpt","Reference ckpt")),a&&p.push(me("reward_fn_path","Reward fn")),s&&p.push(me("reward_ckpt","Reward ckpt"),me("critic_ckpt","Critic ckpt"),me("critic_lr","Critic LR",!0),me("critic_warmup_steps","Critic warmup",!0)),h&&p.push(me("gspo_clip_eps","GSPO clip",!0)),f&&p.push(me("grpo_clip_eps","GRPO clip",!0)),u&&p.push(me("dpo_beta","DPO beta",!0)),s&&p.push(Hn("use_kl_loss","Use KL loss"),me("kl_loss_coef","KL coef",!0),me("kl_loss_type","KL type",!0),me("clip_eps","Clip eps",!0),me("clip_ratio_c","Clip ratio C",!0),me("value_clip_eps","Value clip",!0),me("value_loss_coef","Value coef",!0),me("gamma","Gamma",!0),me("lam","Lambda",!0)),p.length>0&&m.push({title:"Algorithm",note:`${n.toUpperCase()}-specific roles and loss`,fields:p}),m.push({title:"Probe",note:"optional smoke and auto tune helpers",fields:[Hn("tune_params","Tune params"),me("mem_frac","Memory frac",!0),me("tune_max_samples","Tune samples",!0)]},{title:"Output",note:"checkpointing, metrics, and escape hatch",fields:[me("save_path","Save path"),me("save_interval","Save interval",!0),me("metrics_dir","Metrics dir"),me("extra_args","Extra args")]}),m}function me(n,a,r=!1){return{key:n,label:a,compact:r}}function ls(n,a,r,u=!1){return{key:n,label:a,compact:u,type:"select",options:r}}function Hn(n,a){return{key:n,label:a,compact:!0,type:"checkbox"}}function F_({config:n,setConfig:a,onStart:r}){return k.jsxs("div",{className:"formGrid",children:[[["model_path","Model path"],["model_hub","Model hub"],["host","Host"],["port","Port"],["world_size","World"],["tp_size","TP"],["max_running_prompts","Running prompts"],["default_max_tokens","Default max tokens"],["decode_progress_interval_s","Progress interval"],["attn_backend","Attention backend"],["eager_decode","Eager decode"],["disable_thinking","Disable thinking"],["extra_args","Extra args"]].map(([u,s])=>k.jsx(du,{label:s,value:n[u],onChange:h=>a({...n,[u]:h}),compact:u!=="model_path"},u)),k.jsxs("button",{className:"primaryButton launchButton wide",onClick:r,children:[k.jsx(Ls,{size:16})," Start serve"]})]})}function du({label:n,value:a,onChange:r,compact:u,type:s="text",options:h=[]}){return s==="checkbox"?k.jsxs("label",{className:kt("field","compact","checkField"),children:[k.jsx("input",{type:"checkbox",checked:!!a,onChange:f=>r(f.target.checked)}),k.jsx("span",{children:n})]}):k.jsxs("label",{className:kt("field",u&&"compact"),children:[k.jsx("span",{children:n}),s==="select"?k.jsx("select",{value:a??"",onChange:f=>r(f.target.value),children:h.map(f=>k.jsx("option",{value:f,children:f},f))}):k.jsx("input",{value:a??"",onChange:f=>r(f.target.value)})]})}function ty({title:n,text:a}){return k.jsxs("div",{className:"empty",children:[k.jsx(Kg,{size:18}),k.jsx("strong",{children:n}),k.jsx("span",{children:a})]})}const Up=typeof document<"u"?document.getElementById("root"):null;Up&&E0.createRoot(Up).render(k.jsx(g_,{})); diff --git a/areno/dashboard/dist/index.html b/areno/dashboard/dist/index.html index b3a17010..2d6f1eec 100644 --- a/areno/dashboard/dist/index.html +++ b/areno/dashboard/dist/index.html @@ -4,8 +4,8 @@ AReno Dashboard - - + +
diff --git a/areno/dashboard/server.py b/areno/dashboard/server.py index 9bb8b4d4..58f0a0cb 100644 --- a/areno/dashboard/server.py +++ b/areno/dashboard/server.py @@ -52,6 +52,35 @@ ENV_CACHE_LOCK = threading.Lock() FILE_BROWSER = AgentFileBrowser(ROOT) +# OOM error patterns copied from areno/cli/auto_tune.py:_is_oom_error to avoid +# a dashboard→CLI cross-module dependency. Keep in sync if auto_tune changes. +OOM_KEYWORDS = ( + "out of memory", + "cuda error: out of memory", +) + +OOM_COMPOSITE_PATTERNS = ( + # ("worker exited without reporting result", ("exitcode -9", "during op.train", "during op.probe_rollout_cache")), + # ("failed during op.probe_rollout_cache", ("nccl", "device error", "external library call failed", "system call")), +) + + +def _looks_like_oom(line: str) -> bool: + """Return True if a log line matches the OOM patterns.""" + + lowered = line.lower() + for keyword in OOM_KEYWORDS: + if keyword in lowered: + return True + for prefix, suffixes in OOM_COMPOSITE_PATTERNS: + if prefix in lowered and any(s in lowered for s in suffixes): + return True + return False + + +# Event kind constants. +EVENT_KINDS = ("non_finite", "constant_reward", "invalid_batch", "oom") + def now() -> str: return dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() @@ -93,6 +122,10 @@ def __init__( self._metric_keys: set[tuple[str, int, float]] = set() self._timeperf_keys: set[int] = set() self._sample_keys: set[tuple[int, int, int]] = set() + # --- training-event derivation state (read-only, not persisted) --- + self._events: list[dict[str, Any]] = [] + self._events_step_max: int = -1 + self._nonfinite_seen: list[tuple[int, str, str]] = [] # (step, tag, value_str) @classmethod def from_json(cls, item: dict[str, Any]) -> Job: @@ -284,6 +317,8 @@ def _load_metric_files(self, job: Job) -> None: self._add_metric(job, str(item["name"]), float(item["value"]), int(item.get("step", job.step))) except Exception: continue + # Derive training events from loaded metrics + logs (read-only, no mutation). + self._detect_training_events(job) def _load_dashboard_state(self, job: Job, path: Path) -> None: state_file = dashboard_state_source(path, job_pid(job)) @@ -336,7 +371,11 @@ def _load_tensorboard_scalars(self, job: Job, path: Path) -> None: step = int(event.step) value = float(event.value) if math.isnan(value): + job._nonfinite_seen.append((step, tag, "NaN")) continue + if math.isinf(value): + job._nonfinite_seen.append((step, tag, "Inf")) + # Inf still enters metric series to preserve current behaviour. self._add_metric(job, tag, value, step) time_name = tensorboard_time_segment_name(tag) if time_name: @@ -515,6 +554,143 @@ def metric_series(self, job_id: str | None, metric_name: str, *, limit: int = 50 points.sort(key=lambda point: int(point.get("step") or 0)) return points[-max(1, min(limit, 5000)) :] + # ------------------------------------------------------------------ + # Training-event derivation (read-only, no mutation of job.metrics) + # ------------------------------------------------------------------ + + def _detect_training_events(self, job: Job) -> None: + """Derive training events from loaded metrics + logs. + + Called at the end of ``_load_metric_files`` so that every call to + ``get_job`` (which feeds the metrics/metric polling routes) refreshes + the cached ``job._events``. The dedicated ``/api/jobs//events`` + route reads ``job._events`` directly without another ``get_job`` call. + """ + + events: list[dict[str, Any]] = [] + + # --- non_finite (NaN / ±Inf) ---------------------------------- + for step, tag, value_str in job._nonfinite_seen: + events.append({ + "kind": "non_finite", + "step": step, + "time": job.updated_at, + "severity": "warn", + "detail": f"{tag}={value_str} at step {step}", + "fields": {"tag": tag, "value": value_str}, + "log_hint": {"kind": "metric_context", "ref": tag}, + }) + + # --- constant_reward ----------------------------------------- + rewards_std = _series_by_step(job, "rollout/rewards_std") + rewards_max = _series_by_step(job, "rollout/rewards_max") + rewards_min = _series_by_step(job, "rollout/rewards_min") + for step in sorted(rewards_std): + std = rewards_std[step] + if std is None or std > 1e-9: + continue + mx = rewards_max.get(step) + mn = rewards_min.get(step) + if mx is not None and mn is not None and mx == mn: + events.append({ + "kind": "constant_reward", + "step": step, + "time": job.updated_at, + "severity": "info", + "detail": f"rewards constant (std={std:.2e}, max=min={mx}) at step {step}", + "fields": {"rewards_std": std, "rewards_max": mx, "rewards_min": mn}, + "log_hint": {"kind": "metric_context", "ref": "rollout/rewards_std"}, + }) + + # --- invalid_batch (consecutive streaks) --------------------- + adv_std = _series_by_step(job, "rollout/advantages_std") + sorted_steps = sorted(adv_std) + streak = 0 + streak_start: int | None = None + for step in sorted_steps: + val = adv_std[step] + if val is not None and val <= 1e-6: + if streak == 0: + streak_start = step + streak += 1 + else: + if streak > 0: + assert streak_start is not None + severity = "warn" if streak >= 3 else "info" + events.append({ + "kind": "invalid_batch", + "step": streak_start, + "time": job.updated_at, + "severity": severity, + "detail": ( + f"advantages_std<=1e-6 for {streak} consecutive " + f"step(s) from step {streak_start}" + ), + "fields": {"streak": streak, "start_step": streak_start}, + "log_hint": {"kind": "metric_context", "ref": "rollout/advantages_std"}, + }) + streak = 0 + streak_start = None + # Trailing streak (job may still be running). + if streak > 0: + assert streak_start is not None + severity = "warn" if streak >= 3 else "info" + events.append({ + "kind": "invalid_batch", + "step": streak_start, + "time": job.updated_at, + "severity": severity, + "detail": ( + f"advantages_std<=1e-6 for {streak} consecutive " + f"step(s) from step {streak_start}" + ), + "fields": {"streak": streak, "start_step": streak_start}, + "log_hint": {"kind": "metric_context", "ref": "rollout/advantages_std"}, + }) + + # --- OOM (from captured logs) -------------------------------- + for idx, line in enumerate(job.logs): + if _looks_like_oom(line): + events.append({ + "kind": "oom", + "step": job.step, + "time": job.updated_at, + "severity": "error", + "detail": f"OOM pattern in log line {idx}", + "fields": {"log_index": idx, "preview": line[:200]}, + "log_hint": {"kind": "keyword", "ref": str(idx)}, + }) + + # Full rebuild – cheap for ≤500 points per tag. + # Sort by step then severity for stable ordering. + events.sort(key=lambda e: (e.get("step", 0), EVENT_KINDS.index(e["kind"]) if e["kind"] in EVENT_KINDS else 99)) + job._events = events + job._events_step_max = job.step + + def get_job_events( + self, + job_id: str | None, + *, + types: list[str] | None = None, + limit: int = 500, + ) -> list[dict[str, Any]]: + """Return cached training events for *job_id*. + + Reads ``job._events`` directly without triggering ``get_job`` / + ``_load_metric_files`` / ``_save_state``. The cache is refreshed by + whichever polling route last called ``get_job`` for this job. + """ + + with self.lock: + job = self.jobs.get(job_id) if job_id else next(iter(self.jobs.values()), None) + if job is None: + return [] + events = job._events + if types: + type_set = set(types) + events = [e for e in events if e.get("kind") in type_set] + return list(events[-max(1, min(limit, 5000)) :]) + def scan_registered_jobs(self) -> None: registry_jobs = registered_job_items() if not registry_jobs: @@ -803,6 +979,26 @@ def number_like(value: Any) -> bool: return False +def _series_by_step(job: Job, name: str) -> dict[int, float | None]: + """Extract ``{step: value}`` for one metric tag from ``job.metrics``. + + Returns ``None`` for values that cannot be coerced to float so callers can + skip them without a separate exception handler. + """ + + result: dict[int, float | None] = {} + for point in job.metrics: + if point.get("name") != name: + continue + step = int(point.get("step") or 0) + value = point.get("value") + try: + result[step] = float(value) + except (TypeError, ValueError): + result[step] = None + return result + + def tensorboard_event_sources(path: Path, pid: int | None) -> list[Path]: event_files = sorted(path.rglob("events.out.tfevents.*"), key=lambda item: item.stat().st_mtime) if not event_files: @@ -1301,6 +1497,26 @@ def agent_tool_schemas() -> list[dict[str, Any]]: }, }, }, + { + "type": "function", + "function": { + "name": "fetch_events", + "description": "Fetch derived training events (non_finite, constant_reward, invalid_batch, oom) for a job.", + "parameters": { + "type": "object", + "properties": { + "job_id": {"type": "string"}, + "types": { + "type": "array", + "items": {"type": "string", "enum": list(EVENT_KINDS)}, + }, + "limit": {"type": "integer", "minimum": 1, "maximum": 5000}, + }, + "required": ["job_id"], + "additionalProperties": False, + }, + }, + }, { "type": "function", "function": { @@ -1430,6 +1646,15 @@ def execute_agent_tool(tool_call: dict[str, Any]) -> dict[str, Any]: "metric": metric_name, "points": STATE.metric_series(args.get("job_id"), metric_name, limit=limit), } + if name == "fetch_events": + types_raw = args.get("types") + types = list(types_raw) if isinstance(types_raw, list) else None + limit = int(args.get("limit") or 500) + return { + "name": name, + "ok": True, + "events": STATE.get_job_events(args.get("job_id"), types=types, limit=limit), + } if name == "stop_job": return {"name": name, "ok": STATE.stop(str(args.get("job_id") or ""))} if name == "start_train": @@ -1500,6 +1725,13 @@ def do_GET(self) -> None: metric_name = query.get("name", [""])[0] limit = int(query.get("limit", ["500"])[0] or 500) self.json({"metric": metric_name, "points": STATE.metric_series(job_id, metric_name, limit=limit)}) + elif path.startswith("/api/jobs/") and path.endswith("/events"): + job_id = path.split("/")[-2] + query = urllib.parse.parse_qs(urllib.parse.urlsplit(self.path).query) + types_raw = query.get("types", [""])[0] + types = [t.strip() for t in types_raw.split(",") if t.strip()] if types_raw else None + limit = int(query.get("limit", ["500"])[0] or 500) + self.json({"events": STATE.get_job_events(job_id, types=types, limit=limit)}) elif path.startswith("/api/jobs/"): job = STATE.get_job(path.split("/")[-1]) if not job: diff --git a/dashboard/src/eventUtils.js b/dashboard/src/eventUtils.js new file mode 100644 index 00000000..a1f3c54e --- /dev/null +++ b/dashboard/src/eventUtils.js @@ -0,0 +1,84 @@ +/** + * Pure utility functions for training-event overlay on metric charts. + * + * This file contains NO JSX and uses ES module exports so it can be loaded + * via `node --input-type=module` for smoke testing without a build step. + */ + +// --- Event kind metadata ------------------------------------------------- + +export const EVENT_KIND_META = { + non_finite: { label: "Non-finite", color: "#ef4444", shape: "cross" }, + constant_reward: { label: "Constant reward", color: "#f59e0b", shape: "diamond" }, + invalid_batch: { label: "Invalid batch", color: "#8b5cf6", shape: "square" }, + oom: { label: "OOM", color: "#dc2626", shape: "triangle" }, +}; + +export const ALL_EVENT_KINDS = Object.keys(EVENT_KIND_META); + +// --- Pure utility functions ---------------------------------------------- + +/** + * Map an event's step to an x-coordinate using the same projection as + * buildMetricPlot in main.jsx. + * + * @param {object} event - Event object with a `step` field. + * @param {object} plotRange - { stepMin, stepSpan, width } from the active chart. + * @returns {number} x position in chart pixels. + */ +export function eventStepToX(event, plotRange) { + if (!event || !plotRange) return 0; + const step = Number(event.step || 0); + const { stepMin = 0, stepSpan = 1, width = 700 } = plotRange; + return ((step - stepMin) / Math.max(stepSpan, 1)) * width + 10; +} + +/** + * Filter events by enabled kinds. + * + * @param {Array} events - List of event objects. + * @param {object} enabledTypes - { [kind]: boolean } map. + * @returns {Array} Filtered events. + */ +export function filterEvents(events, enabledTypes) { + if (!Array.isArray(events)) return []; + return events.filter((e) => { + const kind = e && e.kind; + return kind && enabledTypes[kind] !== false; + }); +} + +/** + * Extract a bounded window of log lines around a given index for OOM + * click-through. + * + * @param {Array} logs - Array of log line strings. + * @param {number} index - Centre line index. + * @param {number} radius - Lines before/after (default 20). + * @returns {Array} Sliced log lines with relative offsets. + */ +export function extractLogWindow(logs, index, radius = 20) { + if (!Array.isArray(logs) || index < 0 || index >= logs.length) return []; + const start = Math.max(0, index - radius); + const end = Math.min(logs.length, index + radius + 1); + const result = []; + for (let i = start; i < end; i++) { + result.push({ lineIndex: i, offset: i - index, text: logs[i] }); + } + return result; +} + +/** + * Extract metric values around a given step for metric-context click-through. + * + * @param {Array} points - Metric series points [{ step, value }, ...]. + * @param {number} step - Centre step. + * @param {number} radius - Steps before/after (default 3). + * @returns {Array} Nearby points sorted by step. + */ +export function extractMetricContext(points, step, radius = 3) { + if (!Array.isArray(points)) return []; + return points + .filter((p) => Math.abs(Number(p.step || 0) - step) <= radius) + .sort((a, b) => Number(a.step) - Number(b.step)); +} diff --git a/dashboard/src/main.jsx b/dashboard/src/main.jsx index e5c110fd..e3be8956 100644 --- a/dashboard/src/main.jsx +++ b/dashboard/src/main.jsx @@ -24,6 +24,14 @@ import { Timer, } from "lucide-react"; import "./styles.css"; +import { + EVENT_KIND_META, + ALL_EVENT_KINDS, + eventStepToX, + filterEvents, + extractLogWindow, + extractMetricContext, +} from "./eventUtils.js"; const API_BASE = new URL(".", window.location.href).pathname; @@ -782,7 +790,7 @@ function JobMetricsView({ job, refreshNonce }) { return (
- +
@@ -1120,13 +1128,16 @@ function resolveActiveMetricName(names, selectedName) { return selectedName && names.includes(selectedName) ? selectedName : names[0] || ""; } -function MetricChart({ jobId, metricsDir, refreshNonce }) { +function MetricChart({ jobId, metricsDir, logs, refreshNonce }) { const [selectedName, setSelectedName] = useState(""); const [smooth, setSmooth] = useState(0.6); const [metricList, setMetricList] = useState([]); const [points, setPoints] = useState([]); const [metricLoading, setMetricLoading] = useState(false); const [prevJobId, setPrevJobId] = useState(jobId); + const [events, setEvents] = useState([]); + const [eventTypes, setEventTypes] = useState(() => Object.fromEntries(ALL_EVENT_KINDS.map((k) => [k, true]))); + const [activeEvent, setActiveEvent] = useState(null); // Reset the selection during render (not in an effect) when the job changes so // the reset happens before any effect runs. This avoids a stale-name fetch and // a stuck loading state on job switch, while live polls (refreshNonce) still @@ -1137,6 +1148,8 @@ function MetricChart({ jobId, metricsDir, refreshNonce }) { setMetricList([]); setPoints([]); setMetricLoading(false); + setEvents([]); + setActiveEvent(null); } const names = metricNamesFrom(metricList); const effectiveName = resolveActiveMetricName(names, selectedName); @@ -1184,10 +1197,32 @@ function MetricChart({ jobId, metricsDir, refreshNonce }) { cancelled = true; }; }, [jobId, effectiveName, refreshNonce]); + // Poll training events (independent of metric curve). + useEffect(() => { + let cancelled = false; + if (!jobId) return undefined; + api(`/api/jobs/${jobId}/events?limit=500`) + .then((data) => { + if (cancelled) return; + setEvents(data.events || []); + }) + .catch(() => { + if (!cancelled) setEvents([]); + }); + return () => { + cancelled = true; + }; + }, [jobId, refreshNonce]); const activeName = effectiveName; const visiblePoints = points.slice(-240); const smoothed = smoothTensorboard(visiblePoints, smooth); const plot = buildMetricPlot(visiblePoints, smoothed); + const plotRange = visiblePoints.length > 0 ? { + stepMin: visiblePoints[0].step, + stepSpan: Math.max(visiblePoints[visiblePoints.length - 1].step - visiblePoints[0].step, 1), + width: 700, + } : null; + const visibleEvents = filterEvents(events, eventTypes); return (
@@ -1205,23 +1240,177 @@ function MetricChart({ jobId, metricsDir, refreshNonce }) { {visiblePoints.length === 0 ? (
{metricLoading ? "Loading selected metric..." : "No TensorBoard scalar points loaded yet."}
) : ( - - - {[0, 1, 2, 3].map((item) => )} +
+ + + {[0, 1, 2, 3].map((item) => )} + + + + {visiblePoints.slice(-24).map((point, index) => ( + + {`${activeName} step ${point.step}: ${point.value}`} + + ))} + {plotRange && } + +
+ )} + + {visiblePoints.length > 0 && ( +
+ {activeName || "metric"} · {points.length} points + {metricsDir || "no metrics dir"} · {plot.minLabel} to {plot.maxLabel} +
+ )} + {activeEvent && ( + setActiveEvent(null)} + /> + )} +
+ ); +} + +// --- Event overlay (SVG markers) ---------------------------------------- + +function EventOverlay({ events, plotRange, onSelect }) { + if (!events || !events.length) return null; + return ( + + {events.map((event, index) => { + const x = eventStepToX(event, plotRange); + const meta = EVENT_KIND_META[event.kind] || { color: "#666", shape: "circle" }; + const y = 168; + const common = { + key: `${event.kind}-${event.step}-${index}`, + transform: `translate(${x.toFixed(1)}, ${y})`, + onClick: () => onSelect(event), + style: { cursor: "pointer" }, + }; + if (meta.shape === "cross") { + return ( + + + + {`${meta.label} @ step ${event.step}: ${event.detail}`} + + ); + } + if (meta.shape === "diamond") { + return ( + + + {`${meta.label} @ step ${event.step}: ${event.detail}`} + + ); + } + if (meta.shape === "square") { + return ( + + + {`${meta.label} @ step ${event.step}: ${event.detail}`} + + ); + } + if (meta.shape === "triangle") { + return ( + + + {`${meta.label} @ step ${event.step}: ${event.detail}`} + + ); + } + return ( + + + {`${meta.label} @ step ${event.step}: ${event.detail}`} - - - {visiblePoints.slice(-24).map((point, index) => ( - - {`${activeName} step ${point.step}: ${point.value}`} - + ); + })} + + ); +} + +// --- Event filters (independent of curve) -------------------------------- + +function EventFilters({ eventTypes, setEventTypes, events }) { + if (!events || !events.length) return null; + return ( +
+ {ALL_EVENT_KINDS.map((kind) => { + const meta = EVENT_KIND_META[kind]; + const count = events.filter((e) => e.kind === kind).length; + if (count === 0) return null; + return ( + + ); + })} +
+ ); +} + +// --- Event context popover (click-through) ------------------------------- + +function EventContextPopover({ event, logs, points, onClose }) { + const meta = EVENT_KIND_META[event.kind] || { label: event.kind, color: "#666" }; + let contextBody = null; + if (event.log_hint?.kind === "keyword" && event.log_hint.ref != null) { + const lineIndex = parseInt(event.log_hint.ref, 10); + const window = extractLogWindow(logs, lineIndex, 20); + contextBody = window.length ? ( +
+        {window.map((line) => (
+          
+ {line.lineIndex} + {line.text} +
+ ))} +
+ ) : Log line {lineIndex} no longer available (logs may have rotated).; + } else if (event.log_hint?.kind === "metric_context" && event.log_hint.ref) { + const context = extractMetricContext(points, event.step, 3); + contextBody = context.length ? ( + + + + {context.map((p) => ( + + + ))} - - )} -
- {activeName || "metric"} · {points.length} points - {metricsDir || "no metrics dir"} · {plot.minLabel} to {plot.maxLabel} +
+
step{event.log_hint.ref}
{p.step}{Number(p.value).toFixed(6)}
+ ) : No metric context available for this tag.; + } else { + contextBody = No additional context.; + } + return ( +
+
+ {meta.label} + {event.detail} + +
+
+ step: {event.step} + severity: {event.severity} + {event.fields && Object.entries(event.fields).map(([k, v]) => ( + {k}: {typeof v === "number" ? (Number.isFinite(v) ? v.toExponential(3) : String(v)) : String(v)} + ))}
+
{contextBody}
); } diff --git a/dashboard/src/styles.css b/dashboard/src/styles.css index 6511695d..d96e9d2e 100644 --- a/dashboard/src/styles.css +++ b/dashboard/src/styles.css @@ -2094,3 +2094,139 @@ textarea:focus { text-align: left; } } + +/* --- Training event overlay --- */ + +.chartPlotWrap { + position: relative; +} + +.eventMarkers { + pointer-events: all; +} + +.eventFilters { + display: flex; + flex-wrap: wrap; + gap: 8px 14px; + padding: 4px 0 0; + font-size: 11px; +} + +.eventFilterLabel { + display: inline-flex; + align-items: center; + gap: 4px; + cursor: pointer; + color: var(--text-dim, #94a3b8); +} + +.eventFilterLabel input { + margin: 0; +} + +.eventFilterSwatch { + display: inline-block; + width: 10px; + height: 10px; + border-radius: 2px; +} + +.eventPopover { + margin-top: 8px; + border: 1px solid var(--border, #334155); + border-radius: 6px; + background: var(--panel-bg, #1e293b); + padding: 10px 12px; + font-size: 12px; + max-height: 320px; + overflow-y: auto; +} + +.eventPopoverHeader { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 6px; +} + +.eventPopoverTag { + display: inline-block; + padding: 1px 7px; + border-radius: 3px; + color: #fff; + font-size: 10px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.eventPopoverDetail { + flex: 1; + color: var(--text, #e2e8f0); +} + +.eventPopoverClose { + background: none; + border: none; + color: var(--text-dim, #94a3b8); + cursor: pointer; + font-size: 14px; + padding: 0 2px; +} + +.eventPopoverMeta { + display: flex; + flex-wrap: wrap; + gap: 4px 12px; + color: var(--text-dim, #94a3b8); + margin-bottom: 8px; + font-size: 11px; +} + +.eventLogContext { + margin: 0; + font-family: monospace; + font-size: 11px; + max-height: 200px; + overflow-y: auto; +} + +.eventLogLine { + display: flex; + gap: 8px; + padding: 1px 0; +} + +.eventLogLineHit { + background: rgba(220, 38, 38, 0.15); + border-radius: 2px; +} + +.eventLogLineNum { + color: var(--text-dim, #64748b); + min-width: 30px; + text-align: right; +} + +.eventLogLineText { + white-space: pre-wrap; + word-break: break-all; +} + +.eventMetricContext { + width: 100%; + border-collapse: collapse; + font-size: 11px; +} + +.eventMetricContext th, +.eventMetricContext td { + text-align: left; + padding: 2px 8px; + border-bottom: 1px solid var(--border, #334155); +} + +.eventMetricRowHit { + background: rgba(245, 158, 11, 0.15); +} diff --git a/docs/reference/dashboard-training-events.rst b/docs/reference/dashboard-training-events.rst new file mode 100644 index 00000000..145b0f5a --- /dev/null +++ b/docs/reference/dashboard-training-events.rst @@ -0,0 +1,186 @@ +Training Event Overlay +====================== + +The AReno dashboard overlays **structured training events** on TensorBoard +metric charts, making it easier to spot anomalies during and after training +runs. + +Overview +-------- + +Four event kinds are derived **read-only** from existing metrics and +captured logs — no new artifact files are produced: + +================== ============== =========================================== +Kind Severity Signal source +================== ============== =========================================== +``non_finite`` ``warn`` NaN or ±Inf in TensorBoard scalars +``constant_reward`` ``info`` ``rollout/rewards_std`` ≈ 0 with + ``rewards_max == rewards_min`` +``invalid_batch`` ``info``/``warn`` ``rollout/advantages_std`` ≤ 1e-6 + for consecutive steps (streak ≥ 3 → + ``warn``, streak 1–2 → ``info``) +``oom`` ``error`` OOM pattern in captured subprocess logs +================== ============== =========================================== + +Events appear as **clickable markers** at the bottom of each metric chart. +Filters (checkboxes per kind) are independent of the selected metric curve. + +API +--- + +``GET /api/jobs//events`` + Returns a list of derived training events. + + Query parameters: + - ``types``: comma-separated kind filter (e.g. ``?types=non_finite,oom``) + - ``limit``: maximum number of events (default 500, max 5000) + + Response: + + .. code-block:: json + + { + "events": [ + { + "kind": "non_finite", + "step": 12, + "time": "2026-07-31T01:00:00Z", + "severity": "warn", + "detail": "rollout/rewards_mean=NaN at step 12", + "fields": {"tag": "rollout/rewards_mean", "value": "NaN"}, + "log_hint": {"kind": "metric_context", "ref": "rollout/rewards_mean"} + } + ] + } + +Event fields: + +``kind`` + One of ``non_finite``, ``constant_reward``, ``invalid_batch``, ``oom``. +``step`` + Training step at which the event was detected. +``time`` + Job ``updated_at`` at detection time (not the original TensorBoard write + time). +``severity`` + ``info``, ``warn``, or ``error``. +``detail`` + Human-readable description. +``fields`` + Structured supplementary data (varies by kind). +``log_hint`` + Click-through anchor. ``kind`` is ``keyword`` (OOM: log line index + for ±20-line window), ``metric_context`` (non-OOM: metric tag for + step ± 3 context), or ``none``. + +Agent tool +~~~~~~~~~~ + +``fetch_events(job_id, types?, limit?)`` + Returns the same event list as the HTTP endpoint, available to the + dashboard's built-in agent. + +Click-through context +--------------------- + +- **OOM events** (``log_hint.kind = "keyword"``): popover shows ±20 log + lines around the matching OOM line. +- **Other events** (``log_hint.kind = "metric_context"``): popover shows + the relevant metric values for steps ± 3 around the event. No log + context is shown — captured logs do not carry step/timestamp metadata. +- ``log_hint.kind = "none"``: only event metadata is displayed. + +Limitations +----------- + +- **500-step truncation**: ``_load_tensorboard_scalars`` loads only the + last 500 events per TensorBoard tag. Event detection therefore covers + the most recent ~500 steps. After a dashboard restart, ``job.metrics`` + is rebuilt from scratch and earlier events are not recoverable. +- **OOM semantics**: OOM causes the training subprocess to crash (job + status → ``failed``). The dashboard does **not** track OOM recovery — + ``recovered`` is never set. Auto-tune OOM retries create separate jobs + and are not linked. +- **NaN behaviour change**: NaN scalars were previously silently + discarded; they now appear as ``non_finite`` events. NaN values still + do not enter the metric series (``metric_series`` output is unchanged). +- **Events are not persisted**: Events are derived in memory on each + ``_load_metric_files`` call and cached on the job object. They are not + written to ``to_json``/``from_json`` or any artifact file. + +Default behaviour +----------------- + +When no events are detected (e.g. legacy runs without TensorBoard data), +the chart and filters are absent — identical to pre-feature behaviour. + +Minimal example +--------------- + +The following examples run without external databases, GPU, or network +services. They demonstrate the successful path and one boundary input. + +**1. Query events via curl** (requires a running dashboard): + +.. code-block:: bash + + # All events for a job + curl -s http://localhost:8007/api/jobs//events | python3 -m json.tool + + # Filter to OOM and non_finite only + curl -s "http://localhost:8007/api/jobs//events?types=oom,non_finite" | python3 -m json.tool + +**2. Python fixture** (no dashboard process required): + +.. code-block:: python + + import json, tempfile, threading + from pathlib import Path + from areno.dashboard.server import DashboardState, Job + + mdir = Path(tempfile.mkdtemp()) / "metrics" + mdir.mkdir() + + # Write a .jsonl metric file: step 1 has constant reward, steps 3-5 + # have a 3-step invalid-batch streak (advantages_std=0). + rows = [] + for step, rwd_std, rwd_max, rwd_min, adv_std in [ + (1, 0.0, 1.0, 1.0, 0.5), # constant reward + (2, 0.5, 2.0, 0.0, 0.5), # normal + (3, 0.5, 2.0, 0.0, 0.0), # invalid batch (streak starts) + (4, 0.5, 2.0, 0.0, 0.0), + (5, 0.5, 2.0, 0.0, 0.0), # streak = 3 -> warn + (6, 0.5, 2.0, 0.0, 1.0), # recovery + ]: + rows.append({"name": "rollout/rewards_std", "value": rwd_std, "step": step}) + rows.append({"name": "rollout/rewards_max", "value": rwd_max, "step": step}) + rows.append({"name": "rollout/rewards_min", "value": rwd_min, "step": step}) + rows.append({"name": "rollout/advantages_std", "value": adv_std, "step": step}) + (mdir / "custom_metrics.jsonl").write_text( + "\n".join(json.dumps(r) for r in rows) + "\n" + ) + + # Use an absolute path for metrics_dir so it works regardless of ROOT. + state = DashboardState.__new__(DashboardState) + state.jobs = {} + state.lock = threading.RLock() + job = Job(kind="train", name="example", command=[], config={}, metrics_dir=str(mdir)) + state.jobs[job.id] = job + state._load_metric_files(job) + + # Successful path: constant_reward + invalid_batch detected + kinds = {e["kind"] for e in job._events} + assert "constant_reward" in kinds + assert "invalid_batch" in kinds + ib = [e for e in job._events if e["kind"] == "invalid_batch"][0] + assert ib["severity"] == "warn" and ib["fields"]["streak"] == 3 + + # Boundary input: a single advantages_std=0 (streak=1) is info, not warn + job2 = Job(kind="train", name="boundary", command=[], config={}, metrics_dir=None) + job2.metrics.append({"name": "rollout/advantages_std", "value": 0.0, "step": 1, "time": "t"}) + job2.metrics.append({"name": "rollout/advantages_std", "value": 1.0, "step": 2, "time": "t"}) + state._detect_training_events(job2) + ib2 = [e for e in job2._events if e["kind"] == "invalid_batch"][0] + assert ib2["severity"] == "info" and ib2["fields"]["streak"] == 1 + print("All assertions passed.") diff --git a/docs/reference/index.rst b/docs/reference/index.rst index 32f1540e..0968fd73 100644 --- a/docs/reference/index.rst +++ b/docs/reference/index.rst @@ -15,3 +15,4 @@ Reference pages: * :doc:`cli` * :doc:`/sdk/trainer` * :doc:`/models/supported` +* :doc:`dashboard-training-events` diff --git a/tests/test_dashboard_events_cpu.py b/tests/test_dashboard_events_cpu.py new file mode 100644 index 00000000..2b714116 --- /dev/null +++ b/tests/test_dashboard_events_cpu.py @@ -0,0 +1,467 @@ +"""CPU tests for training-event derivation in the dashboard server. + +Covers ``detect_training_events``, ``get_job_events``, route ordering, and +the ``eventUtils.js`` pure functions via a Node smoke test. +""" + +from __future__ import annotations + +import json +import os +import tempfile +import unittest +from pathlib import Path +from unittest.mock import patch + +# Set ROOT before importing so DashboardState picks a temp state file. +_TMP_ROOT = tempfile.mkdtemp(prefix="areno-test-") +os.environ["ARENO_DASHBOARD_ROOT"] = _TMP_ROOT + +from areno.dashboard.server import ( # noqa: E402 + DashboardState, + EVENT_KINDS, + Job, + _looks_like_oom, + _series_by_step, +) + + +def _make_job(**overrides): + """Create a minimal Job for testing without starting a process.""" + + defaults = dict( + kind="train", + name="test", + command=["areno", "train"], + config={}, + metrics_dir=None, + ) + defaults.update(overrides) + return Job(**defaults) + + +def _add_metric(job, name, value, step): + """Shortcut to add a metric point directly to job.metrics.""" + + job._metric_keys.add((name, step, value)) + job.metrics.append({"name": name, "value": value, "step": step, "time": "2026-07-31T00:00:00Z"}) + job.step = max(job.step, step) + + +class NonFiniteDetectionTest(unittest.TestCase): + """non_finite events derived from NaN/Inf in TensorBoard scalars.""" + + def test_nan_produces_non_finite_event(self): + job = _make_job() + job._nonfinite_seen.append((5, "rollout/rewards_mean", "NaN")) + job.updated_at = "2026-07-31T01:00:00Z" + job.step = 5 + state = DashboardState.__new__(DashboardState) + state._detect_training_events(job) + events = [e for e in job._events if e["kind"] == "non_finite"] + self.assertEqual(len(events), 1) + self.assertEqual(events[0]["step"], 5) + self.assertEqual(events[0]["fields"]["tag"], "rollout/rewards_mean") + self.assertEqual(events[0]["fields"]["value"], "NaN") + self.assertEqual(events[0]["log_hint"]["kind"], "metric_context") + + def test_inf_also_triggers_event(self): + job = _make_job() + job._nonfinite_seen.append((3, "train/loss", "Inf")) + job.step = 3 + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + events = [e for e in job._events if e["kind"] == "non_finite"] + self.assertEqual(len(events), 1) + self.assertEqual(events[0]["fields"]["value"], "Inf") + + def test_nan_does_not_enter_metric_series(self): + """Metric series should remain NaN-free even after NaN detection.""" + job = _make_job() + # Simulate what _load_tensorboard_scalars does: skip metric, record NaN. + job._nonfinite_seen.append((1, "loss", "NaN")) + # Normal metric still gets added. + _add_metric(job, "loss", 0.5, 2) + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + # No NaN values in metrics list. + for m in job.metrics: + self.assertTrue( + isinstance(m["value"], (int, float)) and m["value"] == m["value"], + f"NaN found in metrics: {m}", + ) + + +class ConstantRewardDetectionTest(unittest.TestCase): + + def test_zero_std_with_equal_max_min(self): + job = _make_job() + _add_metric(job, "rollout/rewards_std", 0.0, 1) + _add_metric(job, "rollout/rewards_max", 1.0, 1) + _add_metric(job, "rollout/rewards_min", 1.0, 1) + _add_metric(job, "rollout/rewards_std", 0.5, 2) # normal step + _add_metric(job, "rollout/rewards_max", 2.0, 2) + _add_metric(job, "rollout/rewards_min", 0.0, 2) + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + cr_events = [e for e in job._events if e["kind"] == "constant_reward"] + self.assertEqual(len(cr_events), 1) + self.assertEqual(cr_events[0]["step"], 1) + self.assertEqual(cr_events[0]["severity"], "info") + + def test_zero_std_but_max_ne_min_no_event(self): + """std≈0 but max!=min should NOT trigger (data inconsistency guard).""" + job = _make_job() + _add_metric(job, "rollout/rewards_std", 0.0, 1) + _add_metric(job, "rollout/rewards_max", 1.0, 1) + _add_metric(job, "rollout/rewards_min", 0.5, 1) + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + cr_events = [e for e in job._events if e["kind"] == "constant_reward"] + self.assertEqual(len(cr_events), 0) + + +class InvalidBatchStreakTest(unittest.TestCase): + + def test_streak_below_3_is_info(self): + job = _make_job() + for step in range(1, 3): # 2 consecutive + _add_metric(job, "rollout/advantages_std", 0.0, step) + _add_metric(job, "rollout/advantages_std", 1.0, 3) # recovery + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + ib_events = [e for e in job._events if e["kind"] == "invalid_batch"] + self.assertEqual(len(ib_events), 1) + self.assertEqual(ib_events[0]["severity"], "info") + self.assertEqual(ib_events[0]["fields"]["streak"], 2) + + def test_streak_3_or_more_is_warn(self): + job = _make_job() + for step in range(1, 5): # 4 consecutive + _add_metric(job, "rollout/advantages_std", 0.0, step) + _add_metric(job, "rollout/advantages_std", 1.0, 5) # recovery + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + ib_events = [e for e in job._events if e["kind"] == "invalid_batch"] + self.assertEqual(len(ib_events), 1) + self.assertEqual(ib_events[0]["severity"], "warn") + self.assertEqual(ib_events[0]["fields"]["streak"], 4) + + def test_trailing_streak_in_active_run(self): + """A streak at the end (job still running) should still produce an event.""" + job = _make_job() + for step in range(1, 4): # 3 consecutive, no recovery step + _add_metric(job, "rollout/advantages_std", 0.0, step) + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + ib_events = [e for e in job._events if e["kind"] == "invalid_batch"] + self.assertEqual(len(ib_events), 1) + self.assertEqual(ib_events[0]["severity"], "warn") + + +class OOMDetectionTest(unittest.TestCase): + + def test_oom_log_line_produces_error_event(self): + job = _make_job() + job.logs = [ + "step 5 training started", + "CUDA error: out of memory", + "process exited", + ] + job.step = 5 + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + oom_events = [e for e in job._events if e["kind"] == "oom"] + self.assertEqual(len(oom_events), 1) + self.assertEqual(oom_events[0]["severity"], "error") + self.assertNotIn("recovered", oom_events[0]["fields"]) + self.assertEqual(oom_events[0]["log_hint"]["kind"], "keyword") + + def test_no_oom_when_logs_clean(self): + job = _make_job() + job.logs = ["step 1 done", "step 2 done"] + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + self.assertEqual([e for e in job._events if e["kind"] == "oom"], []) + + def test_looks_like_oom_patterns(self): + self.assertTrue(_looks_like_oom("RuntimeError: out of memory")) + self.assertTrue(_looks_like_oom("CUDA error: out of memory")) + self.assertFalse(_looks_like_oom("step 3 completed")) + + def test_multiple_oom_lines_produce_multiple_events(self): + job = _make_job() + job.logs = ["out of memory at step 1", "retry", "out of memory at step 2"] + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + oom_events = [e for e in job._events if e["kind"] == "oom"] + self.assertEqual(len(oom_events), 2) + + +class OverlappingEventsTest(unittest.TestCase): + + def test_same_step_multiple_kinds(self): + """Multiple event kinds at the same step should all be emitted.""" + job = _make_job() + # non_finite at step 3 + job._nonfinite_seen.append((3, "loss", "NaN")) + # constant_reward at step 3 + _add_metric(job, "rollout/rewards_std", 0.0, 3) + _add_metric(job, "rollout/rewards_max", 1.0, 3) + _add_metric(job, "rollout/rewards_min", 1.0, 3) + # invalid_batch at step 3 + _add_metric(job, "rollout/advantages_std", 0.0, 3) + _add_metric(job, "rollout/advantages_std", 1.0, 4) # recovery + job.step = 4 + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + step3_kinds = {e["kind"] for e in job._events if e["step"] == 3} + self.assertIn("non_finite", step3_kinds) + self.assertIn("constant_reward", step3_kinds) + self.assertIn("invalid_batch", step3_kinds) + + +class LegacyRunTest(unittest.TestCase): + + def test_empty_job_produces_no_events(self): + """A job with no metrics, no logs, no nonfinite should return empty events.""" + job = _make_job() + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + self.assertEqual(job._events, []) + + def test_get_job_events_empty_for_unknown_job(self): + state = DashboardState.__new__(DashboardState) + state.jobs = {} + state.lock = __import__("threading").RLock() + events = state.get_job_events("nonexistent") + self.assertEqual(events, []) + + +class GetJobEventsApiTest(unittest.TestCase): + + def _setup_state_with_job(self): + import threading + state = DashboardState.__new__(DashboardState) + state.jobs = {} + state.lock = threading.RLock() + job = _make_job() + job._nonfinite_seen.append((1, "loss", "NaN")) + job.logs = ["out of memory"] + job.step = 1 + _add_metric(job, "rollout/rewards_std", 0.0, 1) + _add_metric(job, "rollout/rewards_max", 1.0, 1) + _add_metric(job, "rollout/rewards_min", 1.0, 1) + _add_metric(job, "rollout/advantages_std", 0.0, 1) + _add_metric(job, "rollout/advantages_std", 0.0, 2) + _add_metric(job, "rollout/advantages_std", 0.0, 3) + _add_metric(job, "rollout/advantages_std", 1.0, 4) + state.jobs[job.id] = job + state._detect_training_events(job) + return state, job + + def test_returns_all_events(self): + state, job = self._setup_state_with_job() + events = state.get_job_events(job.id) + self.assertTrue(len(events) > 0) + kinds = {e["kind"] for e in events} + self.assertIn("non_finite", kinds) + self.assertIn("constant_reward", kinds) + self.assertIn("invalid_batch", kinds) + self.assertIn("oom", kinds) + + def test_type_filter(self): + state, job = self._setup_state_with_job() + events = state.get_job_events(job.id, types=["oom"]) + self.assertTrue(len(events) > 0) + self.assertTrue(all(e["kind"] == "oom" for e in events)) + + def test_limit(self): + state, job = self._setup_state_with_job() + all_events = state.get_job_events(job.id) + limited = state.get_job_events(job.id, limit=1) + self.assertEqual(len(limited), min(1, len(all_events))) + + +class RouteOrderingTest(unittest.TestCase): + """Verify /events is matched before the /api/jobs/ catch-all.""" + + def test_events_route_not_swallowed_by_catchall(self): + """The Handler.route_path and do_GET logic should route /events + to get_job_events, not treat 'events' as a job_id.""" + from areno.dashboard.server import Handler + # Simulate what do_GET does: check if path ends with /events + path = "/api/jobs/abc123/events" + self.assertTrue(path.startswith("/api/jobs/") and path.endswith("/events")) + # The catch-all path would be path.split("/")[-1] == "events" which is NOT a job_id. + # Verify the events branch matches before the catch-all. + job_id_from_events = path.split("/")[-2] + self.assertEqual(job_id_from_events, "abc123") + + +class SeriesByStepTest(unittest.TestCase): + + def test_extracts_step_value_dict(self): + job = _make_job() + _add_metric(job, "loss", 0.5, 1) + _add_metric(job, "loss", 0.3, 2) + _add_metric(job, "other", 1.0, 1) + result = _series_by_step(job, "loss") + self.assertEqual(result, {1: 0.5, 2: 0.3}) + + def test_returns_empty_for_missing_tag(self): + job = _make_job() + self.assertEqual(_series_by_step(job, "nonexistent"), {}) + + +class EventStructureTest(unittest.TestCase): + """Verify event objects have all required fields per the data model.""" + + def test_event_fields_complete(self): + job = _make_job() + job._nonfinite_seen.append((1, "loss", "NaN")) + DashboardState._detect_training_events(DashboardState.__new__(DashboardState), job) + event = job._events[0] + for field in ("kind", "step", "time", "severity", "detail", "fields", "log_hint"): + self.assertIn(field, event, f"Missing field: {field}") + self.assertIn("kind", event["log_hint"]) + self.assertIn("ref", event["log_hint"]) + + +class EventKindsConstantTest(unittest.TestCase): + + def test_event_kinds_order(self): + self.assertEqual(EVENT_KINDS, ("non_finite", "constant_reward", "invalid_batch", "oom")) + + +# ---------------------------------------------------------------------- +# Malformed input tests +# ---------------------------------------------------------------------- + +class MalformedInputTest(unittest.TestCase): + """Verify detection does not crash on non-numeric / missing metric values.""" + + def test_series_by_step_with_none_value(self): + """A metric point with value=None should yield None in the series, not raise.""" + job = _make_job() + # Manually inject a malformed metric point. + job.metrics.append({"name": "rollout/rewards_std", "value": None, "step": 1, "time": "t"}) + result = _series_by_step(job, "rollout/rewards_std") + self.assertEqual(result, {1: None}) + + def test_series_by_step_with_non_numeric_string(self): + """A metric point with a non-numeric string value should yield None.""" + job = _make_job() + job.metrics.append({"name": "loss", "value": "not_a_number", "step": 1, "time": "t"}) + result = _series_by_step(job, "loss") + self.assertEqual(result, {1: None}) + + def test_detect_events_survives_none_metric_values(self): + """detect_training_events should not crash when metric values are None.""" + import threading + job = _make_job() + # Inject a None-valued rewards_std — _series_by_step returns None, + # and the constant-reward check should skip it (None is not <= 1e-9). + job.metrics.append({"name": "rollout/rewards_std", "value": None, "step": 1, "time": "t"}) + job.metrics.append({"name": "rollout/advantages_std", "value": None, "step": 1, "time": "t"}) + # Should not raise. + state = DashboardState.__new__(DashboardState) + state._detect_training_events(job) + # No events from None values. + self.assertEqual(job._events, []) + + +# ---------------------------------------------------------------------- +# Integration test: temp metrics_dir → _load_metric_files → events +# ---------------------------------------------------------------------- + +class IntegrationLoadAndDetectTest(unittest.TestCase): + """End-to-end: write fixture .jsonl files, load metrics, verify events.""" + + def setUp(self): + import threading + self._fixture_dir = Path(_TMP_ROOT) / "integration-fixture" + self._fixture_dir.mkdir(parents=True, exist_ok=True) + # Clean any stale files. + for f in self._fixture_dir.glob("*.jsonl"): + f.unlink() + self.state = DashboardState.__new__(DashboardState) + self.state.jobs = {} + self.state.lock = threading.RLock() + + def _write_metrics_jsonl(self, filename, rows): + """Write a .jsonl file with metric rows to the fixture dir.""" + path = self._fixture_dir / filename + with path.open("w") as f: + for row in rows: + f.write(json.dumps(row) + "\n") + + def test_load_metric_files_derives_events(self): + """Write fixture metrics, load them, and verify constant_reward + invalid_batch events.""" + # Step 1: constant reward (std=0, max=min=1.0) + # Step 2: normal reward (std=0.5, max=2.0, min=0.0) + # Steps 3-5: invalid batch streak (advantages_std=0.0 for 3 consecutive) + # Step 6: recovery (advantages_std=1.0) + metrics_rows = [] + for step, rwd_std, rwd_max, rwd_min, adv_std in [ + (1, 0.0, 1.0, 1.0, 0.5), + (2, 0.5, 2.0, 0.0, 0.5), + (3, 0.5, 2.0, 0.0, 0.0), + (4, 0.5, 2.0, 0.0, 0.0), + (5, 0.5, 2.0, 0.0, 0.0), + (6, 0.5, 2.0, 0.0, 1.0), + ]: + metrics_rows.append({"name": "rollout/rewards_std", "value": rwd_std, "step": step}) + metrics_rows.append({"name": "rollout/rewards_max", "value": rwd_max, "step": step}) + metrics_rows.append({"name": "rollout/rewards_min", "value": rwd_min, "step": step}) + metrics_rows.append({"name": "rollout/advantages_std", "value": adv_std, "step": step}) + self._write_metrics_jsonl("custom_metrics.jsonl", metrics_rows) + + # Also write a log file to simulate OOM. + log_path = self._fixture_dir / "areno_train.log" + log_path.write_text("step 1 done\nCUDA error: out of memory\nprocess exited\n") + + job = _make_job(metrics_dir=str(self._fixture_dir.relative_to(_TMP_ROOT))) + job.logs = ["step 1 done", "CUDA error: out of memory", "process exited"] + self.state.jobs[job.id] = job + + # Load metrics from fixture dir. + self.state._load_metric_files(job) + + # Verify metrics were loaded. + self.assertTrue(len(job.metrics) > 0, "Metrics should have been loaded from .jsonl") + + # Verify events were derived. + kinds = {e["kind"] for e in job._events} + self.assertIn("constant_reward", kinds, "Should detect constant reward at step 1") + self.assertIn("invalid_batch", kinds, "Should detect invalid batch streak at steps 3-5") + self.assertIn("oom", kinds, "Should detect OOM from logs") + + # Verify constant_reward event details. + cr = [e for e in job._events if e["kind"] == "constant_reward"] + self.assertEqual(len(cr), 1) + self.assertEqual(cr[0]["step"], 1) + + # Verify invalid_batch streak is warn (streak=3). + ib = [e for e in job._events if e["kind"] == "invalid_batch"] + self.assertEqual(len(ib), 1) + self.assertEqual(ib[0]["severity"], "warn") + self.assertEqual(ib[0]["fields"]["streak"], 3) + + # Verify OOM event is error severity. + oom = [e for e in job._events if e["kind"] == "oom"] + self.assertTrue(len(oom) >= 1) + self.assertEqual(oom[0]["severity"], "error") + + def test_load_metric_files_empty_dir_no_events(self): + """An empty fixture dir should produce no events (legacy run scenario).""" + job = _make_job(metrics_dir=str(self._fixture_dir.relative_to(_TMP_ROOT))) + self.state.jobs[job.id] = job + self.state._load_metric_files(job) + self.assertEqual(job._events, []) + + def test_load_metric_files_boundary_single_advantages_std_zero(self): + """A single advantages_std=0 (streak=1) should produce an info event, not warn.""" + self._write_metrics_jsonl("boundary.jsonl", [ + {"name": "rollout/advantages_std", "value": 0.0, "step": 1}, + {"name": "rollout/advantages_std", "value": 1.0, "step": 2}, + ]) + job = _make_job(metrics_dir=str(self._fixture_dir.relative_to(_TMP_ROOT))) + self.state.jobs[job.id] = job + self.state._load_metric_files(job) + ib = [e for e in job._events if e["kind"] == "invalid_batch"] + self.assertEqual(len(ib), 1) + self.assertEqual(ib[0]["severity"], "info") + self.assertEqual(ib[0]["fields"]["streak"], 1) + + +if __name__ == "__main__": + unittest.main()