diff --git a/eval_protocol/adapters/langchain.py b/eval_protocol/adapters/langchain.py new file mode 100644 index 00000000..15c6cc90 --- /dev/null +++ b/eval_protocol/adapters/langchain.py @@ -0,0 +1,138 @@ +from __future__ import annotations + +import os +from typing import List + +from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, ToolMessage + +from eval_protocol.models import Message + + +def _dbg_enabled() -> bool: + return os.getenv("EP_DEBUG_SERIALIZATION", "0").strip() == "1" + + +def _dbg_print(*args): + if _dbg_enabled(): + try: + print(*args) + except Exception: + pass + + +def serialize_lc_message_to_ep(msg: BaseMessage) -> Message: + _dbg_print( + "[EP-Ser] Input LC msg:", + type(msg).__name__, + { + "has_additional_kwargs": isinstance(getattr(msg, "additional_kwargs", None), dict), + "content_type": type(getattr(msg, "content", None)).__name__, + }, + ) + + if isinstance(msg, HumanMessage): + ep_msg = Message(role="user", content=str(msg.content)) + _dbg_print("[EP-Ser] -> EP Message:", {"role": ep_msg.role, "len": len(ep_msg.content or "")}) + return ep_msg + + if isinstance(msg, AIMessage): + content = "" + if isinstance(msg.content, str): + content = msg.content + elif isinstance(msg.content, list): + parts: List[str] = [] + for item in msg.content: + if isinstance(item, dict): + if item.get("type") == "text": + parts.append(str(item.get("text", ""))) + elif isinstance(item, str): + parts.append(item) + content = "\n".join(parts) + + tool_calls_payload = None + + def _normalize_tool_calls(tc_list: list) -> list[dict]: + mapped: List[dict] = [] + for call in tc_list: + if not isinstance(call, dict): + continue + try: + call_id = call.get("id") or "toolcall_0" + if isinstance(call.get("function"), dict): + fn = call["function"] + fn_name = fn.get("name") or call.get("name") or "tool" + fn_args = fn.get("arguments") + else: + fn_name = call.get("name") or "tool" + fn_args = call.get("arguments") if call.get("arguments") is not None else call.get("args") + if not isinstance(fn_args, str): + import json as _json + + fn_args = _json.dumps(fn_args or {}, ensure_ascii=False) + mapped.append( + { + "id": call_id, + "type": "function", + "function": {"name": fn_name, "arguments": fn_args}, + } + ) + except Exception: + continue + return mapped + + ak = getattr(msg, "additional_kwargs", None) + if isinstance(ak, dict): + tc = ak.get("tool_calls") + if isinstance(tc, list) and tc: + mapped = _normalize_tool_calls(tc) + if mapped: + tool_calls_payload = mapped + + if tool_calls_payload is None: + raw_attr_tc = getattr(msg, "tool_calls", None) + if isinstance(raw_attr_tc, list) and raw_attr_tc: + mapped = _normalize_tool_calls(raw_attr_tc) + if mapped: + tool_calls_payload = mapped + + # Extract reasoning/thinking parts into reasoning_content + reasoning_content = None + if isinstance(msg.content, list): + collected = [ + it.get("thinking", "") for it in msg.content if isinstance(it, dict) and it.get("type") == "thinking" + ] + if collected: + reasoning_content = "\n\n".join([s for s in collected if s]) or None + + ep_msg = Message( + role="assistant", content=content, tool_calls=tool_calls_payload, reasoning_content=reasoning_content + ) + _dbg_print( + "[EP-Ser] -> EP Message:", + { + "role": ep_msg.role, + "content_len": len(ep_msg.content or ""), + "tool_calls": len(ep_msg.tool_calls or []) if isinstance(ep_msg.tool_calls, list) else 0, + }, + ) + return ep_msg + + if isinstance(msg, ToolMessage): + tool_name = msg.name or "tool" + status = msg.status or "success" + content = str(msg.content) + tool_call_id = getattr(msg, "tool_call_id", None) + ep_msg = Message( + role="tool", + name=tool_name, + tool_call_id=tool_call_id, + content=f'<{tool_name} status="{status}">\n{content}\n', + ) + _dbg_print( + "[EP-Ser] -> EP Message:", {"role": ep_msg.role, "name": ep_msg.name, "has_id": bool(ep_msg.tool_call_id)} + ) + return ep_msg + + ep_msg = Message(role=getattr(msg, "type", "assistant"), content=str(getattr(msg, "content", ""))) + _dbg_print("[EP-Ser] -> EP Message (fallback):", {"role": ep_msg.role, "len": len(ep_msg.content or "")}) + return ep_msg diff --git a/eval_protocol/models.py b/eval_protocol/models.py index 97eb9041..76d5969f 100644 --- a/eval_protocol/models.py +++ b/eval_protocol/models.py @@ -230,6 +230,9 @@ class Message(BaseModel): content: Optional[Union[str, List[ChatCompletionContentPartTextParam]]] = Field( default="", description="The content of the message." ) + reasoning_content: Optional[str] = Field( + default=None, description="Optional hidden chain-of-thought or reasoning content." + ) name: Optional[str] = None tool_call_id: Optional[str] = None tool_calls: Optional[List[ChatCompletionMessageToolCall]] = None diff --git a/eval_protocol/pytest/__init__.py b/eval_protocol/pytest/__init__.py index 6be3093a..1204f7ea 100644 --- a/eval_protocol/pytest/__init__.py +++ b/eval_protocol/pytest/__init__.py @@ -3,6 +3,7 @@ from .default_mcp_gym_rollout_processor import MCPGymRolloutProcessor from .default_no_op_rollout_processor import NoOpRolloutProcessor from .default_single_turn_rollout_process import SingleTurnRolloutProcessor +from .default_langchain_rollout_processor import LangGraphRolloutProcessor from .evaluation_test import evaluation_test from .exception_config import ExceptionHandlerConfig, BackoffConfig, get_default_exception_handler_config from .rollout_processor import RolloutProcessor @@ -22,6 +23,7 @@ "MCPGymRolloutProcessor", "RolloutProcessor", "SingleTurnRolloutProcessor", + "LangGraphRolloutProcessor", "NoOpRolloutProcessor", "default_dataset_adapter", "RolloutProcessorConfig", diff --git a/eval_protocol/pytest/default_langchain_rollout_processor.py b/eval_protocol/pytest/default_langchain_rollout_processor.py new file mode 100644 index 00000000..f60c966a --- /dev/null +++ b/eval_protocol/pytest/default_langchain_rollout_processor.py @@ -0,0 +1,77 @@ +import asyncio +from typing import List + +from langchain_core.messages import BaseMessage + +from eval_protocol.models import EvaluationRow, Message +from eval_protocol.pytest.rollout_processor import RolloutProcessor +from eval_protocol.pytest.types import RolloutProcessorConfig + + +class LangGraphRolloutProcessor(RolloutProcessor): + """Generic rollout processor for LangChain agents. + + Accepts an async factory that returns a target to invoke. The target can be: + - An object with `.graph.ainvoke(payload)` (e.g., LangGraph compiled graph) + - An object with `.ainvoke(payload)` + - A callable that accepts `payload` and returns the result dict + """ + + def __init__(self, get_invoke_target): + self.get_invoke_target = get_invoke_target + + def __call__(self, rows: List[EvaluationRow], config: RolloutProcessorConfig): + tasks: List[asyncio.Task] = [] + + async def _process_row(row: EvaluationRow) -> EvaluationRow: + # Build LC messages from EP row + from langchain_core.messages import HumanMessage + + lm_messages: List[BaseMessage] = [] + if row.messages: + last_user = [m for m in row.messages if m.role == "user"] + if last_user: + lm_messages.append(HumanMessage(content=last_user[-1].content or "")) + if not lm_messages: + lm_messages = [HumanMessage(content="")] # minimal + + target = await self.get_invoke_target(config) + + # Resolve the appropriate async invoke function + if hasattr(target, "graph") and hasattr(target.graph, "ainvoke"): + invoke_fn = target.graph.ainvoke + elif hasattr(target, "ainvoke"): + invoke_fn = target.ainvoke + elif callable(target): + + async def _invoke_wrapper(payload): + return await target(payload) + + invoke_fn = _invoke_wrapper + else: + raise TypeError("Unsupported invoke target for LangGraphRolloutProcessor") + + result = await invoke_fn({"messages": lm_messages}) + result_messages: List[BaseMessage] = result.get("messages", []) + + def _serialize_message(msg: BaseMessage) -> Message: + # Prefer SDK-level serializer + try: + from eval_protocol.adapters.langchain import serialize_lc_message_to_ep as _ser + + return _ser(msg) + except Exception: + # Minimal fallback: best-effort string content only + content = getattr(msg, "content", "") + return Message(role=getattr(msg, "type", "assistant"), content=str(content)) + + row.messages = [_serialize_message(m) for m in result_messages] + return row + + for r in rows: + tasks.append(asyncio.create_task(_process_row(r))) + + return tasks + + def cleanup(self) -> None: + return None diff --git a/eval_protocol/pytest/default_single_turn_rollout_process.py b/eval_protocol/pytest/default_single_turn_rollout_process.py index f65f2b0e..161d8db9 100644 --- a/eval_protocol/pytest/default_single_turn_rollout_process.py +++ b/eval_protocol/pytest/default_single_turn_rollout_process.py @@ -5,7 +5,7 @@ from typing import List from litellm import acompletion -from openai.types.chat.chat_completion_message import ChatCompletionMessageToolCall +from typing import Dict from eval_protocol.dataset_logger import default_logger from eval_protocol.models import EvaluationRow, Message @@ -71,17 +71,34 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: converted_tool_calls = None if tool_calls: - converted_tool_calls = [ - ChatCompletionMessageToolCall( - id=tool_call.id, - type=tool_call.type, - function={ - "name": tool_call.function.name, - "arguments": tool_call.function.arguments, - }, - ) - for tool_call in tool_calls - ] + converted_tool_calls = [] + for tool_call in tool_calls: + try: + converted_tool_calls.append( + { + "id": tool_call.id, + "type": tool_call.type, + "function": { + "name": tool_call.function.name, + "arguments": tool_call.function.arguments, + }, + } + ) + except Exception: + # best-effort: fallback to dict form + try: + converted_tool_calls.append( + { + "id": getattr(tool_call, "id", "toolcall_0"), + "type": getattr(tool_call, "type", "function"), + "function": { + "name": getattr(getattr(tool_call, "function", None), "name", "tool"), + "arguments": getattr(getattr(tool_call, "function", None), "arguments", "{}"), + }, + } + ) + except Exception: + pass messages = list(row.messages) + [ Message( diff --git a/eval_protocol/pytest/evaluation_test.py b/eval_protocol/pytest/evaluation_test.py index 32f01cc6..583fb29f 100644 --- a/eval_protocol/pytest/evaluation_test.py +++ b/eval_protocol/pytest/evaluation_test.py @@ -445,6 +445,24 @@ async def _collect_result(config, lst): # pyright: ignore[reportUnknownParamete ) else: r.eval_metadata.status = Status.eval_finished() + # Optional debug print for assistant/tool sequence + if os.getenv("EP_DEBUG_SERIALIZATION", "0").strip() == "1": + try: + preview = [ + { + "role": m.role, + "len": len(m.content or "") if isinstance(m.content, str) else None, + "tool_calls": len(m.tool_calls or []) + if hasattr(m, "tool_calls") and isinstance(m.tool_calls, list) + else 0, + "tool_call_id": getattr(m, "tool_call_id", None), + "name": getattr(m, "name", None), + } + for m in r.messages + ] + print("[EP-Log] Row messages:", preview) + except Exception: + pass active_logger.log(r) # if rollout_processor is McpGymRolloutProcessor, we execute runs sequentially since McpGym does not support concurrent runs diff --git a/pyproject.toml b/pyproject.toml index c92f528f..c9c20ba7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "dataclasses-json>=0.5.7", "uvicorn>=0.15.0", "python-dotenv>=0.19.0", - "openai==1.78.1", + "openai>=1.78.1", "aiosqlite", "aiohttp", "mcp>=1.9.2", @@ -71,7 +71,7 @@ dev = [ "types-PyYAML", "types-docker", "versioneer>=0.20", - "openai==1.78.1", + "openai>=1.78.1", "pre-commit", "e2b", "pytest-cov", diff --git a/uv.lock b/uv.lock index 2f053930..e265dcc7 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.13'", @@ -1317,8 +1317,8 @@ requires-dist = [ { name = "loguru", specifier = ">=0.6.0" }, { name = "mcp", specifier = ">=1.9.2" }, { name = "omegaconf", specifier = ">=2.3.0" }, - { name = "openai", specifier = "==1.78.1" }, - { name = "openai", marker = "extra == 'dev'", specifier = "==1.78.1" }, + { name = "openai", specifier = ">=1.78.1" }, + { name = "openai", marker = "extra == 'dev'", specifier = ">=1.78.1" }, { name = "openevals", marker = "extra == 'openevals'", specifier = ">=0.1.0" }, { name = "pandas", specifier = ">=1.5.0" }, { name = "peewee", specifier = ">=3.18.2" }, diff --git a/vite-app/dist/assets/index-D04dO2VH.js b/vite-app/dist/assets/index-CfW2XE3N.js similarity index 88% rename from vite-app/dist/assets/index-D04dO2VH.js rename to vite-app/dist/assets/index-CfW2XE3N.js index 2eb5fda8..f4c6bbc0 100644 --- a/vite-app/dist/assets/index-D04dO2VH.js +++ b/vite-app/dist/assets/index-CfW2XE3N.js @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var hy;function OH(){if(hy)return Bl;hy=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function A(n,i,s){var o=null;if(s!==void 0&&(o=""+s),i.key!==void 0&&(o=""+i.key),"key"in i){s={};for(var c in i)c!=="key"&&(s[c]=i[c])}else s=i;return i=s.ref,{$$typeof:e,type:n,key:o,ref:i!==void 0?i:null,props:s}}return Bl.Fragment=t,Bl.jsx=A,Bl.jsxs=A,Bl}var dy;function TH(){return dy||(dy=1,Fp.exports=OH()),Fp.exports}var Q=TH(),Sp={exports:{}},Ut={};/** + */var hy;function OH(){if(hy)return Bl;hy=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function A(n,i,s){var o=null;if(s!==void 0&&(o=""+s),i.key!==void 0&&(o=""+i.key),"key"in i){s={};for(var c in i)c!=="key"&&(s[c]=i[c])}else s=i;return i=s.ref,{$$typeof:e,type:n,key:o,ref:i!==void 0?i:null,props:s}}return Bl.Fragment=t,Bl.jsx=A,Bl.jsxs=A,Bl}var dy;function TH(){return dy||(dy=1,Fp.exports=OH()),Fp.exports}var x=TH(),Sp={exports:{}},Ut={};/** * @license React * react.production.js * @@ -38,15 +38,15 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var by;function IH(){if(by)return ml;by=1;var e=LH(),t=Ih(),A=vQ();function n(r){var a="https://react.dev/errors/"+r;if(1T||(r.current=ct[T],ct[T]=null,T--)}function tt(r,a){T++,ct[T]=r.current,r.current=a}var Y=j(null),ut=j(null),lt=j(null),he=j(null);function Kt(r,a){switch(tt(lt,a),tt(ut,r),tt(Y,null),a.nodeType){case 9:case 11:r=(r=a.documentElement)&&(r=r.namespaceURI)?Kb(r):0;break;default:if(r=a.tagName,a=a.namespaceURI)a=Kb(a),r=zb(a,r);else switch(r){case"svg":r=1;break;case"math":r=2;break;default:r=0}}At(Y),tt(Y,r)}function Yt(){At(Y),At(ut),At(lt)}function An(r){r.memoizedState!==null&&tt(he,r);var a=Y.current,l=zb(a,r.type);a!==l&&(tt(ut,r),tt(Y,l))}function Pe(r){ut.current===r&&(At(Y),At(ut)),he.current===r&&(At(he),fl._currentValue=q)}var eA=Object.prototype.hasOwnProperty,EA=e.unstable_scheduleCallback,FA=e.unstable_cancelCallback,ea=e.unstable_shouldYield,yA=e.unstable_requestPaint,CA=e.unstable_now,pi=e.unstable_getCurrentPriorityLevel,Pn=e.unstable_ImmediatePriority,se=e.unstable_UserBlockingPriority,jn=e.unstable_NormalPriority,es=e.unstable_LowPriority,Ar=e.unstable_IdlePriority,As=e.log,Aa=e.unstable_setDisableYieldValue,nn=null,_e=null;function SA(r){if(typeof As=="function"&&Aa(r),_e&&typeof _e.setStrictMode=="function")try{_e.setStrictMode(nn,r)}catch{}}var Fe=Math.clz32?Math.clz32:ir,nr=Math.log,yo=Math.LN2;function ir(r){return r>>>=0,r===0?32:31-(nr(r)/yo|0)|0}var rn=256,oA=4194304;function Wt(r){var a=r&42;if(a!==0)return a;switch(r&-r){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:case 262144:case 524288:case 1048576:case 2097152:return r&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return r&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return r}}function Bi(r,a,l){var f=r.pendingLanes;if(f===0)return 0;var g=0,B=r.suspendedLanes,y=r.pingedLanes;r=r.warmLanes;var x=f&134217727;return x!==0?(f=x&~B,f!==0?g=Wt(f):(y&=x,y!==0?g=Wt(y):l||(l=x&~r,l!==0&&(g=Wt(l))))):(x=f&~B,x!==0?g=Wt(x):y!==0?g=Wt(y):l||(l=f&~r,l!==0&&(g=Wt(l)))),g===0?0:a!==0&&a!==g&&(a&B)===0&&(B=g&-g,l=a&-a,B>=l||B===32&&(l&4194048)!==0)?a:g}function Un(r,a){return(r.pendingLanes&~(r.suspendedLanes&~r.pingedLanes)&a)===0}function rr(r,a){switch(r){case 1:case 2:case 4:case 8:case 64:return a+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 a+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 sr(){var r=rn;return rn<<=1,(rn&4194048)===0&&(rn=256),r}function mi(){var r=oA;return oA<<=1,(oA&62914560)===0&&(oA=4194304),r}function Gn(r){for(var a=[],l=0;31>l;l++)a.push(r);return a}function sn(r,a){r.pendingLanes|=a,a!==268435456&&(r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0)}function ns(r,a,l,f,g,B){var y=r.pendingLanes;r.pendingLanes=l,r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0,r.expiredLanes&=l,r.entangledLanes&=l,r.errorRecoveryDisabledLanes&=l,r.shellSuspendCounter=0;var x=r.entanglements,O=r.expirationTimes,K=r.hiddenUpdates;for(l=y&~l;0T||(r.current=ct[T],ct[T]=null,T--)}function tt(r,a){T++,ct[T]=r.current,r.current=a}var Y=j(null),ut=j(null),lt=j(null),he=j(null);function Kt(r,a){switch(tt(lt,a),tt(ut,r),tt(Y,null),a.nodeType){case 9:case 11:r=(r=a.documentElement)&&(r=r.namespaceURI)?Kb(r):0;break;default:if(r=a.tagName,a=a.namespaceURI)a=Kb(a),r=zb(a,r);else switch(r){case"svg":r=1;break;case"math":r=2;break;default:r=0}}At(Y),tt(Y,r)}function Yt(){At(Y),At(ut),At(lt)}function An(r){r.memoizedState!==null&&tt(he,r);var a=Y.current,l=zb(a,r.type);a!==l&&(tt(ut,r),tt(Y,l))}function Pe(r){ut.current===r&&(At(Y),At(ut)),he.current===r&&(At(he),fl._currentValue=q)}var eA=Object.prototype.hasOwnProperty,EA=e.unstable_scheduleCallback,FA=e.unstable_cancelCallback,ea=e.unstable_shouldYield,yA=e.unstable_requestPaint,CA=e.unstable_now,pi=e.unstable_getCurrentPriorityLevel,Pn=e.unstable_ImmediatePriority,se=e.unstable_UserBlockingPriority,jn=e.unstable_NormalPriority,es=e.unstable_LowPriority,Ar=e.unstable_IdlePriority,As=e.log,Aa=e.unstable_setDisableYieldValue,nn=null,_e=null;function SA(r){if(typeof As=="function"&&Aa(r),_e&&typeof _e.setStrictMode=="function")try{_e.setStrictMode(nn,r)}catch{}}var Fe=Math.clz32?Math.clz32:ir,nr=Math.log,yo=Math.LN2;function ir(r){return r>>>=0,r===0?32:31-(nr(r)/yo|0)|0}var rn=256,oA=4194304;function $t(r){var a=r&42;if(a!==0)return a;switch(r&-r){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:case 262144:case 524288:case 1048576:case 2097152:return r&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return r&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return r}}function Bi(r,a,l){var f=r.pendingLanes;if(f===0)return 0;var g=0,B=r.suspendedLanes,y=r.pingedLanes;r=r.warmLanes;var Q=f&134217727;return Q!==0?(f=Q&~B,f!==0?g=$t(f):(y&=Q,y!==0?g=$t(y):l||(l=Q&~r,l!==0&&(g=$t(l))))):(Q=f&~B,Q!==0?g=$t(Q):y!==0?g=$t(y):l||(l=f&~r,l!==0&&(g=$t(l)))),g===0?0:a!==0&&a!==g&&(a&B)===0&&(B=g&-g,l=a&-a,B>=l||B===32&&(l&4194048)!==0)?a:g}function Un(r,a){return(r.pendingLanes&~(r.suspendedLanes&~r.pingedLanes)&a)===0}function rr(r,a){switch(r){case 1:case 2:case 4:case 8:case 64:return a+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 a+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 sr(){var r=rn;return rn<<=1,(rn&4194048)===0&&(rn=256),r}function mi(){var r=oA;return oA<<=1,(oA&62914560)===0&&(oA=4194304),r}function Gn(r){for(var a=[],l=0;31>l;l++)a.push(r);return a}function sn(r,a){r.pendingLanes|=a,a!==268435456&&(r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0)}function ns(r,a,l,f,g,B){var y=r.pendingLanes;r.pendingLanes=l,r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0,r.expiredLanes&=l,r.entangledLanes&=l,r.errorRecoveryDisabledLanes&=l,r.shellSuspendCounter=0;var Q=r.entanglements,O=r.expirationTimes,K=r.hiddenUpdates;for(l=y&~l;0)":-1g||O[f]!==K[g]){var X=` `+O[f].replace(" at new "," at ");return r.displayName&&X.includes("")&&(X=X.replace("",r.displayName)),X}while(1<=f&&0<=g);break}}}finally{_d=!1,Error.prepareStackTrace=l}return(l=r?r.displayName||r.name:"")?ra(l):""}function QS(r){switch(r.tag){case 26:case 27:case 5:return ra(r.type);case 16:return ra("Lazy");case 13:return ra("Suspense");case 19:return ra("SuspenseList");case 0:case 15:return xd(r.type,!1);case 11:return xd(r.type.render,!1);case 1:return xd(r.type,!0);case 31:return ra("Activity");default:return""}}function Mv(r){try{var a="";do a+=QS(r),r=r.return;while(r);return a}catch(l){return` Error generating stack: `+l.message+` -`+l.stack}}function ln(r){switch(typeof r){case"bigint":case"boolean":case"number":case"string":case"undefined":return r;case"object":return r;default:return""}}function Lv(r){var a=r.type;return(r=r.nodeName)&&r.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function US(r){var a=Lv(r)?"checked":"value",l=Object.getOwnPropertyDescriptor(r.constructor.prototype,a),f=""+r[a];if(!r.hasOwnProperty(a)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var g=l.get,B=l.set;return Object.defineProperty(r,a,{configurable:!0,get:function(){return g.call(this)},set:function(y){f=""+y,B.call(this,y)}}),Object.defineProperty(r,a,{enumerable:l.enumerable}),{getValue:function(){return f},setValue:function(y){f=""+y},stopTracking:function(){r._valueTracker=null,delete r[a]}}}}function Dc(r){r._valueTracker||(r._valueTracker=US(r))}function Rv(r){if(!r)return!1;var a=r._valueTracker;if(!a)return!0;var l=a.getValue(),f="";return r&&(f=Lv(r)?r.checked?"true":"false":r.value),r=f,r!==l?(a.setValue(r),!0):!1}function Mc(r){if(r=r||(typeof document<"u"?document:void 0),typeof r>"u")return null;try{return r.activeElement||r.body}catch{return r.body}}var ES=/[\n"\\]/g;function cn(r){return r.replace(ES,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function Qd(r,a,l,f,g,B,y,x){r.name="",y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"?r.type=y:r.removeAttribute("type"),a!=null?y==="number"?(a===0&&r.value===""||r.value!=a)&&(r.value=""+ln(a)):r.value!==""+ln(a)&&(r.value=""+ln(a)):y!=="submit"&&y!=="reset"||r.removeAttribute("value"),a!=null?Ud(r,y,ln(a)):l!=null?Ud(r,y,ln(l)):f!=null&&r.removeAttribute("value"),g==null&&B!=null&&(r.defaultChecked=!!B),g!=null&&(r.checked=g&&typeof g!="function"&&typeof g!="symbol"),x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?r.name=""+ln(x):r.removeAttribute("name")}function Iv(r,a,l,f,g,B,y,x){if(B!=null&&typeof B!="function"&&typeof B!="symbol"&&typeof B!="boolean"&&(r.type=B),a!=null||l!=null){if(!(B!=="submit"&&B!=="reset"||a!=null))return;l=l!=null?""+ln(l):"",a=a!=null?""+ln(a):l,x||a===r.value||(r.value=a),r.defaultValue=a}f=f??g,f=typeof f!="function"&&typeof f!="symbol"&&!!f,r.checked=x?r.checked:!!f,r.defaultChecked=!!f,y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"&&(r.name=y)}function Ud(r,a,l){a==="number"&&Mc(r.ownerDocument)===r||r.defaultValue===""+l||(r.defaultValue=""+l)}function sa(r,a,l,f){if(r=r.options,a){a={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Od=!1;if(bi)try{var Qo={};Object.defineProperty(Qo,"passive",{get:function(){Od=!0}}),window.addEventListener("test",Qo,Qo),window.removeEventListener("test",Qo,Qo)}catch{Od=!1}var lr=null,Td=null,Rc=null;function jv(){if(Rc)return Rc;var r,a=Td,l=a.length,f,g="value"in lr?lr.value:lr.textContent,B=g.length;for(r=0;r=Fo),$v=" ",Jv=!1;function qv(r,a){switch(r){case"keyup":return A1.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function t0(r){return r=r.detail,typeof r=="object"&&"data"in r?r.data:null}var ca=!1;function i1(r,a){switch(r){case"compositionend":return t0(a);case"keypress":return a.which!==32?null:(Jv=!0,$v);case"textInput":return r=a.data,r===$v&&Jv?null:r;default:return null}}function r1(r,a){if(ca)return r==="compositionend"||!Id&&qv(r,a)?(r=jv(),Rc=Td=lr=null,ca=!1,r):null;switch(r){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1=a)return{node:l,offset:a-r};r=f}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=o0(l)}}function c0(r,a){return r&&a?r===a?!0:r&&r.nodeType===3?!1:a&&a.nodeType===3?c0(r,a.parentNode):"contains"in r?r.contains(a):r.compareDocumentPosition?!!(r.compareDocumentPosition(a)&16):!1:!1}function u0(r){r=r!=null&&r.ownerDocument!=null&&r.ownerDocument.defaultView!=null?r.ownerDocument.defaultView:window;for(var a=Mc(r.document);a instanceof r.HTMLIFrameElement;){try{var l=typeof a.contentWindow.location.href=="string"}catch{l=!1}if(l)r=a.contentWindow;else break;a=Mc(r.document)}return a}function Kd(r){var a=r&&r.nodeName&&r.nodeName.toLowerCase();return a&&(a==="input"&&(r.type==="text"||r.type==="search"||r.type==="tel"||r.type==="url"||r.type==="password")||a==="textarea"||r.contentEditable==="true")}var h1=bi&&"documentMode"in document&&11>=document.documentMode,ua=null,zd=null,To=null,Vd=!1;function f0(r,a,l){var f=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Vd||ua==null||ua!==Mc(f)||(f=ua,"selectionStart"in f&&Kd(f)?f={start:f.selectionStart,end:f.selectionEnd}:(f=(f.ownerDocument&&f.ownerDocument.defaultView||window).getSelection(),f={anchorNode:f.anchorNode,anchorOffset:f.anchorOffset,focusNode:f.focusNode,focusOffset:f.focusOffset}),To&&Oo(To,f)||(To=f,f=Uu(zd,"onSelect"),0>=y,g-=y,Ci=1<<32-Fe(a)+g|l<B?B:8;var y=L.T,x={};L.T=x,Eg(r,!1,a,l);try{var O=g(),K=L.S;if(K!==null&&K(x,O),O!==null&&typeof O=="object"&&typeof O.then=="function"){var X=y1(O,f);Zo(r,a,X,XA(r))}else Zo(r,a,f,XA(r))}catch($){Zo(r,a,{then:function(){},status:"rejected",reason:$},XA())}finally{G.p=B,L.T=y}}function U1(){}function Qg(r,a,l,f){if(r.tag!==5)throw Error(n(476));var g=hw(r).queue;fw(r,g,a,q,l===null?U1:function(){return dw(r),l(f)})}function hw(r){var a=r.memoizedState;if(a!==null)return a;a={memoizedState:q,baseState:q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ui,lastRenderedState:q},next:null};var l={};return a.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ui,lastRenderedState:l},next:null},r.memoizedState=a,r=r.alternate,r!==null&&(r.memoizedState=a),a}function dw(r){var a=hw(r).next.queue;Zo(r,a,{},XA())}function Ug(){return fA(fl)}function gw(){return Ne().memoizedState}function pw(){return Ne().memoizedState}function E1(r){for(var a=r.return;a!==null;){switch(a.tag){case 24:case 3:var l=XA();r=fr(l);var f=hr(a,r,l);f!==null&&(ZA(f,a,l),zo(f,a,l)),a={cache:ng()},r.payload=a;return}a=a.return}}function F1(r,a,l){var f=XA();l={lane:f,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null},au(r)?mw(a,l):(l=Xd(r,a,l,f),l!==null&&(ZA(l,r,f),vw(l,a,f)))}function Bw(r,a,l){var f=XA();Zo(r,a,l,f)}function Zo(r,a,l,f){var g={lane:f,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null};if(au(r))mw(a,g);else{var B=r.alternate;if(r.lanes===0&&(B===null||B.lanes===0)&&(B=a.lastRenderedReducer,B!==null))try{var y=a.lastRenderedState,x=B(y,l);if(g.hasEagerState=!0,g.eagerState=x,zA(x,y))return Pc(r,a,g,0),ae===null&&Vc(),!1}catch{}finally{}if(l=Xd(r,a,g,f),l!==null)return ZA(l,r,f),vw(l,a,f),!0}return!1}function Eg(r,a,l,f){if(f={lane:2,revertLane:sp(),action:f,hasEagerState:!1,eagerState:null,next:null},au(r)){if(a)throw Error(n(479))}else a=Xd(r,l,f,2),a!==null&&ZA(a,r,2)}function au(r){var a=r.alternate;return r===Et||a!==null&&a===Et}function mw(r,a){ba=eu=!0;var l=r.pending;l===null?a.next=a:(a.next=l.next,l.next=a),r.pending=a}function vw(r,a,l){if((l&4194048)!==0){var f=a.lanes;f&=r.pendingLanes,l|=f,a.lanes=l,Se(r,l)}}var ou={readContext:fA,use:nu,useCallback:Te,useContext:Te,useEffect:Te,useImperativeHandle:Te,useLayoutEffect:Te,useInsertionEffect:Te,useMemo:Te,useReducer:Te,useRef:Te,useState:Te,useDebugValue:Te,useDeferredValue:Te,useTransition:Te,useSyncExternalStore:Te,useId:Te,useHostTransitionStatus:Te,useFormState:Te,useActionState:Te,useOptimistic:Te,useMemoCache:Te,useCacheRefresh:Te},ww={readContext:fA,use:nu,useCallback:function(r,a){return OA().memoizedState=[r,a===void 0?null:a],r},useContext:fA,useEffect:nw,useImperativeHandle:function(r,a,l){l=l!=null?l.concat([r]):null,su(4194308,4,aw.bind(null,a,r),l)},useLayoutEffect:function(r,a){return su(4194308,4,r,a)},useInsertionEffect:function(r,a){su(4,2,r,a)},useMemo:function(r,a){var l=OA();a=a===void 0?null:a;var f=r();if(ms){SA(!0);try{r()}finally{SA(!1)}}return l.memoizedState=[f,a],f},useReducer:function(r,a,l){var f=OA();if(l!==void 0){var g=l(a);if(ms){SA(!0);try{l(a)}finally{SA(!1)}}}else g=a;return f.memoizedState=f.baseState=g,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:r,lastRenderedState:g},f.queue=r,r=r.dispatch=F1.bind(null,Et,r),[f.memoizedState,r]},useRef:function(r){var a=OA();return r={current:r},a.memoizedState=r},useState:function(r){r=yg(r);var a=r.queue,l=Bw.bind(null,Et,a);return a.dispatch=l,[r.memoizedState,l]},useDebugValue:_g,useDeferredValue:function(r,a){var l=OA();return xg(l,r,a)},useTransition:function(){var r=yg(!1);return r=fw.bind(null,Et,r.queue,!0,!1),OA().memoizedState=r,[!1,r]},useSyncExternalStore:function(r,a,l){var f=Et,g=OA();if(Pt){if(l===void 0)throw Error(n(407));l=l()}else{if(l=a(),ae===null)throw Error(n(349));(Lt&124)!==0||K0(f,a,l)}g.memoizedState=l;var B={value:l,getSnapshot:a};return g.queue=B,nw(V0.bind(null,f,B,r),[r]),f.flags|=2048,Ca(9,ru(),z0.bind(null,f,B,l,a),null),l},useId:function(){var r=OA(),a=ae.identifierPrefix;if(Pt){var l=_i,f=Ci;l=(f&~(1<<32-Fe(f)-1)).toString(32)+l,a="«"+a+"R"+l,l=Au++,0Ct?(Ze=vt,vt=null):Ze=vt.sibling;var It=V(I,vt,k[Ct],W);if(It===null){vt===null&&(vt=Ze);break}r&&vt&&It.alternate===null&&a(I,vt),M=B(It,M,Ct),Ft===null?pt=It:Ft.sibling=It,Ft=It,vt=Ze}if(Ct===k.length)return l(I,vt),Pt&&fs(I,Ct),pt;if(vt===null){for(;CtCt?(Ze=vt,vt=null):Ze=vt.sibling;var Sr=V(I,vt,It.value,W);if(Sr===null){vt===null&&(vt=Ze);break}r&&vt&&Sr.alternate===null&&a(I,vt),M=B(Sr,M,Ct),Ft===null?pt=Sr:Ft.sibling=Sr,Ft=Sr,vt=Ze}if(It.done)return l(I,vt),Pt&&fs(I,Ct),pt;if(vt===null){for(;!It.done;Ct++,It=k.next())It=$(I,It.value,W),It!==null&&(M=B(It,M,Ct),Ft===null?pt=It:Ft.sibling=It,Ft=It);return Pt&&fs(I,Ct),pt}for(vt=f(vt);!It.done;Ct++,It=k.next())It=P(vt,I,Ct,It.value,W),It!==null&&(r&&It.alternate!==null&&vt.delete(It.key===null?Ct:It.key),M=B(It,M,Ct),Ft===null?pt=It:Ft.sibling=It,Ft=It);return r&&vt.forEach(function(HH){return a(I,HH)}),Pt&&fs(I,Ct),pt}function qt(I,M,k,W){if(typeof k=="object"&&k!==null&&k.type===w&&k.key===null&&(k=k.props.children),typeof k=="object"&&k!==null){switch(k.$$typeof){case m:t:{for(var pt=k.key;M!==null;){if(M.key===pt){if(pt=k.type,pt===w){if(M.tag===7){l(I,M.sibling),W=g(M,k.props.children),W.return=I,I=W;break t}}else if(M.elementType===pt||typeof pt=="object"&&pt!==null&&pt.$$typeof===z&&yw(pt)===M.type){l(I,M.sibling),W=g(M,k.props),Wo(W,k),W.return=I,I=W;break t}l(I,M);break}else a(I,M);M=M.sibling}k.type===w?(W=cs(k.props.children,I.mode,W,k.key),W.return=I,I=W):(W=Gc(k.type,k.key,k.props,null,I.mode,W),Wo(W,k),W.return=I,I=W)}return y(I);case v:t:{for(pt=k.key;M!==null;){if(M.key===pt)if(M.tag===4&&M.stateNode.containerInfo===k.containerInfo&&M.stateNode.implementation===k.implementation){l(I,M.sibling),W=g(M,k.children||[]),W.return=I,I=W;break t}else{l(I,M);break}else a(I,M);M=M.sibling}W=Wd(k,I.mode,W),W.return=I,I=W}return y(I);case z:return pt=k._init,k=pt(k._payload),qt(I,M,k,W)}if(st(k))return _t(I,M,k,W);if(nt(k)){if(pt=nt(k),typeof pt!="function")throw Error(n(150));return k=pt.call(k),bt(I,M,k,W)}if(typeof k.then=="function")return qt(I,M,lu(k),W);if(k.$$typeof===E)return qt(I,M,Wc(I,k),W);cu(I,k)}return typeof k=="string"&&k!==""||typeof k=="number"||typeof k=="bigint"?(k=""+k,M!==null&&M.tag===6?(l(I,M.sibling),W=g(M,k),W.return=I,I=W):(l(I,M),W=Yd(k,I.mode,W),W.return=I,I=W),y(I)):l(I,M)}return function(I,M,k,W){try{Yo=0;var pt=qt(I,M,k,W);return _a=null,pt}catch(vt){if(vt===ko||vt===Jc)throw vt;var Ft=VA(29,vt,null,I.mode);return Ft.lanes=W,Ft.return=I,Ft}finally{}}}var xa=Cw(!0),_w=Cw(!1),gn=j(null),Yn=null;function gr(r){var a=r.alternate;tt(Ke,Ke.current&1),tt(gn,r),Yn===null&&(a===null||wa.current!==null||a.memoizedState!==null)&&(Yn=r)}function xw(r){if(r.tag===22){if(tt(Ke,Ke.current),tt(gn,r),Yn===null){var a=r.alternate;a!==null&&a.memoizedState!==null&&(Yn=r)}}else pr()}function pr(){tt(Ke,Ke.current),tt(gn,gn.current)}function Ei(r){At(gn),Yn===r&&(Yn=null),At(Ke)}var Ke=j(0);function uu(r){for(var a=r;a!==null;){if(a.tag===13){var l=a.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||mp(l)))return a}else if(a.tag===19&&a.memoizedProps.revealOrder!==void 0){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===r)break;for(;a.sibling===null;){if(a.return===null||a.return===r)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}function Fg(r,a,l,f){a=r.memoizedState,l=l(f,a),l=l==null?a:d({},a,l),r.memoizedState=l,r.lanes===0&&(r.updateQueue.baseState=l)}var Sg={enqueueSetState:function(r,a,l){r=r._reactInternals;var f=XA(),g=fr(f);g.payload=a,l!=null&&(g.callback=l),a=hr(r,g,f),a!==null&&(ZA(a,r,f),zo(a,r,f))},enqueueReplaceState:function(r,a,l){r=r._reactInternals;var f=XA(),g=fr(f);g.tag=1,g.payload=a,l!=null&&(g.callback=l),a=hr(r,g,f),a!==null&&(ZA(a,r,f),zo(a,r,f))},enqueueForceUpdate:function(r,a){r=r._reactInternals;var l=XA(),f=fr(l);f.tag=2,a!=null&&(f.callback=a),a=hr(r,f,l),a!==null&&(ZA(a,r,l),zo(a,r,l))}};function Qw(r,a,l,f,g,B,y){return r=r.stateNode,typeof r.shouldComponentUpdate=="function"?r.shouldComponentUpdate(f,B,y):a.prototype&&a.prototype.isPureReactComponent?!Oo(l,f)||!Oo(g,B):!0}function Uw(r,a,l,f){r=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(l,f),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(l,f),a.state!==r&&Sg.enqueueReplaceState(a,a.state,null)}function vs(r,a){var l=a;if("ref"in a){l={};for(var f in a)f!=="ref"&&(l[f]=a[f])}if(r=r.defaultProps){l===a&&(l=d({},l));for(var g in r)l[g]===void 0&&(l[g]=r[g])}return l}var fu=typeof reportError=="function"?reportError:function(r){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var a=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof r=="object"&&r!==null&&typeof r.message=="string"?String(r.message):String(r),error:r});if(!window.dispatchEvent(a))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",r);return}console.error(r)};function Ew(r){fu(r)}function Fw(r){console.error(r)}function Sw(r){fu(r)}function hu(r,a){try{var l=r.onUncaughtError;l(a.value,{componentStack:a.stack})}catch(f){setTimeout(function(){throw f})}}function Hw(r,a,l){try{var f=r.onCaughtError;f(l.value,{componentStack:l.stack,errorBoundary:a.tag===1?a.stateNode:null})}catch(g){setTimeout(function(){throw g})}}function Hg(r,a,l){return l=fr(l),l.tag=3,l.payload={element:null},l.callback=function(){hu(r,a)},l}function Ow(r){return r=fr(r),r.tag=3,r}function Tw(r,a,l,f){var g=l.type.getDerivedStateFromError;if(typeof g=="function"){var B=f.value;r.payload=function(){return g(B)},r.callback=function(){Hw(a,l,f)}}var y=l.stateNode;y!==null&&typeof y.componentDidCatch=="function"&&(r.callback=function(){Hw(a,l,f),typeof g!="function"&&(yr===null?yr=new Set([this]):yr.add(this));var x=f.stack;this.componentDidCatch(f.value,{componentStack:x!==null?x:""})})}function H1(r,a,l,f,g){if(l.flags|=32768,f!==null&&typeof f=="object"&&typeof f.then=="function"){if(a=l.alternate,a!==null&&Ro(a,l,g,!0),l=gn.current,l!==null){switch(l.tag){case 13:return Yn===null?ep():l.alternate===null&&Qe===0&&(Qe=3),l.flags&=-257,l.flags|=65536,l.lanes=g,f===sg?l.flags|=16384:(a=l.updateQueue,a===null?l.updateQueue=new Set([f]):a.add(f),np(r,f,g)),!1;case 22:return l.flags|=65536,f===sg?l.flags|=16384:(a=l.updateQueue,a===null?(a={transitions:null,markerInstances:null,retryQueue:new Set([f])},l.updateQueue=a):(l=a.retryQueue,l===null?a.retryQueue=new Set([f]):l.add(f)),np(r,f,g)),!1}throw Error(n(435,l.tag))}return np(r,f,g),ep(),!1}if(Pt)return a=gn.current,a!==null?((a.flags&65536)===0&&(a.flags|=256),a.flags|=65536,a.lanes=g,f!==qd&&(r=Error(n(422),{cause:f}),Lo(un(r,l)))):(f!==qd&&(a=Error(n(423),{cause:f}),Lo(un(a,l))),r=r.current.alternate,r.flags|=65536,g&=-g,r.lanes|=g,f=un(f,l),g=Hg(r.stateNode,f,g),lg(r,g),Qe!==4&&(Qe=2)),!1;var B=Error(n(520),{cause:f});if(B=un(B,l),nl===null?nl=[B]:nl.push(B),Qe!==4&&(Qe=2),a===null)return!0;f=un(f,l),l=a;do{switch(l.tag){case 3:return l.flags|=65536,r=g&-g,l.lanes|=r,r=Hg(l.stateNode,f,r),lg(l,r),!1;case 1:if(a=l.type,B=l.stateNode,(l.flags&128)===0&&(typeof a.getDerivedStateFromError=="function"||B!==null&&typeof B.componentDidCatch=="function"&&(yr===null||!yr.has(B))))return l.flags|=65536,g&=-g,l.lanes|=g,g=Ow(g),Tw(g,r,l,f),lg(l,g),!1}l=l.return}while(l!==null);return!1}var Dw=Error(n(461)),Ge=!1;function AA(r,a,l,f){a.child=r===null?_w(a,null,l,f):xa(a,r.child,l,f)}function Mw(r,a,l,f,g){l=l.render;var B=a.ref;if("ref"in f){var y={};for(var x in f)x!=="ref"&&(y[x]=f[x])}else y=f;return ps(a),f=dg(r,a,l,y,B,g),x=gg(),r!==null&&!Ge?(pg(r,a,g),Fi(r,a,g)):(Pt&&x&&$d(a),a.flags|=1,AA(r,a,f,g),a.child)}function Lw(r,a,l,f,g){if(r===null){var B=l.type;return typeof B=="function"&&!Zd(B)&&B.defaultProps===void 0&&l.compare===null?(a.tag=15,a.type=B,Rw(r,a,B,f,g)):(r=Gc(l.type,null,f,a,a.mode,g),r.ref=a.ref,r.return=a,a.child=r)}if(B=r.child,!Ng(r,g)){var y=B.memoizedProps;if(l=l.compare,l=l!==null?l:Oo,l(y,f)&&r.ref===a.ref)return Fi(r,a,g)}return a.flags|=1,r=yi(B,f),r.ref=a.ref,r.return=a,a.child=r}function Rw(r,a,l,f,g){if(r!==null){var B=r.memoizedProps;if(Oo(B,f)&&r.ref===a.ref)if(Ge=!1,a.pendingProps=f=B,Ng(r,g))(r.flags&131072)!==0&&(Ge=!0);else return a.lanes=r.lanes,Fi(r,a,g)}return Og(r,a,l,f,g)}function Iw(r,a,l){var f=a.pendingProps,g=f.children,B=r!==null?r.memoizedState:null;if(f.mode==="hidden"){if((a.flags&128)!==0){if(f=B!==null?B.baseLanes|l:l,r!==null){for(g=a.child=r.child,B=0;g!==null;)B=B|g.lanes|g.childLanes,g=g.sibling;a.childLanes=B&~f}else a.childLanes=0,a.child=null;return Nw(r,a,f,l)}if((l&536870912)!==0)a.memoizedState={baseLanes:0,cachePool:null},r!==null&&$c(a,B!==null?B.cachePool:null),B!==null?R0(a,B):ug(),xw(a);else return a.lanes=a.childLanes=536870912,Nw(r,a,B!==null?B.baseLanes|l:l,l)}else B!==null?($c(a,B.cachePool),R0(a,B),pr(),a.memoizedState=null):(r!==null&&$c(a,null),ug(),pr());return AA(r,a,g,l),a.child}function Nw(r,a,l,f){var g=rg();return g=g===null?null:{parent:ke._currentValue,pool:g},a.memoizedState={baseLanes:l,cachePool:g},r!==null&&$c(a,null),ug(),xw(a),r!==null&&Ro(r,a,f,!0),null}function du(r,a){var l=a.ref;if(l===null)r!==null&&r.ref!==null&&(a.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(n(284));(r===null||r.ref!==l)&&(a.flags|=4194816)}}function Og(r,a,l,f,g){return ps(a),l=dg(r,a,l,f,void 0,g),f=gg(),r!==null&&!Ge?(pg(r,a,g),Fi(r,a,g)):(Pt&&f&&$d(a),a.flags|=1,AA(r,a,l,g),a.child)}function kw(r,a,l,f,g,B){return ps(a),a.updateQueue=null,l=N0(a,f,l,g),I0(r),f=gg(),r!==null&&!Ge?(pg(r,a,B),Fi(r,a,B)):(Pt&&f&&$d(a),a.flags|=1,AA(r,a,l,B),a.child)}function Kw(r,a,l,f,g){if(ps(a),a.stateNode===null){var B=ga,y=l.contextType;typeof y=="object"&&y!==null&&(B=fA(y)),B=new l(f,B),a.memoizedState=B.state!==null&&B.state!==void 0?B.state:null,B.updater=Sg,a.stateNode=B,B._reactInternals=a,B=a.stateNode,B.props=f,B.state=a.memoizedState,B.refs={},ag(a),y=l.contextType,B.context=typeof y=="object"&&y!==null?fA(y):ga,B.state=a.memoizedState,y=l.getDerivedStateFromProps,typeof y=="function"&&(Fg(a,l,y,f),B.state=a.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof B.getSnapshotBeforeUpdate=="function"||typeof B.UNSAFE_componentWillMount!="function"&&typeof B.componentWillMount!="function"||(y=B.state,typeof B.componentWillMount=="function"&&B.componentWillMount(),typeof B.UNSAFE_componentWillMount=="function"&&B.UNSAFE_componentWillMount(),y!==B.state&&Sg.enqueueReplaceState(B,B.state,null),Po(a,f,B,g),Vo(),B.state=a.memoizedState),typeof B.componentDidMount=="function"&&(a.flags|=4194308),f=!0}else if(r===null){B=a.stateNode;var x=a.memoizedProps,O=vs(l,x);B.props=O;var K=B.context,X=l.contextType;y=ga,typeof X=="object"&&X!==null&&(y=fA(X));var $=l.getDerivedStateFromProps;X=typeof $=="function"||typeof B.getSnapshotBeforeUpdate=="function",x=a.pendingProps!==x,X||typeof B.UNSAFE_componentWillReceiveProps!="function"&&typeof B.componentWillReceiveProps!="function"||(x||K!==y)&&Uw(a,B,f,y),ur=!1;var V=a.memoizedState;B.state=V,Po(a,f,B,g),Vo(),K=a.memoizedState,x||V!==K||ur?(typeof $=="function"&&(Fg(a,l,$,f),K=a.memoizedState),(O=ur||Qw(a,l,O,f,V,K,y))?(X||typeof B.UNSAFE_componentWillMount!="function"&&typeof B.componentWillMount!="function"||(typeof B.componentWillMount=="function"&&B.componentWillMount(),typeof B.UNSAFE_componentWillMount=="function"&&B.UNSAFE_componentWillMount()),typeof B.componentDidMount=="function"&&(a.flags|=4194308)):(typeof B.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=f,a.memoizedState=K),B.props=f,B.state=K,B.context=y,f=O):(typeof B.componentDidMount=="function"&&(a.flags|=4194308),f=!1)}else{B=a.stateNode,og(r,a),y=a.memoizedProps,X=vs(l,y),B.props=X,$=a.pendingProps,V=B.context,K=l.contextType,O=ga,typeof K=="object"&&K!==null&&(O=fA(K)),x=l.getDerivedStateFromProps,(K=typeof x=="function"||typeof B.getSnapshotBeforeUpdate=="function")||typeof B.UNSAFE_componentWillReceiveProps!="function"&&typeof B.componentWillReceiveProps!="function"||(y!==$||V!==O)&&Uw(a,B,f,O),ur=!1,V=a.memoizedState,B.state=V,Po(a,f,B,g),Vo();var P=a.memoizedState;y!==$||V!==P||ur||r!==null&&r.dependencies!==null&&Yc(r.dependencies)?(typeof x=="function"&&(Fg(a,l,x,f),P=a.memoizedState),(X=ur||Qw(a,l,X,f,V,P,O)||r!==null&&r.dependencies!==null&&Yc(r.dependencies))?(K||typeof B.UNSAFE_componentWillUpdate!="function"&&typeof B.componentWillUpdate!="function"||(typeof B.componentWillUpdate=="function"&&B.componentWillUpdate(f,P,O),typeof B.UNSAFE_componentWillUpdate=="function"&&B.UNSAFE_componentWillUpdate(f,P,O)),typeof B.componentDidUpdate=="function"&&(a.flags|=4),typeof B.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof B.componentDidUpdate!="function"||y===r.memoizedProps&&V===r.memoizedState||(a.flags|=4),typeof B.getSnapshotBeforeUpdate!="function"||y===r.memoizedProps&&V===r.memoizedState||(a.flags|=1024),a.memoizedProps=f,a.memoizedState=P),B.props=f,B.state=P,B.context=O,f=X):(typeof B.componentDidUpdate!="function"||y===r.memoizedProps&&V===r.memoizedState||(a.flags|=4),typeof B.getSnapshotBeforeUpdate!="function"||y===r.memoizedProps&&V===r.memoizedState||(a.flags|=1024),f=!1)}return B=f,du(r,a),f=(a.flags&128)!==0,B||f?(B=a.stateNode,l=f&&typeof l.getDerivedStateFromError!="function"?null:B.render(),a.flags|=1,r!==null&&f?(a.child=xa(a,r.child,null,g),a.child=xa(a,null,l,g)):AA(r,a,l,g),a.memoizedState=B.state,r=a.child):r=Fi(r,a,g),r}function zw(r,a,l,f){return Mo(),a.flags|=256,AA(r,a,l,f),a.child}var Tg={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Dg(r){return{baseLanes:r,cachePool:F0()}}function Mg(r,a,l){return r=r!==null?r.childLanes&~l:0,a&&(r|=pn),r}function Vw(r,a,l){var f=a.pendingProps,g=!1,B=(a.flags&128)!==0,y;if((y=B)||(y=r!==null&&r.memoizedState===null?!1:(Ke.current&2)!==0),y&&(g=!0,a.flags&=-129),y=(a.flags&32)!==0,a.flags&=-33,r===null){if(Pt){if(g?gr(a):pr(),Pt){var x=xe,O;if(O=x){t:{for(O=x,x=Zn;O.nodeType!==8;){if(!x){x=null;break t}if(O=Sn(O.nextSibling),O===null){x=null;break t}}x=O}x!==null?(a.memoizedState={dehydrated:x,treeContext:us!==null?{id:Ci,overflow:_i}:null,retryLane:536870912,hydrationErrors:null},O=VA(18,null,null,0),O.stateNode=x,O.return=a,a.child=O,xA=a,xe=null,O=!0):O=!1}O||ds(a)}if(x=a.memoizedState,x!==null&&(x=x.dehydrated,x!==null))return mp(x)?a.lanes=32:a.lanes=536870912,null;Ei(a)}return x=f.children,f=f.fallback,g?(pr(),g=a.mode,x=gu({mode:"hidden",children:x},g),f=cs(f,g,l,null),x.return=a,f.return=a,x.sibling=f,a.child=x,g=a.child,g.memoizedState=Dg(l),g.childLanes=Mg(r,y,l),a.memoizedState=Tg,f):(gr(a),Lg(a,x))}if(O=r.memoizedState,O!==null&&(x=O.dehydrated,x!==null)){if(B)a.flags&256?(gr(a),a.flags&=-257,a=Rg(r,a,l)):a.memoizedState!==null?(pr(),a.child=r.child,a.flags|=128,a=null):(pr(),g=f.fallback,x=a.mode,f=gu({mode:"visible",children:f.children},x),g=cs(g,x,l,null),g.flags|=2,f.return=a,g.return=a,f.sibling=g,a.child=f,xa(a,r.child,null,l),f=a.child,f.memoizedState=Dg(l),f.childLanes=Mg(r,y,l),a.memoizedState=Tg,a=g);else if(gr(a),mp(x)){if(y=x.nextSibling&&x.nextSibling.dataset,y)var K=y.dgst;y=K,f=Error(n(419)),f.stack="",f.digest=y,Lo({value:f,source:null,stack:null}),a=Rg(r,a,l)}else if(Ge||Ro(r,a,l,!1),y=(l&r.childLanes)!==0,Ge||y){if(y=ae,y!==null&&(f=l&-l,f=(f&42)!==0?1:lA(f),f=(f&(y.suspendedLanes|l))!==0?0:f,f!==0&&f!==O.retryLane))throw O.retryLane=f,da(r,f),ZA(y,r,f),Dw;x.data==="$?"||ep(),a=Rg(r,a,l)}else x.data==="$?"?(a.flags|=192,a.child=r.child,a=null):(r=O.treeContext,xe=Sn(x.nextSibling),xA=a,Pt=!0,hs=null,Zn=!1,r!==null&&(hn[dn++]=Ci,hn[dn++]=_i,hn[dn++]=us,Ci=r.id,_i=r.overflow,us=a),a=Lg(a,f.children),a.flags|=4096);return a}return g?(pr(),g=f.fallback,x=a.mode,O=r.child,K=O.sibling,f=yi(O,{mode:"hidden",children:f.children}),f.subtreeFlags=O.subtreeFlags&65011712,K!==null?g=yi(K,g):(g=cs(g,x,l,null),g.flags|=2),g.return=a,f.return=a,f.sibling=g,a.child=f,f=g,g=a.child,x=r.child.memoizedState,x===null?x=Dg(l):(O=x.cachePool,O!==null?(K=ke._currentValue,O=O.parent!==K?{parent:K,pool:K}:O):O=F0(),x={baseLanes:x.baseLanes|l,cachePool:O}),g.memoizedState=x,g.childLanes=Mg(r,y,l),a.memoizedState=Tg,f):(gr(a),l=r.child,r=l.sibling,l=yi(l,{mode:"visible",children:f.children}),l.return=a,l.sibling=null,r!==null&&(y=a.deletions,y===null?(a.deletions=[r],a.flags|=16):y.push(r)),a.child=l,a.memoizedState=null,l)}function Lg(r,a){return a=gu({mode:"visible",children:a},r.mode),a.return=r,r.child=a}function gu(r,a){return r=VA(22,r,null,a),r.lanes=0,r.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},r}function Rg(r,a,l){return xa(a,r.child,null,l),r=Lg(a,a.pendingProps.children),r.flags|=2,a.memoizedState=null,r}function Pw(r,a,l){r.lanes|=a;var f=r.alternate;f!==null&&(f.lanes|=a),eg(r.return,a,l)}function Ig(r,a,l,f,g){var B=r.memoizedState;B===null?r.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:f,tail:l,tailMode:g}:(B.isBackwards=a,B.rendering=null,B.renderingStartTime=0,B.last=f,B.tail=l,B.tailMode=g)}function jw(r,a,l){var f=a.pendingProps,g=f.revealOrder,B=f.tail;if(AA(r,a,f.children,l),f=Ke.current,(f&2)!==0)f=f&1|2,a.flags|=128;else{if(r!==null&&(r.flags&128)!==0)t:for(r=a.child;r!==null;){if(r.tag===13)r.memoizedState!==null&&Pw(r,l,a);else if(r.tag===19)Pw(r,l,a);else if(r.child!==null){r.child.return=r,r=r.child;continue}if(r===a)break t;for(;r.sibling===null;){if(r.return===null||r.return===a)break t;r=r.return}r.sibling.return=r.return,r=r.sibling}f&=1}switch(tt(Ke,f),g){case"forwards":for(l=a.child,g=null;l!==null;)r=l.alternate,r!==null&&uu(r)===null&&(g=l),l=l.sibling;l=g,l===null?(g=a.child,a.child=null):(g=l.sibling,l.sibling=null),Ig(a,!1,g,l,B);break;case"backwards":for(l=null,g=a.child,a.child=null;g!==null;){if(r=g.alternate,r!==null&&uu(r)===null){a.child=g;break}r=g.sibling,g.sibling=l,l=g,g=r}Ig(a,!0,l,null,B);break;case"together":Ig(a,!1,null,null,void 0);break;default:a.memoizedState=null}return a.child}function Fi(r,a,l){if(r!==null&&(a.dependencies=r.dependencies),br|=a.lanes,(l&a.childLanes)===0)if(r!==null){if(Ro(r,a,l,!1),(l&a.childLanes)===0)return null}else return null;if(r!==null&&a.child!==r.child)throw Error(n(153));if(a.child!==null){for(r=a.child,l=yi(r,r.pendingProps),a.child=l,l.return=a;r.sibling!==null;)r=r.sibling,l=l.sibling=yi(r,r.pendingProps),l.return=a;l.sibling=null}return a.child}function Ng(r,a){return(r.lanes&a)!==0?!0:(r=r.dependencies,!!(r!==null&&Yc(r)))}function O1(r,a,l){switch(a.tag){case 3:Kt(a,a.stateNode.containerInfo),cr(a,ke,r.memoizedState.cache),Mo();break;case 27:case 5:An(a);break;case 4:Kt(a,a.stateNode.containerInfo);break;case 10:cr(a,a.type,a.memoizedProps.value);break;case 13:var f=a.memoizedState;if(f!==null)return f.dehydrated!==null?(gr(a),a.flags|=128,null):(l&a.child.childLanes)!==0?Vw(r,a,l):(gr(a),r=Fi(r,a,l),r!==null?r.sibling:null);gr(a);break;case 19:var g=(r.flags&128)!==0;if(f=(l&a.childLanes)!==0,f||(Ro(r,a,l,!1),f=(l&a.childLanes)!==0),g){if(f)return jw(r,a,l);a.flags|=128}if(g=a.memoizedState,g!==null&&(g.rendering=null,g.tail=null,g.lastEffect=null),tt(Ke,Ke.current),f)break;return null;case 22:case 23:return a.lanes=0,Iw(r,a,l);case 24:cr(a,ke,r.memoizedState.cache)}return Fi(r,a,l)}function Gw(r,a,l){if(r!==null)if(r.memoizedProps!==a.pendingProps)Ge=!0;else{if(!Ng(r,l)&&(a.flags&128)===0)return Ge=!1,O1(r,a,l);Ge=(r.flags&131072)!==0}else Ge=!1,Pt&&(a.flags&1048576)!==0&&y0(a,Zc,a.index);switch(a.lanes=0,a.tag){case 16:t:{r=a.pendingProps;var f=a.elementType,g=f._init;if(f=g(f._payload),a.type=f,typeof f=="function")Zd(f)?(r=vs(f,r),a.tag=1,a=Kw(null,a,f,r,l)):(a.tag=0,a=Og(null,a,f,r,l));else{if(f!=null){if(g=f.$$typeof,g===H){a.tag=11,a=Mw(null,a,f,r,l);break t}else if(g===R){a.tag=14,a=Lw(null,a,f,r,l);break t}}throw a=ft(f)||f,Error(n(306,a,""))}}return a;case 0:return Og(r,a,a.type,a.pendingProps,l);case 1:return f=a.type,g=vs(f,a.pendingProps),Kw(r,a,f,g,l);case 3:t:{if(Kt(a,a.stateNode.containerInfo),r===null)throw Error(n(387));f=a.pendingProps;var B=a.memoizedState;g=B.element,og(r,a),Po(a,f,null,l);var y=a.memoizedState;if(f=y.cache,cr(a,ke,f),f!==B.cache&&Ag(a,[ke],l,!0),Vo(),f=y.element,B.isDehydrated)if(B={element:f,isDehydrated:!1,cache:y.cache},a.updateQueue.baseState=B,a.memoizedState=B,a.flags&256){a=zw(r,a,f,l);break t}else if(f!==g){g=un(Error(n(424)),a),Lo(g),a=zw(r,a,f,l);break t}else{switch(r=a.stateNode.containerInfo,r.nodeType){case 9:r=r.body;break;default:r=r.nodeName==="HTML"?r.ownerDocument.body:r}for(xe=Sn(r.firstChild),xA=a,Pt=!0,hs=null,Zn=!0,l=_w(a,null,f,l),a.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling}else{if(Mo(),f===g){a=Fi(r,a,l);break t}AA(r,a,f,l)}a=a.child}return a;case 26:return du(r,a),r===null?(l=Wb(a.type,null,a.pendingProps,null))?a.memoizedState=l:Pt||(l=a.type,r=a.pendingProps,f=Fu(lt.current).createElement(l),f[it]=a,f[Bt]=r,iA(f,l,r),Oe(f),a.stateNode=f):a.memoizedState=Wb(a.type,r.memoizedProps,a.pendingProps,r.memoizedState),null;case 27:return An(a),r===null&&Pt&&(f=a.stateNode=Xb(a.type,a.pendingProps,lt.current),xA=a,Zn=!0,g=xe,xr(a.type)?(vp=g,xe=Sn(f.firstChild)):xe=g),AA(r,a,a.pendingProps.children,l),du(r,a),r===null&&(a.flags|=4194304),a.child;case 5:return r===null&&Pt&&((g=f=xe)&&(f=sH(f,a.type,a.pendingProps,Zn),f!==null?(a.stateNode=f,xA=a,xe=Sn(f.firstChild),Zn=!1,g=!0):g=!1),g||ds(a)),An(a),g=a.type,B=a.pendingProps,y=r!==null?r.memoizedProps:null,f=B.children,gp(g,B)?f=null:y!==null&&gp(g,y)&&(a.flags|=32),a.memoizedState!==null&&(g=dg(r,a,_1,null,null,l),fl._currentValue=g),du(r,a),AA(r,a,f,l),a.child;case 6:return r===null&&Pt&&((r=l=xe)&&(l=aH(l,a.pendingProps,Zn),l!==null?(a.stateNode=l,xA=a,xe=null,r=!0):r=!1),r||ds(a)),null;case 13:return Vw(r,a,l);case 4:return Kt(a,a.stateNode.containerInfo),f=a.pendingProps,r===null?a.child=xa(a,null,f,l):AA(r,a,f,l),a.child;case 11:return Mw(r,a,a.type,a.pendingProps,l);case 7:return AA(r,a,a.pendingProps,l),a.child;case 8:return AA(r,a,a.pendingProps.children,l),a.child;case 12:return AA(r,a,a.pendingProps.children,l),a.child;case 10:return f=a.pendingProps,cr(a,a.type,f.value),AA(r,a,f.children,l),a.child;case 9:return g=a.type._context,f=a.pendingProps.children,ps(a),g=fA(g),f=f(g),a.flags|=1,AA(r,a,f,l),a.child;case 14:return Lw(r,a,a.type,a.pendingProps,l);case 15:return Rw(r,a,a.type,a.pendingProps,l);case 19:return jw(r,a,l);case 31:return f=a.pendingProps,l=a.mode,f={mode:f.mode,children:f.children},r===null?(l=gu(f,l),l.ref=a.ref,a.child=l,l.return=a,a=l):(l=yi(r.child,f),l.ref=a.ref,a.child=l,l.return=a,a=l),a;case 22:return Iw(r,a,l);case 24:return ps(a),f=fA(ke),r===null?(g=rg(),g===null&&(g=ae,B=ng(),g.pooledCache=B,B.refCount++,B!==null&&(g.pooledCacheLanes|=l),g=B),a.memoizedState={parent:f,cache:g},ag(a),cr(a,ke,g)):((r.lanes&l)!==0&&(og(r,a),Po(a,null,null,l),Vo()),g=r.memoizedState,B=a.memoizedState,g.parent!==f?(g={parent:f,cache:f},a.memoizedState=g,a.lanes===0&&(a.memoizedState=a.updateQueue.baseState=g),cr(a,ke,f)):(f=B.cache,cr(a,ke,f),f!==g.cache&&Ag(a,[ke],l,!0))),AA(r,a,a.pendingProps.children,l),a.child;case 29:throw a.pendingProps}throw Error(n(156,a.tag))}function Si(r){r.flags|=4}function Xw(r,a){if(a.type!=="stylesheet"||(a.state.loading&4)!==0)r.flags&=-16777217;else if(r.flags|=16777216,!ey(a)){if(a=gn.current,a!==null&&((Lt&4194048)===Lt?Yn!==null:(Lt&62914560)!==Lt&&(Lt&536870912)===0||a!==Yn))throw Ko=sg,S0;r.flags|=8192}}function pu(r,a){a!==null&&(r.flags|=4),r.flags&16384&&(a=r.tag!==22?mi():536870912,r.lanes|=a,Fa|=a)}function $o(r,a){if(!Pt)switch(r.tailMode){case"hidden":a=r.tail;for(var l=null;a!==null;)a.alternate!==null&&(l=a),a=a.sibling;l===null?r.tail=null:l.sibling=null;break;case"collapsed":l=r.tail;for(var f=null;l!==null;)l.alternate!==null&&(f=l),l=l.sibling;f===null?a||r.tail===null?r.tail=null:r.tail.sibling=null:f.sibling=null}}function ye(r){var a=r.alternate!==null&&r.alternate.child===r.child,l=0,f=0;if(a)for(var g=r.child;g!==null;)l|=g.lanes|g.childLanes,f|=g.subtreeFlags&65011712,f|=g.flags&65011712,g.return=r,g=g.sibling;else for(g=r.child;g!==null;)l|=g.lanes|g.childLanes,f|=g.subtreeFlags,f|=g.flags,g.return=r,g=g.sibling;return r.subtreeFlags|=f,r.childLanes=l,a}function T1(r,a,l){var f=a.pendingProps;switch(Jd(a),a.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ye(a),null;case 1:return ye(a),null;case 3:return l=a.stateNode,f=null,r!==null&&(f=r.memoizedState.cache),a.memoizedState.cache!==f&&(a.flags|=2048),Qi(ke),Yt(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(r===null||r.child===null)&&(Do(a)?Si(a):r===null||r.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,x0())),ye(a),null;case 26:return l=a.memoizedState,r===null?(Si(a),l!==null?(ye(a),Xw(a,l)):(ye(a),a.flags&=-16777217)):l?l!==r.memoizedState?(Si(a),ye(a),Xw(a,l)):(ye(a),a.flags&=-16777217):(r.memoizedProps!==f&&Si(a),ye(a),a.flags&=-16777217),null;case 27:Pe(a),l=lt.current;var g=a.type;if(r!==null&&a.stateNode!=null)r.memoizedProps!==f&&Si(a);else{if(!f){if(a.stateNode===null)throw Error(n(166));return ye(a),null}r=Y.current,Do(a)?C0(a):(r=Xb(g,f,l),a.stateNode=r,Si(a))}return ye(a),null;case 5:if(Pe(a),l=a.type,r!==null&&a.stateNode!=null)r.memoizedProps!==f&&Si(a);else{if(!f){if(a.stateNode===null)throw Error(n(166));return ye(a),null}if(r=Y.current,Do(a))C0(a);else{switch(g=Fu(lt.current),r){case 1:r=g.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:r=g.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":r=g.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":r=g.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":r=g.createElement("div"),r.innerHTML=" - + +
diff --git a/vite-app/src/components/MessageBubble.tsx b/vite-app/src/components/MessageBubble.tsx index 86425404..5981a860 100644 --- a/vite-app/src/components/MessageBubble.tsx +++ b/vite-app/src/components/MessageBubble.tsx @@ -13,6 +13,7 @@ export const MessageBubble = ({ message }: { message: Message }) => { const hasFunctionCall = message.function_call; // Get the message content as a string + const reasoning = (message as any).reasoning_content as string | undefined; const getMessageContent = () => { if (typeof message.content === "string") { return message.content; @@ -104,6 +105,17 @@ export const MessageBubble = ({ message }: { message: Message }) => { {isExpanded ? "Show less" : "Show more"} )} + {reasoning && reasoning.trim().length > 0 && ( +
+
+ Thinking: +
+
+ Show reasoning +
{reasoning}
+
+
+ )} {hasToolCalls && message.tool_calls && (