diff --git a/apps/fabro-web/app/routes/run-graph.tsx b/apps/fabro-web/app/routes/run-graph.tsx index ed7cfc8fa..1596c26a4 100644 --- a/apps/fabro-web/app/routes/run-graph.tsx +++ b/apps/fabro-web/app/routes/run-graph.tsx @@ -34,7 +34,6 @@ export async function loader({ request, params }: any) { type Direction = "LR" | "TB"; function buildDot(direction: Direction) { - const gt = graphTheme; return `digraph sync { graph [label="Sync"] rankdir=${direction} @@ -44,27 +43,27 @@ function buildDot(direction: Direction) { node [ fontname="ui-monospace, monospace" fontsize=11 - fontcolor="${gt.nodeText}" - color="${gt.edgeColor}" - fillcolor="${gt.nodeFill}" + fontcolor="${graphTheme.nodeText}" + color="${graphTheme.edgeColor}" + fillcolor="${graphTheme.nodeFill}" style=filled penwidth=1.2 ] edge [ fontname="ui-monospace, monospace" fontsize=9 - fontcolor="${gt.fontcolor}" - color="${gt.edgeColor}" + fontcolor="${graphTheme.fontcolor}" + color="${graphTheme.edgeColor}" arrowsize=0.7 penwidth=1.2 ] - start [shape=Mdiamond, label="Start", fillcolor="${gt.startFill}", color="${gt.startBorder}", fontcolor="${gt.startText}"] - exit [shape=Msquare, label="Exit", fillcolor="${gt.startFill}", color="${gt.startBorder}", fontcolor="${gt.startText}"] + start [shape=Mdiamond, label="Start", fillcolor="${graphTheme.startFill}", color="${graphTheme.startBorder}", fontcolor="${graphTheme.startText}"] + exit [shape=Msquare, label="Exit", fillcolor="${graphTheme.startFill}", color="${graphTheme.startBorder}", fontcolor="${graphTheme.startText}"] detect [label="Detect\\nDrift"] propose [label="Propose\\nChanges"] - review [shape=hexagon, label="Review\\nChanges", fillcolor="${gt.gateFill}", color="${gt.gateBorder}", fontcolor="${gt.gateText}"] + review [shape=hexagon, label="Review\\nChanges", fillcolor="${graphTheme.gateFill}", color="${graphTheme.gateBorder}", fontcolor="${graphTheme.gateText}"] apply [label="Apply\\nChanges"] start -> detect @@ -89,91 +88,6 @@ function stripGraphTitle(svg: SVGSVGElement) { title.remove(); } -function annotateRunningNodes(svg: SVGSVGElement, stageList: Stage[]) { - const gt = graphTheme; - const runningDotIds = new Set( - stageList.filter((s) => s.status === "running").map((s) => s.dotId), - ); - const completedDotIds = new Set( - stageList.filter((s) => s.status === "completed").map((s) => s.dotId), - ); - - const nodeGroups = svg.querySelectorAll(".node"); - for (const group of nodeGroups) { - const titleEl = group.querySelector("title"); - if (!titleEl) continue; - const nodeId = titleEl.textContent?.trim(); - if (!nodeId) continue; - - if (runningDotIds.has(nodeId)) { - // Animate with native SVG elements (cross-browser reliable) - const ns = "http://www.w3.org/2000/svg"; - const shapes = group.querySelectorAll("ellipse, polygon, path"); - for (const shape of shapes) { - shape.setAttribute("fill", gt.runningFill); - shape.setAttribute("stroke", gt.runningBorder); - shape.setAttribute("stroke-width", "2"); - - const animFill = document.createElementNS(ns, "animate"); - animFill.setAttribute("attributeName", "fill"); - animFill.setAttribute("values", `${gt.runningFill};${gt.runningPulseFill};${gt.runningFill}`); - animFill.setAttribute("dur", "1.5s"); - animFill.setAttribute("repeatCount", "indefinite"); - shape.appendChild(animFill); - - const animStroke = document.createElementNS(ns, "animate"); - animStroke.setAttribute("attributeName", "stroke"); - animStroke.setAttribute("values", `${gt.runningBorder};${gt.runningPulseStroke};${gt.runningBorder}`); - animStroke.setAttribute("dur", "1.5s"); - animStroke.setAttribute("repeatCount", "indefinite"); - shape.appendChild(animStroke); - - const animWidth = document.createElementNS(ns, "animate"); - animWidth.setAttribute("attributeName", "stroke-width"); - animWidth.setAttribute("values", "2;3.5;2"); - animWidth.setAttribute("dur", "1.5s"); - animWidth.setAttribute("repeatCount", "indefinite"); - shape.appendChild(animWidth); - } - const texts = group.querySelectorAll("text"); - for (const text of texts) { - text.setAttribute("fill", gt.runningText); - } - } else if (completedDotIds.has(nodeId)) { - // Tint completed nodes green - const shapes = group.querySelectorAll("ellipse, polygon, path"); - for (const shape of shapes) { - shape.setAttribute("fill", gt.completedFill); - shape.setAttribute("stroke", gt.completedBorder); - } - const texts = group.querySelectorAll("text"); - for (const text of texts) { - text.setAttribute("fill", gt.completedText); - } - } - } - - // Also color edges leading into completed nodes - const edgeGroups = svg.querySelectorAll(".edge"); - for (const group of edgeGroups) { - const titleEl = group.querySelector("title"); - if (!titleEl) continue; - const edgeLabel = titleEl.textContent?.trim() ?? ""; - const [, target] = edgeLabel.split("->"); - if (!target) continue; - const targetId = target.trim(); - - if (completedDotIds.has(targetId)) { - const paths = group.querySelectorAll("path, polygon"); - for (const p of paths) { - p.setAttribute("stroke", gt.completedBorder); - if (p.tagName === "polygon") p.setAttribute("fill", gt.completedBorder); - } - } - } - -} - export default function RunGraph({ loaderData }: any) { const { id } = useParams(); const { stages, graphSvg } = loaderData; diff --git a/apps/fabro-web/app/routes/workflow-diagram.tsx b/apps/fabro-web/app/routes/workflow-diagram.tsx index a596cf4dd..8cbd7dfed 100644 --- a/apps/fabro-web/app/routes/workflow-diagram.tsx +++ b/apps/fabro-web/app/routes/workflow-diagram.tsx @@ -5,7 +5,6 @@ import { graphTheme } from "../lib/graph-theme"; type Direction = "LR" | "TB"; function buildDot(direction: Direction) { - const theme = graphTheme; return `digraph fix_build { graph [ label="Fix Build" @@ -17,29 +16,29 @@ function buildDot(direction: Direction) { node [ fontname="ui-monospace, monospace" fontsize=11 - fontcolor="${theme.nodeText}" - color="${theme.edgeColor}" - fillcolor="${theme.nodeFill}" + fontcolor="${graphTheme.nodeText}" + color="${graphTheme.edgeColor}" + fillcolor="${graphTheme.nodeFill}" style=filled penwidth=1.2 ] edge [ fontname="ui-monospace, monospace" fontsize=9 - fontcolor="${theme.fontcolor}" - color="${theme.edgeColor}" + fontcolor="${graphTheme.fontcolor}" + color="${graphTheme.edgeColor}" arrowsize=0.7 penwidth=1.2 ] - start [shape=Mdiamond, label="Start", fillcolor="${theme.startFill}", color="${theme.startBorder}", fontcolor="${theme.startText}"] - exit [shape=Msquare, label="Exit", fillcolor="${theme.startFill}", color="${theme.startBorder}", fontcolor="${theme.startText}"] + start [shape=Mdiamond, label="Start", fillcolor="${graphTheme.startFill}", color="${graphTheme.startBorder}", fontcolor="${graphTheme.startText}"] + exit [shape=Msquare, label="Exit", fillcolor="${graphTheme.startFill}", color="${graphTheme.startBorder}", fontcolor="${graphTheme.startText}"] analyze [label="Analyze\\nBuild Errors"] diagnose [label="Diagnose\\nRoot Cause"] fix [label="Apply\\nFix"] validate [label="Validate\\nBuild"] - approve [shape=hexagon, label="Review\\nChanges", fillcolor="${theme.gateFill}", color="${theme.gateBorder}", fontcolor="${theme.gateText}"] + approve [shape=hexagon, label="Review\\nChanges", fillcolor="${graphTheme.gateFill}", color="${graphTheme.gateBorder}", fontcolor="${graphTheme.gateText}"] start -> analyze analyze -> diagnose @@ -47,7 +46,7 @@ function buildDot(direction: Direction) { fix -> validate validate -> exit [label="Pass"] validate -> diagnose [label="Fail", style=dashed, color="#f87171"] - validate -> approve [label="Needs review", color="${theme.gateBorder}"] + validate -> approve [label="Needs review", color="${graphTheme.gateBorder}"] approve -> exit [label="Accept"] approve -> fix [label="Revise", style=dashed] }`; diff --git a/lib/crates/fabro-spa/assets/assets/entry-c13135br.js b/lib/crates/fabro-spa/assets/assets/entry-znhdzrrr.js similarity index 77% rename from lib/crates/fabro-spa/assets/assets/entry-c13135br.js rename to lib/crates/fabro-spa/assets/assets/entry-znhdzrrr.js index c6aac1479..453251c94 100644 --- a/lib/crates/fabro-spa/assets/assets/entry-c13135br.js +++ b/lib/crates/fabro-spa/assets/assets/entry-znhdzrrr.js @@ -1,4 +1,4 @@ -import{X as h,Y as C3,Z as u5,_ as k}from"./chunk-q07bg6gn.js";var Q0=C3((Ar,YU)=>{(function(){function Z(j,Y0){Object.defineProperty(z.prototype,j,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",Y0[0],Y0[1])}})}function Y(j){if(j===null||typeof j!=="object")return null;return j=B1&&j[B1]||j["@@iterator"],typeof j==="function"?j:null}function J(j,Y0){j=(j=j.constructor)&&(j.displayName||j.name)||"ReactClass";var A0=j+"."+Y0;R0[A0]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",Y0,j),R0[A0]=!0)}function z(j,Y0,A0){this.props=j,this.context=Y0,this.refs=t5,this.updater=A0||C1}function q(){}function B(j,Y0,A0){this.props=j,this.context=Y0,this.refs=t5,this.updater=A0||C1}function $(){}function W(j){return""+j}function U(j){try{W(j);var Y0=!1}catch(x0){Y0=!0}if(Y0){Y0=console;var A0=Y0.error,v0=typeof Symbol==="function"&&Symbol.toStringTag&&j[Symbol.toStringTag]||j.constructor.name||"Object";return A0.call(Y0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",v0),W(j)}}function M(j){if(j==null)return null;if(typeof j==="function")return j.$$typeof===i6?null:j.displayName||j.name||null;if(typeof j==="string")return j;switch(j){case X0:return"Fragment";case q0:return"Profiler";case f:return"StrictMode";case i0:return"Suspense";case w0:return"SuspenseList";case v1:return"Activity"}if(typeof j==="object")switch(typeof j.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),j.$$typeof){case n:return"Portal";case M0:return j.displayName||"Context";case H0:return(j._context.displayName||"Context")+".Consumer";case y0:var Y0=j.render;return j=j.displayName,j||(j=Y0.displayName||Y0.name||"",j=j!==""?"ForwardRef("+j+")":"ForwardRef"),j;case l0:return Y0=j.displayName||null,Y0!==null?Y0:M(j.type)||"Memo";case t0:Y0=j._payload,j=j._init;try{return M(j(Y0))}catch(A0){}}return null}function N(j){if(j===X0)return"<>";if(typeof j==="object"&&j!==null&&j.$$typeof===t0)return"<...>";try{var Y0=M(j);return Y0?"<"+Y0+">":"<...>"}catch(A0){return"<...>"}}function O(){var j=$1.A;return j===null?null:j.getOwner()}function _(){return Error("react-stack-top-frame")}function A(j){if(w4.call(j,"key")){var Y0=Object.getOwnPropertyDescriptor(j,"key").get;if(Y0&&Y0.isReactWarning)return!1}return j.key!==void 0}function P(j,Y0){function A0(){F6||(F6=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",Y0))}A0.isReactWarning=!0,Object.defineProperty(j,"key",{get:A0,configurable:!0})}function R(){var j=M(this.type);return p4[j]||(p4[j]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),j=this.props.ref,j!==void 0?j:null}function T(j,Y0,A0,v0,x0,Y1){var k0=A0.ref;return j={$$typeof:W0,type:j,key:Y0,props:A0,_owner:v0},(k0!==void 0?k0:null)!==null?Object.defineProperty(j,"ref",{enumerable:!1,get:R}):Object.defineProperty(j,"ref",{enumerable:!1,value:null}),j._store={},Object.defineProperty(j._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(j,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(j,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:x0}),Object.defineProperty(j,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Y1}),Object.freeze&&(Object.freeze(j.props),Object.freeze(j)),j}function v(j,Y0){return Y0=T(j.type,Y0,j.props,j._owner,j._debugStack,j._debugTask),j._store&&(Y0._store.validated=j._store.validated),Y0}function L(j){C(j)?j._store&&(j._store.validated=1):typeof j==="object"&&j!==null&&j.$$typeof===t0&&(j._payload.status==="fulfilled"?C(j._payload.value)&&j._payload.value._store&&(j._payload.value._store.validated=1):j._store&&(j._store.validated=1))}function C(j){return typeof j==="object"&&j!==null&&j.$$typeof===W0}function D(j){var Y0={"=":"=0",":":"=2"};return"$"+j.replace(/[=:]/g,function(A0){return Y0[A0]})}function I(j,Y0){return typeof j==="object"&&j!==null&&j.key!=null?(U(j.key),D(""+j.key)):Y0.toString(36)}function S(j){switch(j.status){case"fulfilled":return j.value;case"rejected":throw j.reason;default:switch(typeof j.status==="string"?j.then($,$):(j.status="pending",j.then(function(Y0){j.status==="pending"&&(j.status="fulfilled",j.value=Y0)},function(Y0){j.status==="pending"&&(j.status="rejected",j.reason=Y0)})),j.status){case"fulfilled":return j.value;case"rejected":throw j.reason}}throw j}function y(j,Y0,A0,v0,x0){var Y1=typeof j;if(Y1==="undefined"||Y1==="boolean")j=null;var k0=!1;if(j===null)k0=!0;else switch(Y1){case"bigint":case"string":case"number":k0=!0;break;case"object":switch(j.$$typeof){case W0:case n:k0=!0;break;case t0:return k0=j._init,y(k0(j._payload),Y0,A0,v0,x0)}}if(k0){k0=j,x0=x0(k0);var J1=v0===""?"."+I(k0,0):v0;return N1(x0)?(A0="",J1!=null&&(A0=J1.replace(e2,"$&/")+"/"),y(x0,Y0,A0,"",function(H5){return H5})):x0!=null&&(C(x0)&&(x0.key!=null&&(k0&&k0.key===x0.key||U(x0.key)),A0=v(x0,A0+(x0.key==null||k0&&k0.key===x0.key?"":(""+x0.key).replace(e2,"$&/")+"/")+J1),v0!==""&&k0!=null&&C(k0)&&k0.key==null&&k0._store&&!k0._store.validated&&(A0._store.validated=2),x0=A0),Y0.push(x0)),1}if(k0=0,J1=v0===""?".":v0+":",N1(j))for(var I0=0;I0{(function(){function Z(j,Y0){Object.defineProperty(z.prototype,j,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",Y0[0],Y0[1])}})}function Y(j){if(j===null||typeof j!=="object")return null;return j=B1&&j[B1]||j["@@iterator"],typeof j==="function"?j:null}function J(j,Y0){j=(j=j.constructor)&&(j.displayName||j.name)||"ReactClass";var A0=j+"."+Y0;R0[A0]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",Y0,j),R0[A0]=!0)}function z(j,Y0,A0){this.props=j,this.context=Y0,this.refs=n5,this.updater=A0||C1}function q(){}function B(j,Y0,A0){this.props=j,this.context=Y0,this.refs=n5,this.updater=A0||C1}function $(){}function W(j){return""+j}function U(j){try{W(j);var Y0=!1}catch(x0){Y0=!0}if(Y0){Y0=console;var A0=Y0.error,v0=typeof Symbol==="function"&&Symbol.toStringTag&&j[Symbol.toStringTag]||j.constructor.name||"Object";return A0.call(Y0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",v0),W(j)}}function M(j){if(j==null)return null;if(typeof j==="function")return j.$$typeof===t6?null:j.displayName||j.name||null;if(typeof j==="string")return j;switch(j){case X0:return"Fragment";case q0:return"Profiler";case f:return"StrictMode";case i0:return"Suspense";case w0:return"SuspenseList";case v1:return"Activity"}if(typeof j==="object")switch(typeof j.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),j.$$typeof){case n:return"Portal";case M0:return j.displayName||"Context";case H0:return(j._context.displayName||"Context")+".Consumer";case y0:var Y0=j.render;return j=j.displayName,j||(j=Y0.displayName||Y0.name||"",j=j!==""?"ForwardRef("+j+")":"ForwardRef"),j;case l0:return Y0=j.displayName||null,Y0!==null?Y0:M(j.type)||"Memo";case t0:Y0=j._payload,j=j._init;try{return M(j(Y0))}catch(A0){}}return null}function N(j){if(j===X0)return"<>";if(typeof j==="object"&&j!==null&&j.$$typeof===t0)return"<...>";try{var Y0=M(j);return Y0?"<"+Y0+">":"<...>"}catch(A0){return"<...>"}}function O(){var j=$1.A;return j===null?null:j.getOwner()}function _(){return Error("react-stack-top-frame")}function A(j){if(N4.call(j,"key")){var Y0=Object.getOwnPropertyDescriptor(j,"key").get;if(Y0&&Y0.isReactWarning)return!1}return j.key!==void 0}function P(j,Y0){function A0(){P6||(P6=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",Y0))}A0.isReactWarning=!0,Object.defineProperty(j,"key",{get:A0,configurable:!0})}function R(){var j=M(this.type);return c4[j]||(c4[j]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),j=this.props.ref,j!==void 0?j:null}function T(j,Y0,A0,v0,x0,Y1){var k0=A0.ref;return j={$$typeof:W0,type:j,key:Y0,props:A0,_owner:v0},(k0!==void 0?k0:null)!==null?Object.defineProperty(j,"ref",{enumerable:!1,get:R}):Object.defineProperty(j,"ref",{enumerable:!1,value:null}),j._store={},Object.defineProperty(j._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(j,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(j,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:x0}),Object.defineProperty(j,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Y1}),Object.freeze&&(Object.freeze(j.props),Object.freeze(j)),j}function v(j,Y0){return Y0=T(j.type,Y0,j.props,j._owner,j._debugStack,j._debugTask),j._store&&(Y0._store.validated=j._store.validated),Y0}function L(j){C(j)?j._store&&(j._store.validated=1):typeof j==="object"&&j!==null&&j.$$typeof===t0&&(j._payload.status==="fulfilled"?C(j._payload.value)&&j._payload.value._store&&(j._payload.value._store.validated=1):j._store&&(j._store.validated=1))}function C(j){return typeof j==="object"&&j!==null&&j.$$typeof===W0}function D(j){var Y0={"=":"=0",":":"=2"};return"$"+j.replace(/[=:]/g,function(A0){return Y0[A0]})}function I(j,Y0){return typeof j==="object"&&j!==null&&j.key!=null?(U(j.key),D(""+j.key)):Y0.toString(36)}function S(j){switch(j.status){case"fulfilled":return j.value;case"rejected":throw j.reason;default:switch(typeof j.status==="string"?j.then($,$):(j.status="pending",j.then(function(Y0){j.status==="pending"&&(j.status="fulfilled",j.value=Y0)},function(Y0){j.status==="pending"&&(j.status="rejected",j.reason=Y0)})),j.status){case"fulfilled":return j.value;case"rejected":throw j.reason}}throw j}function y(j,Y0,A0,v0,x0){var Y1=typeof j;if(Y1==="undefined"||Y1==="boolean")j=null;var k0=!1;if(j===null)k0=!0;else switch(Y1){case"bigint":case"string":case"number":k0=!0;break;case"object":switch(j.$$typeof){case W0:case n:k0=!0;break;case t0:return k0=j._init,y(k0(j._payload),Y0,A0,v0,x0)}}if(k0){k0=j,x0=x0(k0);var J1=v0===""?"."+I(k0,0):v0;return N1(x0)?(A0="",J1!=null&&(A0=J1.replace(Z7,"$&/")+"/"),y(x0,Y0,A0,"",function(O5){return O5})):x0!=null&&(C(x0)&&(x0.key!=null&&(k0&&k0.key===x0.key||U(x0.key)),A0=v(x0,A0+(x0.key==null||k0&&k0.key===x0.key?"":(""+x0.key).replace(Z7,"$&/")+"/")+J1),v0!==""&&k0!=null&&C(k0)&&k0.key==null&&k0._store&&!k0._store.validated&&(A0._store.validated=2),x0=A0),Y0.push(x0)),1}if(k0=0,J1=v0===""?".":v0+":",N1(j))for(var I0=0;I0 import('./MyComponent')) @@ -10,11 +10,11 @@ Your code should look like: 1. You might have mismatching versions of React and the renderer (such as React DOM) 2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app -See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),j}function s(){$1.asyncTransitions--}function z0(j){if(N4===null)try{var Y0=("require"+Math.random()).slice(0,7);N4=(YU&&YU[Y0]).call(YU,"timers").setImmediate}catch(A0){N4=function(v0){$2===!1&&($2=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var x0=new MessageChannel;x0.port1.onmessage=v0,x0.port2.postMessage(void 0)}}return N4(j)}function $0(j){return 1 ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(I0,H5){x0=!0,k0.then(function(q5){if(e(Y0,A0),A0===0){try{Z0(v0),z0(function(){return c(q5,I0,H5)})}catch(n5){$1.thrownErrors.push(n5)}if(0<$1.thrownErrors.length){var O5=$0($1.thrownErrors);$1.thrownErrors.length=0,H5(O5)}}else I0(q5)},function(q5){e(Y0,A0),0<$1.thrownErrors.length?(q5=$0($1.thrownErrors),$1.thrownErrors.length=0,H5(q5)):H5(q5)})}}}var J1=Y1;if(e(Y0,A0),A0===0&&(Z0(v0),v0.length!==0&&Z7(function(){x0||e7||(e7=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),$1.actQueue=null),0<$1.thrownErrors.length)throw j=$0($1.thrownErrors),$1.thrownErrors.length=0,j;return{then:function(I0,H5){x0=!0,A0===0?($1.actQueue=v0,z0(function(){return c(J1,I0,H5)})):I0(J1)}}},Ar.cache=function(j){return function(){return j.apply(null,arguments)}},Ar.cacheSignal=function(){return null},Ar.captureOwnerStack=function(){var j=$1.getCurrentStack;return j===null?null:j()},Ar.cloneElement=function(j,Y0,A0){if(j===null||j===void 0)throw Error("The argument must be a React element, but you passed "+j+".");var v0=Q5({},j.props),x0=j.key,Y1=j._owner;if(Y0!=null){var k0;Z:{if(w4.call(Y0,"ref")&&(k0=Object.getOwnPropertyDescriptor(Y0,"ref").get)&&k0.isReactWarning){k0=!1;break Z}k0=Y0.ref!==void 0}k0&&(Y1=O()),A(Y0)&&(U(Y0.key),x0=""+Y0.key);for(J1 in Y0)!w4.call(Y0,J1)||J1==="key"||J1==="__self"||J1==="__source"||J1==="ref"&&Y0.ref===void 0||(v0[J1]=Y0[J1])}var J1=arguments.length-2;if(J1===1)v0.children=A0;else if(1$1.recentlyCreatedOwnerStacks++;return T(j,x0,v0,O(),I0?Error("react-stack-top-frame"):x2,I0?S1(N(j)):P6)},Ar.createRef=function(){var j={current:null};return Object.seal(j),j},Ar.forwardRef=function(j){j!=null&&j.$$typeof===l0?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof j!=="function"?console.error("forwardRef requires a render function but was given %s.",j===null?"null":typeof j):j.length!==0&&j.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",j.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),j!=null&&j.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var Y0={$$typeof:y0,render:j},A0;return Object.defineProperty(Y0,"displayName",{enumerable:!1,configurable:!0,get:function(){return A0},set:function(v0){A0=v0,j.name||j.displayName||(Object.defineProperty(j,"name",{value:v0}),j.displayName=v0)}}),Y0},Ar.isValidElement=C,Ar.lazy=function(j){j={_status:-1,_result:j};var Y0={$$typeof:t0,_payload:j,_init:i},A0={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return j._ioInfo=A0,Y0._debugInfo=[{awaited:A0}],Y0},Ar.memo=function(j,Y0){j==null&&console.error("memo: The first argument must be a component. Instead received: %s",j===null?"null":typeof j),Y0={$$typeof:l0,type:j,compare:Y0===void 0?null:Y0};var A0;return Object.defineProperty(Y0,"displayName",{enumerable:!1,configurable:!0,get:function(){return A0},set:function(v0){A0=v0,j.name||j.displayName||(Object.defineProperty(j,"name",{value:v0}),j.displayName=v0)}}),Y0},Ar.startTransition=function(j){var Y0=$1.T,A0={};A0._updatedFibers=new Set,$1.T=A0;try{var v0=j(),x0=$1.S;x0!==null&&x0(A0,v0),typeof v0==="object"&&v0!==null&&typeof v0.then==="function"&&($1.asyncTransitions++,v0.then(s,s),v0.then($,L5))}catch(Y1){L5(Y1)}finally{Y0===null&&A0._updatedFibers&&(j=A0._updatedFibers.size,A0._updatedFibers.clear(),10{(function(){function Z(){if(D=!1,g){var c=Fr.unstable_now();s=c;var Z0=!0;try{Z:{L=!1,C&&(C=!1,S(i),i=-1),v=!0;var W0=T;try{Y:{B(c);for(R=J(_);R!==null&&!(R.expirationTime>c&&W());){var n=R.callback;if(typeof n==="function"){R.callback=null,T=R.priorityLevel;var X0=n(R.expirationTime<=c);if(c=Fr.unstable_now(),typeof X0==="function"){R.callback=X0,B(c),Z0=!0;break Y}R===J(_)&&z(_),B(c)}else z(_);R=J(_)}if(R!==null)Z0=!0;else{var f=J(A);f!==null&&U($,f.startTime-c),Z0=!1}}break Z}finally{R=null,T=W0,v=!1}Z0=void 0}}finally{Z0?z0():g=!1}}}function Y(c,Z0){var W0=c.length;c.push(Z0);Z:for(;0>>1,X0=c[n];if(0>>1;nq(H0,W0))M0q(y0,H0)?(c[n]=y0,c[M0]=W0,n=M0):(c[n]=H0,c[q0]=W0,n=q0);else if(M0q(y0,W0))c[n]=y0,c[M0]=W0,n=M0;else break Z}}return Z0}function q(c,Z0){var W0=c.sortIndex-Z0.sortIndex;return W0!==0?W0:c.id-Z0.id}function B(c){for(var Z0=J(A);Z0!==null;){if(Z0.callback===null)z(A);else if(Z0.startTime<=c)z(A),Z0.sortIndex=Z0.expirationTime,Y(_,Z0);else break;Z0=J(A)}}function $(c){if(C=!1,B(c),!L)if(J(_)!==null)L=!0,g||(g=!0,z0());else{var Z0=J(A);Z0!==null&&U($,Z0.startTime-c)}}function W(){return D?!0:Fr.unstable_now()-sc||125n?(c.sortIndex=W0,Y(A,c),J(_)===null&&c===J(A)&&(C?(S(i),i=-1):C=!0,U($,W0-n))):(c.sortIndex=X0,Y(_,c),L||v||(L=!0,g||(g=!0,z0()))),c},Fr.unstable_shouldYield=W,Fr.unstable_wrapCallback=function(c){var Z0=T;return function(){var W0=T;T=Z0;try{return c.apply(this,arguments)}finally{T=W0}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var my=C3((Pr)=>{var gA=h(Q0());(function(){function Z(){}function Y(N){return""+N}function J(N,O,_){var A=3"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var x0=new MessageChannel;x0.port1.onmessage=v0,x0.port2.postMessage(void 0)}}return H4(j)}function $0(j){return 1 ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(I0,O5){x0=!0,k0.then(function(K5){if(e(Y0,A0),A0===0){try{Z0(v0),z0(function(){return c(K5,I0,O5)})}catch(e5){$1.thrownErrors.push(e5)}if(0<$1.thrownErrors.length){var _5=$0($1.thrownErrors);$1.thrownErrors.length=0,O5(_5)}}else I0(K5)},function(K5){e(Y0,A0),0<$1.thrownErrors.length?(K5=$0($1.thrownErrors),$1.thrownErrors.length=0,O5(K5)):O5(K5)})}}}var J1=Y1;if(e(Y0,A0),A0===0&&(Z0(v0),v0.length!==0&&Y7(function(){x0||Z4||(Z4=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),$1.actQueue=null),0<$1.thrownErrors.length)throw j=$0($1.thrownErrors),$1.thrownErrors.length=0,j;return{then:function(I0,O5){x0=!0,A0===0?($1.actQueue=v0,z0(function(){return c(J1,I0,O5)})):I0(J1)}}},Ar.cache=function(j){return function(){return j.apply(null,arguments)}},Ar.cacheSignal=function(){return null},Ar.captureOwnerStack=function(){var j=$1.getCurrentStack;return j===null?null:j()},Ar.cloneElement=function(j,Y0,A0){if(j===null||j===void 0)throw Error("The argument must be a React element, but you passed "+j+".");var v0=J5({},j.props),x0=j.key,Y1=j._owner;if(Y0!=null){var k0;Z:{if(N4.call(Y0,"ref")&&(k0=Object.getOwnPropertyDescriptor(Y0,"ref").get)&&k0.isReactWarning){k0=!1;break Z}k0=Y0.ref!==void 0}k0&&(Y1=O()),A(Y0)&&(U(Y0.key),x0=""+Y0.key);for(J1 in Y0)!N4.call(Y0,J1)||J1==="key"||J1==="__self"||J1==="__source"||J1==="ref"&&Y0.ref===void 0||(v0[J1]=Y0[J1])}var J1=arguments.length-2;if(J1===1)v0.children=A0;else if(1$1.recentlyCreatedOwnerStacks++;return T(j,x0,v0,O(),I0?Error("react-stack-top-frame"):k2,I0?S1(N(j)):V6)},Ar.createRef=function(){var j={current:null};return Object.seal(j),j},Ar.forwardRef=function(j){j!=null&&j.$$typeof===l0?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof j!=="function"?console.error("forwardRef requires a render function but was given %s.",j===null?"null":typeof j):j.length!==0&&j.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",j.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),j!=null&&j.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var Y0={$$typeof:y0,render:j},A0;return Object.defineProperty(Y0,"displayName",{enumerable:!1,configurable:!0,get:function(){return A0},set:function(v0){A0=v0,j.name||j.displayName||(Object.defineProperty(j,"name",{value:v0}),j.displayName=v0)}}),Y0},Ar.isValidElement=C,Ar.lazy=function(j){j={_status:-1,_result:j};var Y0={$$typeof:t0,_payload:j,_init:i},A0={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return j._ioInfo=A0,Y0._debugInfo=[{awaited:A0}],Y0},Ar.memo=function(j,Y0){j==null&&console.error("memo: The first argument must be a component. Instead received: %s",j===null?"null":typeof j),Y0={$$typeof:l0,type:j,compare:Y0===void 0?null:Y0};var A0;return Object.defineProperty(Y0,"displayName",{enumerable:!1,configurable:!0,get:function(){return A0},set:function(v0){A0=v0,j.name||j.displayName||(Object.defineProperty(j,"name",{value:v0}),j.displayName=v0)}}),Y0},Ar.startTransition=function(j){var Y0=$1.T,A0={};A0._updatedFibers=new Set,$1.T=A0;try{var v0=j(),x0=$1.S;x0!==null&&x0(A0,v0),typeof v0==="object"&&v0!==null&&typeof v0.then==="function"&&($1.asyncTransitions++,v0.then(s,s),v0.then($,T5))}catch(Y1){T5(Y1)}finally{Y0===null&&A0._updatedFibers&&(j=A0._updatedFibers.size,A0._updatedFibers.clear(),10{(function(){function Z(){if(D=!1,h){var c=Fr.unstable_now();s=c;var Z0=!0;try{Z:{L=!1,C&&(C=!1,S(i),i=-1),v=!0;var W0=T;try{Y:{B(c);for(R=J(_);R!==null&&!(R.expirationTime>c&&W());){var n=R.callback;if(typeof n==="function"){R.callback=null,T=R.priorityLevel;var X0=n(R.expirationTime<=c);if(c=Fr.unstable_now(),typeof X0==="function"){R.callback=X0,B(c),Z0=!0;break Y}R===J(_)&&z(_),B(c)}else z(_);R=J(_)}if(R!==null)Z0=!0;else{var f=J(A);f!==null&&U($,f.startTime-c),Z0=!1}}break Z}finally{R=null,T=W0,v=!1}Z0=void 0}}finally{Z0?z0():h=!1}}}function Y(c,Z0){var W0=c.length;c.push(Z0);Z:for(;0>>1,X0=c[n];if(0>>1;nq(H0,W0))M0q(y0,H0)?(c[n]=y0,c[M0]=W0,n=M0):(c[n]=H0,c[q0]=W0,n=q0);else if(M0q(y0,W0))c[n]=y0,c[M0]=W0,n=M0;else break Z}}return Z0}function q(c,Z0){var W0=c.sortIndex-Z0.sortIndex;return W0!==0?W0:c.id-Z0.id}function B(c){for(var Z0=J(A);Z0!==null;){if(Z0.callback===null)z(A);else if(Z0.startTime<=c)z(A),Z0.sortIndex=Z0.expirationTime,Y(_,Z0);else break;Z0=J(A)}}function $(c){if(C=!1,B(c),!L)if(J(_)!==null)L=!0,h||(h=!0,z0());else{var Z0=J(A);Z0!==null&&U($,Z0.startTime-c)}}function W(){return D?!0:Fr.unstable_now()-sc||125n?(c.sortIndex=W0,Y(A,c),J(_)===null&&c===J(A)&&(C?(S(i),i=-1):C=!0,U($,W0-n))):(c.sortIndex=X0,Y(_,c),L||v||(L=!0,h||(h=!0,z0()))),c},Fr.unstable_shouldYield=W,Fr.unstable_wrapCallback=function(c){var Z0=T;return function(){var W0=T;T=Z0;try{return c.apply(this,arguments)}finally{T=W0}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var my=b3((Pr)=>{var hA=g(Q0());(function(){function Z(){}function Y(N){return""+N}function J(N,O,_){var A=3` tag.%s',_),typeof N==="string"&&typeof O==="object"&&O!==null&&typeof O.as==="string"){_=O.as;var A=z(_,O.crossOrigin);W.d.L(N,_,{crossOrigin:A,integrity:typeof O.integrity==="string"?O.integrity:void 0,nonce:typeof O.nonce==="string"?O.nonce:void 0,type:typeof O.type==="string"?O.type:void 0,fetchPriority:typeof O.fetchPriority==="string"?O.fetchPriority:void 0,referrerPolicy:typeof O.referrerPolicy==="string"?O.referrerPolicy:void 0,imageSrcSet:typeof O.imageSrcSet==="string"?O.imageSrcSet:void 0,imageSizes:typeof O.imageSizes==="string"?O.imageSizes:void 0,media:typeof O.media==="string"?O.media:void 0})}},Pr.preloadModule=function(N,O){var _="";typeof N==="string"&&N||(_+=" The `href` argument encountered was "+q(N)+"."),O!==void 0&&typeof O!=="object"?_+=" The `options` argument encountered was "+q(O)+".":O&&("as"in O)&&typeof O.as!=="string"&&(_+=" The `as` option encountered was "+q(O.as)+"."),_&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `` tag.%s',_),typeof N==="string"&&(O?(_=z(O.as,O.crossOrigin),W.d.m(N,{as:typeof O.as==="string"&&O.as!=="script"?O.as:void 0,crossOrigin:_,integrity:typeof O.integrity==="string"?O.integrity:void 0})):W.d.m(N))},Pr.requestFormReset=function(N){W.d.r(N)},Pr.unstable_batchedUpdates=function(N,O){return N(O)},Pr.useFormState=function(N,O,_){return $().useFormState(N,O,_)},Pr.useFormStatus=function(){return $().useHostTransitionStatus()},Pr.version="19.2.4",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var b3=C3((PJ0,uy)=>{var Vr=h(my());uy.exports=Vr});var py=C3((Rr)=>{var r1=h(gy()),lJ=h(Q0()),mA=h(b3());(function(){function Z(Q,X){for(Q=Q.memoizedState;Q!==null&&0=X.length)return G;var w=X[K],H=v2(Q)?Q.slice():E1({},Q);return H[w]=Y(Q[w],X,K+1,G),H}function J(Q,X,K){if(X.length!==K.length)console.warn("copyWithRename() expects paths of the same length");else{for(var G=0;GO8?console.error("Unexpected pop."):(X!==O_[O8]&&console.error("Unexpected Fiber popped."),Q.current=H_[O8],H_[O8]=null,O_[O8]=null,O8--)}function $0(Q,X,K){O8++,H_[O8]=Q.current,O_[O8]=K,Q.current=X}function e(Q){return Q===null&&console.error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),Q}function c(Q,X){$0(E9,X,Q),$0(aq,Q,Q),$0(D9,null,Q);var K=X.nodeType;switch(K){case 9:case 11:K=K===9?"#document":"#fragment",X=(X=X.documentElement)?(X=X.namespaceURI)?Vb(X):y8:y8;break;default:if(K=X.tagName,X=X.namespaceURI)X=Vb(X),X=Rb(X,K);else switch(K){case"svg":X=cJ;break;case"math":X=sG;break;default:X=y8}}K=K.toLowerCase(),K=HL(null,K),K={context:X,ancestorInfo:K},z0(D9,Q),$0(D9,K,Q)}function Z0(Q){z0(D9,Q),z0(aq,Q),z0(E9,Q)}function W0(){return e(D9.current)}function n(Q){Q.memoizedState!==null&&$0(tW,Q,Q);var X=e(D9.current),K=Q.type,G=Rb(X.context,K);K=HL(X.ancestorInfo,K),G={context:G,ancestorInfo:K},X!==G&&($0(aq,Q,Q),$0(D9,G,Q))}function X0(Q){aq.current===Q&&(z0(D9,Q),z0(aq,Q)),tW.current===Q&&(z0(tW,Q),fK._currentValue=EY)}function f(){}function q0(){if(rq===0){eb=console.log,ZD=console.info,YD=console.warn,QD=console.error,JD=console.group,XD=console.groupCollapsed,zD=console.groupEnd;var Q={configurable:!0,enumerable:!0,value:f,writable:!0};Object.defineProperties(console,{info:Q,log:Q,warn:Q,error:Q,group:Q,groupCollapsed:Q,groupEnd:Q})}rq++}function H0(){if(rq--,rq===0){var Q={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:E1({},Q,{value:eb}),info:E1({},Q,{value:ZD}),warn:E1({},Q,{value:YD}),error:E1({},Q,{value:QD}),group:E1({},Q,{value:JD}),groupCollapsed:E1({},Q,{value:XD}),groupEnd:E1({},Q,{value:zD})})}0>rq&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function M0(Q){var X=Error.prepareStackTrace;if(Error.prepareStackTrace=void 0,Q=Q.stack,Error.prepareStackTrace=X,Q.startsWith(`Error: react-stack-top-frame +See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),N}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var W={d:{f:Z,r:function(){throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React.")},D:Z,C:Z,L:Z,m:Z,X:Z,S:Z,M:Z},p:0,findDOMNode:null},U=Symbol.for("react.portal"),M=hA.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;typeof Map==="function"&&Map.prototype!=null&&typeof Map.prototype.forEach==="function"&&typeof Set==="function"&&Set.prototype!=null&&typeof Set.prototype.clear==="function"&&typeof Set.prototype.forEach==="function"||console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),Pr.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=W,Pr.createPortal=function(N,O){var _=2` tag.%s',_),typeof N==="string"&&typeof O==="object"&&O!==null&&typeof O.as==="string"){_=O.as;var A=z(_,O.crossOrigin);W.d.L(N,_,{crossOrigin:A,integrity:typeof O.integrity==="string"?O.integrity:void 0,nonce:typeof O.nonce==="string"?O.nonce:void 0,type:typeof O.type==="string"?O.type:void 0,fetchPriority:typeof O.fetchPriority==="string"?O.fetchPriority:void 0,referrerPolicy:typeof O.referrerPolicy==="string"?O.referrerPolicy:void 0,imageSrcSet:typeof O.imageSrcSet==="string"?O.imageSrcSet:void 0,imageSizes:typeof O.imageSizes==="string"?O.imageSizes:void 0,media:typeof O.media==="string"?O.media:void 0})}},Pr.preloadModule=function(N,O){var _="";typeof N==="string"&&N||(_+=" The `href` argument encountered was "+q(N)+"."),O!==void 0&&typeof O!=="object"?_+=" The `options` argument encountered was "+q(O)+".":O&&("as"in O)&&typeof O.as!=="string"&&(_+=" The `as` option encountered was "+q(O.as)+"."),_&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `` tag.%s',_),typeof N==="string"&&(O?(_=z(O.as,O.crossOrigin),W.d.m(N,{as:typeof O.as==="string"&&O.as!=="script"?O.as:void 0,crossOrigin:_,integrity:typeof O.integrity==="string"?O.integrity:void 0})):W.d.m(N))},Pr.requestFormReset=function(N){W.d.r(N)},Pr.unstable_batchedUpdates=function(N,O){return N(O)},Pr.useFormState=function(N,O,_){return $().useFormState(N,O,_)},Pr.useFormStatus=function(){return $().useHostTransitionStatus()},Pr.version="19.2.4",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var D3=b3((PJ0,uy)=>{var Vr=g(my());uy.exports=Vr});var py=b3((Rr)=>{var r1=g(hy()),aJ=g(Q0()),mA=g(D3());(function(){function Z(Q,X){for(Q=Q.memoizedState;Q!==null&&0=X.length)return G;var w=X[K],H=L2(Q)?Q.slice():E1({},Q);return H[w]=Y(Q[w],X,K+1,G),H}function J(Q,X,K){if(X.length!==K.length)console.warn("copyWithRename() expects paths of the same length");else{for(var G=0;G_8?console.error("Unexpected pop."):(X!==O_[_8]&&console.error("Unexpected Fiber popped."),Q.current=H_[_8],H_[_8]=null,O_[_8]=null,_8--)}function $0(Q,X,K){_8++,H_[_8]=Q.current,O_[_8]=K,Q.current=X}function e(Q){return Q===null&&console.error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),Q}function c(Q,X){$0(y9,X,Q),$0(aq,Q,Q),$0(E9,null,Q);var K=X.nodeType;switch(K){case 9:case 11:K=K===9?"#document":"#fragment",X=(X=X.documentElement)?(X=X.namespaceURI)?Vb(X):I8:I8;break;default:if(K=X.tagName,X=X.namespaceURI)X=Vb(X),X=Rb(X,K);else switch(K){case"svg":X=dJ;break;case"math":X=sG;break;default:X=I8}}K=K.toLowerCase(),K=HL(null,K),K={context:X,ancestorInfo:K},z0(E9,Q),$0(E9,K,Q)}function Z0(Q){z0(E9,Q),z0(aq,Q),z0(y9,Q)}function W0(){return e(E9.current)}function n(Q){Q.memoizedState!==null&&$0(tW,Q,Q);var X=e(E9.current),K=Q.type,G=Rb(X.context,K);K=HL(X.ancestorInfo,K),G={context:G,ancestorInfo:K},X!==G&&($0(aq,Q,Q),$0(E9,G,Q))}function X0(Q){aq.current===Q&&(z0(E9,Q),z0(aq,Q)),tW.current===Q&&(z0(tW,Q),fK._currentValue=yY)}function f(){}function q0(){if(rq===0){eb=console.log,ZD=console.info,YD=console.warn,QD=console.error,JD=console.group,XD=console.groupCollapsed,zD=console.groupEnd;var Q={configurable:!0,enumerable:!0,value:f,writable:!0};Object.defineProperties(console,{info:Q,log:Q,warn:Q,error:Q,group:Q,groupCollapsed:Q,groupEnd:Q})}rq++}function H0(){if(rq--,rq===0){var Q={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:E1({},Q,{value:eb}),info:E1({},Q,{value:ZD}),warn:E1({},Q,{value:YD}),error:E1({},Q,{value:QD}),group:E1({},Q,{value:JD}),groupCollapsed:E1({},Q,{value:XD}),groupEnd:E1({},Q,{value:zD})})}0>rq&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function M0(Q){var X=Error.prepareStackTrace;if(Error.prepareStackTrace=void 0,Q=Q.stack,Error.prepareStackTrace=X,Q.startsWith(`Error: react-stack-top-frame `)&&(Q=Q.slice(29)),X=Q.indexOf(` `),X!==-1&&(Q=Q.slice(X+1)),X=Q.indexOf("react_stack_bottom_frame"),X!==-1&&(X=Q.lastIndexOf(` `,X)),X!==-1)Q=Q.slice(0,X);else return"";return Q}function y0(Q){if(__===void 0)try{throw Error()}catch(K){var X=K.stack.trim().match(/\n( *(at )?)/);__=X&&X[1]||"",qD=-1"u")return!1;var X=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(X.isDisabled)return!0;if(!X.supportsFiber)return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"),!0;try{GJ=X.inject(Q),_7=X}catch(K){console.error("React instrumentation encountered an error: %o.",K)}return X.checkDCE?!0:!1}function S1(Q){if(typeof kl==="function"&&fl(Q),_7&&typeof _7.setStrictMode==="function")try{_7.setStrictMode(GJ,Q)}catch(X){_3||(_3=!0,console.error("React instrumentation encountered an error: %o",X))}}function F6(Q){return Q>>>=0,Q===0?32:31-(hl(Q)/gl|0)|0}function n2(Q){var X=Q&42;if(X!==0)return X;switch(Q&-Q){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 Q&261888;case 262144:case 524288:case 1048576:case 2097152:return Q&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return Q&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return console.error("Should have found matching lanes. This is a bug in React."),Q}}function p4(Q,X,K){var G=Q.pendingLanes;if(G===0)return 0;var w=0,H=Q.suspendedLanes,F=Q.pingedLanes;Q=Q.warmLanes;var V=G&134217727;return V!==0?(G=V&~H,G!==0?w=n2(G):(F&=V,F!==0?w=n2(F):K||(K=V&~Q,K!==0&&(w=n2(K))))):(V=G&~H,V!==0?w=n2(V):F!==0?w=n2(F):K||(K=G&~Q,K!==0&&(w=n2(K)))),w===0?0:X!==0&&X!==w&&(X&H)===0&&(H=w&-w,K=X&-X,H>=K||H===32&&(K&4194048)!==0)?X:w}function x2(Q,X){return(Q.pendingLanes&~(Q.suspendedLanes&~Q.pingedLanes)&X)===0}function P6(Q,X){switch(Q){case 1:case 2:case 4:case 8:case 64:return X+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 X+5000;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return console.error("Should have found matching lanes. This is a bug in React."),-1}}function V6(){var Q=ZG;return ZG<<=1,(ZG&62914560)===0&&(ZG=4194304),Q}function e2(Q){for(var X=[],K=0;31>K;K++)X.push(Q);return X}function L5(Q,X){Q.pendingLanes|=X,X!==268435456&&(Q.suspendedLanes=0,Q.pingedLanes=0,Q.warmLanes=0)}function $2(Q,X,K,G,w,H){var F=Q.pendingLanes;Q.pendingLanes=K,Q.suspendedLanes=0,Q.pingedLanes=0,Q.warmLanes=0,Q.expiredLanes&=K,Q.entangledLanes&=K,Q.errorRecoveryDisabledLanes&=K,Q.shellSuspendCounter=0;var{entanglements:V,expirationTimes:b,hiddenUpdates:E}=Q;for(K=F&~K;0"u")return null;try{return Q.activeElement||Q.body}catch(X){return Q.body}}function S0(Q){return Q.replace(dl,function(X){return"\\"+X.charCodeAt(0).toString(16)+" "})}function c0(Q,X){X.checked===void 0||X.defaultChecked===void 0||UD||(console.error("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",v1()||"A component",X.type),UD=!0),X.value===void 0||X.defaultValue===void 0||GD||(console.error("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",v1()||"A component",X.type),GD=!0)}function a0(Q,X,K,G,w,H,F,V){if(Q.name="",F!=null&&typeof F!=="function"&&typeof F!=="symbol"&&typeof F!=="boolean"?(N1(F,"type"),Q.type=F):Q.removeAttribute("type"),X!=null)if(F==="number"){if(X===0&&Q.value===""||Q.value!=X)Q.value=""+t(X)}else Q.value!==""+t(X)&&(Q.value=""+t(X));else F!=="submit"&&F!=="reset"||Q.removeAttribute("value");X!=null?d0(Q,F,t(X)):K!=null?d0(Q,F,t(K)):G!=null&&Q.removeAttribute("value"),w==null&&H!=null&&(Q.defaultChecked=!!H),w!=null&&(Q.checked=w&&typeof w!=="function"&&typeof w!=="symbol"),V!=null&&typeof V!=="function"&&typeof V!=="symbol"&&typeof V!=="boolean"?(N1(V,"name"),Q.name=""+t(V)):Q.removeAttribute("name")}function Q1(Q,X,K,G,w,H,F,V){if(H!=null&&typeof H!=="function"&&typeof H!=="symbol"&&typeof H!=="boolean"&&(N1(H,"type"),Q.type=H),X!=null||K!=null){if(!(H!=="submit"&&H!=="reset"||X!==void 0&&X!==null)){P0(Q);return}K=K!=null?""+t(K):"",X=X!=null?""+t(X):K,V||X===Q.value||(Q.value=X),Q.defaultValue=X}G=G!=null?G:w,G=typeof G!=="function"&&typeof G!=="symbol"&&!!G,Q.checked=V?Q.checked:!!G,Q.defaultChecked=!!G,F!=null&&typeof F!=="function"&&typeof F!=="symbol"&&typeof F!=="boolean"&&(N1(F,"name"),Q.name=F),P0(Q)}function d0(Q,X,K){X==="number"&&j0(Q.ownerDocument)===Q||Q.defaultValue===""+K||(Q.defaultValue=""+K)}function p1(Q,X){X.value==null&&(typeof X.children==="object"&&X.children!==null?lJ.Children.forEach(X.children,function(K){K==null||typeof K==="string"||typeof K==="number"||typeof K==="bigint"||wD||(wD=!0,console.error("Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to