From 2798b551f8ed062670fdc4878c0d9cc76dbcf4a6 Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Sat, 10 Jan 2026 00:51:54 -0800 Subject: [PATCH] Use numerical acks --- app/CLAUDE.md | 12 +++++++++-- app/event_handlers.py | 4 ++-- app/models.py | 2 +- app/packet_processor.py | 4 ++-- app/repository.py | 14 +++++++++---- frontend/CLAUDE.md | 4 ++-- .../{index-Dj98vxU3.js => index-BtEbese6.js} | 16 +++++++-------- frontend/dist/index.html | 2 +- frontend/src/App.tsx | 20 +++++++++---------- frontend/src/components/MessageList.tsx | 2 +- .../src/test/messageDeduplication.test.ts | 2 +- frontend/src/test/repeaterMode.test.ts | 6 +++--- frontend/src/test/unreadCounts.test.ts | 2 +- frontend/src/test/websocket.test.ts | 16 ++++++++------- frontend/src/types.ts | 6 ++++-- frontend/src/useWebSocket.ts | 8 +++++--- tests/test_event_handlers.py | 17 ++++++++-------- 17 files changed, 79 insertions(+), 58 deletions(-) rename frontend/dist/assets/{index-Dj98vxU3.js => index-BtEbese6.js} (99%) diff --git a/app/CLAUDE.md b/app/CLAUDE.md index 5ac1b1b..c142d87 100644 --- a/app/CLAUDE.md +++ b/app/CLAUDE.md @@ -258,6 +258,11 @@ KeyStore.clear_private_key() ## ACK and Repeat Detection +The `acked` field is an integer count, not a boolean: +- `0` = not acked +- `1` = one ACK/echo received +- `2+` = multiple flood echoes received + ### Direct Message ACKs When sending a direct message, an expected ACK code is tracked: @@ -267,7 +272,7 @@ from app.event_handlers import track_pending_ack track_pending_ack(expected_ack="abc123", message_id=42, timeout_ms=30000) ``` -When ACK event arrives, the message is marked as acked. +When ACK event arrives, the message's ack count is incremented. ### Channel Message Repeats @@ -276,7 +281,10 @@ Flood messages echo back through repeaters. Detection uses: - Text hash - Timestamp (±5 second window) -When a repeat is detected, the original outgoing message is marked as "acked". +Each repeat increments the ack count. The frontend displays: +- `?` = no acks +- `✓` = 1 echo +- `✓2`, `✓3`, etc. = multiple echoes (real-time updates via WebSocket) ### Auto-Contact Sync to Radio diff --git a/app/event_handlers.py b/app/event_handlers.py index e16222d..f8c1174 100644 --- a/app/event_handlers.py +++ b/app/event_handlers.py @@ -180,8 +180,8 @@ async def on_ack(event: "Event") -> None: message_id, _, _ = _pending_acks.pop(ack_code) logger.info("ACK received for message %d", message_id) - await MessageRepository.mark_acked(message_id) - broadcast_event("message_acked", {"message_id": message_id}) + ack_count = await MessageRepository.increment_ack_count(message_id) + broadcast_event("message_acked", {"message_id": message_id, "ack_count": ack_count}) else: logger.debug("ACK code %s does not match any pending messages", ack_code) diff --git a/app/models.py b/app/models.py index a233bc6..d76abd1 100644 --- a/app/models.py +++ b/app/models.py @@ -76,7 +76,7 @@ class Message(BaseModel): txt_type: int = 0 signature: str | None = None outgoing: bool = False - acked: bool = False + acked: int = 0 class RawPacket(BaseModel): diff --git a/app/packet_processor.py b/app/packet_processor.py index 61f2c2f..34ec0c9 100644 --- a/app/packet_processor.py +++ b/app/packet_processor.py @@ -230,8 +230,8 @@ async def _process_group_text( # Don't pop - let it expire naturally so subsequent repeats via # different radio paths are also caught as duplicates logger.info("Repeat detected for channel message %d", message_id) - await MessageRepository.mark_acked(message_id) - broadcast_event("message_acked", {"message_id": message_id}) + ack_count = await MessageRepository.increment_ack_count(message_id) + broadcast_event("message_acked", {"message_id": message_id, "ack_count": ack_count}) is_repeat = True break diff --git a/app/repository.py b/app/repository.py index 5ddf827..bde2d70 100644 --- a/app/repository.py +++ b/app/repository.py @@ -313,17 +313,23 @@ class MessageRepository: txt_type=row["txt_type"], signature=row["signature"], outgoing=bool(row["outgoing"]), - acked=bool(row["acked"]), + acked=row["acked"], ) for row in rows ] @staticmethod - async def mark_acked(message_id: int) -> None: + async def increment_ack_count(message_id: int) -> int: + """Increment ack count and return the new value.""" await db.conn.execute( - "UPDATE messages SET acked = 1 WHERE id = ?", (message_id,) + "UPDATE messages SET acked = acked + 1 WHERE id = ?", (message_id,) ) await db.conn.commit() + cursor = await db.conn.execute( + "SELECT acked FROM messages WHERE id = ?", (message_id,) + ) + row = await cursor.fetchone() + return row["acked"] if row else 1 @staticmethod async def find_duplicate( @@ -398,7 +404,7 @@ class MessageRepository: txt_type=row["txt_type"], signature=row["signature"], outgoing=bool(row["outgoing"]), - acked=bool(row["acked"]), + acked=row["acked"], ) for row in rows ] diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index 3dc5f51..f550360 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -88,7 +88,7 @@ The `useWebSocket` hook manages real-time connection: const wsHandlers = useMemo(() => ({ onHealth: (data: HealthStatus) => setHealth(data), onMessage: (msg: Message) => { /* add to list, track unread */ }, - onMessageAcked: (messageId: number) => { /* update acked status */ }, + onMessageAcked: (messageId: number, ackCount: number) => { /* update ack count */ }, // ... }), []); @@ -199,7 +199,7 @@ interface Message { conversation_key: string; // PublicKey for PRIV, ChannelKey for CHAN text: string; outgoing: boolean; - acked: boolean; + acked: number; // 0=not acked, 1+=ack count (flood echoes) // ... } diff --git a/frontend/dist/assets/index-Dj98vxU3.js b/frontend/dist/assets/index-BtEbese6.js similarity index 99% rename from frontend/dist/assets/index-Dj98vxU3.js rename to frontend/dist/assets/index-BtEbese6.js index 12aaa44..86e1d3c 100644 --- a/frontend/dist/assets/index-Dj98vxU3.js +++ b/frontend/dist/assets/index-BtEbese6.js @@ -34,10 +34,10 @@ var Zv=Object.defineProperty;var Xv=(a,r,o)=>r in a?Zv(a,r,{enumerable:!0,config `+q+e}var L=!1;function Q(e,i){if(!e||L)return"";L=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(i,[])}catch(Z){var t=Z}Reflect.construct(e,[],i)}else{try{i.call()}catch(Z){t=Z}e.call(i.prototype)}else{try{throw Error()}catch(Z){t=Z}e()}}catch(Z){if(Z&&t&&typeof Z.stack=="string"){for(var p=Z.stack.split(` `),b=t.stack.split(` `),E=p.length-1,P=b.length-1;1<=E&&0<=P&&p[E]!==b[P];)P--;for(;1<=E&&0<=P;E--,P--)if(p[E]!==b[P]){if(E!==1||P!==1)do if(E--,P--,0>P||p[E]!==b[P]){var M=` -`+p[E].replace(" at new "," at ");return e.displayName&&M.includes("")&&(M=M.replace("",e.displayName)),M}while(1<=E&&0<=P);break}}}finally{L=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?I(e):""}function de(e){switch(e.tag){case 5:return I(e.type);case 16:return I("Lazy");case 13:return I("Suspense");case 19:return I("SuspenseList");case 0:case 2:case 15:return e=Q(e.type,!1),e;case 11:return e=Q(e.type.render,!1),e;case 1:return e=Q(e.type,!0),e;default:return""}}function ge(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case R:return"Fragment";case D:return"Portal";case O:return"Profiler";case F:return"StrictMode";case H:return"Suspense";case K:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case T:return(e.displayName||"Context")+".Consumer";case N:return(e._context.displayName||"Context")+".Provider";case W:var i=e.render;return e=e.displayName,e||(e=i.displayName||i.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ae:return i=e.displayName||null,i!==null?i:ge(e.type)||"Memo";case X:i=e._payload,e=e._init;try{return ge(e(i))}catch{}}return null}function be(e){var i=e.type;switch(e.tag){case 24:return"Cache";case 9:return(i.displayName||"Context")+".Consumer";case 10:return(i._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=i.render,e=e.displayName||e.name||"",i.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return i;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ge(i);case 8:return i===F?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i}return null}function se(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ce(e){var i=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(i==="checkbox"||i==="radio")}function Ae(e){var i=ce(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,i),t=""+e[i];if(!e.hasOwnProperty(i)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var p=n.get,b=n.set;return Object.defineProperty(e,i,{configurable:!0,get:function(){return p.call(this)},set:function(E){t=""+E,b.call(this,E)}}),Object.defineProperty(e,i,{enumerable:n.enumerable}),{getValue:function(){return t},setValue:function(E){t=""+E},stopTracking:function(){e._valueTracker=null,delete e[i]}}}}function Fe(e){e._valueTracker||(e._valueTracker=Ae(e))}function He(e){if(!e)return!1;var i=e._valueTracker;if(!i)return!0;var n=i.getValue(),t="";return e&&(t=ce(e)?e.checked?"true":"false":e.value),e=t,e!==n?(i.setValue(e),!0):!1}function ai(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Qe(e,i){var n=i.checked;return ee({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Oe(e,i){var n=i.defaultValue==null?"":i.defaultValue,t=i.checked!=null?i.checked:i.defaultChecked;n=se(i.value!=null?i.value:n),e._wrapperState={initialChecked:t,initialValue:n,controlled:i.type==="checkbox"||i.type==="radio"?i.checked!=null:i.value!=null}}function Me(e,i){i=i.checked,i!=null&&w(e,"checked",i,!1)}function Xe(e,i){Me(e,i);var n=se(i.value),t=i.type;if(n!=null)t==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(t==="submit"||t==="reset"){e.removeAttribute("value");return}i.hasOwnProperty("value")?Ge(e,i.type,n):i.hasOwnProperty("defaultValue")&&Ge(e,i.type,se(i.defaultValue)),i.checked==null&&i.defaultChecked!=null&&(e.defaultChecked=!!i.defaultChecked)}function Ve(e,i,n){if(i.hasOwnProperty("value")||i.hasOwnProperty("defaultValue")){var t=i.type;if(!(t!=="submit"&&t!=="reset"||i.value!==void 0&&i.value!==null))return;i=""+e._wrapperState.initialValue,n||i===e.value||(e.value=i),e.defaultValue=i}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ge(e,i,n){(i!=="number"||ai(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var yi=Array.isArray;function si(e,i,n,t){if(e=e.options,i){i={};for(var p=0;p"+i.valueOf().toString()+"",i=Ki.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;i.firstChild;)e.appendChild(i.firstChild)}});function ji(e,i){if(i){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=i;return}}e.textContent=i}var ui={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ki=["Webkit","ms","Moz","O"];Object.keys(ui).forEach(function(e){ki.forEach(function(i){i=i+e.charAt(0).toUpperCase()+e.substring(1),ui[i]=ui[e]})});function _a(e,i,n){return i==null||typeof i=="boolean"||i===""?"":n||typeof i!="number"||i===0||ui.hasOwnProperty(e)&&ui[e]?(""+i).trim():i+"px"}function da(e,i){e=e.style;for(var n in i)if(i.hasOwnProperty(n)){var t=n.indexOf("--")===0,p=_a(n,i[n],t);n==="float"&&(n="cssFloat"),t?e.setProperty(n,p):e[n]=p}}var ie=ee({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function pe(e,i){if(i){if(ie[e]&&(i.children!=null||i.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(i.dangerouslySetInnerHTML!=null){if(i.children!=null)throw Error(o(60));if(typeof i.dangerouslySetInnerHTML!="object"||!("__html"in i.dangerouslySetInnerHTML))throw Error(o(61))}if(i.style!=null&&typeof i.style!="object")throw Error(o(62))}}function V(e,i){if(e.indexOf("-")===-1)return typeof i.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var J=null;function re(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ye=null,ve=null,_e=null;function ni(e){if(e=ar(e)){if(typeof ye!="function")throw Error(o(280));var i=e.stateNode;i&&(i=us(i),ye(e.stateNode,e.type,i))}}function Ce(e){ve?_e?_e.push(e):_e=[e]:ve=e}function Te(){if(ve){var e=ve,i=_e;if(_e=ve=null,ni(e),i)for(e=0;e>>=0,e===0?32:31-(mf(e)/hf|0)|0}var $r=64,Qr=4194304;function Io(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Gr(e,i){var n=e.pendingLanes;if(n===0)return 0;var t=0,p=e.suspendedLanes,b=e.pingedLanes,E=n&268435455;if(E!==0){var P=E&~p;P!==0?t=Io(P):(b&=E,b!==0&&(t=Io(b)))}else E=n&~p,E!==0?t=Io(E):b!==0&&(t=Io(b));if(t===0)return 0;if(i!==0&&i!==t&&(i&p)===0&&(p=t&-t,b=i&-i,p>=b||p===16&&(b&4194240)!==0))return i;if((t&4)!==0&&(t|=n&16),i=e.entangledLanes,i!==0)for(e=e.entanglements,i&=t;0n;n++)i.push(e);return i}function Mo(e,i,n){e.pendingLanes|=i,i!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,i=31-wa(i),e[i]=n}function ff(e,i){var n=e.pendingLanes&~i;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=i,e.mutableReadLanes&=i,e.entangledLanes&=i,i=e.entanglements;var t=e.eventTimes;for(e=e.expirationTimes;0=Qo),Dd=" ",Fd=!1;function Rd(e,i){switch(e){case"keyup":return $f.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Td(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ao=!1;function Gf(e,i){switch(e){case"compositionend":return Td(i);case"keypress":return i.which!==32?null:(Fd=!0,Dd);case"textInput":return e=i.data,e===Dd&&Fd?null:e;default:return null}}function Kf(e,i){if(ao)return e==="compositionend"||!_l&&Rd(e,i)?(e=Ad(),Jr=jl=ln=null,ao=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:n,offset:i-e};e=t}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Hd(n)}}function Ud(e,i){return e&&i?e===i?!0:e&&e.nodeType===3?!1:i&&i.nodeType===3?Ud(e,i.parentNode):"contains"in e?e.contains(i):e.compareDocumentPosition?!!(e.compareDocumentPosition(i)&16):!1:!1}function Wd(){for(var e=window,i=ai();i instanceof e.HTMLIFrameElement;){try{var n=typeof i.contentWindow.location.href=="string"}catch{n=!1}if(n)e=i.contentWindow;else break;i=ai(e.document)}return i}function Rl(e){var i=e&&e.nodeName&&e.nodeName.toLowerCase();return i&&(i==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||i==="textarea"||e.contentEditable==="true")}function ov(e){var i=Wd(),n=e.focusedElem,t=e.selectionRange;if(i!==n&&n&&n.ownerDocument&&Ud(n.ownerDocument.documentElement,n)){if(t!==null&&Rl(n)){if(i=t.start,e=t.end,e===void 0&&(e=i),"selectionStart"in n)n.selectionStart=i,n.selectionEnd=Math.min(e,n.value.length);else if(e=(i=n.ownerDocument||document)&&i.defaultView||window,e.getSelection){e=e.getSelection();var p=n.textContent.length,b=Math.min(t.start,p);t=t.end===void 0?b:Math.min(t.end,p),!e.extend&&b>t&&(p=t,t=b,b=p),p=Vd(n,b);var E=Vd(n,t);p&&E&&(e.rangeCount!==1||e.anchorNode!==p.node||e.anchorOffset!==p.offset||e.focusNode!==E.node||e.focusOffset!==E.offset)&&(i=i.createRange(),i.setStart(p.node,p.offset),e.removeAllRanges(),b>t?(e.addRange(i),e.extend(E.node,E.offset)):(i.setEnd(E.node,E.offset),e.addRange(i)))}}for(i=[],e=n;e=e.parentNode;)e.nodeType===1&&i.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,no=null,Tl=null,Zo=null,Pl=!1;function $d(e,i,n){var t=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Pl||no==null||no!==ai(t)||(t=no,"selectionStart"in t&&Rl(t)?t={start:t.selectionStart,end:t.selectionEnd}:(t=(t.ownerDocument&&t.ownerDocument.defaultView||window).getSelection(),t={anchorNode:t.anchorNode,anchorOffset:t.anchorOffset,focusNode:t.focusNode,focusOffset:t.focusOffset}),Zo&&Yo(Zo,t)||(Zo=t,t=ts(Tl,"onSelect"),0lo||(e.current=Gl[lo],Gl[lo]=null,lo--)}function ri(e,i){lo++,Gl[lo]=e.current,e.current=i}var pn={},Li=dn(pn),Zi=dn(!1),Bn=pn;function co(e,i){var n=e.type.contextTypes;if(!n)return pn;var t=e.stateNode;if(t&&t.__reactInternalMemoizedUnmaskedChildContext===i)return t.__reactInternalMemoizedMaskedChildContext;var p={},b;for(b in n)p[b]=i[b];return t&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=p),p}function Xi(e){return e=e.childContextTypes,e!=null}function ds(){li(Zi),li(Li)}function tp(e,i,n){if(Li.current!==pn)throw Error(o(168));ri(Li,i),ri(Zi,n)}function lp(e,i,n){var t=e.stateNode;if(i=i.childContextTypes,typeof t.getChildContext!="function")return n;t=t.getChildContext();for(var p in t)if(!(p in i))throw Error(o(108,be(e)||"Unknown",p));return ee({},n,t)}function ps(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||pn,Bn=Li.current,ri(Li,e),ri(Zi,Zi.current),!0}function cp(e,i,n){var t=e.stateNode;if(!t)throw Error(o(169));n?(e=lp(e,i,Bn),t.__reactInternalMemoizedMergedChildContext=e,li(Zi),li(Li),ri(Li,e)):li(Zi),ri(Zi,n)}var Ua=null,ms=!1,Kl=!1;function up(e){Ua===null?Ua=[e]:Ua.push(e)}function yv(e){ms=!0,up(e)}function mn(){if(!Kl&&Ua!==null){Kl=!0;var e=0,i=ii;try{var n=Ua;for(ii=1;e>=E,p-=E,Wa=1<<32-wa(i)+p|n<De?(Di=Be,Be=null):Di=Be.sibling;var Ze=te(G,Be,Y[De],me);if(Ze===null){Be===null&&(Be=Di);break}e&&Be&&Ze.alternate===null&&i(G,Be),U=b(Ze,U,De),Se===null?Ee=Ze:Se.sibling=Ze,Se=Ze,Be=Di}if(De===Y.length)return n(G,Be),ci&&Dn(G,De),Ee;if(Be===null){for(;DeDe?(Di=Be,Be=null):Di=Be.sibling;var xn=te(G,Be,Ze.value,me);if(xn===null){Be===null&&(Be=Di);break}e&&Be&&xn.alternate===null&&i(G,Be),U=b(xn,U,De),Se===null?Ee=xn:Se.sibling=xn,Se=xn,Be=Di}if(Ze.done)return n(G,Be),ci&&Dn(G,De),Ee;if(Be===null){for(;!Ze.done;De++,Ze=Y.next())Ze=ue(G,Ze.value,me),Ze!==null&&(U=b(Ze,U,De),Se===null?Ee=Ze:Se.sibling=Ze,Se=Ze);return ci&&Dn(G,De),Ee}for(Be=t(G,Be);!Ze.done;De++,Ze=Y.next())Ze=fe(Be,G,De,Ze.value,me),Ze!==null&&(e&&Ze.alternate!==null&&Be.delete(Ze.key===null?De:Ze.key),U=b(Ze,U,De),Se===null?Ee=Ze:Se.sibling=Ze,Se=Ze);return e&&Be.forEach(function(Yv){return i(G,Yv)}),ci&&Dn(G,De),Ee}function vi(G,U,Y,me){if(typeof Y=="object"&&Y!==null&&Y.type===R&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case x:e:{for(var Ee=Y.key,Se=U;Se!==null;){if(Se.key===Ee){if(Ee=Y.type,Ee===R){if(Se.tag===7){n(G,Se.sibling),U=p(Se,Y.props.children),U.return=G,G=U;break e}}else if(Se.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===X&&yp(Ee)===Se.type){n(G,Se.sibling),U=p(Se,Y.props),U.ref=nr(G,Se,Y),U.return=G,G=U;break e}n(G,Se);break}else i(G,Se);Se=Se.sibling}Y.type===R?(U=On(Y.props.children,G.mode,me,Y.key),U.return=G,G=U):(me=Ls(Y.type,Y.key,Y.props,null,G.mode,me),me.ref=nr(G,U,Y),me.return=G,G=me)}return E(G);case D:e:{for(Se=Y.key;U!==null;){if(U.key===Se)if(U.tag===4&&U.stateNode.containerInfo===Y.containerInfo&&U.stateNode.implementation===Y.implementation){n(G,U.sibling),U=p(U,Y.children||[]),U.return=G,G=U;break e}else{n(G,U);break}else i(G,U);U=U.sibling}U=$c(Y,G.mode,me),U.return=G,G=U}return E(G);case X:return Se=Y._init,vi(G,U,Se(Y._payload),me)}if(yi(Y))return we(G,U,Y,me);if(oe(Y))return je(G,U,Y,me);bs(G,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,U!==null&&U.tag===6?(n(G,U.sibling),U=p(U,Y),U.return=G,G=U):(n(G,U),U=Wc(Y,G.mode,me),U.return=G,G=U),E(G)):n(G,U)}return vi}var ho=bp(!0),fp=bp(!1),fs=dn(null),vs=null,go=null,ic=null;function ac(){ic=go=vs=null}function nc(e){var i=fs.current;li(fs),e._currentValue=i}function oc(e,i,n){for(;e!==null;){var t=e.alternate;if((e.childLanes&i)!==i?(e.childLanes|=i,t!==null&&(t.childLanes|=i)):t!==null&&(t.childLanes&i)!==i&&(t.childLanes|=i),e===n)break;e=e.return}}function yo(e,i){vs=e,ic=go=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&i)!==0&&(Ji=!0),e.firstContext=null)}function ha(e){var i=e._currentValue;if(ic!==e)if(e={context:e,memoizedValue:i,next:null},go===null){if(vs===null)throw Error(o(308));go=e,vs.dependencies={lanes:0,firstContext:e}}else go=go.next=e;return i}var Fn=null;function rc(e){Fn===null?Fn=[e]:Fn.push(e)}function vp(e,i,n,t){var p=i.interleaved;return p===null?(n.next=n,rc(i)):(n.next=p.next,p.next=n),i.interleaved=n,Qa(e,t)}function Qa(e,i){e.lanes|=i;var n=e.alternate;for(n!==null&&(n.lanes|=i),n=e,e=e.return;e!==null;)e.childLanes|=i,n=e.alternate,n!==null&&(n.childLanes|=i),n=e,e=e.return;return n.tag===3?n.stateNode:null}var hn=!1;function sc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function kp(e,i){e=e.updateQueue,i.updateQueue===e&&(i.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ga(e,i){return{eventTime:e,lane:i,tag:0,payload:null,callback:null,next:null}}function gn(e,i,n){var t=e.updateQueue;if(t===null)return null;if(t=t.shared,(We&2)!==0){var p=t.pending;return p===null?i.next=i:(i.next=p.next,p.next=i),t.pending=i,Qa(e,n)}return p=t.interleaved,p===null?(i.next=i,rc(t)):(i.next=p.next,p.next=i),t.interleaved=i,Qa(e,n)}function ks(e,i,n){if(i=i.updateQueue,i!==null&&(i=i.shared,(n&4194240)!==0)){var t=i.lanes;t&=e.pendingLanes,n|=t,i.lanes=n,kl(e,n)}}function wp(e,i){var n=e.updateQueue,t=e.alternate;if(t!==null&&(t=t.updateQueue,n===t)){var p=null,b=null;if(n=n.firstBaseUpdate,n!==null){do{var E={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};b===null?p=b=E:b=b.next=E,n=n.next}while(n!==null);b===null?p=b=i:b=b.next=i}else p=b=i;n={baseState:t.baseState,firstBaseUpdate:p,lastBaseUpdate:b,shared:t.shared,effects:t.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=i:e.next=i,n.lastBaseUpdate=i}function ws(e,i,n,t){var p=e.updateQueue;hn=!1;var b=p.firstBaseUpdate,E=p.lastBaseUpdate,P=p.shared.pending;if(P!==null){p.shared.pending=null;var M=P,Z=M.next;M.next=null,E===null?b=Z:E.next=Z,E=M;var le=e.alternate;le!==null&&(le=le.updateQueue,P=le.lastBaseUpdate,P!==E&&(P===null?le.firstBaseUpdate=Z:P.next=Z,le.lastBaseUpdate=M))}if(b!==null){var ue=p.baseState;E=0,le=Z=M=null,P=b;do{var te=P.lane,fe=P.eventTime;if((t&te)===te){le!==null&&(le=le.next={eventTime:fe,lane:0,tag:P.tag,payload:P.payload,callback:P.callback,next:null});e:{var we=e,je=P;switch(te=i,fe=n,je.tag){case 1:if(we=je.payload,typeof we=="function"){ue=we.call(fe,ue,te);break e}ue=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=je.payload,te=typeof we=="function"?we.call(fe,ue,te):we,te==null)break e;ue=ee({},ue,te);break e;case 2:hn=!0}}P.callback!==null&&P.lane!==0&&(e.flags|=64,te=p.effects,te===null?p.effects=[P]:te.push(P))}else fe={eventTime:fe,lane:te,tag:P.tag,payload:P.payload,callback:P.callback,next:null},le===null?(Z=le=fe,M=ue):le=le.next=fe,E|=te;if(P=P.next,P===null){if(P=p.shared.pending,P===null)break;te=P,P=te.next,te.next=null,p.lastBaseUpdate=te,p.shared.pending=null}}while(!0);if(le===null&&(M=ue),p.baseState=M,p.firstBaseUpdate=Z,p.lastBaseUpdate=le,i=p.shared.interleaved,i!==null){p=i;do E|=p.lane,p=p.next;while(p!==i)}else b===null&&(p.shared.lanes=0);Pn|=E,e.lanes=E,e.memoizedState=ue}}function xp(e,i,n){if(e=i.effects,i.effects=null,e!==null)for(i=0;in?n:4,e(!0);var t=dc.transition;dc.transition={};try{e(!1),i()}finally{ii=n,dc.transition=t}}function Lp(){return ga().memoizedState}function kv(e,i,n){var t=vn(e);if(n={lane:t,action:n,hasEagerState:!1,eagerState:null,next:null},Hp(e))Vp(i,n);else if(n=vp(e,i,n,t),n!==null){var p=Qi();Ca(n,e,t,p),Up(n,i,t)}}function wv(e,i,n){var t=vn(e),p={lane:t,action:n,hasEagerState:!1,eagerState:null,next:null};if(Hp(e))Vp(i,p);else{var b=e.alternate;if(e.lanes===0&&(b===null||b.lanes===0)&&(b=i.lastRenderedReducer,b!==null))try{var E=i.lastRenderedState,P=b(E,n);if(p.hasEagerState=!0,p.eagerState=P,xa(P,E)){var M=i.interleaved;M===null?(p.next=p,rc(i)):(p.next=M.next,M.next=p),i.interleaved=p;return}}catch{}finally{}n=vp(e,i,p,t),n!==null&&(p=Qi(),Ca(n,e,t,p),Up(n,i,t))}}function Hp(e){var i=e.alternate;return e===pi||i!==null&&i===pi}function Vp(e,i){tr=qs=!0;var n=e.pending;n===null?i.next=i:(i.next=n.next,n.next=i),e.pending=i}function Up(e,i,n){if((n&4194240)!==0){var t=i.lanes;t&=e.pendingLanes,n|=t,i.lanes=n,kl(e,n)}}var Cs={readContext:ha,useCallback:Hi,useContext:Hi,useEffect:Hi,useImperativeHandle:Hi,useInsertionEffect:Hi,useLayoutEffect:Hi,useMemo:Hi,useReducer:Hi,useRef:Hi,useState:Hi,useDebugValue:Hi,useDeferredValue:Hi,useTransition:Hi,useMutableSource:Hi,useSyncExternalStore:Hi,useId:Hi,unstable_isNewReconciler:!1},xv={readContext:ha,useCallback:function(e,i){return Ta().memoizedState=[e,i===void 0?null:i],e},useContext:ha,useEffect:Fp,useImperativeHandle:function(e,i,n){return n=n!=null?n.concat([e]):null,js(4194308,4,Pp.bind(null,i,e),n)},useLayoutEffect:function(e,i){return js(4194308,4,e,i)},useInsertionEffect:function(e,i){return js(4,2,e,i)},useMemo:function(e,i){var n=Ta();return i=i===void 0?null:i,e=e(),n.memoizedState=[e,i],e},useReducer:function(e,i,n){var t=Ta();return i=n!==void 0?n(i):i,t.memoizedState=t.baseState=i,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},t.queue=e,e=e.dispatch=kv.bind(null,pi,e),[t.memoizedState,e]},useRef:function(e){var i=Ta();return e={current:e},i.memoizedState=e},useState:_p,useDebugValue:fc,useDeferredValue:function(e){return Ta().memoizedState=e},useTransition:function(){var e=_p(!1),i=e[0];return e=vv.bind(null,e[1]),Ta().memoizedState=e,[i,e]},useMutableSource:function(){},useSyncExternalStore:function(e,i,n){var t=pi,p=Ta();if(ci){if(n===void 0)throw Error(o(407));n=n()}else{if(n=i(),_i===null)throw Error(o(349));(Tn&30)!==0||Ap(t,i,n)}p.memoizedState=n;var b={value:n,getSnapshot:i};return p.queue=b,Fp(Ep.bind(null,t,b,e),[e]),t.flags|=2048,ur(9,Cp.bind(null,t,b,n,i),void 0,null),n},useId:function(){var e=Ta(),i=_i.identifierPrefix;if(ci){var n=$a,t=Wa;n=(t&~(1<<32-wa(t)-1)).toString(32)+n,i=":"+i+"R"+n,n=lr++,0")&&(M=M.replace("",e.displayName)),M}while(1<=E&&0<=P);break}}}finally{L=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?I(e):""}function de(e){switch(e.tag){case 5:return I(e.type);case 16:return I("Lazy");case 13:return I("Suspense");case 19:return I("SuspenseList");case 0:case 2:case 15:return e=Q(e.type,!1),e;case 11:return e=Q(e.type.render,!1),e;case 1:return e=Q(e.type,!0),e;default:return""}}function ge(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case R:return"Fragment";case D:return"Portal";case O:return"Profiler";case F:return"StrictMode";case H:return"Suspense";case K:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case T:return(e.displayName||"Context")+".Consumer";case N:return(e._context.displayName||"Context")+".Provider";case W:var i=e.render;return e=e.displayName,e||(e=i.displayName||i.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ae:return i=e.displayName||null,i!==null?i:ge(e.type)||"Memo";case X:i=e._payload,e=e._init;try{return ge(e(i))}catch{}}return null}function be(e){var i=e.type;switch(e.tag){case 24:return"Cache";case 9:return(i.displayName||"Context")+".Consumer";case 10:return(i._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=i.render,e=e.displayName||e.name||"",i.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return i;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ge(i);case 8:return i===F?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i}return null}function se(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ce(e){var i=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(i==="checkbox"||i==="radio")}function Ae(e){var i=ce(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,i),t=""+e[i];if(!e.hasOwnProperty(i)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var p=n.get,b=n.set;return Object.defineProperty(e,i,{configurable:!0,get:function(){return p.call(this)},set:function(E){t=""+E,b.call(this,E)}}),Object.defineProperty(e,i,{enumerable:n.enumerable}),{getValue:function(){return t},setValue:function(E){t=""+E},stopTracking:function(){e._valueTracker=null,delete e[i]}}}}function Fe(e){e._valueTracker||(e._valueTracker=Ae(e))}function He(e){if(!e)return!1;var i=e._valueTracker;if(!i)return!0;var n=i.getValue(),t="";return e&&(t=ce(e)?e.checked?"true":"false":e.value),e=t,e!==n?(i.setValue(e),!0):!1}function ai(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Qe(e,i){var n=i.checked;return ee({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Oe(e,i){var n=i.defaultValue==null?"":i.defaultValue,t=i.checked!=null?i.checked:i.defaultChecked;n=se(i.value!=null?i.value:n),e._wrapperState={initialChecked:t,initialValue:n,controlled:i.type==="checkbox"||i.type==="radio"?i.checked!=null:i.value!=null}}function Me(e,i){i=i.checked,i!=null&&w(e,"checked",i,!1)}function Xe(e,i){Me(e,i);var n=se(i.value),t=i.type;if(n!=null)t==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(t==="submit"||t==="reset"){e.removeAttribute("value");return}i.hasOwnProperty("value")?Ge(e,i.type,n):i.hasOwnProperty("defaultValue")&&Ge(e,i.type,se(i.defaultValue)),i.checked==null&&i.defaultChecked!=null&&(e.defaultChecked=!!i.defaultChecked)}function Ve(e,i,n){if(i.hasOwnProperty("value")||i.hasOwnProperty("defaultValue")){var t=i.type;if(!(t!=="submit"&&t!=="reset"||i.value!==void 0&&i.value!==null))return;i=""+e._wrapperState.initialValue,n||i===e.value||(e.value=i),e.defaultValue=i}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ge(e,i,n){(i!=="number"||ai(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var yi=Array.isArray;function si(e,i,n,t){if(e=e.options,i){i={};for(var p=0;p"+i.valueOf().toString()+"",i=Ki.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;i.firstChild;)e.appendChild(i.firstChild)}});function ji(e,i){if(i){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=i;return}}e.textContent=i}var ui={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ki=["Webkit","ms","Moz","O"];Object.keys(ui).forEach(function(e){ki.forEach(function(i){i=i+e.charAt(0).toUpperCase()+e.substring(1),ui[i]=ui[e]})});function _a(e,i,n){return i==null||typeof i=="boolean"||i===""?"":n||typeof i!="number"||i===0||ui.hasOwnProperty(e)&&ui[e]?(""+i).trim():i+"px"}function da(e,i){e=e.style;for(var n in i)if(i.hasOwnProperty(n)){var t=n.indexOf("--")===0,p=_a(n,i[n],t);n==="float"&&(n="cssFloat"),t?e.setProperty(n,p):e[n]=p}}var ie=ee({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function pe(e,i){if(i){if(ie[e]&&(i.children!=null||i.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(i.dangerouslySetInnerHTML!=null){if(i.children!=null)throw Error(o(60));if(typeof i.dangerouslySetInnerHTML!="object"||!("__html"in i.dangerouslySetInnerHTML))throw Error(o(61))}if(i.style!=null&&typeof i.style!="object")throw Error(o(62))}}function V(e,i){if(e.indexOf("-")===-1)return typeof i.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var J=null;function re(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ye=null,fe=null,_e=null;function ni(e){if(e=ar(e)){if(typeof ye!="function")throw Error(o(280));var i=e.stateNode;i&&(i=us(i),ye(e.stateNode,e.type,i))}}function Ce(e){fe?_e?_e.push(e):_e=[e]:fe=e}function Te(){if(fe){var e=fe,i=_e;if(_e=fe=null,ni(e),i)for(e=0;e>>=0,e===0?32:31-(mf(e)/hf|0)|0}var $r=64,Qr=4194304;function Io(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Gr(e,i){var n=e.pendingLanes;if(n===0)return 0;var t=0,p=e.suspendedLanes,b=e.pingedLanes,E=n&268435455;if(E!==0){var P=E&~p;P!==0?t=Io(P):(b&=E,b!==0&&(t=Io(b)))}else E=n&~p,E!==0?t=Io(E):b!==0&&(t=Io(b));if(t===0)return 0;if(i!==0&&i!==t&&(i&p)===0&&(p=t&-t,b=i&-i,p>=b||p===16&&(b&4194240)!==0))return i;if((t&4)!==0&&(t|=n&16),i=e.entangledLanes,i!==0)for(e=e.entanglements,i&=t;0n;n++)i.push(e);return i}function Mo(e,i,n){e.pendingLanes|=i,i!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,i=31-wa(i),e[i]=n}function ff(e,i){var n=e.pendingLanes&~i;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=i,e.mutableReadLanes&=i,e.entangledLanes&=i,i=e.entanglements;var t=e.eventTimes;for(e=e.expirationTimes;0=Qo),Dd=" ",Fd=!1;function Rd(e,i){switch(e){case"keyup":return $f.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Td(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ao=!1;function Gf(e,i){switch(e){case"compositionend":return Td(i);case"keypress":return i.which!==32?null:(Fd=!0,Dd);case"textInput":return e=i.data,e===Dd&&Fd?null:e;default:return null}}function Kf(e,i){if(ao)return e==="compositionend"||!_l&&Rd(e,i)?(e=Ad(),Jr=jl=ln=null,ao=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:n,offset:i-e};e=t}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Hd(n)}}function Ud(e,i){return e&&i?e===i?!0:e&&e.nodeType===3?!1:i&&i.nodeType===3?Ud(e,i.parentNode):"contains"in e?e.contains(i):e.compareDocumentPosition?!!(e.compareDocumentPosition(i)&16):!1:!1}function Wd(){for(var e=window,i=ai();i instanceof e.HTMLIFrameElement;){try{var n=typeof i.contentWindow.location.href=="string"}catch{n=!1}if(n)e=i.contentWindow;else break;i=ai(e.document)}return i}function Rl(e){var i=e&&e.nodeName&&e.nodeName.toLowerCase();return i&&(i==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||i==="textarea"||e.contentEditable==="true")}function ov(e){var i=Wd(),n=e.focusedElem,t=e.selectionRange;if(i!==n&&n&&n.ownerDocument&&Ud(n.ownerDocument.documentElement,n)){if(t!==null&&Rl(n)){if(i=t.start,e=t.end,e===void 0&&(e=i),"selectionStart"in n)n.selectionStart=i,n.selectionEnd=Math.min(e,n.value.length);else if(e=(i=n.ownerDocument||document)&&i.defaultView||window,e.getSelection){e=e.getSelection();var p=n.textContent.length,b=Math.min(t.start,p);t=t.end===void 0?b:Math.min(t.end,p),!e.extend&&b>t&&(p=t,t=b,b=p),p=Vd(n,b);var E=Vd(n,t);p&&E&&(e.rangeCount!==1||e.anchorNode!==p.node||e.anchorOffset!==p.offset||e.focusNode!==E.node||e.focusOffset!==E.offset)&&(i=i.createRange(),i.setStart(p.node,p.offset),e.removeAllRanges(),b>t?(e.addRange(i),e.extend(E.node,E.offset)):(i.setEnd(E.node,E.offset),e.addRange(i)))}}for(i=[],e=n;e=e.parentNode;)e.nodeType===1&&i.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,no=null,Tl=null,Zo=null,Pl=!1;function $d(e,i,n){var t=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Pl||no==null||no!==ai(t)||(t=no,"selectionStart"in t&&Rl(t)?t={start:t.selectionStart,end:t.selectionEnd}:(t=(t.ownerDocument&&t.ownerDocument.defaultView||window).getSelection(),t={anchorNode:t.anchorNode,anchorOffset:t.anchorOffset,focusNode:t.focusNode,focusOffset:t.focusOffset}),Zo&&Yo(Zo,t)||(Zo=t,t=ts(Tl,"onSelect"),0lo||(e.current=Gl[lo],Gl[lo]=null,lo--)}function ri(e,i){lo++,Gl[lo]=e.current,e.current=i}var pn={},Li=dn(pn),Zi=dn(!1),Bn=pn;function co(e,i){var n=e.type.contextTypes;if(!n)return pn;var t=e.stateNode;if(t&&t.__reactInternalMemoizedUnmaskedChildContext===i)return t.__reactInternalMemoizedMaskedChildContext;var p={},b;for(b in n)p[b]=i[b];return t&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=p),p}function Xi(e){return e=e.childContextTypes,e!=null}function ds(){li(Zi),li(Li)}function tp(e,i,n){if(Li.current!==pn)throw Error(o(168));ri(Li,i),ri(Zi,n)}function lp(e,i,n){var t=e.stateNode;if(i=i.childContextTypes,typeof t.getChildContext!="function")return n;t=t.getChildContext();for(var p in t)if(!(p in i))throw Error(o(108,be(e)||"Unknown",p));return ee({},n,t)}function ps(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||pn,Bn=Li.current,ri(Li,e),ri(Zi,Zi.current),!0}function cp(e,i,n){var t=e.stateNode;if(!t)throw Error(o(169));n?(e=lp(e,i,Bn),t.__reactInternalMemoizedMergedChildContext=e,li(Zi),li(Li),ri(Li,e)):li(Zi),ri(Zi,n)}var Ua=null,ms=!1,Kl=!1;function up(e){Ua===null?Ua=[e]:Ua.push(e)}function yv(e){ms=!0,up(e)}function mn(){if(!Kl&&Ua!==null){Kl=!0;var e=0,i=ii;try{var n=Ua;for(ii=1;e>=E,p-=E,Wa=1<<32-wa(i)+p|n<De?(Di=Be,Be=null):Di=Be.sibling;var Ze=te(G,Be,Y[De],me);if(Ze===null){Be===null&&(Be=Di);break}e&&Be&&Ze.alternate===null&&i(G,Be),U=b(Ze,U,De),Se===null?Ee=Ze:Se.sibling=Ze,Se=Ze,Be=Di}if(De===Y.length)return n(G,Be),ci&&Dn(G,De),Ee;if(Be===null){for(;DeDe?(Di=Be,Be=null):Di=Be.sibling;var xn=te(G,Be,Ze.value,me);if(xn===null){Be===null&&(Be=Di);break}e&&Be&&xn.alternate===null&&i(G,Be),U=b(xn,U,De),Se===null?Ee=xn:Se.sibling=xn,Se=xn,Be=Di}if(Ze.done)return n(G,Be),ci&&Dn(G,De),Ee;if(Be===null){for(;!Ze.done;De++,Ze=Y.next())Ze=ue(G,Ze.value,me),Ze!==null&&(U=b(Ze,U,De),Se===null?Ee=Ze:Se.sibling=Ze,Se=Ze);return ci&&Dn(G,De),Ee}for(Be=t(G,Be);!Ze.done;De++,Ze=Y.next())Ze=ve(Be,G,De,Ze.value,me),Ze!==null&&(e&&Ze.alternate!==null&&Be.delete(Ze.key===null?De:Ze.key),U=b(Ze,U,De),Se===null?Ee=Ze:Se.sibling=Ze,Se=Ze);return e&&Be.forEach(function(Yv){return i(G,Yv)}),ci&&Dn(G,De),Ee}function vi(G,U,Y,me){if(typeof Y=="object"&&Y!==null&&Y.type===R&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case x:e:{for(var Ee=Y.key,Se=U;Se!==null;){if(Se.key===Ee){if(Ee=Y.type,Ee===R){if(Se.tag===7){n(G,Se.sibling),U=p(Se,Y.props.children),U.return=G,G=U;break e}}else if(Se.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===X&&yp(Ee)===Se.type){n(G,Se.sibling),U=p(Se,Y.props),U.ref=nr(G,Se,Y),U.return=G,G=U;break e}n(G,Se);break}else i(G,Se);Se=Se.sibling}Y.type===R?(U=On(Y.props.children,G.mode,me,Y.key),U.return=G,G=U):(me=Ls(Y.type,Y.key,Y.props,null,G.mode,me),me.ref=nr(G,U,Y),me.return=G,G=me)}return E(G);case D:e:{for(Se=Y.key;U!==null;){if(U.key===Se)if(U.tag===4&&U.stateNode.containerInfo===Y.containerInfo&&U.stateNode.implementation===Y.implementation){n(G,U.sibling),U=p(U,Y.children||[]),U.return=G,G=U;break e}else{n(G,U);break}else i(G,U);U=U.sibling}U=$c(Y,G.mode,me),U.return=G,G=U}return E(G);case X:return Se=Y._init,vi(G,U,Se(Y._payload),me)}if(yi(Y))return we(G,U,Y,me);if(oe(Y))return je(G,U,Y,me);bs(G,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,U!==null&&U.tag===6?(n(G,U.sibling),U=p(U,Y),U.return=G,G=U):(n(G,U),U=Wc(Y,G.mode,me),U.return=G,G=U),E(G)):n(G,U)}return vi}var ho=bp(!0),fp=bp(!1),fs=dn(null),vs=null,go=null,ic=null;function ac(){ic=go=vs=null}function nc(e){var i=fs.current;li(fs),e._currentValue=i}function oc(e,i,n){for(;e!==null;){var t=e.alternate;if((e.childLanes&i)!==i?(e.childLanes|=i,t!==null&&(t.childLanes|=i)):t!==null&&(t.childLanes&i)!==i&&(t.childLanes|=i),e===n)break;e=e.return}}function yo(e,i){vs=e,ic=go=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&i)!==0&&(Ji=!0),e.firstContext=null)}function ha(e){var i=e._currentValue;if(ic!==e)if(e={context:e,memoizedValue:i,next:null},go===null){if(vs===null)throw Error(o(308));go=e,vs.dependencies={lanes:0,firstContext:e}}else go=go.next=e;return i}var Fn=null;function rc(e){Fn===null?Fn=[e]:Fn.push(e)}function vp(e,i,n,t){var p=i.interleaved;return p===null?(n.next=n,rc(i)):(n.next=p.next,p.next=n),i.interleaved=n,Qa(e,t)}function Qa(e,i){e.lanes|=i;var n=e.alternate;for(n!==null&&(n.lanes|=i),n=e,e=e.return;e!==null;)e.childLanes|=i,n=e.alternate,n!==null&&(n.childLanes|=i),n=e,e=e.return;return n.tag===3?n.stateNode:null}var hn=!1;function sc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function kp(e,i){e=e.updateQueue,i.updateQueue===e&&(i.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ga(e,i){return{eventTime:e,lane:i,tag:0,payload:null,callback:null,next:null}}function gn(e,i,n){var t=e.updateQueue;if(t===null)return null;if(t=t.shared,(We&2)!==0){var p=t.pending;return p===null?i.next=i:(i.next=p.next,p.next=i),t.pending=i,Qa(e,n)}return p=t.interleaved,p===null?(i.next=i,rc(t)):(i.next=p.next,p.next=i),t.interleaved=i,Qa(e,n)}function ks(e,i,n){if(i=i.updateQueue,i!==null&&(i=i.shared,(n&4194240)!==0)){var t=i.lanes;t&=e.pendingLanes,n|=t,i.lanes=n,kl(e,n)}}function wp(e,i){var n=e.updateQueue,t=e.alternate;if(t!==null&&(t=t.updateQueue,n===t)){var p=null,b=null;if(n=n.firstBaseUpdate,n!==null){do{var E={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};b===null?p=b=E:b=b.next=E,n=n.next}while(n!==null);b===null?p=b=i:b=b.next=i}else p=b=i;n={baseState:t.baseState,firstBaseUpdate:p,lastBaseUpdate:b,shared:t.shared,effects:t.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=i:e.next=i,n.lastBaseUpdate=i}function ws(e,i,n,t){var p=e.updateQueue;hn=!1;var b=p.firstBaseUpdate,E=p.lastBaseUpdate,P=p.shared.pending;if(P!==null){p.shared.pending=null;var M=P,Z=M.next;M.next=null,E===null?b=Z:E.next=Z,E=M;var le=e.alternate;le!==null&&(le=le.updateQueue,P=le.lastBaseUpdate,P!==E&&(P===null?le.firstBaseUpdate=Z:P.next=Z,le.lastBaseUpdate=M))}if(b!==null){var ue=p.baseState;E=0,le=Z=M=null,P=b;do{var te=P.lane,ve=P.eventTime;if((t&te)===te){le!==null&&(le=le.next={eventTime:ve,lane:0,tag:P.tag,payload:P.payload,callback:P.callback,next:null});e:{var we=e,je=P;switch(te=i,ve=n,je.tag){case 1:if(we=je.payload,typeof we=="function"){ue=we.call(ve,ue,te);break e}ue=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=je.payload,te=typeof we=="function"?we.call(ve,ue,te):we,te==null)break e;ue=ee({},ue,te);break e;case 2:hn=!0}}P.callback!==null&&P.lane!==0&&(e.flags|=64,te=p.effects,te===null?p.effects=[P]:te.push(P))}else ve={eventTime:ve,lane:te,tag:P.tag,payload:P.payload,callback:P.callback,next:null},le===null?(Z=le=ve,M=ue):le=le.next=ve,E|=te;if(P=P.next,P===null){if(P=p.shared.pending,P===null)break;te=P,P=te.next,te.next=null,p.lastBaseUpdate=te,p.shared.pending=null}}while(!0);if(le===null&&(M=ue),p.baseState=M,p.firstBaseUpdate=Z,p.lastBaseUpdate=le,i=p.shared.interleaved,i!==null){p=i;do E|=p.lane,p=p.next;while(p!==i)}else b===null&&(p.shared.lanes=0);Pn|=E,e.lanes=E,e.memoizedState=ue}}function xp(e,i,n){if(e=i.effects,i.effects=null,e!==null)for(i=0;in?n:4,e(!0);var t=dc.transition;dc.transition={};try{e(!1),i()}finally{ii=n,dc.transition=t}}function Lp(){return ga().memoizedState}function kv(e,i,n){var t=vn(e);if(n={lane:t,action:n,hasEagerState:!1,eagerState:null,next:null},Hp(e))Vp(i,n);else if(n=vp(e,i,n,t),n!==null){var p=Qi();Ca(n,e,t,p),Up(n,i,t)}}function wv(e,i,n){var t=vn(e),p={lane:t,action:n,hasEagerState:!1,eagerState:null,next:null};if(Hp(e))Vp(i,p);else{var b=e.alternate;if(e.lanes===0&&(b===null||b.lanes===0)&&(b=i.lastRenderedReducer,b!==null))try{var E=i.lastRenderedState,P=b(E,n);if(p.hasEagerState=!0,p.eagerState=P,xa(P,E)){var M=i.interleaved;M===null?(p.next=p,rc(i)):(p.next=M.next,M.next=p),i.interleaved=p;return}}catch{}finally{}n=vp(e,i,p,t),n!==null&&(p=Qi(),Ca(n,e,t,p),Up(n,i,t))}}function Hp(e){var i=e.alternate;return e===pi||i!==null&&i===pi}function Vp(e,i){tr=qs=!0;var n=e.pending;n===null?i.next=i:(i.next=n.next,n.next=i),e.pending=i}function Up(e,i,n){if((n&4194240)!==0){var t=i.lanes;t&=e.pendingLanes,n|=t,i.lanes=n,kl(e,n)}}var Cs={readContext:ha,useCallback:Hi,useContext:Hi,useEffect:Hi,useImperativeHandle:Hi,useInsertionEffect:Hi,useLayoutEffect:Hi,useMemo:Hi,useReducer:Hi,useRef:Hi,useState:Hi,useDebugValue:Hi,useDeferredValue:Hi,useTransition:Hi,useMutableSource:Hi,useSyncExternalStore:Hi,useId:Hi,unstable_isNewReconciler:!1},xv={readContext:ha,useCallback:function(e,i){return Ta().memoizedState=[e,i===void 0?null:i],e},useContext:ha,useEffect:Fp,useImperativeHandle:function(e,i,n){return n=n!=null?n.concat([e]):null,js(4194308,4,Pp.bind(null,i,e),n)},useLayoutEffect:function(e,i){return js(4194308,4,e,i)},useInsertionEffect:function(e,i){return js(4,2,e,i)},useMemo:function(e,i){var n=Ta();return i=i===void 0?null:i,e=e(),n.memoizedState=[e,i],e},useReducer:function(e,i,n){var t=Ta();return i=n!==void 0?n(i):i,t.memoizedState=t.baseState=i,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},t.queue=e,e=e.dispatch=kv.bind(null,pi,e),[t.memoizedState,e]},useRef:function(e){var i=Ta();return e={current:e},i.memoizedState=e},useState:_p,useDebugValue:fc,useDeferredValue:function(e){return Ta().memoizedState=e},useTransition:function(){var e=_p(!1),i=e[0];return e=vv.bind(null,e[1]),Ta().memoizedState=e,[i,e]},useMutableSource:function(){},useSyncExternalStore:function(e,i,n){var t=pi,p=Ta();if(ci){if(n===void 0)throw Error(o(407));n=n()}else{if(n=i(),_i===null)throw Error(o(349));(Tn&30)!==0||Ap(t,i,n)}p.memoizedState=n;var b={value:n,getSnapshot:i};return p.queue=b,Fp(Ep.bind(null,t,b,e),[e]),t.flags|=2048,ur(9,Cp.bind(null,t,b,n,i),void 0,null),n},useId:function(){var e=Ta(),i=_i.identifierPrefix;if(ci){var n=$a,t=Wa;n=(t&~(1<<32-wa(t)-1)).toString(32)+n,i=":"+i+"R"+n,n=lr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof t.is=="string"?e=E.createElement(n,{is:t.is}):(e=E.createElement(n),n==="select"&&(E=e,t.multiple?E.multiple=!0:t.size&&(E.size=t.size))):e=E.createElementNS(e,n),e[Fa]=i,e[ir]=t,um(e,i,!1,!1),i.stateNode=e;e:{switch(E=V(n,t),n){case"dialog":ti("cancel",e),ti("close",e),p=t;break;case"iframe":case"object":case"embed":ti("load",e),p=t;break;case"video":case"audio":for(p=0;pwo&&(i.flags|=128,t=!0,dr(b,!1),i.lanes=4194304)}else{if(!t)if(e=xs(E),e!==null){if(i.flags|=128,t=!0,n=e.updateQueue,n!==null&&(i.updateQueue=n,i.flags|=4),dr(b,!0),b.tail===null&&b.tailMode==="hidden"&&!E.alternate&&!ci)return Vi(i),null}else 2*fi()-b.renderingStartTime>wo&&n!==1073741824&&(i.flags|=128,t=!0,dr(b,!1),i.lanes=4194304);b.isBackwards?(E.sibling=i.child,i.child=E):(n=b.last,n!==null?n.sibling=E:i.child=E,b.last=E)}return b.tail!==null?(i=b.tail,b.rendering=i,b.tail=i.sibling,b.renderingStartTime=fi(),i.sibling=null,n=di.current,ri(di,t?n&1|2:n&1),i):(Vi(i),null);case 22:case 23:return Hc(),t=i.memoizedState!==null,e!==null&&e.memoizedState!==null!==t&&(i.flags|=8192),t&&(i.mode&1)!==0?(la&1073741824)!==0&&(Vi(i),i.subtreeFlags&6&&(i.flags|=8192)):Vi(i),null;case 24:return null;case 25:return null}throw Error(o(156,i.tag))}function Bv(e,i){switch(Zl(i),i.tag){case 1:return Xi(i.type)&&ds(),e=i.flags,e&65536?(i.flags=e&-65537|128,i):null;case 3:return bo(),li(Zi),li(Li),uc(),e=i.flags,(e&65536)!==0&&(e&128)===0?(i.flags=e&-65537|128,i):null;case 5:return lc(i),null;case 13:if(li(di),e=i.memoizedState,e!==null&&e.dehydrated!==null){if(i.alternate===null)throw Error(o(340));mo()}return e=i.flags,e&65536?(i.flags=e&-65537|128,i):null;case 19:return li(di),null;case 4:return bo(),null;case 10:return nc(i.type._context),null;case 22:case 23:return Hc(),null;case 24:return null;default:return null}}var _s=!1,Ui=!1,_v=typeof WeakSet=="function"?WeakSet:Set,ke=null;function vo(e,i){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(t){gi(e,i,t)}else n.current=null}function Bc(e,i,n){try{n()}catch(t){gi(e,i,t)}}var mm=!1;function Dv(e,i){if(Hl=Zr,e=Wd(),Rl(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var t=n.getSelection&&n.getSelection();if(t&&t.rangeCount!==0){n=t.anchorNode;var p=t.anchorOffset,b=t.focusNode;t=t.focusOffset;try{n.nodeType,b.nodeType}catch{n=null;break e}var E=0,P=-1,M=-1,Z=0,le=0,ue=e,te=null;i:for(;;){for(var fe;ue!==n||p!==0&&ue.nodeType!==3||(P=E+p),ue!==b||t!==0&&ue.nodeType!==3||(M=E+t),ue.nodeType===3&&(E+=ue.nodeValue.length),(fe=ue.firstChild)!==null;)te=ue,ue=fe;for(;;){if(ue===e)break i;if(te===n&&++Z===p&&(P=E),te===b&&++le===t&&(M=E),(fe=ue.nextSibling)!==null)break;ue=te,te=ue.parentNode}ue=fe}n=P===-1||M===-1?null:{start:P,end:M}}else n=null}n=n||{start:0,end:0}}else n=null;for(Vl={focusedElem:e,selectionRange:n},Zr=!1,ke=i;ke!==null;)if(i=ke,e=i.child,(i.subtreeFlags&1028)!==0&&e!==null)e.return=i,ke=e;else for(;ke!==null;){i=ke;try{var we=i.alternate;if((i.flags&1024)!==0)switch(i.tag){case 0:case 11:case 15:break;case 1:if(we!==null){var je=we.memoizedProps,vi=we.memoizedState,G=i.stateNode,U=G.getSnapshotBeforeUpdate(i.elementType===i.type?je:qa(i.type,je),vi);G.__reactInternalSnapshotBeforeUpdate=U}break;case 3:var Y=i.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(me){gi(i,i.return,me)}if(e=i.sibling,e!==null){e.return=i.return,ke=e;break}ke=i.return}return we=mm,mm=!1,we}function pr(e,i,n){var t=i.updateQueue;if(t=t!==null?t.lastEffect:null,t!==null){var p=t=t.next;do{if((p.tag&e)===e){var b=p.destroy;p.destroy=void 0,b!==void 0&&Bc(i,n,b)}p=p.next}while(p!==t)}}function Ds(e,i){if(i=i.updateQueue,i=i!==null?i.lastEffect:null,i!==null){var n=i=i.next;do{if((n.tag&e)===e){var t=n.create;n.destroy=t()}n=n.next}while(n!==i)}}function _c(e){var i=e.ref;if(i!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof i=="function"?i(e):i.current=e}}function hm(e){var i=e.alternate;i!==null&&(e.alternate=null,hm(i)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(i=e.stateNode,i!==null&&(delete i[Fa],delete i[ir],delete i[Ql],delete i[hv],delete i[gv])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function gm(e){return e.tag===5||e.tag===3||e.tag===4}function ym(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||gm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Dc(e,i,n){var t=e.tag;if(t===5||t===6)e=e.stateNode,i?n.nodeType===8?n.parentNode.insertBefore(e,i):n.insertBefore(e,i):(n.nodeType===8?(i=n.parentNode,i.insertBefore(e,n)):(i=n,i.appendChild(e)),n=n._reactRootContainer,n!=null||i.onclick!==null||(i.onclick=cs));else if(t!==4&&(e=e.child,e!==null))for(Dc(e,i,n),e=e.sibling;e!==null;)Dc(e,i,n),e=e.sibling}function Fc(e,i,n){var t=e.tag;if(t===5||t===6)e=e.stateNode,i?n.insertBefore(e,i):n.appendChild(e);else if(t!==4&&(e=e.child,e!==null))for(Fc(e,i,n),e=e.sibling;e!==null;)Fc(e,i,n),e=e.sibling}var Ti=null,ja=!1;function yn(e,i,n){for(n=n.child;n!==null;)bm(e,i,n),n=n.sibling}function bm(e,i,n){if(Da&&typeof Da.onCommitFiberUnmount=="function")try{Da.onCommitFiberUnmount(Wr,n)}catch{}switch(n.tag){case 5:Ui||vo(n,i);case 6:var t=Ti,p=ja;Ti=null,yn(e,i,n),Ti=t,ja=p,Ti!==null&&(ja?(e=Ti,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ti.removeChild(n.stateNode));break;case 18:Ti!==null&&(ja?(e=Ti,n=n.stateNode,e.nodeType===8?$l(e.parentNode,n):e.nodeType===1&&$l(e,n),Uo(e)):$l(Ti,n.stateNode));break;case 4:t=Ti,p=ja,Ti=n.stateNode.containerInfo,ja=!0,yn(e,i,n),Ti=t,ja=p;break;case 0:case 11:case 14:case 15:if(!Ui&&(t=n.updateQueue,t!==null&&(t=t.lastEffect,t!==null))){p=t=t.next;do{var b=p,E=b.destroy;b=b.tag,E!==void 0&&((b&2)!==0||(b&4)!==0)&&Bc(n,i,E),p=p.next}while(p!==t)}yn(e,i,n);break;case 1:if(!Ui&&(vo(n,i),t=n.stateNode,typeof t.componentWillUnmount=="function"))try{t.props=n.memoizedProps,t.state=n.memoizedState,t.componentWillUnmount()}catch(P){gi(n,i,P)}yn(e,i,n);break;case 21:yn(e,i,n);break;case 22:n.mode&1?(Ui=(t=Ui)||n.memoizedState!==null,yn(e,i,n),Ui=t):yn(e,i,n);break;default:yn(e,i,n)}}function fm(e){var i=e.updateQueue;if(i!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new _v),i.forEach(function(t){var p=Lv.bind(null,e,t);n.has(t)||(n.add(t),t.then(p,p))})}}function Aa(e,i){var n=i.deletions;if(n!==null)for(var t=0;tp&&(p=E),t&=~b}if(t=p,t=fi()-t,t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*Rv(t/1960))-t,10e?16:e,fn===null)var t=!1;else{if(e=fn,fn=null,Ns=0,(We&6)!==0)throw Error(o(331));var p=We;for(We|=4,ke=e.current;ke!==null;){var b=ke,E=b.child;if((ke.flags&16)!==0){var P=b.deletions;if(P!==null){for(var M=0;Mfi()-Pc?In(e,0):Tc|=n),ia(e,i)}function _m(e,i){i===0&&((e.mode&1)===0?i=1:(i=Qr,Qr<<=1,(Qr&130023424)===0&&(Qr=4194304)));var n=Qi();e=Qa(e,i),e!==null&&(Mo(e,i,n),ia(e,n))}function Ov(e){var i=e.memoizedState,n=0;i!==null&&(n=i.retryLane),_m(e,n)}function Lv(e,i){var n=0;switch(e.tag){case 13:var t=e.stateNode,p=e.memoizedState;p!==null&&(n=p.retryLane);break;case 19:t=e.stateNode;break;default:throw Error(o(314))}t!==null&&t.delete(i),_m(e,n)}var Dm;Dm=function(e,i,n){if(e!==null)if(e.memoizedProps!==i.pendingProps||Zi.current)Ji=!0;else{if((e.lanes&n)===0&&(i.flags&128)===0)return Ji=!1,Ev(e,i,n);Ji=(e.flags&131072)!==0}else Ji=!1,ci&&(i.flags&1048576)!==0&&dp(i,gs,i.index);switch(i.lanes=0,i.tag){case 2:var t=i.type;Bs(e,i),e=i.pendingProps;var p=co(i,Li.current);yo(i,n),p=mc(null,i,t,e,p,n);var b=hc();return i.flags|=1,typeof p=="object"&&p!==null&&typeof p.render=="function"&&p.$$typeof===void 0?(i.tag=1,i.memoizedState=null,i.updateQueue=null,Xi(t)?(b=!0,ps(i)):b=!1,i.memoizedState=p.state!==null&&p.state!==void 0?p.state:null,sc(i),p.updater=Es,i.stateNode=p,p._reactInternals=i,kc(i,t,e,n),i=qc(null,i,t,!0,b,n)):(i.tag=0,ci&&b&&Yl(i),$i(null,i,p,n),i=i.child),i;case 16:t=i.elementType;e:{switch(Bs(e,i),e=i.pendingProps,p=t._init,t=p(t._payload),i.type=t,p=i.tag=Vv(t),e=qa(t,e),p){case 0:i=zc(null,i,t,e,n);break e;case 1:i=om(null,i,t,e,n);break e;case 11:i=Jp(null,i,t,e,n);break e;case 14:i=em(null,i,t,qa(t.type,e),n);break e}throw Error(o(306,t,""))}return i;case 0:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),zc(e,i,t,p,n);case 1:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),om(e,i,t,p,n);case 3:e:{if(rm(i),e===null)throw Error(o(387));t=i.pendingProps,b=i.memoizedState,p=b.element,kp(e,i),ws(i,t,null,n);var E=i.memoizedState;if(t=E.element,b.isDehydrated)if(b={element:t,isDehydrated:!1,cache:E.cache,pendingSuspenseBoundaries:E.pendingSuspenseBoundaries,transitions:E.transitions},i.updateQueue.baseState=b,i.memoizedState=b,i.flags&256){p=fo(Error(o(423)),i),i=sm(e,i,t,n,p);break e}else if(t!==p){p=fo(Error(o(424)),i),i=sm(e,i,t,n,p);break e}else for(ta=un(i.stateNode.containerInfo.firstChild),sa=i,ci=!0,za=null,n=fp(i,null,t,n),i.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(mo(),t===p){i=Ka(e,i,n);break e}$i(e,i,t,n)}i=i.child}return i;case 5:return zp(i),e===null&&Jl(i),t=i.type,p=i.pendingProps,b=e!==null?e.memoizedProps:null,E=p.children,Ul(t,p)?E=null:b!==null&&Ul(t,b)&&(i.flags|=32),nm(e,i),$i(e,i,E,n),i.child;case 6:return e===null&&Jl(i),null;case 13:return tm(e,i,n);case 4:return tc(i,i.stateNode.containerInfo),t=i.pendingProps,e===null?i.child=ho(i,null,t,n):$i(e,i,t,n),i.child;case 11:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),Jp(e,i,t,p,n);case 7:return $i(e,i,i.pendingProps,n),i.child;case 8:return $i(e,i,i.pendingProps.children,n),i.child;case 12:return $i(e,i,i.pendingProps.children,n),i.child;case 10:e:{if(t=i.type._context,p=i.pendingProps,b=i.memoizedProps,E=p.value,ri(fs,t._currentValue),t._currentValue=E,b!==null)if(xa(b.value,E)){if(b.children===p.children&&!Zi.current){i=Ka(e,i,n);break e}}else for(b=i.child,b!==null&&(b.return=i);b!==null;){var P=b.dependencies;if(P!==null){E=b.child;for(var M=P.firstContext;M!==null;){if(M.context===t){if(b.tag===1){M=Ga(-1,n&-n),M.tag=2;var Z=b.updateQueue;if(Z!==null){Z=Z.shared;var le=Z.pending;le===null?M.next=M:(M.next=le.next,le.next=M),Z.pending=M}}b.lanes|=n,M=b.alternate,M!==null&&(M.lanes|=n),oc(b.return,n,i),P.lanes|=n;break}M=M.next}}else if(b.tag===10)E=b.type===i.type?null:b.child;else if(b.tag===18){if(E=b.return,E===null)throw Error(o(341));E.lanes|=n,P=E.alternate,P!==null&&(P.lanes|=n),oc(E,n,i),E=b.sibling}else E=b.child;if(E!==null)E.return=b;else for(E=b;E!==null;){if(E===i){E=null;break}if(b=E.sibling,b!==null){b.return=E.return,E=b;break}E=E.return}b=E}$i(e,i,p.children,n),i=i.child}return i;case 9:return p=i.type,t=i.pendingProps.children,yo(i,n),p=ha(p),t=t(p),i.flags|=1,$i(e,i,t,n),i.child;case 14:return t=i.type,p=qa(t,i.pendingProps),p=qa(t.type,p),em(e,i,t,p,n);case 15:return im(e,i,i.type,i.pendingProps,n);case 17:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),Bs(e,i),i.tag=1,Xi(t)?(e=!0,ps(i)):e=!1,yo(i,n),$p(i,t,p),kc(i,t,p,n),qc(null,i,t,!0,e,n);case 19:return cm(e,i,n);case 22:return am(e,i,n)}throw Error(o(156,i.tag))};function Fm(e,i){return pd(e,i)}function Hv(e,i,n,t){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=i,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=t,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ba(e,i,n,t){return new Hv(e,i,n,t)}function Uc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vv(e){if(typeof e=="function")return Uc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===W)return 11;if(e===ae)return 14}return 2}function wn(e,i){var n=e.alternate;return n===null?(n=ba(e.tag,i,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=i,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,i=e.dependencies,n.dependencies=i===null?null:{lanes:i.lanes,firstContext:i.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ls(e,i,n,t,p,b){var E=2;if(t=e,typeof e=="function")Uc(e)&&(E=1);else if(typeof e=="string")E=5;else e:switch(e){case R:return On(n.children,p,b,i);case F:E=8,p|=8;break;case O:return e=ba(12,n,i,p|2),e.elementType=O,e.lanes=b,e;case H:return e=ba(13,n,i,p),e.elementType=H,e.lanes=b,e;case K:return e=ba(19,n,i,p),e.elementType=K,e.lanes=b,e;case ne:return Hs(n,p,b,i);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case N:E=10;break e;case T:E=9;break e;case W:E=11;break e;case ae:E=14;break e;case X:E=16,t=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return i=ba(E,n,i,p),i.elementType=e,i.type=t,i.lanes=b,i}function On(e,i,n,t){return e=ba(7,e,t,i),e.lanes=n,e}function Hs(e,i,n,t){return e=ba(22,e,t,i),e.elementType=ne,e.lanes=n,e.stateNode={isHidden:!1},e}function Wc(e,i,n){return e=ba(6,e,null,i),e.lanes=n,e}function $c(e,i,n){return i=ba(4,e.children!==null?e.children:[],e.key,i),i.lanes=n,i.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},i}function Uv(e,i,n,t,p){this.tag=i,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vl(0),this.expirationTimes=vl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vl(0),this.identifierPrefix=t,this.onRecoverableError=p,this.mutableSourceEagerHydrationData=null}function Qc(e,i,n,t,p,b,E,P,M){return e=new Uv(e,i,n,P,M),i===1?(i=1,b===!0&&(i|=8)):i=0,b=ba(3,null,null,i),e.current=b,b.stateNode=e,b.memoizedState={element:t,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},sc(b),e}function Wv(e,i,n){var t=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(r){console.error(r)}}return a(),eu.exports=rk(),eu.exports}var Qm;function sk(){if(Qm)return Ks;Qm=1;var a=Ug();return Ks.createRoot=a.createRoot,Ks.hydrateRoot=a.hydrateRoot,Ks}var tk=sk();const lk="/api";async function oi(a,r){const o=await fetch(`${lk}${a}`,{...r,headers:{"Content-Type":"application/json",...r==null?void 0:r.headers}});if(!o.ok){const s=await o.text();throw new Error(s||o.statusText)}return o.json()}const ei={getHealth:()=>oi("/health"),getRadioConfig:()=>oi("/radio/config"),updateRadioConfig:a=>oi("/radio/config",{method:"PATCH",body:JSON.stringify(a)}),setPrivateKey:a=>oi("/radio/private-key",{method:"PUT",body:JSON.stringify({private_key:a})}),sendAdvertisement:(a=!0)=>oi(`/radio/advertise?flood=${a}`,{method:"POST"}),rebootRadio:()=>oi("/radio/reboot",{method:"POST"}),reconnectRadio:()=>oi("/radio/reconnect",{method:"POST"}),getContacts:(a=100,r=0)=>oi(`/contacts?limit=${a}&offset=${r}`),getContact:a=>oi(`/contacts/${a}`),syncContacts:()=>oi("/contacts/sync",{method:"POST"}),addContactToRadio:a=>oi(`/contacts/${a}/add-to-radio`,{method:"POST"}),removeContactFromRadio:a=>oi(`/contacts/${a}/remove-from-radio`,{method:"POST"}),deleteContact:a=>oi(`/contacts/${a}`,{method:"DELETE"}),requestTelemetry:(a,r)=>oi(`/contacts/${a}/telemetry`,{method:"POST",body:JSON.stringify({password:r})}),sendRepeaterCommand:(a,r)=>oi(`/contacts/${a}/command`,{method:"POST",body:JSON.stringify({command:r})}),getChannels:()=>oi("/channels"),getChannel:a=>oi(`/channels/${a}`),createChannel:(a,r)=>oi("/channels",{method:"POST",body:JSON.stringify({name:a,key:r})}),syncChannels:()=>oi("/channels/sync",{method:"POST"}),deleteChannel:a=>oi(`/channels/${a}`,{method:"DELETE"}),getMessages:a=>{const r=new URLSearchParams;a!=null&&a.limit&&r.set("limit",a.limit.toString()),a!=null&&a.offset&&r.set("offset",a.offset.toString()),a!=null&&a.type&&r.set("type",a.type),a!=null&&a.conversation_key&&r.set("conversation_key",a.conversation_key);const o=r.toString();return oi(`/messages${o?`?${o}`:""}`)},getMessagesBulk:(a,r=100)=>oi(`/messages/bulk?limit_per_conversation=${r}`,{method:"POST",body:JSON.stringify(a)}),sendDirectMessage:(a,r)=>oi("/messages/direct",{method:"POST",body:JSON.stringify({destination:a,text:r})}),sendChannelMessage:(a,r)=>oi("/messages/channel",{method:"POST",body:JSON.stringify({channel_key:a,text:r})}),getUndecryptedPacketCount:()=>oi("/packets/undecrypted/count"),decryptHistoricalPackets:a=>oi("/packets/decrypt/historical",{method:"POST",body:JSON.stringify(a)}),getSettings:()=>oi("/settings"),updateSettings:a=>oi("/settings",{method:"PATCH",body:JSON.stringify(a)})};function ck(a){const r=S.useRef(null),o=S.useRef(null),[s,u]=S.useState(!1),l=S.useCallback(()=>{const m=window.location.protocol==="https:"?"wss:":"ws:",h=window.location.port==="5173"?"ws://localhost:8000/api/ws":`${m}//${window.location.host}/api/ws`,d=new WebSocket(h);d.onopen=()=>{console.log("WebSocket connected"),u(!0)},d.onclose=()=>{console.log("WebSocket disconnected"),u(!1),r.current=null,o.current=window.setTimeout(()=>{console.log("Attempting WebSocket reconnect..."),l()},3e3)},d.onerror=y=>{console.error("WebSocket error:",y)},d.onmessage=y=>{var g,f,z,k,j,v,A,C;try{const w=JSON.parse(y.data);switch(w.type){case"health":(g=a.onHealth)==null||g.call(a,w.data);break;case"contacts":(f=a.onContacts)==null||f.call(a,w.data);break;case"channels":(z=a.onChannels)==null||z.call(a,w.data);break;case"message":(k=a.onMessage)==null||k.call(a,w.data);break;case"contact":(j=a.onContact)==null||j.call(a,w.data);break;case"raw_packet":(v=a.onRawPacket)==null||v.call(a,w.data);break;case"message_acked":(A=a.onMessageAcked)==null||A.call(a,w.data.message_id);break;case"error":(C=a.onError)==null||C.call(a,w.data);break;case"pong":break;default:console.log("Unknown WebSocket message type:",w.type)}}catch(w){console.error("Failed to parse WebSocket message:",w)}},r.current=d},[a]);return S.useEffect(()=>{l();const m=setInterval(()=>{var c;((c=r.current)==null?void 0:c.readyState)===WebSocket.OPEN&&r.current.send("ping")},3e4);return()=>{clearInterval(m),o.current&&clearTimeout(o.current),r.current&&r.current.close()}},[l]),{connected:s}}/** +`+b.stack}return{value:e,source:i,stack:p,digest:null}}function wc(e,i,n){return{value:e,source:null,stack:n??null,digest:i??null}}function xc(e,i){try{console.error(i.value)}catch(n){setTimeout(function(){throw n})}}var jv=typeof WeakMap=="function"?WeakMap:Map;function Gp(e,i,n){n=Ga(-1,n),n.tag=3,n.payload={element:null};var t=i.value;return n.callback=function(){Ts||(Ts=!0,Nc=t),xc(e,i)},n}function Kp(e,i,n){n=Ga(-1,n),n.tag=3;var t=e.type.getDerivedStateFromError;if(typeof t=="function"){var p=i.value;n.payload=function(){return t(p)},n.callback=function(){xc(e,i)}}var b=e.stateNode;return b!==null&&typeof b.componentDidCatch=="function"&&(n.callback=function(){xc(e,i),typeof t!="function"&&(bn===null?bn=new Set([this]):bn.add(this));var E=i.stack;this.componentDidCatch(i.value,{componentStack:E!==null?E:""})}),n}function Yp(e,i,n){var t=e.pingCache;if(t===null){t=e.pingCache=new jv;var p=new Set;t.set(i,p)}else p=t.get(i),p===void 0&&(p=new Set,t.set(i,p));p.has(n)||(p.add(n),e=Mv.bind(null,e,i,n),i.then(e,e))}function Zp(e){do{var i;if((i=e.tag===13)&&(i=e.memoizedState,i=i!==null?i.dehydrated!==null:!0),i)return e;e=e.return}while(e!==null);return null}function Xp(e,i,n,t,p){return(e.mode&1)===0?(e===i?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(i=Ga(-1,1),i.tag=2,gn(n,i,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=p,e)}var Av=_.ReactCurrentOwner,Ji=!1;function $i(e,i,n,t){i.child=e===null?fp(i,null,n,t):ho(i,e.child,n,t)}function Jp(e,i,n,t,p){n=n.render;var b=i.ref;return yo(i,p),t=mc(e,i,n,t,b,p),n=hc(),e!==null&&!Ji?(i.updateQueue=e.updateQueue,i.flags&=-2053,e.lanes&=~p,Ka(e,i,p)):(ci&&n&&Yl(i),i.flags|=1,$i(e,i,t,p),i.child)}function em(e,i,n,t,p){if(e===null){var b=n.type;return typeof b=="function"&&!Uc(b)&&b.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(i.tag=15,i.type=b,im(e,i,b,t,p)):(e=Ls(n.type,null,t,i,i.mode,p),e.ref=i.ref,e.return=i,i.child=e)}if(b=e.child,(e.lanes&p)===0){var E=b.memoizedProps;if(n=n.compare,n=n!==null?n:Yo,n(E,t)&&e.ref===i.ref)return Ka(e,i,p)}return i.flags|=1,e=wn(b,t),e.ref=i.ref,e.return=i,i.child=e}function im(e,i,n,t,p){if(e!==null){var b=e.memoizedProps;if(Yo(b,t)&&e.ref===i.ref)if(Ji=!1,i.pendingProps=t=b,(e.lanes&p)!==0)(e.flags&131072)!==0&&(Ji=!0);else return i.lanes=e.lanes,Ka(e,i,p)}return zc(e,i,n,t,p)}function am(e,i,n){var t=i.pendingProps,p=t.children,b=e!==null?e.memoizedState:null;if(t.mode==="hidden")if((i.mode&1)===0)i.memoizedState={baseLanes:0,cachePool:null,transitions:null},ri(ko,la),la|=n;else{if((n&1073741824)===0)return e=b!==null?b.baseLanes|n:n,i.lanes=i.childLanes=1073741824,i.memoizedState={baseLanes:e,cachePool:null,transitions:null},i.updateQueue=null,ri(ko,la),la|=e,null;i.memoizedState={baseLanes:0,cachePool:null,transitions:null},t=b!==null?b.baseLanes:n,ri(ko,la),la|=t}else b!==null?(t=b.baseLanes|n,i.memoizedState=null):t=n,ri(ko,la),la|=t;return $i(e,i,p,n),i.child}function nm(e,i){var n=i.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(i.flags|=512,i.flags|=2097152)}function zc(e,i,n,t,p){var b=Xi(n)?Bn:Li.current;return b=co(i,b),yo(i,p),n=mc(e,i,n,t,b,p),t=hc(),e!==null&&!Ji?(i.updateQueue=e.updateQueue,i.flags&=-2053,e.lanes&=~p,Ka(e,i,p)):(ci&&t&&Yl(i),i.flags|=1,$i(e,i,n,p),i.child)}function om(e,i,n,t,p){if(Xi(n)){var b=!0;ps(i)}else b=!1;if(yo(i,p),i.stateNode===null)Bs(e,i),$p(i,n,t),kc(i,n,t,p),t=!0;else if(e===null){var E=i.stateNode,P=i.memoizedProps;E.props=P;var M=E.context,Z=n.contextType;typeof Z=="object"&&Z!==null?Z=ha(Z):(Z=Xi(n)?Bn:Li.current,Z=co(i,Z));var le=n.getDerivedStateFromProps,ue=typeof le=="function"||typeof E.getSnapshotBeforeUpdate=="function";ue||typeof E.UNSAFE_componentWillReceiveProps!="function"&&typeof E.componentWillReceiveProps!="function"||(P!==t||M!==Z)&&Qp(i,E,t,Z),hn=!1;var te=i.memoizedState;E.state=te,ws(i,t,E,p),M=i.memoizedState,P!==t||te!==M||Zi.current||hn?(typeof le=="function"&&(vc(i,n,le,t),M=i.memoizedState),(P=hn||Wp(i,n,P,t,te,M,Z))?(ue||typeof E.UNSAFE_componentWillMount!="function"&&typeof E.componentWillMount!="function"||(typeof E.componentWillMount=="function"&&E.componentWillMount(),typeof E.UNSAFE_componentWillMount=="function"&&E.UNSAFE_componentWillMount()),typeof E.componentDidMount=="function"&&(i.flags|=4194308)):(typeof E.componentDidMount=="function"&&(i.flags|=4194308),i.memoizedProps=t,i.memoizedState=M),E.props=t,E.state=M,E.context=Z,t=P):(typeof E.componentDidMount=="function"&&(i.flags|=4194308),t=!1)}else{E=i.stateNode,kp(e,i),P=i.memoizedProps,Z=i.type===i.elementType?P:qa(i.type,P),E.props=Z,ue=i.pendingProps,te=E.context,M=n.contextType,typeof M=="object"&&M!==null?M=ha(M):(M=Xi(n)?Bn:Li.current,M=co(i,M));var ve=n.getDerivedStateFromProps;(le=typeof ve=="function"||typeof E.getSnapshotBeforeUpdate=="function")||typeof E.UNSAFE_componentWillReceiveProps!="function"&&typeof E.componentWillReceiveProps!="function"||(P!==ue||te!==M)&&Qp(i,E,t,M),hn=!1,te=i.memoizedState,E.state=te,ws(i,t,E,p);var we=i.memoizedState;P!==ue||te!==we||Zi.current||hn?(typeof ve=="function"&&(vc(i,n,ve,t),we=i.memoizedState),(Z=hn||Wp(i,n,Z,t,te,we,M)||!1)?(le||typeof E.UNSAFE_componentWillUpdate!="function"&&typeof E.componentWillUpdate!="function"||(typeof E.componentWillUpdate=="function"&&E.componentWillUpdate(t,we,M),typeof E.UNSAFE_componentWillUpdate=="function"&&E.UNSAFE_componentWillUpdate(t,we,M)),typeof E.componentDidUpdate=="function"&&(i.flags|=4),typeof E.getSnapshotBeforeUpdate=="function"&&(i.flags|=1024)):(typeof E.componentDidUpdate!="function"||P===e.memoizedProps&&te===e.memoizedState||(i.flags|=4),typeof E.getSnapshotBeforeUpdate!="function"||P===e.memoizedProps&&te===e.memoizedState||(i.flags|=1024),i.memoizedProps=t,i.memoizedState=we),E.props=t,E.state=we,E.context=M,t=Z):(typeof E.componentDidUpdate!="function"||P===e.memoizedProps&&te===e.memoizedState||(i.flags|=4),typeof E.getSnapshotBeforeUpdate!="function"||P===e.memoizedProps&&te===e.memoizedState||(i.flags|=1024),t=!1)}return qc(e,i,n,t,b,p)}function qc(e,i,n,t,p,b){nm(e,i);var E=(i.flags&128)!==0;if(!t&&!E)return p&&cp(i,n,!1),Ka(e,i,b);t=i.stateNode,Av.current=i;var P=E&&typeof n.getDerivedStateFromError!="function"?null:t.render();return i.flags|=1,e!==null&&E?(i.child=ho(i,e.child,null,b),i.child=ho(i,null,P,b)):$i(e,i,P,b),i.memoizedState=t.state,p&&cp(i,n,!0),i.child}function rm(e){var i=e.stateNode;i.pendingContext?tp(e,i.pendingContext,i.pendingContext!==i.context):i.context&&tp(e,i.context,!1),tc(e,i.containerInfo)}function sm(e,i,n,t,p){return mo(),ec(p),i.flags|=256,$i(e,i,n,t),i.child}var jc={dehydrated:null,treeContext:null,retryLane:0};function Ac(e){return{baseLanes:e,cachePool:null,transitions:null}}function tm(e,i,n){var t=i.pendingProps,p=di.current,b=!1,E=(i.flags&128)!==0,P;if((P=E)||(P=e!==null&&e.memoizedState===null?!1:(p&2)!==0),P?(b=!0,i.flags&=-129):(e===null||e.memoizedState!==null)&&(p|=1),ri(di,p&1),e===null)return Jl(i),e=i.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((i.mode&1)===0?i.lanes=1:e.data==="$!"?i.lanes=8:i.lanes=1073741824,null):(E=t.children,e=t.fallback,b?(t=i.mode,b=i.child,E={mode:"hidden",children:E},(t&1)===0&&b!==null?(b.childLanes=0,b.pendingProps=E):b=Hs(E,t,0,null),e=On(e,t,n,null),b.return=i,e.return=i,b.sibling=e,i.child=b,i.child.memoizedState=Ac(n),i.memoizedState=jc,e):Cc(i,E));if(p=e.memoizedState,p!==null&&(P=p.dehydrated,P!==null))return Cv(e,i,E,t,P,p,n);if(b){b=t.fallback,E=i.mode,p=e.child,P=p.sibling;var M={mode:"hidden",children:t.children};return(E&1)===0&&i.child!==p?(t=i.child,t.childLanes=0,t.pendingProps=M,i.deletions=null):(t=wn(p,M),t.subtreeFlags=p.subtreeFlags&14680064),P!==null?b=wn(P,b):(b=On(b,E,n,null),b.flags|=2),b.return=i,t.return=i,t.sibling=b,i.child=t,t=b,b=i.child,E=e.child.memoizedState,E=E===null?Ac(n):{baseLanes:E.baseLanes|n,cachePool:null,transitions:E.transitions},b.memoizedState=E,b.childLanes=e.childLanes&~n,i.memoizedState=jc,t}return b=e.child,e=b.sibling,t=wn(b,{mode:"visible",children:t.children}),(i.mode&1)===0&&(t.lanes=n),t.return=i,t.sibling=null,e!==null&&(n=i.deletions,n===null?(i.deletions=[e],i.flags|=16):n.push(e)),i.child=t,i.memoizedState=null,t}function Cc(e,i){return i=Hs({mode:"visible",children:i},e.mode,0,null),i.return=e,e.child=i}function Ss(e,i,n,t){return t!==null&&ec(t),ho(i,e.child,null,n),e=Cc(i,i.pendingProps.children),e.flags|=2,i.memoizedState=null,e}function Cv(e,i,n,t,p,b,E){if(n)return i.flags&256?(i.flags&=-257,t=wc(Error(o(422))),Ss(e,i,E,t)):i.memoizedState!==null?(i.child=e.child,i.flags|=128,null):(b=t.fallback,p=i.mode,t=Hs({mode:"visible",children:t.children},p,0,null),b=On(b,p,E,null),b.flags|=2,t.return=i,b.return=i,t.sibling=b,i.child=t,(i.mode&1)!==0&&ho(i,e.child,null,E),i.child.memoizedState=Ac(E),i.memoizedState=jc,b);if((i.mode&1)===0)return Ss(e,i,E,null);if(p.data==="$!"){if(t=p.nextSibling&&p.nextSibling.dataset,t)var P=t.dgst;return t=P,b=Error(o(419)),t=wc(b,t,void 0),Ss(e,i,E,t)}if(P=(E&e.childLanes)!==0,Ji||P){if(t=_i,t!==null){switch(E&-E){case 4:p=2;break;case 16:p=8;break;case 64: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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:p=32;break;case 536870912:p=268435456;break;default:p=0}p=(p&(t.suspendedLanes|E))!==0?0:p,p!==0&&p!==b.retryLane&&(b.retryLane=p,Qa(e,p),Ca(t,e,p,-1))}return Vc(),t=wc(Error(o(421))),Ss(e,i,E,t)}return p.data==="$?"?(i.flags|=128,i.child=e.child,i=Ov.bind(null,e),p._reactRetry=i,null):(e=b.treeContext,ta=un(p.nextSibling),sa=i,ci=!0,za=null,e!==null&&(pa[ma++]=Wa,pa[ma++]=$a,pa[ma++]=_n,Wa=e.id,$a=e.overflow,_n=i),i=Cc(i,t.children),i.flags|=4096,i)}function lm(e,i,n){e.lanes|=i;var t=e.alternate;t!==null&&(t.lanes|=i),oc(e.return,i,n)}function Ec(e,i,n,t,p){var b=e.memoizedState;b===null?e.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:t,tail:n,tailMode:p}:(b.isBackwards=i,b.rendering=null,b.renderingStartTime=0,b.last=t,b.tail=n,b.tailMode=p)}function cm(e,i,n){var t=i.pendingProps,p=t.revealOrder,b=t.tail;if($i(e,i,t.children,n),t=di.current,(t&2)!==0)t=t&1|2,i.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=i.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&lm(e,n,i);else if(e.tag===19)lm(e,n,i);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===i)break e;for(;e.sibling===null;){if(e.return===null||e.return===i)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}t&=1}if(ri(di,t),(i.mode&1)===0)i.memoizedState=null;else switch(p){case"forwards":for(n=i.child,p=null;n!==null;)e=n.alternate,e!==null&&xs(e)===null&&(p=n),n=n.sibling;n=p,n===null?(p=i.child,i.child=null):(p=n.sibling,n.sibling=null),Ec(i,!1,p,n,b);break;case"backwards":for(n=null,p=i.child,i.child=null;p!==null;){if(e=p.alternate,e!==null&&xs(e)===null){i.child=p;break}e=p.sibling,p.sibling=n,n=p,p=e}Ec(i,!0,n,null,b);break;case"together":Ec(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function Bs(e,i){(i.mode&1)===0&&e!==null&&(e.alternate=null,i.alternate=null,i.flags|=2)}function Ka(e,i,n){if(e!==null&&(i.dependencies=e.dependencies),Pn|=i.lanes,(n&i.childLanes)===0)return null;if(e!==null&&i.child!==e.child)throw Error(o(153));if(i.child!==null){for(e=i.child,n=wn(e,e.pendingProps),i.child=n,n.return=i;e.sibling!==null;)e=e.sibling,n=n.sibling=wn(e,e.pendingProps),n.return=i;n.sibling=null}return i.child}function Ev(e,i,n){switch(i.tag){case 3:rm(i),mo();break;case 5:zp(i);break;case 1:Xi(i.type)&&ps(i);break;case 4:tc(i,i.stateNode.containerInfo);break;case 10:var t=i.type._context,p=i.memoizedProps.value;ri(fs,t._currentValue),t._currentValue=p;break;case 13:if(t=i.memoizedState,t!==null)return t.dehydrated!==null?(ri(di,di.current&1),i.flags|=128,null):(n&i.child.childLanes)!==0?tm(e,i,n):(ri(di,di.current&1),e=Ka(e,i,n),e!==null?e.sibling:null);ri(di,di.current&1);break;case 19:if(t=(n&i.childLanes)!==0,(e.flags&128)!==0){if(t)return cm(e,i,n);i.flags|=128}if(p=i.memoizedState,p!==null&&(p.rendering=null,p.tail=null,p.lastEffect=null),ri(di,di.current),t)break;return null;case 22:case 23:return i.lanes=0,am(e,i,n)}return Ka(e,i,n)}var um,Sc,dm,pm;um=function(e,i){for(var n=i.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===i)break;for(;n.sibling===null;){if(n.return===null||n.return===i)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Sc=function(){},dm=function(e,i,n,t){var p=e.memoizedProps;if(p!==t){e=i.stateNode,Rn(Ra.current);var b=null;switch(n){case"input":p=Qe(e,p),t=Qe(e,t),b=[];break;case"select":p=ee({},p,{value:void 0}),t=ee({},t,{value:void 0}),b=[];break;case"textarea":p=Le(e,p),t=Le(e,t),b=[];break;default:typeof p.onClick!="function"&&typeof t.onClick=="function"&&(e.onclick=cs)}pe(n,t);var E;n=null;for(Z in p)if(!t.hasOwnProperty(Z)&&p.hasOwnProperty(Z)&&p[Z]!=null)if(Z==="style"){var P=p[Z];for(E in P)P.hasOwnProperty(E)&&(n||(n={}),n[E]="")}else Z!=="dangerouslySetInnerHTML"&&Z!=="children"&&Z!=="suppressContentEditableWarning"&&Z!=="suppressHydrationWarning"&&Z!=="autoFocus"&&(u.hasOwnProperty(Z)?b||(b=[]):(b=b||[]).push(Z,null));for(Z in t){var M=t[Z];if(P=p!=null?p[Z]:void 0,t.hasOwnProperty(Z)&&M!==P&&(M!=null||P!=null))if(Z==="style")if(P){for(E in P)!P.hasOwnProperty(E)||M&&M.hasOwnProperty(E)||(n||(n={}),n[E]="");for(E in M)M.hasOwnProperty(E)&&P[E]!==M[E]&&(n||(n={}),n[E]=M[E])}else n||(b||(b=[]),b.push(Z,n)),n=M;else Z==="dangerouslySetInnerHTML"?(M=M?M.__html:void 0,P=P?P.__html:void 0,M!=null&&P!==M&&(b=b||[]).push(Z,M)):Z==="children"?typeof M!="string"&&typeof M!="number"||(b=b||[]).push(Z,""+M):Z!=="suppressContentEditableWarning"&&Z!=="suppressHydrationWarning"&&(u.hasOwnProperty(Z)?(M!=null&&Z==="onScroll"&&ti("scroll",e),b||P===M||(b=[])):(b=b||[]).push(Z,M))}n&&(b=b||[]).push("style",n);var Z=b;(i.updateQueue=Z)&&(i.flags|=4)}},pm=function(e,i,n,t){n!==t&&(i.flags|=4)};function dr(e,i){if(!ci)switch(e.tailMode){case"hidden":i=e.tail;for(var n=null;i!==null;)i.alternate!==null&&(n=i),i=i.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var t=null;n!==null;)n.alternate!==null&&(t=n),n=n.sibling;t===null?i||e.tail===null?e.tail=null:e.tail.sibling=null:t.sibling=null}}function Vi(e){var i=e.alternate!==null&&e.alternate.child===e.child,n=0,t=0;if(i)for(var p=e.child;p!==null;)n|=p.lanes|p.childLanes,t|=p.subtreeFlags&14680064,t|=p.flags&14680064,p.return=e,p=p.sibling;else for(p=e.child;p!==null;)n|=p.lanes|p.childLanes,t|=p.subtreeFlags,t|=p.flags,p.return=e,p=p.sibling;return e.subtreeFlags|=t,e.childLanes=n,i}function Sv(e,i,n){var t=i.pendingProps;switch(Zl(i),i.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vi(i),null;case 1:return Xi(i.type)&&ds(),Vi(i),null;case 3:return t=i.stateNode,bo(),li(Zi),li(Li),uc(),t.pendingContext&&(t.context=t.pendingContext,t.pendingContext=null),(e===null||e.child===null)&&(ys(i)?i.flags|=4:e===null||e.memoizedState.isDehydrated&&(i.flags&256)===0||(i.flags|=1024,za!==null&&(Oc(za),za=null))),Sc(e,i),Vi(i),null;case 5:lc(i);var p=Rn(sr.current);if(n=i.type,e!==null&&i.stateNode!=null)dm(e,i,n,t,p),e.ref!==i.ref&&(i.flags|=512,i.flags|=2097152);else{if(!t){if(i.stateNode===null)throw Error(o(166));return Vi(i),null}if(e=Rn(Ra.current),ys(i)){t=i.stateNode,n=i.type;var b=i.memoizedProps;switch(t[Fa]=i,t[ir]=b,e=(i.mode&1)!==0,n){case"dialog":ti("cancel",t),ti("close",t);break;case"iframe":case"object":case"embed":ti("load",t);break;case"video":case"audio":for(p=0;p<\/script>",e=e.removeChild(e.firstChild)):typeof t.is=="string"?e=E.createElement(n,{is:t.is}):(e=E.createElement(n),n==="select"&&(E=e,t.multiple?E.multiple=!0:t.size&&(E.size=t.size))):e=E.createElementNS(e,n),e[Fa]=i,e[ir]=t,um(e,i,!1,!1),i.stateNode=e;e:{switch(E=V(n,t),n){case"dialog":ti("cancel",e),ti("close",e),p=t;break;case"iframe":case"object":case"embed":ti("load",e),p=t;break;case"video":case"audio":for(p=0;pwo&&(i.flags|=128,t=!0,dr(b,!1),i.lanes=4194304)}else{if(!t)if(e=xs(E),e!==null){if(i.flags|=128,t=!0,n=e.updateQueue,n!==null&&(i.updateQueue=n,i.flags|=4),dr(b,!0),b.tail===null&&b.tailMode==="hidden"&&!E.alternate&&!ci)return Vi(i),null}else 2*fi()-b.renderingStartTime>wo&&n!==1073741824&&(i.flags|=128,t=!0,dr(b,!1),i.lanes=4194304);b.isBackwards?(E.sibling=i.child,i.child=E):(n=b.last,n!==null?n.sibling=E:i.child=E,b.last=E)}return b.tail!==null?(i=b.tail,b.rendering=i,b.tail=i.sibling,b.renderingStartTime=fi(),i.sibling=null,n=di.current,ri(di,t?n&1|2:n&1),i):(Vi(i),null);case 22:case 23:return Hc(),t=i.memoizedState!==null,e!==null&&e.memoizedState!==null!==t&&(i.flags|=8192),t&&(i.mode&1)!==0?(la&1073741824)!==0&&(Vi(i),i.subtreeFlags&6&&(i.flags|=8192)):Vi(i),null;case 24:return null;case 25:return null}throw Error(o(156,i.tag))}function Bv(e,i){switch(Zl(i),i.tag){case 1:return Xi(i.type)&&ds(),e=i.flags,e&65536?(i.flags=e&-65537|128,i):null;case 3:return bo(),li(Zi),li(Li),uc(),e=i.flags,(e&65536)!==0&&(e&128)===0?(i.flags=e&-65537|128,i):null;case 5:return lc(i),null;case 13:if(li(di),e=i.memoizedState,e!==null&&e.dehydrated!==null){if(i.alternate===null)throw Error(o(340));mo()}return e=i.flags,e&65536?(i.flags=e&-65537|128,i):null;case 19:return li(di),null;case 4:return bo(),null;case 10:return nc(i.type._context),null;case 22:case 23:return Hc(),null;case 24:return null;default:return null}}var _s=!1,Ui=!1,_v=typeof WeakSet=="function"?WeakSet:Set,ke=null;function vo(e,i){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(t){gi(e,i,t)}else n.current=null}function Bc(e,i,n){try{n()}catch(t){gi(e,i,t)}}var mm=!1;function Dv(e,i){if(Hl=Zr,e=Wd(),Rl(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var t=n.getSelection&&n.getSelection();if(t&&t.rangeCount!==0){n=t.anchorNode;var p=t.anchorOffset,b=t.focusNode;t=t.focusOffset;try{n.nodeType,b.nodeType}catch{n=null;break e}var E=0,P=-1,M=-1,Z=0,le=0,ue=e,te=null;i:for(;;){for(var ve;ue!==n||p!==0&&ue.nodeType!==3||(P=E+p),ue!==b||t!==0&&ue.nodeType!==3||(M=E+t),ue.nodeType===3&&(E+=ue.nodeValue.length),(ve=ue.firstChild)!==null;)te=ue,ue=ve;for(;;){if(ue===e)break i;if(te===n&&++Z===p&&(P=E),te===b&&++le===t&&(M=E),(ve=ue.nextSibling)!==null)break;ue=te,te=ue.parentNode}ue=ve}n=P===-1||M===-1?null:{start:P,end:M}}else n=null}n=n||{start:0,end:0}}else n=null;for(Vl={focusedElem:e,selectionRange:n},Zr=!1,ke=i;ke!==null;)if(i=ke,e=i.child,(i.subtreeFlags&1028)!==0&&e!==null)e.return=i,ke=e;else for(;ke!==null;){i=ke;try{var we=i.alternate;if((i.flags&1024)!==0)switch(i.tag){case 0:case 11:case 15:break;case 1:if(we!==null){var je=we.memoizedProps,vi=we.memoizedState,G=i.stateNode,U=G.getSnapshotBeforeUpdate(i.elementType===i.type?je:qa(i.type,je),vi);G.__reactInternalSnapshotBeforeUpdate=U}break;case 3:var Y=i.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(me){gi(i,i.return,me)}if(e=i.sibling,e!==null){e.return=i.return,ke=e;break}ke=i.return}return we=mm,mm=!1,we}function pr(e,i,n){var t=i.updateQueue;if(t=t!==null?t.lastEffect:null,t!==null){var p=t=t.next;do{if((p.tag&e)===e){var b=p.destroy;p.destroy=void 0,b!==void 0&&Bc(i,n,b)}p=p.next}while(p!==t)}}function Ds(e,i){if(i=i.updateQueue,i=i!==null?i.lastEffect:null,i!==null){var n=i=i.next;do{if((n.tag&e)===e){var t=n.create;n.destroy=t()}n=n.next}while(n!==i)}}function _c(e){var i=e.ref;if(i!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof i=="function"?i(e):i.current=e}}function hm(e){var i=e.alternate;i!==null&&(e.alternate=null,hm(i)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(i=e.stateNode,i!==null&&(delete i[Fa],delete i[ir],delete i[Ql],delete i[hv],delete i[gv])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function gm(e){return e.tag===5||e.tag===3||e.tag===4}function ym(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||gm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Dc(e,i,n){var t=e.tag;if(t===5||t===6)e=e.stateNode,i?n.nodeType===8?n.parentNode.insertBefore(e,i):n.insertBefore(e,i):(n.nodeType===8?(i=n.parentNode,i.insertBefore(e,n)):(i=n,i.appendChild(e)),n=n._reactRootContainer,n!=null||i.onclick!==null||(i.onclick=cs));else if(t!==4&&(e=e.child,e!==null))for(Dc(e,i,n),e=e.sibling;e!==null;)Dc(e,i,n),e=e.sibling}function Fc(e,i,n){var t=e.tag;if(t===5||t===6)e=e.stateNode,i?n.insertBefore(e,i):n.appendChild(e);else if(t!==4&&(e=e.child,e!==null))for(Fc(e,i,n),e=e.sibling;e!==null;)Fc(e,i,n),e=e.sibling}var Ti=null,ja=!1;function yn(e,i,n){for(n=n.child;n!==null;)bm(e,i,n),n=n.sibling}function bm(e,i,n){if(Da&&typeof Da.onCommitFiberUnmount=="function")try{Da.onCommitFiberUnmount(Wr,n)}catch{}switch(n.tag){case 5:Ui||vo(n,i);case 6:var t=Ti,p=ja;Ti=null,yn(e,i,n),Ti=t,ja=p,Ti!==null&&(ja?(e=Ti,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ti.removeChild(n.stateNode));break;case 18:Ti!==null&&(ja?(e=Ti,n=n.stateNode,e.nodeType===8?$l(e.parentNode,n):e.nodeType===1&&$l(e,n),Uo(e)):$l(Ti,n.stateNode));break;case 4:t=Ti,p=ja,Ti=n.stateNode.containerInfo,ja=!0,yn(e,i,n),Ti=t,ja=p;break;case 0:case 11:case 14:case 15:if(!Ui&&(t=n.updateQueue,t!==null&&(t=t.lastEffect,t!==null))){p=t=t.next;do{var b=p,E=b.destroy;b=b.tag,E!==void 0&&((b&2)!==0||(b&4)!==0)&&Bc(n,i,E),p=p.next}while(p!==t)}yn(e,i,n);break;case 1:if(!Ui&&(vo(n,i),t=n.stateNode,typeof t.componentWillUnmount=="function"))try{t.props=n.memoizedProps,t.state=n.memoizedState,t.componentWillUnmount()}catch(P){gi(n,i,P)}yn(e,i,n);break;case 21:yn(e,i,n);break;case 22:n.mode&1?(Ui=(t=Ui)||n.memoizedState!==null,yn(e,i,n),Ui=t):yn(e,i,n);break;default:yn(e,i,n)}}function fm(e){var i=e.updateQueue;if(i!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new _v),i.forEach(function(t){var p=Lv.bind(null,e,t);n.has(t)||(n.add(t),t.then(p,p))})}}function Aa(e,i){var n=i.deletions;if(n!==null)for(var t=0;tp&&(p=E),t&=~b}if(t=p,t=fi()-t,t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*Rv(t/1960))-t,10e?16:e,fn===null)var t=!1;else{if(e=fn,fn=null,Ns=0,(We&6)!==0)throw Error(o(331));var p=We;for(We|=4,ke=e.current;ke!==null;){var b=ke,E=b.child;if((ke.flags&16)!==0){var P=b.deletions;if(P!==null){for(var M=0;Mfi()-Pc?In(e,0):Tc|=n),ia(e,i)}function _m(e,i){i===0&&((e.mode&1)===0?i=1:(i=Qr,Qr<<=1,(Qr&130023424)===0&&(Qr=4194304)));var n=Qi();e=Qa(e,i),e!==null&&(Mo(e,i,n),ia(e,n))}function Ov(e){var i=e.memoizedState,n=0;i!==null&&(n=i.retryLane),_m(e,n)}function Lv(e,i){var n=0;switch(e.tag){case 13:var t=e.stateNode,p=e.memoizedState;p!==null&&(n=p.retryLane);break;case 19:t=e.stateNode;break;default:throw Error(o(314))}t!==null&&t.delete(i),_m(e,n)}var Dm;Dm=function(e,i,n){if(e!==null)if(e.memoizedProps!==i.pendingProps||Zi.current)Ji=!0;else{if((e.lanes&n)===0&&(i.flags&128)===0)return Ji=!1,Ev(e,i,n);Ji=(e.flags&131072)!==0}else Ji=!1,ci&&(i.flags&1048576)!==0&&dp(i,gs,i.index);switch(i.lanes=0,i.tag){case 2:var t=i.type;Bs(e,i),e=i.pendingProps;var p=co(i,Li.current);yo(i,n),p=mc(null,i,t,e,p,n);var b=hc();return i.flags|=1,typeof p=="object"&&p!==null&&typeof p.render=="function"&&p.$$typeof===void 0?(i.tag=1,i.memoizedState=null,i.updateQueue=null,Xi(t)?(b=!0,ps(i)):b=!1,i.memoizedState=p.state!==null&&p.state!==void 0?p.state:null,sc(i),p.updater=Es,i.stateNode=p,p._reactInternals=i,kc(i,t,e,n),i=qc(null,i,t,!0,b,n)):(i.tag=0,ci&&b&&Yl(i),$i(null,i,p,n),i=i.child),i;case 16:t=i.elementType;e:{switch(Bs(e,i),e=i.pendingProps,p=t._init,t=p(t._payload),i.type=t,p=i.tag=Vv(t),e=qa(t,e),p){case 0:i=zc(null,i,t,e,n);break e;case 1:i=om(null,i,t,e,n);break e;case 11:i=Jp(null,i,t,e,n);break e;case 14:i=em(null,i,t,qa(t.type,e),n);break e}throw Error(o(306,t,""))}return i;case 0:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),zc(e,i,t,p,n);case 1:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),om(e,i,t,p,n);case 3:e:{if(rm(i),e===null)throw Error(o(387));t=i.pendingProps,b=i.memoizedState,p=b.element,kp(e,i),ws(i,t,null,n);var E=i.memoizedState;if(t=E.element,b.isDehydrated)if(b={element:t,isDehydrated:!1,cache:E.cache,pendingSuspenseBoundaries:E.pendingSuspenseBoundaries,transitions:E.transitions},i.updateQueue.baseState=b,i.memoizedState=b,i.flags&256){p=fo(Error(o(423)),i),i=sm(e,i,t,n,p);break e}else if(t!==p){p=fo(Error(o(424)),i),i=sm(e,i,t,n,p);break e}else for(ta=un(i.stateNode.containerInfo.firstChild),sa=i,ci=!0,za=null,n=fp(i,null,t,n),i.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(mo(),t===p){i=Ka(e,i,n);break e}$i(e,i,t,n)}i=i.child}return i;case 5:return zp(i),e===null&&Jl(i),t=i.type,p=i.pendingProps,b=e!==null?e.memoizedProps:null,E=p.children,Ul(t,p)?E=null:b!==null&&Ul(t,b)&&(i.flags|=32),nm(e,i),$i(e,i,E,n),i.child;case 6:return e===null&&Jl(i),null;case 13:return tm(e,i,n);case 4:return tc(i,i.stateNode.containerInfo),t=i.pendingProps,e===null?i.child=ho(i,null,t,n):$i(e,i,t,n),i.child;case 11:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),Jp(e,i,t,p,n);case 7:return $i(e,i,i.pendingProps,n),i.child;case 8:return $i(e,i,i.pendingProps.children,n),i.child;case 12:return $i(e,i,i.pendingProps.children,n),i.child;case 10:e:{if(t=i.type._context,p=i.pendingProps,b=i.memoizedProps,E=p.value,ri(fs,t._currentValue),t._currentValue=E,b!==null)if(xa(b.value,E)){if(b.children===p.children&&!Zi.current){i=Ka(e,i,n);break e}}else for(b=i.child,b!==null&&(b.return=i);b!==null;){var P=b.dependencies;if(P!==null){E=b.child;for(var M=P.firstContext;M!==null;){if(M.context===t){if(b.tag===1){M=Ga(-1,n&-n),M.tag=2;var Z=b.updateQueue;if(Z!==null){Z=Z.shared;var le=Z.pending;le===null?M.next=M:(M.next=le.next,le.next=M),Z.pending=M}}b.lanes|=n,M=b.alternate,M!==null&&(M.lanes|=n),oc(b.return,n,i),P.lanes|=n;break}M=M.next}}else if(b.tag===10)E=b.type===i.type?null:b.child;else if(b.tag===18){if(E=b.return,E===null)throw Error(o(341));E.lanes|=n,P=E.alternate,P!==null&&(P.lanes|=n),oc(E,n,i),E=b.sibling}else E=b.child;if(E!==null)E.return=b;else for(E=b;E!==null;){if(E===i){E=null;break}if(b=E.sibling,b!==null){b.return=E.return,E=b;break}E=E.return}b=E}$i(e,i,p.children,n),i=i.child}return i;case 9:return p=i.type,t=i.pendingProps.children,yo(i,n),p=ha(p),t=t(p),i.flags|=1,$i(e,i,t,n),i.child;case 14:return t=i.type,p=qa(t,i.pendingProps),p=qa(t.type,p),em(e,i,t,p,n);case 15:return im(e,i,i.type,i.pendingProps,n);case 17:return t=i.type,p=i.pendingProps,p=i.elementType===t?p:qa(t,p),Bs(e,i),i.tag=1,Xi(t)?(e=!0,ps(i)):e=!1,yo(i,n),$p(i,t,p),kc(i,t,p,n),qc(null,i,t,!0,e,n);case 19:return cm(e,i,n);case 22:return am(e,i,n)}throw Error(o(156,i.tag))};function Fm(e,i){return pd(e,i)}function Hv(e,i,n,t){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=i,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=t,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ba(e,i,n,t){return new Hv(e,i,n,t)}function Uc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vv(e){if(typeof e=="function")return Uc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===W)return 11;if(e===ae)return 14}return 2}function wn(e,i){var n=e.alternate;return n===null?(n=ba(e.tag,i,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=i,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,i=e.dependencies,n.dependencies=i===null?null:{lanes:i.lanes,firstContext:i.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ls(e,i,n,t,p,b){var E=2;if(t=e,typeof e=="function")Uc(e)&&(E=1);else if(typeof e=="string")E=5;else e:switch(e){case R:return On(n.children,p,b,i);case F:E=8,p|=8;break;case O:return e=ba(12,n,i,p|2),e.elementType=O,e.lanes=b,e;case H:return e=ba(13,n,i,p),e.elementType=H,e.lanes=b,e;case K:return e=ba(19,n,i,p),e.elementType=K,e.lanes=b,e;case ne:return Hs(n,p,b,i);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case N:E=10;break e;case T:E=9;break e;case W:E=11;break e;case ae:E=14;break e;case X:E=16,t=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return i=ba(E,n,i,p),i.elementType=e,i.type=t,i.lanes=b,i}function On(e,i,n,t){return e=ba(7,e,t,i),e.lanes=n,e}function Hs(e,i,n,t){return e=ba(22,e,t,i),e.elementType=ne,e.lanes=n,e.stateNode={isHidden:!1},e}function Wc(e,i,n){return e=ba(6,e,null,i),e.lanes=n,e}function $c(e,i,n){return i=ba(4,e.children!==null?e.children:[],e.key,i),i.lanes=n,i.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},i}function Uv(e,i,n,t,p){this.tag=i,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vl(0),this.expirationTimes=vl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vl(0),this.identifierPrefix=t,this.onRecoverableError=p,this.mutableSourceEagerHydrationData=null}function Qc(e,i,n,t,p,b,E,P,M){return e=new Uv(e,i,n,P,M),i===1?(i=1,b===!0&&(i|=8)):i=0,b=ba(3,null,null,i),e.current=b,b.stateNode=e,b.memoizedState={element:t,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},sc(b),e}function Wv(e,i,n){var t=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(r){console.error(r)}}return a(),eu.exports=rk(),eu.exports}var Qm;function sk(){if(Qm)return Ks;Qm=1;var a=Ug();return Ks.createRoot=a.createRoot,Ks.hydrateRoot=a.hydrateRoot,Ks}var tk=sk();const lk="/api";async function oi(a,r){const o=await fetch(`${lk}${a}`,{...r,headers:{"Content-Type":"application/json",...r==null?void 0:r.headers}});if(!o.ok){const s=await o.text();throw new Error(s||o.statusText)}return o.json()}const ei={getHealth:()=>oi("/health"),getRadioConfig:()=>oi("/radio/config"),updateRadioConfig:a=>oi("/radio/config",{method:"PATCH",body:JSON.stringify(a)}),setPrivateKey:a=>oi("/radio/private-key",{method:"PUT",body:JSON.stringify({private_key:a})}),sendAdvertisement:(a=!0)=>oi(`/radio/advertise?flood=${a}`,{method:"POST"}),rebootRadio:()=>oi("/radio/reboot",{method:"POST"}),reconnectRadio:()=>oi("/radio/reconnect",{method:"POST"}),getContacts:(a=100,r=0)=>oi(`/contacts?limit=${a}&offset=${r}`),getContact:a=>oi(`/contacts/${a}`),syncContacts:()=>oi("/contacts/sync",{method:"POST"}),addContactToRadio:a=>oi(`/contacts/${a}/add-to-radio`,{method:"POST"}),removeContactFromRadio:a=>oi(`/contacts/${a}/remove-from-radio`,{method:"POST"}),deleteContact:a=>oi(`/contacts/${a}`,{method:"DELETE"}),requestTelemetry:(a,r)=>oi(`/contacts/${a}/telemetry`,{method:"POST",body:JSON.stringify({password:r})}),sendRepeaterCommand:(a,r)=>oi(`/contacts/${a}/command`,{method:"POST",body:JSON.stringify({command:r})}),getChannels:()=>oi("/channels"),getChannel:a=>oi(`/channels/${a}`),createChannel:(a,r)=>oi("/channels",{method:"POST",body:JSON.stringify({name:a,key:r})}),syncChannels:()=>oi("/channels/sync",{method:"POST"}),deleteChannel:a=>oi(`/channels/${a}`,{method:"DELETE"}),getMessages:a=>{const r=new URLSearchParams;a!=null&&a.limit&&r.set("limit",a.limit.toString()),a!=null&&a.offset&&r.set("offset",a.offset.toString()),a!=null&&a.type&&r.set("type",a.type),a!=null&&a.conversation_key&&r.set("conversation_key",a.conversation_key);const o=r.toString();return oi(`/messages${o?`?${o}`:""}`)},getMessagesBulk:(a,r=100)=>oi(`/messages/bulk?limit_per_conversation=${r}`,{method:"POST",body:JSON.stringify(a)}),sendDirectMessage:(a,r)=>oi("/messages/direct",{method:"POST",body:JSON.stringify({destination:a,text:r})}),sendChannelMessage:(a,r)=>oi("/messages/channel",{method:"POST",body:JSON.stringify({channel_key:a,text:r})}),getUndecryptedPacketCount:()=>oi("/packets/undecrypted/count"),decryptHistoricalPackets:a=>oi("/packets/decrypt/historical",{method:"POST",body:JSON.stringify(a)}),getSettings:()=>oi("/settings"),updateSettings:a=>oi("/settings",{method:"PATCH",body:JSON.stringify(a)})};function ck(a){const r=S.useRef(null),o=S.useRef(null),[s,u]=S.useState(!1),l=S.useCallback(()=>{const m=window.location.protocol==="https:"?"wss:":"ws:",h=window.location.port==="5173"?"ws://localhost:8000/api/ws":`${m}//${window.location.host}/api/ws`,d=new WebSocket(h);d.onopen=()=>{console.log("WebSocket connected"),u(!0)},d.onclose=()=>{console.log("WebSocket disconnected"),u(!1),r.current=null,o.current=window.setTimeout(()=>{console.log("Attempting WebSocket reconnect..."),l()},3e3)},d.onerror=y=>{console.error("WebSocket error:",y)},d.onmessage=y=>{var g,f,z,k,j,v,A,C;try{const w=JSON.parse(y.data);switch(w.type){case"health":(g=a.onHealth)==null||g.call(a,w.data);break;case"contacts":(f=a.onContacts)==null||f.call(a,w.data);break;case"channels":(z=a.onChannels)==null||z.call(a,w.data);break;case"message":(k=a.onMessage)==null||k.call(a,w.data);break;case"contact":(j=a.onContact)==null||j.call(a,w.data);break;case"raw_packet":(v=a.onRawPacket)==null||v.call(a,w.data);break;case"message_acked":{const _=w.data;(A=a.onMessageAcked)==null||A.call(a,_.message_id,_.ack_count);break}case"error":(C=a.onError)==null||C.call(a,w.data);break;case"pong":break;default:console.log("Unknown WebSocket message type:",w.type)}}catch(w){console.error("Failed to parse WebSocket message:",w)}},r.current=d},[a]);return S.useEffect(()=>{l();const m=setInterval(()=>{var c;((c=r.current)==null?void 0:c.readyState)===WebSocket.OPEN&&r.current.send("ping")},3e4);return()=>{clearInterval(m),o.current&&clearTimeout(o.current),r.current&&r.current.close()}},[l]),{connected:s}}/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -72,8 +72,8 @@ Error generating stack: `+b.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const vk=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],$g=Nu("x",vk);var Qg=Ug();const Gg=Fo(Qg);function kk(a){if(typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r.appendChild(o),o.styleSheet?o.styleSheet.cssText=a:o.appendChild(document.createTextNode(a))}const wk=a=>{switch(a){case"success":return qk;case"info":return Ak;case"warning":return jk;case"error":return Ck;default:return null}},xk=Array(12).fill(0),zk=({visible:a,className:r})=>he.createElement("div",{className:["sonner-loading-wrapper",r].filter(Boolean).join(" "),"data-visible":a},he.createElement("div",{className:"sonner-spinner"},xk.map((o,s)=>he.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${s}`})))),qk=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),jk=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Ak=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),Ck=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Ek=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},he.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),he.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Sk=()=>{const[a,r]=he.useState(document.hidden);return he.useEffect(()=>{const o=()=>{r(document.hidden)};return document.addEventListener("visibilitychange",o),()=>window.removeEventListener("visibilitychange",o)},[]),a};let ku=1;class Bk{constructor(){this.subscribe=r=>(this.subscribers.push(r),()=>{const o=this.subscribers.indexOf(r);this.subscribers.splice(o,1)}),this.publish=r=>{this.subscribers.forEach(o=>o(r))},this.addToast=r=>{this.publish(r),this.toasts=[...this.toasts,r]},this.create=r=>{var o;const{message:s,...u}=r,l=typeof(r==null?void 0:r.id)=="number"||((o=r.id)==null?void 0:o.length)>0?r.id:ku++,m=this.toasts.find(h=>h.id===l),c=r.dismissible===void 0?!0:r.dismissible;return this.dismissedToasts.has(l)&&this.dismissedToasts.delete(l),m?this.toasts=this.toasts.map(h=>h.id===l?(this.publish({...h,...r,id:l,title:s}),{...h,...r,id:l,dismissible:c,title:s}):h):this.addToast({title:s,...u,dismissible:c,id:l}),l},this.dismiss=r=>(r?(this.dismissedToasts.add(r),requestAnimationFrame(()=>this.subscribers.forEach(o=>o({id:r,dismiss:!0})))):this.toasts.forEach(o=>{this.subscribers.forEach(s=>s({id:o.id,dismiss:!0}))}),r),this.message=(r,o)=>this.create({...o,message:r}),this.error=(r,o)=>this.create({...o,message:r,type:"error"}),this.success=(r,o)=>this.create({...o,type:"success",message:r}),this.info=(r,o)=>this.create({...o,type:"info",message:r}),this.warning=(r,o)=>this.create({...o,type:"warning",message:r}),this.loading=(r,o)=>this.create({...o,type:"loading",message:r}),this.promise=(r,o)=>{if(!o)return;let s;o.loading!==void 0&&(s=this.create({...o,promise:r,type:"loading",message:o.loading,description:typeof o.description!="function"?o.description:void 0}));const u=Promise.resolve(r instanceof Function?r():r);let l=s!==void 0,m;const c=u.then(async d=>{if(m=["resolve",d],he.isValidElement(d))l=!1,this.create({id:s,type:"default",message:d});else if(Dk(d)&&!d.ok){l=!1;const g=typeof o.error=="function"?await o.error(`HTTP error! status: ${d.status}`):o.error,f=typeof o.description=="function"?await o.description(`HTTP error! status: ${d.status}`):o.description,k=typeof g=="object"&&!he.isValidElement(g)?g:{message:g};this.create({id:s,type:"error",description:f,...k})}else if(d instanceof Error){l=!1;const g=typeof o.error=="function"?await o.error(d):o.error,f=typeof o.description=="function"?await o.description(d):o.description,k=typeof g=="object"&&!he.isValidElement(g)?g:{message:g};this.create({id:s,type:"error",description:f,...k})}else if(o.success!==void 0){l=!1;const g=typeof o.success=="function"?await o.success(d):o.success,f=typeof o.description=="function"?await o.description(d):o.description,k=typeof g=="object"&&!he.isValidElement(g)?g:{message:g};this.create({id:s,type:"success",description:f,...k})}}).catch(async d=>{if(m=["reject",d],o.error!==void 0){l=!1;const y=typeof o.error=="function"?await o.error(d):o.error,g=typeof o.description=="function"?await o.description(d):o.description,z=typeof y=="object"&&!he.isValidElement(y)?y:{message:y};this.create({id:s,type:"error",description:g,...z})}}).finally(()=>{l&&(this.dismiss(s),s=void 0),o.finally==null||o.finally.call(o)}),h=()=>new Promise((d,y)=>c.then(()=>m[0]==="reject"?y(m[1]):d(m[1])).catch(y));return typeof s!="string"&&typeof s!="number"?{unwrap:h}:Object.assign(s,{unwrap:h})},this.custom=(r,o)=>{const s=(o==null?void 0:o.id)||ku++;return this.create({jsx:r(s),id:s,...o}),s},this.getActiveToasts=()=>this.toasts.filter(r=>!this.dismissedToasts.has(r.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const na=new Bk,_k=(a,r)=>{const o=(r==null?void 0:r.id)||ku++;return na.addToast({title:a,...r,id:o}),o},Dk=a=>a&&typeof a=="object"&&"ok"in a&&typeof a.ok=="boolean"&&"status"in a&&typeof a.status=="number",Fk=_k,Rk=()=>na.toasts,Tk=()=>na.getActiveToasts(),Tr=Object.assign(Fk,{success:na.success,info:na.info,warning:na.warning,error:na.error,custom:na.custom,message:na.message,promise:na.promise,dismiss:na.dismiss,loading:na.loading},{getHistory:Rk,getToasts:Tk});kk("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Ys(a){return a.label!==void 0}const Pk=3,Nk="24px",Ik="16px",Km=4e3,Mk=356,Ok=14,Lk=45,Hk=200;function Na(...a){return a.filter(Boolean).join(" ")}function Vk(a){const[r,o]=a.split("-"),s=[];return r&&s.push(r),o&&s.push(o),s}const Uk=a=>{var r,o,s,u,l,m,c,h,d;const{invert:y,toast:g,unstyled:f,interacting:z,setHeights:k,visibleToasts:j,heights:v,index:A,toasts:C,expanded:w,removeToast:_,defaultRichColors:x,closeButton:D,style:R,cancelButtonStyle:F,actionButtonStyle:O,className:N="",descriptionClassName:T="",duration:W,position:H,gap:K,expandByDefault:ae,classNames:X,icons:ne,closeButtonAriaLabel:$="Close toast"}=a,[oe,ee]=he.useState(null),[q,I]=he.useState(null),[L,Q]=he.useState(!1),[de,ge]=he.useState(!1),[be,se]=he.useState(!1),[ce,Ae]=he.useState(!1),[Fe,He]=he.useState(!1),[ai,Qe]=he.useState(0),[Oe,Me]=he.useState(0),Xe=he.useRef(g.duration||W||Km),Ve=he.useRef(null),Ge=he.useRef(null),yi=A===0,si=A+1<=j,Le=g.type,mi=g.dismissible!==!1,Gi=g.className||"",va=g.descriptionClassName||"",qi=he.useMemo(()=>v.findIndex(Ce=>Ce.toastId===g.id)||0,[v,g.id]),Mi=he.useMemo(()=>{var Ce;return(Ce=g.closeButton)!=null?Ce:D},[g.closeButton,D]),Ki=he.useMemo(()=>g.duration||W||Km,[g.duration,W]),oa=he.useRef(0),ji=he.useRef(0),ui=he.useRef(0),ki=he.useRef(null),[_a,da]=H.split("-"),ie=he.useMemo(()=>v.reduce((Ce,Te,Ue)=>Ue>=qi?Ce:Ce+Te.height,0),[v,qi]),pe=Sk(),V=g.invert||y,J=Le==="loading";ji.current=he.useMemo(()=>qi*K+ie,[qi,ie]),he.useEffect(()=>{Xe.current=Ki},[Ki]),he.useEffect(()=>{Q(!0)},[]),he.useEffect(()=>{const Ce=Ge.current;if(Ce){const Te=Ce.getBoundingClientRect().height;return Me(Te),k(Ue=>[{toastId:g.id,height:Te,position:g.position},...Ue]),()=>k(Ue=>Ue.filter(Ke=>Ke.toastId!==g.id))}},[k,g.id]),he.useLayoutEffect(()=>{if(!L)return;const Ce=Ge.current,Te=Ce.style.height;Ce.style.height="auto";const Ue=Ce.getBoundingClientRect().height;Ce.style.height=Te,Me(Ue),k(Ke=>Ke.find(Re=>Re.toastId===g.id)?Ke.map(Re=>Re.toastId===g.id?{...Re,height:Ue}:Re):[{toastId:g.id,height:Ue,position:g.position},...Ke])},[L,g.title,g.description,k,g.id,g.jsx,g.action,g.cancel]);const re=he.useCallback(()=>{ge(!0),Qe(ji.current),k(Ce=>Ce.filter(Te=>Te.toastId!==g.id)),setTimeout(()=>{_(g)},Hk)},[g,_,k,ji]);he.useEffect(()=>{if(g.promise&&Le==="loading"||g.duration===1/0||g.type==="loading")return;let Ce;return w||z||pe?(()=>{if(ui.current{Xe.current!==1/0&&(oa.current=new Date().getTime(),Ce=setTimeout(()=>{g.onAutoClose==null||g.onAutoClose.call(g,g),re()},Xe.current))})(),()=>clearTimeout(Ce)},[w,z,g,Le,pe,re]),he.useEffect(()=>{g.delete&&(re(),g.onDismiss==null||g.onDismiss.call(g,g))},[re,g.delete]);function ye(){var Ce;if(ne!=null&&ne.loading){var Te;return he.createElement("div",{className:Na(X==null?void 0:X.loader,g==null||(Te=g.classNames)==null?void 0:Te.loader,"sonner-loader"),"data-visible":Le==="loading"},ne.loading)}return he.createElement(zk,{className:Na(X==null?void 0:X.loader,g==null||(Ce=g.classNames)==null?void 0:Ce.loader),visible:Le==="loading"})}const ve=g.icon||(ne==null?void 0:ne[Le])||wk(Le);var _e,ni;return he.createElement("li",{tabIndex:0,ref:Ge,className:Na(N,Gi,X==null?void 0:X.toast,g==null||(r=g.classNames)==null?void 0:r.toast,X==null?void 0:X.default,X==null?void 0:X[Le],g==null||(o=g.classNames)==null?void 0:o[Le]),"data-sonner-toast":"","data-rich-colors":(_e=g.richColors)!=null?_e:x,"data-styled":!(g.jsx||g.unstyled||f),"data-mounted":L,"data-promise":!!g.promise,"data-swiped":Fe,"data-removed":de,"data-visible":si,"data-y-position":_a,"data-x-position":da,"data-index":A,"data-front":yi,"data-swiping":be,"data-dismissible":mi,"data-type":Le,"data-invert":V,"data-swipe-out":ce,"data-swipe-direction":q,"data-expanded":!!(w||ae&&L),"data-testid":g.testId,style:{"--index":A,"--toasts-before":A,"--z-index":C.length-A,"--offset":`${de?ai:ji.current}px`,"--initial-height":ae?"auto":`${Oe}px`,...R,...g.style},onDragEnd:()=>{se(!1),ee(null),ki.current=null},onPointerDown:Ce=>{Ce.button!==2&&(J||!mi||(Ve.current=new Date,Qe(ji.current),Ce.target.setPointerCapture(Ce.pointerId),Ce.target.tagName!=="BUTTON"&&(se(!0),ki.current={x:Ce.clientX,y:Ce.clientY})))},onPointerUp:()=>{var Ce,Te,Ue;if(ce||!mi)return;ki.current=null;const Ke=Number(((Ce=Ge.current)==null?void 0:Ce.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Oi=Number(((Te=Ge.current)==null?void 0:Te.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Re=new Date().getTime()-((Ue=Ve.current)==null?void 0:Ue.getTime()),Ye=oe==="x"?Ke:Oi,bi=Math.abs(Ye)/Re;if(Math.abs(Ye)>=Lk||bi>.11){Qe(ji.current),g.onDismiss==null||g.onDismiss.call(g,g),I(oe==="x"?Ke>0?"right":"left":Oi>0?"down":"up"),re(),Ae(!0);return}else{var Je,hi;(Je=Ge.current)==null||Je.style.setProperty("--swipe-amount-x","0px"),(hi=Ge.current)==null||hi.style.setProperty("--swipe-amount-y","0px")}He(!1),se(!1),ee(null)},onPointerMove:Ce=>{var Te,Ue,Ke;if(!ki.current||!mi||((Te=window.getSelection())==null?void 0:Te.toString().length)>0)return;const Re=Ce.clientY-ki.current.y,Ye=Ce.clientX-ki.current.x;var bi;const Je=(bi=a.swipeDirections)!=null?bi:Vk(H);!oe&&(Math.abs(Ye)>1||Math.abs(Re)>1)&&ee(Math.abs(Ye)>Math.abs(Re)?"x":"y");let hi={x:0,y:0};const ka=Yi=>1/(1.5+Math.abs(Yi)/20);if(oe==="y"){if(Je.includes("top")||Je.includes("bottom"))if(Je.includes("top")&&Re<0||Je.includes("bottom")&&Re>0)hi.y=Re;else{const Yi=Re*ka(Re);hi.y=Math.abs(Yi)0)hi.x=Ye;else{const Yi=Ye*ka(Ye);hi.x=Math.abs(Yi)0||Math.abs(hi.y)>0)&&He(!0),(Ue=Ge.current)==null||Ue.style.setProperty("--swipe-amount-x",`${hi.x}px`),(Ke=Ge.current)==null||Ke.style.setProperty("--swipe-amount-y",`${hi.y}px`)}},Mi&&!g.jsx&&Le!=="loading"?he.createElement("button",{"aria-label":$,"data-disabled":J,"data-close-button":!0,onClick:J||!mi?()=>{}:()=>{re(),g.onDismiss==null||g.onDismiss.call(g,g)},className:Na(X==null?void 0:X.closeButton,g==null||(s=g.classNames)==null?void 0:s.closeButton)},(ni=ne==null?void 0:ne.close)!=null?ni:Ek):null,(Le||g.icon||g.promise)&&g.icon!==null&&((ne==null?void 0:ne[Le])!==null||g.icon)?he.createElement("div",{"data-icon":"",className:Na(X==null?void 0:X.icon,g==null||(u=g.classNames)==null?void 0:u.icon)},g.promise||g.type==="loading"&&!g.icon?g.icon||ye():null,g.type!=="loading"?ve:null):null,he.createElement("div",{"data-content":"",className:Na(X==null?void 0:X.content,g==null||(l=g.classNames)==null?void 0:l.content)},he.createElement("div",{"data-title":"",className:Na(X==null?void 0:X.title,g==null||(m=g.classNames)==null?void 0:m.title)},g.jsx?g.jsx:typeof g.title=="function"?g.title():g.title),g.description?he.createElement("div",{"data-description":"",className:Na(T,va,X==null?void 0:X.description,g==null||(c=g.classNames)==null?void 0:c.description)},typeof g.description=="function"?g.description():g.description):null),he.isValidElement(g.cancel)?g.cancel:g.cancel&&Ys(g.cancel)?he.createElement("button",{"data-button":!0,"data-cancel":!0,style:g.cancelButtonStyle||F,onClick:Ce=>{Ys(g.cancel)&&mi&&(g.cancel.onClick==null||g.cancel.onClick.call(g.cancel,Ce),re())},className:Na(X==null?void 0:X.cancelButton,g==null||(h=g.classNames)==null?void 0:h.cancelButton)},g.cancel.label):null,he.isValidElement(g.action)?g.action:g.action&&Ys(g.action)?he.createElement("button",{"data-button":!0,"data-action":!0,style:g.actionButtonStyle||O,onClick:Ce=>{Ys(g.action)&&(g.action.onClick==null||g.action.onClick.call(g.action,Ce),!Ce.defaultPrevented&&re())},className:Na(X==null?void 0:X.actionButton,g==null||(d=g.classNames)==null?void 0:d.actionButton)},g.action.label):null)};function Ym(){if(typeof window>"u"||typeof document>"u")return"ltr";const a=document.documentElement.getAttribute("dir");return a==="auto"||!a?window.getComputedStyle(document.documentElement).direction:a}function Wk(a,r){const o={};return[a,r].forEach((s,u)=>{const l=u===1,m=l?"--mobile-offset":"--offset",c=l?Ik:Nk;function h(d){["top","right","bottom","left"].forEach(y=>{o[`${m}-${y}`]=typeof d=="number"?`${d}px`:d})}typeof s=="number"||typeof s=="string"?h(s):typeof s=="object"?["top","right","bottom","left"].forEach(d=>{s[d]===void 0?o[`${m}-${d}`]=c:o[`${m}-${d}`]=typeof s[d]=="number"?`${s[d]}px`:s[d]}):h(c)}),o}const $k=he.forwardRef(function(r,o){const{id:s,invert:u,position:l="bottom-right",hotkey:m=["altKey","KeyT"],expand:c,closeButton:h,className:d,offset:y,mobileOffset:g,theme:f="light",richColors:z,duration:k,style:j,visibleToasts:v=Pk,toastOptions:A,dir:C=Ym(),gap:w=Ok,icons:_,containerAriaLabel:x="Notifications"}=r,[D,R]=he.useState([]),F=he.useMemo(()=>s?D.filter(L=>L.toasterId===s):D.filter(L=>!L.toasterId),[D,s]),O=he.useMemo(()=>Array.from(new Set([l].concat(F.filter(L=>L.position).map(L=>L.position)))),[F,l]),[N,T]=he.useState([]),[W,H]=he.useState(!1),[K,ae]=he.useState(!1),[X,ne]=he.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=he.useRef(null),oe=m.join("+").replace(/Key/g,"").replace(/Digit/g,""),ee=he.useRef(null),q=he.useRef(!1),I=he.useCallback(L=>{R(Q=>{var de;return(de=Q.find(ge=>ge.id===L.id))!=null&&de.delete||na.dismiss(L.id),Q.filter(({id:ge})=>ge!==L.id)})},[]);return he.useEffect(()=>na.subscribe(L=>{if(L.dismiss){requestAnimationFrame(()=>{R(Q=>Q.map(de=>de.id===L.id?{...de,delete:!0}:de))});return}setTimeout(()=>{Gg.flushSync(()=>{R(Q=>{const de=Q.findIndex(ge=>ge.id===L.id);return de!==-1?[...Q.slice(0,de),{...Q[de],...L},...Q.slice(de+1)]:[L,...Q]})})})}),[D]),he.useEffect(()=>{if(f!=="system"){ne(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ne("dark"):ne("light")),typeof window>"u")return;const L=window.matchMedia("(prefers-color-scheme: dark)");try{L.addEventListener("change",({matches:Q})=>{ne(Q?"dark":"light")})}catch{L.addListener(({matches:de})=>{try{ne(de?"dark":"light")}catch(ge){console.error(ge)}})}},[f]),he.useEffect(()=>{D.length<=1&&H(!1)},[D]),he.useEffect(()=>{const L=Q=>{var de;if(m.every(se=>Q[se]||Q.code===se)){var be;H(!0),(be=$.current)==null||be.focus()}Q.code==="Escape"&&(document.activeElement===$.current||(de=$.current)!=null&&de.contains(document.activeElement))&&H(!1)};return document.addEventListener("keydown",L),()=>document.removeEventListener("keydown",L)},[m]),he.useEffect(()=>{if($.current)return()=>{ee.current&&(ee.current.focus({preventScroll:!0}),ee.current=null,q.current=!1)}},[$.current]),he.createElement("section",{ref:o,"aria-label":`${x} ${oe}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},O.map((L,Q)=>{var de;const[ge,be]=L.split("-");return F.length?he.createElement("ol",{key:L,dir:C==="auto"?Ym():C,tabIndex:-1,ref:$,className:d,"data-sonner-toaster":!0,"data-sonner-theme":X,"data-y-position":ge,"data-x-position":be,style:{"--front-toast-height":`${((de=N[0])==null?void 0:de.height)||0}px`,"--width":`${Mk}px`,"--gap":`${w}px`,...j,...Wk(y,g)},onBlur:se=>{q.current&&!se.currentTarget.contains(se.relatedTarget)&&(q.current=!1,ee.current&&(ee.current.focus({preventScroll:!0}),ee.current=null))},onFocus:se=>{se.target instanceof HTMLElement&&se.target.dataset.dismissible==="false"||q.current||(q.current=!0,ee.current=se.relatedTarget)},onMouseEnter:()=>H(!0),onMouseMove:()=>H(!0),onMouseLeave:()=>{K||H(!1)},onDragEnd:()=>H(!1),onPointerDown:se=>{se.target instanceof HTMLElement&&se.target.dataset.dismissible==="false"||ae(!0)},onPointerUp:()=>ae(!1)},F.filter(se=>!se.position&&Q===0||se.position===L).map((se,ce)=>{var Ae,Fe;return he.createElement(Uk,{key:se.id,icons:_,index:ce,toast:se,defaultRichColors:z,duration:(Ae=A==null?void 0:A.duration)!=null?Ae:k,className:A==null?void 0:A.className,descriptionClassName:A==null?void 0:A.descriptionClassName,invert:u,visibleToasts:v,closeButton:(Fe=A==null?void 0:A.closeButton)!=null?Fe:h,interacting:K,position:L,style:A==null?void 0:A.style,unstyled:A==null?void 0:A.unstyled,classNames:A==null?void 0:A.classNames,cancelButtonStyle:A==null?void 0:A.cancelButtonStyle,actionButtonStyle:A==null?void 0:A.actionButtonStyle,closeButtonAriaLabel:A==null?void 0:A.closeButtonAriaLabel,removeToast:I,toasts:F.filter(He=>He.position==se.position),heights:N.filter(He=>He.position==se.position),setHeights:T,expandByDefault:c,gap:w,expanded:W,swipeDirections:r.swipeDirections})})):null}))}),Qk=({...a})=>B.jsx($k,{theme:"dark",className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",error:"group-[.toaster]:bg-[#2a1a1a] group-[.toaster]:text-[#e8a0a0] group-[.toaster]:border-[#4a2a2a] [&_[data-description]]:text-[#b08080]"}},...a});function Gk({health:a,config:r,onConfigClick:o,onAdvertise:s,onMenuClick:u}){const l=(a==null?void 0:a.radio_connected)??!1,[m,c]=S.useState(!1),h=async()=>{c(!0);try{const d=await ei.reconnectRadio();d.connected&&Tr.success("Reconnected",{description:d.message})}catch(d){Tr.error("Reconnection failed",{description:d instanceof Error?d.message:"Check radio connection and power"})}finally{c(!1)}};return B.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[u&&B.jsx("button",{onClick:u,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:B.jsx(fk,{className:"h-5 w-5"})}),B.jsx("h1",{className:"hidden lg:block text-base font-semibold mr-auto",children:"RemoteTerm"}),B.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[B.jsx("div",{className:`w-2 h-2 rounded-full ${l?"bg-[#4caf50]":"bg-[#666]"}`}),B.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:l?"Connected":"Disconnected"})]}),(a==null?void 0:a.serial_port)&&B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:["Port: ",B.jsx("span",{className:"text-[#e0e0e0]",children:a.serial_port})]}),r&&B.jsxs(B.Fragment,{children:[B.jsx("div",{className:"hidden lg:flex items-center gap-1 text-[#888]",children:B.jsx("span",{className:"text-[#e0e0e0]",children:r.name||"Unnamed"})}),B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:[r.radio.freq," MHz/SF",r.radio.sf,"/CR",r.radio.cr,"/",r.tx_power,"dBm"]})]}),B.jsx("div",{className:"flex-1 lg:hidden"}),!l&&B.jsx("button",{onClick:h,disabled:m,className:"px-3 py-1 bg-[#4a3000] border border-[#6b4500] text-[#ffa500] rounded text-xs cursor-pointer hover:bg-[#5a3a00] disabled:opacity-50 disabled:cursor-not-allowed",children:m?"Reconnecting...":"Reconnect"}),B.jsx("button",{onClick:s,disabled:!l,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444] disabled:bg-[#333] disabled:text-[#666] disabled:cursor-not-allowed",children:"Advertise"}),B.jsx("button",{onClick:o,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444]",children:"Config"})]})}const Kk=12;function Bo(a){return a.slice(0,Kk)}function Kg(a,r){return!a||!r?!1:Bo(a)===Bo(r)}function Kn(a,r){return a||Bo(r)}const wu="remoteterm-lastMessageTime",xu="remoteterm-lastReadTime";function il(a){try{const r=localStorage.getItem(a);return r?JSON.parse(r):{}}catch{return{}}}function Yg(a,r){try{localStorage.setItem(a,JSON.stringify(r))}catch{}}function Zm(){return il(wu)}function Yk(){return il(xu)}function nu(a,r){const o=il(wu);return(!o[a]||r>o[a])&&(o[a]=r,Yg(wu,o)),o}function ou(a,r){const o=il(xu);return o[a]=r,Yg(xu,o),o}function an(a,r){return a==="channel"?`channel-${r}`:`contact-${Bo(r)}`}const zu=2,Zk={text:"🛜",background:"#444444",textColor:"#ffffff"};function Xk(a){let r=0;for(let o=0;o>8)%30,u=35+(r>>16)%20,l=`hsl(${o}, ${s}%, ${u}%)`,m=u<45?"#ffffff":"#000000";return{background:l,text:m}}function aw(a,r,o){if(o===zu)return Zk;const s=ew(a,r),u=iw(r);return{text:s,background:u.background,textColor:u.text}}function Zg({name:a,publicKey:r,size:o=28,contactType:s}){const u=aw(a,r,s);return B.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:u.background,color:u.textColor,width:o,height:o,fontSize:o*.45},children:u.text})}function Xg(a){var r,o,s="";if(typeof a=="string"||typeof a=="number")s+=a;else if(typeof a=="object")if(Array.isArray(a)){var u=a.length;for(r=0;r{const o=new Array(a.length+r.length);for(let s=0;s({classGroupId:a,validator:r}),ey=(a=new Map,r=null,o)=>({nextPart:a,validators:r,classGroupId:o}),Gt="-",Xm=[],rw="arbitrary..",sw=a=>{const r=lw(a),{conflictingClassGroups:o,conflictingClassGroupModifiers:s}=a;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return tw(m);const c=m.split(Gt),h=c[0]===""&&c.length>1?1:0;return iy(c,h,r)},getConflictingClassGroupIds:(m,c)=>{if(c){const h=s[m],d=o[m];return h?d?nw(d,h):h:d||Xm}return o[m]||Xm}}},iy=(a,r,o)=>{if(a.length-r===0)return o.classGroupId;const u=a[r],l=o.nextPart.get(u);if(l){const d=iy(a,r+1,l);if(d)return d}const m=o.validators;if(m===null)return;const c=r===0?a.join(Gt):a.slice(r).join(Gt),h=m.length;for(let d=0;da.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const r=a.slice(1,-1),o=r.indexOf(":"),s=r.slice(0,o);return s?rw+s:void 0})(),lw=a=>{const{theme:r,classGroups:o}=a;return cw(o,r)},cw=(a,r)=>{const o=ey();for(const s in a){const u=a[s];Iu(u,o,s,r)}return o},Iu=(a,r,o,s)=>{const u=a.length;for(let l=0;l{if(typeof a=="string"){dw(a,r,o);return}if(typeof a=="function"){pw(a,r,o,s);return}mw(a,r,o,s)},dw=(a,r,o)=>{const s=a===""?r:ay(r,a);s.classGroupId=o},pw=(a,r,o,s)=>{if(hw(a)){Iu(a(s),r,o,s);return}r.validators===null&&(r.validators=[]),r.validators.push(ow(o,a))},mw=(a,r,o,s)=>{const u=Object.entries(a),l=u.length;for(let m=0;m{let o=a;const s=r.split(Gt),u=s.length;for(let l=0;l"isThemeGetter"in a&&a.isThemeGetter===!0,gw=a=>{if(a<1)return{get:()=>{},set:()=>{}};let r=0,o=Object.create(null),s=Object.create(null);const u=(l,m)=>{o[l]=m,r++,r>a&&(r=0,s=o,o=Object.create(null))};return{get(l){let m=o[l];if(m!==void 0)return m;if((m=s[l])!==void 0)return u(l,m),m},set(l,m){l in o?o[l]=m:u(l,m)}}},qu="!",Jm=":",yw=[],eh=(a,r,o,s,u)=>({modifiers:a,hasImportantModifier:r,baseClassName:o,maybePostfixModifierPosition:s,isExternal:u}),bw=a=>{const{prefix:r,experimentalParseClassName:o}=a;let s=u=>{const l=[];let m=0,c=0,h=0,d;const y=u.length;for(let j=0;jh?d-h:void 0;return eh(l,z,f,k)};if(r){const u=r+Jm,l=s;s=m=>m.startsWith(u)?l(m.slice(u.length)):eh(yw,!1,m,void 0,!0)}if(o){const u=s;s=l=>o({className:l,parseClassName:u})}return s},fw=a=>{const r=new Map;return a.orderSensitiveModifiers.forEach((o,s)=>{r.set(o,1e6+s)}),o=>{const s=[];let u=[];for(let l=0;l0&&(u.sort(),s.push(...u),u=[]),s.push(m)):u.push(m)}return u.length>0&&(u.sort(),s.push(...u)),s}},vw=a=>({cache:gw(a.cacheSize),parseClassName:bw(a),sortModifiers:fw(a),...sw(a)}),kw=/\s+/,ww=(a,r)=>{const{parseClassName:o,getClassGroupId:s,getConflictingClassGroupIds:u,sortModifiers:l}=r,m=[],c=a.trim().split(kw);let h="";for(let d=c.length-1;d>=0;d-=1){const y=c[d],{isExternal:g,modifiers:f,hasImportantModifier:z,baseClassName:k,maybePostfixModifierPosition:j}=o(y);if(g){h=y+(h.length>0?" "+h:h);continue}let v=!!j,A=s(v?k.substring(0,j):k);if(!A){if(!v){h=y+(h.length>0?" "+h:h);continue}if(A=s(k),!A){h=y+(h.length>0?" "+h:h);continue}v=!1}const C=f.length===0?"":f.length===1?f[0]:l(f).join(":"),w=z?C+qu:C,_=w+A;if(m.indexOf(_)>-1)continue;m.push(_);const x=u(A,v);for(let D=0;D0?" "+h:h)}return h},xw=(...a)=>{let r=0,o,s,u="";for(;r{if(typeof a=="string")return a;let r,o="";for(let s=0;s{let o,s,u,l;const m=h=>{const d=r.reduce((y,g)=>g(y),a());return o=vw(d),s=o.cache.get,u=o.cache.set,l=c,c(h)},c=h=>{const d=s(h);if(d)return d;const y=ww(h,o);return u(h,y),y};return l=m,(...h)=>l(xw(...h))},qw=[],Ei=a=>{const r=o=>o[a]||qw;return r.isThemeGetter=!0,r},oy=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ry=/^\((?:(\w[\w-]*):)?(.+)\)$/i,jw=/^\d+\/\d+$/,Aw=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Cw=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ew=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Sw=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Bw=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,zo=a=>jw.test(a),Pe=a=>!!a&&!Number.isNaN(Number(a)),zn=a=>!!a&&Number.isInteger(Number(a)),ru=a=>a.endsWith("%")&&Pe(a.slice(0,-1)),Za=a=>Aw.test(a),_w=()=>!0,Dw=a=>Cw.test(a)&&!Ew.test(a),sy=()=>!1,Fw=a=>Sw.test(a),Rw=a=>Bw.test(a),Tw=a=>!xe(a)&&!ze(a),Pw=a=>Ro(a,cy,sy),xe=a=>oy.test(a),Hn=a=>Ro(a,uy,Dw),su=a=>Ro(a,Lw,Pe),ih=a=>Ro(a,ty,sy),Nw=a=>Ro(a,ly,Rw),Zs=a=>Ro(a,dy,Fw),ze=a=>ry.test(a),fr=a=>To(a,uy),Iw=a=>To(a,Hw),ah=a=>To(a,ty),Mw=a=>To(a,cy),Ow=a=>To(a,ly),Xs=a=>To(a,dy,!0),Ro=(a,r,o)=>{const s=oy.exec(a);return s?s[1]?r(s[1]):o(s[2]):!1},To=(a,r,o=!1)=>{const s=ry.exec(a);return s?s[1]?r(s[1]):o:!1},ty=a=>a==="position"||a==="percentage",ly=a=>a==="image"||a==="url",cy=a=>a==="length"||a==="size"||a==="bg-size",uy=a=>a==="length",Lw=a=>a==="number",Hw=a=>a==="family-name",dy=a=>a==="shadow",Vw=()=>{const a=Ei("color"),r=Ei("font"),o=Ei("text"),s=Ei("font-weight"),u=Ei("tracking"),l=Ei("leading"),m=Ei("breakpoint"),c=Ei("container"),h=Ei("spacing"),d=Ei("radius"),y=Ei("shadow"),g=Ei("inset-shadow"),f=Ei("text-shadow"),z=Ei("drop-shadow"),k=Ei("blur"),j=Ei("perspective"),v=Ei("aspect"),A=Ei("ease"),C=Ei("animate"),w=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],x=()=>[..._(),ze,xe],D=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],F=()=>[ze,xe,h],O=()=>[zo,"full","auto",...F()],N=()=>[zn,"none","subgrid",ze,xe],T=()=>["auto",{span:["full",zn,ze,xe]},zn,ze,xe],W=()=>[zn,"auto",ze,xe],H=()=>["auto","min","max","fr",ze,xe],K=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ae=()=>["start","end","center","stretch","center-safe","end-safe"],X=()=>["auto",...F()],ne=()=>[zo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...F()],$=()=>[a,ze,xe],oe=()=>[..._(),ah,ih,{position:[ze,xe]}],ee=()=>["no-repeat",{repeat:["","x","y","space","round"]}],q=()=>["auto","cover","contain",Mw,Pw,{size:[ze,xe]}],I=()=>[ru,fr,Hn],L=()=>["","none","full",d,ze,xe],Q=()=>["",Pe,fr,Hn],de=()=>["solid","dashed","dotted","double"],ge=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],be=()=>[Pe,ru,ah,ih],se=()=>["","none",k,ze,xe],ce=()=>["none",Pe,ze,xe],Ae=()=>["none",Pe,ze,xe],Fe=()=>[Pe,ze,xe],He=()=>[zo,"full",...F()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Za],breakpoint:[Za],color:[_w],container:[Za],"drop-shadow":[Za],ease:["in","out","in-out"],font:[Tw],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Za],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Za],shadow:[Za],spacing:["px",Pe],text:[Za],"text-shadow":[Za],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",zo,xe,ze,v]}],container:["container"],columns:[{columns:[Pe,xe,ze,c]}],"break-after":[{"break-after":w()}],"break-before":[{"break-before":w()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:x()}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:O()}],"inset-x":[{"inset-x":O()}],"inset-y":[{"inset-y":O()}],start:[{start:O()}],end:[{end:O()}],top:[{top:O()}],right:[{right:O()}],bottom:[{bottom:O()}],left:[{left:O()}],visibility:["visible","invisible","collapse"],z:[{z:[zn,"auto",ze,xe]}],basis:[{basis:[zo,"full","auto",c,...F()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Pe,zo,"auto","initial","none",xe]}],grow:[{grow:["",Pe,ze,xe]}],shrink:[{shrink:["",Pe,ze,xe]}],order:[{order:[zn,"first","last","none",ze,xe]}],"grid-cols":[{"grid-cols":N()}],"col-start-end":[{col:T()}],"col-start":[{"col-start":W()}],"col-end":[{"col-end":W()}],"grid-rows":[{"grid-rows":N()}],"row-start-end":[{row:T()}],"row-start":[{"row-start":W()}],"row-end":[{"row-end":W()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:F()}],"gap-x":[{"gap-x":F()}],"gap-y":[{"gap-y":F()}],"justify-content":[{justify:[...K(),"normal"]}],"justify-items":[{"justify-items":[...ae(),"normal"]}],"justify-self":[{"justify-self":["auto",...ae()]}],"align-content":[{content:["normal",...K()]}],"align-items":[{items:[...ae(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ae(),{baseline:["","last"]}]}],"place-content":[{"place-content":K()}],"place-items":[{"place-items":[...ae(),"baseline"]}],"place-self":[{"place-self":["auto",...ae()]}],p:[{p:F()}],px:[{px:F()}],py:[{py:F()}],ps:[{ps:F()}],pe:[{pe:F()}],pt:[{pt:F()}],pr:[{pr:F()}],pb:[{pb:F()}],pl:[{pl:F()}],m:[{m:X()}],mx:[{mx:X()}],my:[{my:X()}],ms:[{ms:X()}],me:[{me:X()}],mt:[{mt:X()}],mr:[{mr:X()}],mb:[{mb:X()}],ml:[{ml:X()}],"space-x":[{"space-x":F()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":F()}],"space-y-reverse":["space-y-reverse"],size:[{size:ne()}],w:[{w:[c,"screen",...ne()]}],"min-w":[{"min-w":[c,"screen","none",...ne()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[m]},...ne()]}],h:[{h:["screen","lh",...ne()]}],"min-h":[{"min-h":["screen","lh","none",...ne()]}],"max-h":[{"max-h":["screen","lh",...ne()]}],"font-size":[{text:["base",o,fr,Hn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,ze,su]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ru,xe]}],"font-family":[{font:[Iw,xe,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,ze,xe]}],"line-clamp":[{"line-clamp":[Pe,"none",ze,su]}],leading:[{leading:[l,...F()]}],"list-image":[{"list-image":["none",ze,xe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ze,xe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:$()}],"text-color":[{text:$()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...de(),"wavy"]}],"text-decoration-thickness":[{decoration:[Pe,"from-font","auto",ze,Hn]}],"text-decoration-color":[{decoration:$()}],"underline-offset":[{"underline-offset":[Pe,"auto",ze,xe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ze,xe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ze,xe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:oe()}],"bg-repeat":[{bg:ee()}],"bg-size":[{bg:q()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},zn,ze,xe],radial:["",ze,xe],conic:[zn,ze,xe]},Ow,Nw]}],"bg-color":[{bg:$()}],"gradient-from-pos":[{from:I()}],"gradient-via-pos":[{via:I()}],"gradient-to-pos":[{to:I()}],"gradient-from":[{from:$()}],"gradient-via":[{via:$()}],"gradient-to":[{to:$()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:Q()}],"border-w-x":[{"border-x":Q()}],"border-w-y":[{"border-y":Q()}],"border-w-s":[{"border-s":Q()}],"border-w-e":[{"border-e":Q()}],"border-w-t":[{"border-t":Q()}],"border-w-r":[{"border-r":Q()}],"border-w-b":[{"border-b":Q()}],"border-w-l":[{"border-l":Q()}],"divide-x":[{"divide-x":Q()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Q()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...de(),"hidden","none"]}],"divide-style":[{divide:[...de(),"hidden","none"]}],"border-color":[{border:$()}],"border-color-x":[{"border-x":$()}],"border-color-y":[{"border-y":$()}],"border-color-s":[{"border-s":$()}],"border-color-e":[{"border-e":$()}],"border-color-t":[{"border-t":$()}],"border-color-r":[{"border-r":$()}],"border-color-b":[{"border-b":$()}],"border-color-l":[{"border-l":$()}],"divide-color":[{divide:$()}],"outline-style":[{outline:[...de(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Pe,ze,xe]}],"outline-w":[{outline:["",Pe,fr,Hn]}],"outline-color":[{outline:$()}],shadow:[{shadow:["","none",y,Xs,Zs]}],"shadow-color":[{shadow:$()}],"inset-shadow":[{"inset-shadow":["none",g,Xs,Zs]}],"inset-shadow-color":[{"inset-shadow":$()}],"ring-w":[{ring:Q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:$()}],"ring-offset-w":[{"ring-offset":[Pe,Hn]}],"ring-offset-color":[{"ring-offset":$()}],"inset-ring-w":[{"inset-ring":Q()}],"inset-ring-color":[{"inset-ring":$()}],"text-shadow":[{"text-shadow":["none",f,Xs,Zs]}],"text-shadow-color":[{"text-shadow":$()}],opacity:[{opacity:[Pe,ze,xe]}],"mix-blend":[{"mix-blend":[...ge(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ge()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Pe]}],"mask-image-linear-from-pos":[{"mask-linear-from":be()}],"mask-image-linear-to-pos":[{"mask-linear-to":be()}],"mask-image-linear-from-color":[{"mask-linear-from":$()}],"mask-image-linear-to-color":[{"mask-linear-to":$()}],"mask-image-t-from-pos":[{"mask-t-from":be()}],"mask-image-t-to-pos":[{"mask-t-to":be()}],"mask-image-t-from-color":[{"mask-t-from":$()}],"mask-image-t-to-color":[{"mask-t-to":$()}],"mask-image-r-from-pos":[{"mask-r-from":be()}],"mask-image-r-to-pos":[{"mask-r-to":be()}],"mask-image-r-from-color":[{"mask-r-from":$()}],"mask-image-r-to-color":[{"mask-r-to":$()}],"mask-image-b-from-pos":[{"mask-b-from":be()}],"mask-image-b-to-pos":[{"mask-b-to":be()}],"mask-image-b-from-color":[{"mask-b-from":$()}],"mask-image-b-to-color":[{"mask-b-to":$()}],"mask-image-l-from-pos":[{"mask-l-from":be()}],"mask-image-l-to-pos":[{"mask-l-to":be()}],"mask-image-l-from-color":[{"mask-l-from":$()}],"mask-image-l-to-color":[{"mask-l-to":$()}],"mask-image-x-from-pos":[{"mask-x-from":be()}],"mask-image-x-to-pos":[{"mask-x-to":be()}],"mask-image-x-from-color":[{"mask-x-from":$()}],"mask-image-x-to-color":[{"mask-x-to":$()}],"mask-image-y-from-pos":[{"mask-y-from":be()}],"mask-image-y-to-pos":[{"mask-y-to":be()}],"mask-image-y-from-color":[{"mask-y-from":$()}],"mask-image-y-to-color":[{"mask-y-to":$()}],"mask-image-radial":[{"mask-radial":[ze,xe]}],"mask-image-radial-from-pos":[{"mask-radial-from":be()}],"mask-image-radial-to-pos":[{"mask-radial-to":be()}],"mask-image-radial-from-color":[{"mask-radial-from":$()}],"mask-image-radial-to-color":[{"mask-radial-to":$()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[Pe]}],"mask-image-conic-from-pos":[{"mask-conic-from":be()}],"mask-image-conic-to-pos":[{"mask-conic-to":be()}],"mask-image-conic-from-color":[{"mask-conic-from":$()}],"mask-image-conic-to-color":[{"mask-conic-to":$()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:oe()}],"mask-repeat":[{mask:ee()}],"mask-size":[{mask:q()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ze,xe]}],filter:[{filter:["","none",ze,xe]}],blur:[{blur:se()}],brightness:[{brightness:[Pe,ze,xe]}],contrast:[{contrast:[Pe,ze,xe]}],"drop-shadow":[{"drop-shadow":["","none",z,Xs,Zs]}],"drop-shadow-color":[{"drop-shadow":$()}],grayscale:[{grayscale:["",Pe,ze,xe]}],"hue-rotate":[{"hue-rotate":[Pe,ze,xe]}],invert:[{invert:["",Pe,ze,xe]}],saturate:[{saturate:[Pe,ze,xe]}],sepia:[{sepia:["",Pe,ze,xe]}],"backdrop-filter":[{"backdrop-filter":["","none",ze,xe]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[Pe,ze,xe]}],"backdrop-contrast":[{"backdrop-contrast":[Pe,ze,xe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Pe,ze,xe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Pe,ze,xe]}],"backdrop-invert":[{"backdrop-invert":["",Pe,ze,xe]}],"backdrop-opacity":[{"backdrop-opacity":[Pe,ze,xe]}],"backdrop-saturate":[{"backdrop-saturate":[Pe,ze,xe]}],"backdrop-sepia":[{"backdrop-sepia":["",Pe,ze,xe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":F()}],"border-spacing-x":[{"border-spacing-x":F()}],"border-spacing-y":[{"border-spacing-y":F()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ze,xe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Pe,"initial",ze,xe]}],ease:[{ease:["linear","initial",A,ze,xe]}],delay:[{delay:[Pe,ze,xe]}],animate:[{animate:["none",C,ze,xe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[j,ze,xe]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:ce()}],"rotate-x":[{"rotate-x":ce()}],"rotate-y":[{"rotate-y":ce()}],"rotate-z":[{"rotate-z":ce()}],scale:[{scale:Ae()}],"scale-x":[{"scale-x":Ae()}],"scale-y":[{"scale-y":Ae()}],"scale-z":[{"scale-z":Ae()}],"scale-3d":["scale-3d"],skew:[{skew:Fe()}],"skew-x":[{"skew-x":Fe()}],"skew-y":[{"skew-y":Fe()}],transform:[{transform:[ze,xe,"","none","gpu","cpu"]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:He()}],"translate-x":[{"translate-x":He()}],"translate-y":[{"translate-y":He()}],"translate-z":[{"translate-z":He()}],"translate-none":["translate-none"],accent:[{accent:$()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:$()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ze,xe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":F()}],"scroll-mx":[{"scroll-mx":F()}],"scroll-my":[{"scroll-my":F()}],"scroll-ms":[{"scroll-ms":F()}],"scroll-me":[{"scroll-me":F()}],"scroll-mt":[{"scroll-mt":F()}],"scroll-mr":[{"scroll-mr":F()}],"scroll-mb":[{"scroll-mb":F()}],"scroll-ml":[{"scroll-ml":F()}],"scroll-p":[{"scroll-p":F()}],"scroll-px":[{"scroll-px":F()}],"scroll-py":[{"scroll-py":F()}],"scroll-ps":[{"scroll-ps":F()}],"scroll-pe":[{"scroll-pe":F()}],"scroll-pt":[{"scroll-pt":F()}],"scroll-pr":[{"scroll-pr":F()}],"scroll-pb":[{"scroll-pb":F()}],"scroll-pl":[{"scroll-pl":F()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ze,xe]}],fill:[{fill:["none",...$()]}],"stroke-w":[{stroke:[Pe,fr,Hn,su]}],stroke:[{stroke:["none",...$()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Uw=zw(Vw);function $e(...a){return Uw(Jg(a))}const zi=S.forwardRef(({className:a,type:r,...o},s)=>B.jsx("input",{type:r,className:$e("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),ref:s,...o}));zi.displayName="Input";function nh(a,r){if(typeof a=="function")return a(r);a!=null&&(a.current=r)}function Or(...a){return r=>{let o=!1;const s=a.map(u=>{const l=nh(u,r);return!o&&typeof l=="function"&&(o=!0),l});if(o)return()=>{for(let u=0;u{let{children:l,...m}=s;py(l)&&typeof Kt=="function"&&(l=Kt(l._payload));const c=S.Children.toArray(l),h=c.find(Yw);if(h){const d=h.props.children,y=c.map(g=>g===h?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:g);return B.jsx(r,{...m,ref:u,children:S.isValidElement(d)?S.cloneElement(d,void 0,y):null})}return B.jsx(r,{...m,ref:u,children:l})});return o.displayName=`${a}.Slot`,o}var Qw=Mu("Slot");function Gw(a){const r=S.forwardRef((o,s)=>{let{children:u,...l}=o;if(py(u)&&typeof Kt=="function"&&(u=Kt(u._payload)),S.isValidElement(u)){const m=Xw(u),c=Zw(l,u.props);return u.type!==S.Fragment&&(c.ref=s?Or(s,m):m),S.cloneElement(u,c)}return S.Children.count(u)>1?S.Children.only(null):null});return r.displayName=`${a}.SlotClone`,r}var Kw=Symbol("radix.slottable");function Yw(a){return S.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===Kw}function Zw(a,r){const o={...r};for(const s in r){const u=a[s],l=r[s];/^on[A-Z]/.test(s)?u&&l?o[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(o[s]=u):s==="style"?o[s]={...u,...l}:s==="className"&&(o[s]=[u,l].filter(Boolean).join(" "))}return{...a,...o}}function Xw(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}const oh=a=>typeof a=="boolean"?`${a}`:a===0?"0":a,rh=Jg,al=(a,r)=>o=>{var s;if((r==null?void 0:r.variants)==null)return rh(a,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:u,defaultVariants:l}=r,m=Object.keys(u).map(d=>{const y=o==null?void 0:o[d],g=l==null?void 0:l[d];if(y===null)return null;const f=oh(y)||oh(g);return u[d][f]}),c=o&&Object.entries(o).reduce((d,y)=>{let[g,f]=y;return f===void 0||(d[g]=f),d},{}),h=r==null||(s=r.compoundVariants)===null||s===void 0?void 0:s.reduce((d,y)=>{let{class:g,className:f,...z}=y;return Object.entries(z).every(k=>{let[j,v]=k;return Array.isArray(v)?v.includes({...l,...c}[j]):{...l,...c}[j]===v})?[...d,g,f]:d},[]);return rh(a,m,h,o==null?void 0:o.class,o==null?void 0:o.className)},Jw=al("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),La=S.forwardRef(({className:a,variant:r,size:o,asChild:s=!1,...u},l)=>{const m=s?Qw:"button";return B.jsx(m,{className:$e(Jw({variant:r,size:o,className:a})),ref:l,...u})});La.displayName="Button";function ex(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function ix(a){try{localStorage.setItem("remoteterm-sortOrder",a)}catch{}}function ax({contacts:a,channels:r,activeConversation:o,onSelectConversation:s,onNewMessage:u,lastMessageTimes:l,unreadCounts:m,showCracker:c,crackerRunning:h,onToggleCracker:d,onMarkAllRead:y}){const[g,f]=S.useState(ex),[z,k]=S.useState(""),j=()=>{const T=g==="alpha"?"recent":"alpha";f(T),ix(T)},v=T=>{k(""),s(T)},A=(T,W)=>(o==null?void 0:o.type)===T&&(o==null?void 0:o.id)===W,C=(T,W)=>{const H=an(T,W);return m[H]||0},w=(T,W)=>{const H=an(T,W);return l[H]||0},_=r.reduce((T,W)=>(T.some(H=>H.name===W.name)||T.push(W),T),[]),x=a.filter(T=>T.public_key&&T.public_key.length>0).sort((T,W)=>T.name&&!W.name?-1:!T.name&&W.name?1:(T.name||"").localeCompare(W.name||"")).reduce((T,W)=>{const H=Bo(W.public_key);return T.some(K=>Bo(K.public_key)===H)||T.push(W),T},[]),D=[..._].sort((T,W)=>{if(T.name==="Public")return-1;if(W.name==="Public")return 1;if(g==="recent"){const H=w("channel",T.key),K=w("channel",W.key);if(H&&K)return K-H;if(H&&!K)return-1;if(!H&&K)return 1}return T.name.localeCompare(W.name)}),R=[...x].sort((T,W)=>{const H=T.type===zu,K=W.type===zu;if(H&&!K)return 1;if(!H&&K)return-1;if(H&&K)return(T.name||T.public_key).localeCompare(W.name||W.public_key);if(g==="recent"){const ae=w("contact",T.public_key),X=w("contact",W.public_key);if(ae&&X)return X-ae;if(ae&&!X)return-1;if(!ae&&X)return 1}return(T.name||T.public_key).localeCompare(W.name||W.public_key)}),F=z.toLowerCase().trim(),O=F?D.filter(T=>T.name.toLowerCase().includes(F)):D,N=F?R.filter(T=>{var W;return((W=T.name)==null?void 0:W.toLowerCase().includes(F))||T.public_key.toLowerCase().includes(F)}):R;return B.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[B.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),B.jsx(La,{variant:"ghost",size:"sm",onClick:u,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),B.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[B.jsx(zi,{type:"text",placeholder:"Search...",value:z,onChange:T=>k(T.target.value),className:"h-8 text-sm pr-8"}),z&&B.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>k(""),title:"Clear search",children:"×"})]}),B.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",A("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>v({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),B.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",c&&"bg-accent border-l-primary"),onClick:d,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),B.jsxs("span",{className:"flex-1 truncate",children:[c?"Hide":"Show"," Cracker",B.jsxs("span",{className:$e("ml-1 text-xs",h?"text-green-500":"text-muted-foreground"),children:["(",h?"running":"stopped",")"]})]})]}),!F&&Object.keys(m).length>0&&B.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:y,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),B.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),O.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:j,title:g==="alpha"?"Sort by recent":"Sort alphabetically",children:g==="alpha"?"A-Z":"⏱"})]}),O.map(T=>{const W=C("channel",T.key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",A("channel",T.key)&&"bg-accent border-l-primary",W>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"channel",id:T.key,name:T.name}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"#"}),B.jsx("span",{className:"name flex-1 truncate",children:T.name}),W>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:W})]},`chan-${T.key}`)})]}),N.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),O.length===0&&B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:j,title:g==="alpha"?"Sort by recent":"Sort alphabetically",children:g==="alpha"?"A-Z":"⏱"})]}),N.map(T=>{const W=C("contact",T.public_key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",A("contact",T.public_key)&&"bg-accent border-l-primary",W>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"contact",id:T.public_key,name:Kn(T.name,T.public_key)}),children:[B.jsx(Zg,{name:T.name,publicKey:T.public_key,size:24,contactType:T.type}),B.jsx("span",{className:"name flex-1 truncate",children:Kn(T.name,T.public_key)}),W>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:W})]},T.public_key)})]}),N.length===0&&O.length===0&&B.jsx("div",{className:"p-5 text-center text-muted-foreground",children:F?"No matches found":"No conversations yet"})]})]})}const my=2;function sh(a){const r=a.indexOf(": ");if(r>0&&r<50){const o=a.substring(0,r);if(!o.includes(":"))return{sender:o,content:a.substring(r+2)}}return{sender:null,content:a}}function th(a){const r=new Date(a*1e3),o=new Date,s=r.toDateString()===o.toDateString(),u=r.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return s?u:`${r.toLocaleDateString([],{month:"short",day:"numeric"})} ${u}`}function nx(a,r){if(!r)return a;const o=/@\[([^\]]+)\]/g,s=[];let u=0,l,m=0;for(;(l=o.exec(a))!==null;){l.index>u&&s.push(a.slice(u,l.index));const c=l[1],h=c===r;s.push(B.jsxs("span",{className:$e("rounded px-0.5",h?"bg-primary/30 text-primary font-medium":"bg-muted-foreground/20"),children:["@[",c,"]"]},m++)),u=l.index+l[0].length}return u0?s:a}function ox({messages:a,contacts:r,loading:o,loadingOlder:s=!1,hasOlderMessages:u=!1,onSenderClick:l,onLoadOlder:m,radioName:c}){const h=S.useRef(null),d=S.useRef(0),y=S.useRef(!0),[g,f]=S.useState(!1),z=S.useRef({scrollTop:0,scrollHeight:0,wasNearTop:!1});S.useLayoutEffect(()=>{if(!h.current)return;const x=h.current,D=a.length-d.current;if(y.current&&a.length>0)x.scrollTop=x.scrollHeight,y.current=!1;else if(D>0&&d.current>0){const R=x.scrollHeight-z.current.scrollHeight;z.current.wasNearTop&&R>0?x.scrollTop=z.current.scrollTop+R:z.current.wasNearTop||(x.scrollTop=x.scrollHeight)}d.current=a.length},[a]),S.useEffect(()=>{a.length===0&&(y.current=!0,d.current=0,z.current={scrollTop:0,scrollHeight:0,wasNearTop:!1})},[a.length]);const k=S.useCallback(()=>{if(!h.current)return;const{scrollTop:x,scrollHeight:D,clientHeight:R}=h.current;z.current={scrollTop:x,scrollHeight:D,wasNearTop:x<150};const F=D-x-R;f(F>100),!(!m||s||!u)&&x<100&&m()},[m,s,u]),j=S.useCallback(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)},[]),v=x=>x&&r.find(D=>Kg(D.public_key,x))||null,A=x=>r.find(D=>D.name===x)||null;if(o)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"Loading messages..."});if(a.length===0)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"No messages yet"});const w=[...a.reduce((x,D)=>{const R=`${D.type}-${D.conversation_key}-${D.text}-${D.sender_timestamp}`;return x.find(O=>`${O.type}-${O.conversation_key}-${O.text}-${O.sender_timestamp}`===R)||x.push(D),x},[])].sort((x,D)=>x.received_at-D.received_at),_=(x,D)=>x.outgoing?"__outgoing__":x.type==="PRIV"&&x.conversation_key?x.conversation_key:D||"__unknown__";return B.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[B.jsxs("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-0.5",ref:h,onScroll:k,children:[s&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-sm",children:"Loading older messages..."}),!s&&u&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-xs",children:"Scroll up for older messages"}),w.map((x,D)=>{var ee;const R=x.type==="PRIV"?v(x.conversation_key):null,F=(R==null?void 0:R.type)===my,{sender:O,content:N}=F?{sender:null,content:x.text}:sh(x.text),T=x.outgoing?"You":(R==null?void 0:R.name)||O||((ee=x.conversation_key)==null?void 0:ee.slice(0,8))||"Unknown",W=!x.outgoing&&l&&T!=="Unknown",H=_(x,O),K=w[D-1],ae=K?_(K,sh(K.text).sender):null,X=!x.outgoing&&H!==ae,ne=D===0;let $=null,oe="";if(!x.outgoing){if(x.type==="PRIV"&&x.conversation_key)$=(R==null?void 0:R.name)||null,oe=x.conversation_key;else if(O){const q=A(O);$=O,oe=(q==null?void 0:q.public_key)||`name:${O}`}}return B.jsxs("div",{className:$e("flex items-start max-w-[85%]",x.outgoing&&"flex-row-reverse self-end",X&&!ne&&"mt-3"),children:[!x.outgoing&&B.jsx("div",{className:"w-10 flex-shrink-0 flex items-start pt-0.5",children:X&&oe&&B.jsx(Zg,{name:$,publicKey:oe,size:32})}),B.jsxs("div",{className:$e("py-1.5 px-3 rounded-lg min-w-0",x.outgoing?"bg-[#1e3a29]":"bg-muted"),children:[X&&B.jsxs("div",{className:"text-[13px] font-semibold text-muted-foreground mb-0.5",children:[W?B.jsx("span",{className:"cursor-pointer hover:text-primary hover:underline",onClick:()=>l(T),title:`Mention ${T}`,children:T}):T,B.jsx("span",{className:"font-normal text-muted-foreground/70 ml-2 text-[11px]",children:th(x.sender_timestamp||x.received_at)})]}),B.jsxs("div",{className:"break-words whitespace-pre-wrap",children:[N.split(` -`).map((q,I,L)=>B.jsxs("span",{children:[nx(q,c),I({appendText:k=>{var j;c(v=>v+k),(j=y.current)==null||j.focus()}}));const g=S.useCallback(async k=>{var v;k.preventDefault();const j=m.trim();if(u){if(h||o)return;const A=j==="."?"":j;d(!0);try{await r(A),c("")}catch(C){console.error("Failed to request telemetry:",C)}finally{d(!1)}}else{if(!j||h||o)return;d(!0);try{await r(j),c(""),(v=y.current)==null||v.focus()}catch(A){console.error("Failed to send message:",A)}finally{d(!1)}}},[m,h,o,r,u]),f=S.useCallback(k=>{k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),g(k))},[g]),z=u?m.trim().length>0||m===".":m.trim().length>0;return B.jsxs("form",{className:"px-4 py-3 border-t border-border flex gap-2",onSubmit:g,children:[B.jsx(zi,{ref:y,type:u?"password":"text",value:m,onChange:k=>c(k.target.value),onKeyDown:f,placeholder:s||(u?"Enter password (or . for none)...":"Type a message..."),disabled:o||h,className:"flex-1"}),B.jsx(La,{type:"submit",disabled:o||h||!z,children:h?u?"Fetching...":"Sending...":u?"Fetch":"Send"})]})});function Si(a,r,{checkForDefaultPrevented:o=!0}={}){return function(u){if(a==null||a(u),o===!1||!u.defaultPrevented)return r==null?void 0:r(u)}}function sx(a,r){const o=S.createContext(r),s=l=>{const{children:m,...c}=l,h=S.useMemo(()=>c,Object.values(c));return B.jsx(o.Provider,{value:h,children:m})};s.displayName=a+"Provider";function u(l){const m=S.useContext(o);if(m)return m;if(r!==void 0)return r;throw new Error(`\`${l}\` must be used within \`${a}\``)}return[s,u]}function Lr(a,r=[]){let o=[];function s(l,m){const c=S.createContext(m),h=o.length;o=[...o,m];const d=g=>{var A;const{scope:f,children:z,...k}=g,j=((A=f==null?void 0:f[a])==null?void 0:A[h])||c,v=S.useMemo(()=>k,Object.values(k));return B.jsx(j.Provider,{value:v,children:z})};d.displayName=l+"Provider";function y(g,f){var j;const z=((j=f==null?void 0:f[a])==null?void 0:j[h])||c,k=S.useContext(z);if(k)return k;if(m!==void 0)return m;throw new Error(`\`${g}\` must be used within \`${l}\``)}return[d,y]}const u=()=>{const l=o.map(m=>S.createContext(m));return function(c){const h=(c==null?void 0:c[a])||l;return S.useMemo(()=>({[`__scope${a}`]:{...c,[a]:h}}),[c,h])}};return u.scopeName=a,[s,tx(u,...r)]}function tx(...a){const r=a[0];if(a.length===1)return r;const o=()=>{const s=a.map(u=>({useScope:u(),scopeName:u.scopeName}));return function(l){const m=s.reduce((c,{useScope:h,scopeName:d})=>{const g=h(l)[`__scope${d}`];return{...c,...g}},{});return S.useMemo(()=>({[`__scope${r.scopeName}`]:m}),[m])}};return o.scopeName=r.scopeName,o}var _o=globalThis!=null&&globalThis.document?S.useLayoutEffect:()=>{},lx=Pu[" useId ".trim().toString()]||(()=>{}),cx=0;function Pr(a){const[r,o]=S.useState(lx());return _o(()=>{o(s=>s??String(cx++))},[a]),r?`radix-${r}`:""}var ux=Pu[" useInsertionEffect ".trim().toString()]||_o;function nl({prop:a,defaultProp:r,onChange:o=()=>{},caller:s}){const[u,l,m]=dx({defaultProp:r,onChange:o}),c=a!==void 0,h=c?a:u;{const y=S.useRef(a!==void 0);S.useEffect(()=>{const g=y.current;g!==c&&console.warn(`${s} is changing from ${g?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),y.current=c},[c,s])}const d=S.useCallback(y=>{var g;if(c){const f=px(y)?y(a):y;f!==a&&((g=m.current)==null||g.call(m,f))}else l(y)},[c,a,l,m]);return[h,d]}function dx({defaultProp:a,onChange:r}){const[o,s]=S.useState(a),u=S.useRef(o),l=S.useRef(r);return ux(()=>{l.current=r},[r]),S.useEffect(()=>{var m;u.current!==o&&((m=l.current)==null||m.call(l,o),u.current=o)},[o,u]),[o,s,l]}function px(a){return typeof a=="function"}function mx(a){const r=hx(a),o=S.forwardRef((s,u)=>{const{children:l,...m}=s,c=S.Children.toArray(l),h=c.find(yx);if(h){const d=h.props.children,y=c.map(g=>g===h?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:g);return B.jsx(r,{...m,ref:u,children:S.isValidElement(d)?S.cloneElement(d,void 0,y):null})}return B.jsx(r,{...m,ref:u,children:l})});return o.displayName=`${a}.Slot`,o}function hx(a){const r=S.forwardRef((o,s)=>{const{children:u,...l}=o;if(S.isValidElement(u)){const m=fx(u),c=bx(l,u.props);return u.type!==S.Fragment&&(c.ref=s?Or(s,m):m),S.cloneElement(u,c)}return S.Children.count(u)>1?S.Children.only(null):null});return r.displayName=`${a}.SlotClone`,r}var gx=Symbol("radix.slottable");function yx(a){return S.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===gx}function bx(a,r){const o={...r};for(const s in r){const u=a[s],l=r[s];/^on[A-Z]/.test(s)?u&&l?o[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(o[s]=u):s==="style"?o[s]={...u,...l}:s==="className"&&(o[s]=[u,l].filter(Boolean).join(" "))}return{...a,...o}}function fx(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}var vx=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Fi=vx.reduce((a,r)=>{const o=mx(`Primitive.${r}`),s=S.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?o:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${r}`,{...a,[r]:s}},{});function kx(a,r){a&&Qg.flushSync(()=>a.dispatchEvent(r))}function Do(a){const r=S.useRef(a);return S.useEffect(()=>{r.current=a}),S.useMemo(()=>(...o)=>{var s;return(s=r.current)==null?void 0:s.call(r,...o)},[])}function wx(a,r=globalThis==null?void 0:globalThis.document){const o=Do(a);S.useEffect(()=>{const s=u=>{u.key==="Escape"&&o(u)};return r.addEventListener("keydown",s,{capture:!0}),()=>r.removeEventListener("keydown",s,{capture:!0})},[o,r])}var xx="DismissableLayer",ju="dismissableLayer.update",zx="dismissableLayer.pointerDownOutside",qx="dismissableLayer.focusOutside",lh,hy=S.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),gy=S.forwardRef((a,r)=>{const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:l,onInteractOutside:m,onDismiss:c,...h}=a,d=S.useContext(hy),[y,g]=S.useState(null),f=(y==null?void 0:y.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,z]=S.useState({}),k=fa(r,R=>g(R)),j=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),A=j.indexOf(v),C=y?j.indexOf(y):-1,w=d.layersWithOutsidePointerEventsDisabled.size>0,_=C>=A,x=Cx(R=>{const F=R.target,O=[...d.branches].some(N=>N.contains(F));!_||O||(u==null||u(R),m==null||m(R),R.defaultPrevented||c==null||c())},f),D=Ex(R=>{const F=R.target;[...d.branches].some(N=>N.contains(F))||(l==null||l(R),m==null||m(R),R.defaultPrevented||c==null||c())},f);return wx(R=>{C===d.layers.size-1&&(s==null||s(R),!R.defaultPrevented&&c&&(R.preventDefault(),c()))},f),S.useEffect(()=>{if(y)return o&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(lh=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(y)),d.layers.add(y),ch(),()=>{o&&d.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=lh)}},[y,f,o,d]),S.useEffect(()=>()=>{y&&(d.layers.delete(y),d.layersWithOutsidePointerEventsDisabled.delete(y),ch())},[y,d]),S.useEffect(()=>{const R=()=>z({});return document.addEventListener(ju,R),()=>document.removeEventListener(ju,R)},[]),B.jsx(Fi.div,{...h,ref:k,style:{pointerEvents:w?_?"auto":"none":void 0,...a.style},onFocusCapture:Si(a.onFocusCapture,D.onFocusCapture),onBlurCapture:Si(a.onBlurCapture,D.onBlurCapture),onPointerDownCapture:Si(a.onPointerDownCapture,x.onPointerDownCapture)})});gy.displayName=xx;var jx="DismissableLayerBranch",Ax=S.forwardRef((a,r)=>{const o=S.useContext(hy),s=S.useRef(null),u=fa(r,s);return S.useEffect(()=>{const l=s.current;if(l)return o.branches.add(l),()=>{o.branches.delete(l)}},[o.branches]),B.jsx(Fi.div,{...a,ref:u})});Ax.displayName=jx;function Cx(a,r=globalThis==null?void 0:globalThis.document){const o=Do(a),s=S.useRef(!1),u=S.useRef(()=>{});return S.useEffect(()=>{const l=c=>{if(c.target&&!s.current){let h=function(){yy(zx,o,d,{discrete:!0})};const d={originalEvent:c};c.pointerType==="touch"?(r.removeEventListener("click",u.current),u.current=h,r.addEventListener("click",u.current,{once:!0})):h()}else r.removeEventListener("click",u.current);s.current=!1},m=window.setTimeout(()=>{r.addEventListener("pointerdown",l)},0);return()=>{window.clearTimeout(m),r.removeEventListener("pointerdown",l),r.removeEventListener("click",u.current)}},[r,o]),{onPointerDownCapture:()=>s.current=!0}}function Ex(a,r=globalThis==null?void 0:globalThis.document){const o=Do(a),s=S.useRef(!1);return S.useEffect(()=>{const u=l=>{l.target&&!s.current&&yy(qx,o,{originalEvent:l},{discrete:!1})};return r.addEventListener("focusin",u),()=>r.removeEventListener("focusin",u)},[r,o]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function ch(){const a=new CustomEvent(ju);document.dispatchEvent(a)}function yy(a,r,o,{discrete:s}){const u=o.originalEvent.target,l=new CustomEvent(a,{bubbles:!1,cancelable:!0,detail:o});r&&u.addEventListener(a,r,{once:!0}),s?kx(u,l):u.dispatchEvent(l)}var tu="focusScope.autoFocusOnMount",lu="focusScope.autoFocusOnUnmount",uh={bubbles:!1,cancelable:!0},Sx="FocusScope",by=S.forwardRef((a,r)=>{const{loop:o=!1,trapped:s=!1,onMountAutoFocus:u,onUnmountAutoFocus:l,...m}=a,[c,h]=S.useState(null),d=Do(u),y=Do(l),g=S.useRef(null),f=fa(r,j=>h(j)),z=S.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;S.useEffect(()=>{if(s){let j=function(w){if(z.paused||!c)return;const _=w.target;c.contains(_)?g.current=_:qn(g.current,{select:!0})},v=function(w){if(z.paused||!c)return;const _=w.relatedTarget;_!==null&&(c.contains(_)||qn(g.current,{select:!0}))},A=function(w){if(document.activeElement===document.body)for(const x of w)x.removedNodes.length>0&&qn(c)};document.addEventListener("focusin",j),document.addEventListener("focusout",v);const C=new MutationObserver(A);return c&&C.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",j),document.removeEventListener("focusout",v),C.disconnect()}}},[s,c,z.paused]),S.useEffect(()=>{if(c){ph.add(z);const j=document.activeElement;if(!c.contains(j)){const A=new CustomEvent(tu,uh);c.addEventListener(tu,d),c.dispatchEvent(A),A.defaultPrevented||(Bx(Tx(fy(c)),{select:!0}),document.activeElement===j&&qn(c))}return()=>{c.removeEventListener(tu,d),setTimeout(()=>{const A=new CustomEvent(lu,uh);c.addEventListener(lu,y),c.dispatchEvent(A),A.defaultPrevented||qn(j??document.body,{select:!0}),c.removeEventListener(lu,y),ph.remove(z)},0)}}},[c,d,y,z]);const k=S.useCallback(j=>{if(!o&&!s||z.paused)return;const v=j.key==="Tab"&&!j.altKey&&!j.ctrlKey&&!j.metaKey,A=document.activeElement;if(v&&A){const C=j.currentTarget,[w,_]=_x(C);w&&_?!j.shiftKey&&A===_?(j.preventDefault(),o&&qn(w,{select:!0})):j.shiftKey&&A===w&&(j.preventDefault(),o&&qn(_,{select:!0})):A===C&&j.preventDefault()}},[o,s,z.paused]);return B.jsx(Fi.div,{tabIndex:-1,...m,ref:f,onKeyDown:k})});by.displayName=Sx;function Bx(a,{select:r=!1}={}){const o=document.activeElement;for(const s of a)if(qn(s,{select:r}),document.activeElement!==o)return}function _x(a){const r=fy(a),o=dh(r,a),s=dh(r.reverse(),a);return[o,s]}function fy(a){const r=[],o=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const u=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||u?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)r.push(o.currentNode);return r}function dh(a,r){for(const o of a)if(!Dx(o,{upTo:r}))return o}function Dx(a,{upTo:r}){if(getComputedStyle(a).visibility==="hidden")return!0;for(;a;){if(r!==void 0&&a===r)return!1;if(getComputedStyle(a).display==="none")return!0;a=a.parentElement}return!1}function Fx(a){return a instanceof HTMLInputElement&&"select"in a}function qn(a,{select:r=!1}={}){if(a&&a.focus){const o=document.activeElement;a.focus({preventScroll:!0}),a!==o&&Fx(a)&&r&&a.select()}}var ph=Rx();function Rx(){let a=[];return{add(r){const o=a[0];r!==o&&(o==null||o.pause()),a=mh(a,r),a.unshift(r)},remove(r){var o;a=mh(a,r),(o=a[0])==null||o.resume()}}}function mh(a,r){const o=[...a],s=o.indexOf(r);return s!==-1&&o.splice(s,1),o}function Tx(a){return a.filter(r=>r.tagName!=="A")}var Px="Portal",vy=S.forwardRef((a,r)=>{var c;const{container:o,...s}=a,[u,l]=S.useState(!1);_o(()=>l(!0),[]);const m=o||u&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return m?Gg.createPortal(B.jsx(Fi.div,{...s,ref:r}),m):null});vy.displayName=Px;function Nx(a,r){return S.useReducer((o,s)=>r[o][s]??o,a)}var Po=a=>{const{present:r,children:o}=a,s=Ix(r),u=typeof o=="function"?o({present:s.isPresent}):S.Children.only(o),l=fa(s.ref,Mx(u));return typeof o=="function"||s.isPresent?S.cloneElement(u,{ref:l}):null};Po.displayName="Presence";function Ix(a){const[r,o]=S.useState(),s=S.useRef(null),u=S.useRef(a),l=S.useRef("none"),m=a?"mounted":"unmounted",[c,h]=Nx(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return S.useEffect(()=>{const d=Js(s.current);l.current=c==="mounted"?d:"none"},[c]),_o(()=>{const d=s.current,y=u.current;if(y!==a){const f=l.current,z=Js(d);a?h("MOUNT"):z==="none"||(d==null?void 0:d.display)==="none"?h("UNMOUNT"):h(y&&f!==z?"ANIMATION_OUT":"UNMOUNT"),u.current=a}},[a,h]),_o(()=>{if(r){let d;const y=r.ownerDocument.defaultView??window,g=z=>{const j=Js(s.current).includes(CSS.escape(z.animationName));if(z.target===r&&j&&(h("ANIMATION_END"),!u.current)){const v=r.style.animationFillMode;r.style.animationFillMode="forwards",d=y.setTimeout(()=>{r.style.animationFillMode==="forwards"&&(r.style.animationFillMode=v)})}},f=z=>{z.target===r&&(l.current=Js(s.current))};return r.addEventListener("animationstart",f),r.addEventListener("animationcancel",g),r.addEventListener("animationend",g),()=>{y.clearTimeout(d),r.removeEventListener("animationstart",f),r.removeEventListener("animationcancel",g),r.removeEventListener("animationend",g)}}else h("ANIMATION_END")},[r,h]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:S.useCallback(d=>{s.current=d?getComputedStyle(d):null,o(d)},[])}}function Js(a){return(a==null?void 0:a.animationName)||"none"}function Mx(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}var cu=0;function Ox(){S.useEffect(()=>{const a=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",a[0]??hh()),document.body.insertAdjacentElement("beforeend",a[1]??hh()),cu++,()=>{cu===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),cu--}},[])}function hh(){const a=document.createElement("span");return a.setAttribute("data-radix-focus-guard",""),a.tabIndex=0,a.style.outline="none",a.style.opacity="0",a.style.position="fixed",a.style.pointerEvents="none",a}var Oa=function(){return Oa=Object.assign||function(r){for(var o,s=1,u=arguments.length;s"u")return nz;var r=oz(a),o=document.documentElement.clientWidth,s=window.innerWidth;return{left:r[0],top:r[1],right:r[2],gap:Math.max(0,s-o+r[2]-r[0])}},sz=zy(),Eo="data-scroll-locked",tz=function(a,r,o,s){var u=a.left,l=a.top,m=a.right,c=a.gap;return o===void 0&&(o="margin"),` + */const vk=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],$g=Nu("x",vk);var Qg=Ug();const Gg=Fo(Qg);function kk(a){if(typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r.appendChild(o),o.styleSheet?o.styleSheet.cssText=a:o.appendChild(document.createTextNode(a))}const wk=a=>{switch(a){case"success":return qk;case"info":return Ak;case"warning":return jk;case"error":return Ck;default:return null}},xk=Array(12).fill(0),zk=({visible:a,className:r})=>he.createElement("div",{className:["sonner-loading-wrapper",r].filter(Boolean).join(" "),"data-visible":a},he.createElement("div",{className:"sonner-spinner"},xk.map((o,s)=>he.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${s}`})))),qk=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),jk=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Ak=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),Ck=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},he.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Ek=he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},he.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),he.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Sk=()=>{const[a,r]=he.useState(document.hidden);return he.useEffect(()=>{const o=()=>{r(document.hidden)};return document.addEventListener("visibilitychange",o),()=>window.removeEventListener("visibilitychange",o)},[]),a};let ku=1;class Bk{constructor(){this.subscribe=r=>(this.subscribers.push(r),()=>{const o=this.subscribers.indexOf(r);this.subscribers.splice(o,1)}),this.publish=r=>{this.subscribers.forEach(o=>o(r))},this.addToast=r=>{this.publish(r),this.toasts=[...this.toasts,r]},this.create=r=>{var o;const{message:s,...u}=r,l=typeof(r==null?void 0:r.id)=="number"||((o=r.id)==null?void 0:o.length)>0?r.id:ku++,m=this.toasts.find(h=>h.id===l),c=r.dismissible===void 0?!0:r.dismissible;return this.dismissedToasts.has(l)&&this.dismissedToasts.delete(l),m?this.toasts=this.toasts.map(h=>h.id===l?(this.publish({...h,...r,id:l,title:s}),{...h,...r,id:l,dismissible:c,title:s}):h):this.addToast({title:s,...u,dismissible:c,id:l}),l},this.dismiss=r=>(r?(this.dismissedToasts.add(r),requestAnimationFrame(()=>this.subscribers.forEach(o=>o({id:r,dismiss:!0})))):this.toasts.forEach(o=>{this.subscribers.forEach(s=>s({id:o.id,dismiss:!0}))}),r),this.message=(r,o)=>this.create({...o,message:r}),this.error=(r,o)=>this.create({...o,message:r,type:"error"}),this.success=(r,o)=>this.create({...o,type:"success",message:r}),this.info=(r,o)=>this.create({...o,type:"info",message:r}),this.warning=(r,o)=>this.create({...o,type:"warning",message:r}),this.loading=(r,o)=>this.create({...o,type:"loading",message:r}),this.promise=(r,o)=>{if(!o)return;let s;o.loading!==void 0&&(s=this.create({...o,promise:r,type:"loading",message:o.loading,description:typeof o.description!="function"?o.description:void 0}));const u=Promise.resolve(r instanceof Function?r():r);let l=s!==void 0,m;const c=u.then(async d=>{if(m=["resolve",d],he.isValidElement(d))l=!1,this.create({id:s,type:"default",message:d});else if(Dk(d)&&!d.ok){l=!1;const g=typeof o.error=="function"?await o.error(`HTTP error! status: ${d.status}`):o.error,f=typeof o.description=="function"?await o.description(`HTTP error! status: ${d.status}`):o.description,k=typeof g=="object"&&!he.isValidElement(g)?g:{message:g};this.create({id:s,type:"error",description:f,...k})}else if(d instanceof Error){l=!1;const g=typeof o.error=="function"?await o.error(d):o.error,f=typeof o.description=="function"?await o.description(d):o.description,k=typeof g=="object"&&!he.isValidElement(g)?g:{message:g};this.create({id:s,type:"error",description:f,...k})}else if(o.success!==void 0){l=!1;const g=typeof o.success=="function"?await o.success(d):o.success,f=typeof o.description=="function"?await o.description(d):o.description,k=typeof g=="object"&&!he.isValidElement(g)?g:{message:g};this.create({id:s,type:"success",description:f,...k})}}).catch(async d=>{if(m=["reject",d],o.error!==void 0){l=!1;const y=typeof o.error=="function"?await o.error(d):o.error,g=typeof o.description=="function"?await o.description(d):o.description,z=typeof y=="object"&&!he.isValidElement(y)?y:{message:y};this.create({id:s,type:"error",description:g,...z})}}).finally(()=>{l&&(this.dismiss(s),s=void 0),o.finally==null||o.finally.call(o)}),h=()=>new Promise((d,y)=>c.then(()=>m[0]==="reject"?y(m[1]):d(m[1])).catch(y));return typeof s!="string"&&typeof s!="number"?{unwrap:h}:Object.assign(s,{unwrap:h})},this.custom=(r,o)=>{const s=(o==null?void 0:o.id)||ku++;return this.create({jsx:r(s),id:s,...o}),s},this.getActiveToasts=()=>this.toasts.filter(r=>!this.dismissedToasts.has(r.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const na=new Bk,_k=(a,r)=>{const o=(r==null?void 0:r.id)||ku++;return na.addToast({title:a,...r,id:o}),o},Dk=a=>a&&typeof a=="object"&&"ok"in a&&typeof a.ok=="boolean"&&"status"in a&&typeof a.status=="number",Fk=_k,Rk=()=>na.toasts,Tk=()=>na.getActiveToasts(),Tr=Object.assign(Fk,{success:na.success,info:na.info,warning:na.warning,error:na.error,custom:na.custom,message:na.message,promise:na.promise,dismiss:na.dismiss,loading:na.loading},{getHistory:Rk,getToasts:Tk});kk("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Ys(a){return a.label!==void 0}const Pk=3,Nk="24px",Ik="16px",Km=4e3,Mk=356,Ok=14,Lk=45,Hk=200;function Na(...a){return a.filter(Boolean).join(" ")}function Vk(a){const[r,o]=a.split("-"),s=[];return r&&s.push(r),o&&s.push(o),s}const Uk=a=>{var r,o,s,u,l,m,c,h,d;const{invert:y,toast:g,unstyled:f,interacting:z,setHeights:k,visibleToasts:j,heights:v,index:A,toasts:C,expanded:w,removeToast:_,defaultRichColors:x,closeButton:D,style:R,cancelButtonStyle:F,actionButtonStyle:O,className:N="",descriptionClassName:T="",duration:W,position:H,gap:K,expandByDefault:ae,classNames:X,icons:ne,closeButtonAriaLabel:$="Close toast"}=a,[oe,ee]=he.useState(null),[q,I]=he.useState(null),[L,Q]=he.useState(!1),[de,ge]=he.useState(!1),[be,se]=he.useState(!1),[ce,Ae]=he.useState(!1),[Fe,He]=he.useState(!1),[ai,Qe]=he.useState(0),[Oe,Me]=he.useState(0),Xe=he.useRef(g.duration||W||Km),Ve=he.useRef(null),Ge=he.useRef(null),yi=A===0,si=A+1<=j,Le=g.type,mi=g.dismissible!==!1,Gi=g.className||"",va=g.descriptionClassName||"",qi=he.useMemo(()=>v.findIndex(Ce=>Ce.toastId===g.id)||0,[v,g.id]),Mi=he.useMemo(()=>{var Ce;return(Ce=g.closeButton)!=null?Ce:D},[g.closeButton,D]),Ki=he.useMemo(()=>g.duration||W||Km,[g.duration,W]),oa=he.useRef(0),ji=he.useRef(0),ui=he.useRef(0),ki=he.useRef(null),[_a,da]=H.split("-"),ie=he.useMemo(()=>v.reduce((Ce,Te,Ue)=>Ue>=qi?Ce:Ce+Te.height,0),[v,qi]),pe=Sk(),V=g.invert||y,J=Le==="loading";ji.current=he.useMemo(()=>qi*K+ie,[qi,ie]),he.useEffect(()=>{Xe.current=Ki},[Ki]),he.useEffect(()=>{Q(!0)},[]),he.useEffect(()=>{const Ce=Ge.current;if(Ce){const Te=Ce.getBoundingClientRect().height;return Me(Te),k(Ue=>[{toastId:g.id,height:Te,position:g.position},...Ue]),()=>k(Ue=>Ue.filter(Ke=>Ke.toastId!==g.id))}},[k,g.id]),he.useLayoutEffect(()=>{if(!L)return;const Ce=Ge.current,Te=Ce.style.height;Ce.style.height="auto";const Ue=Ce.getBoundingClientRect().height;Ce.style.height=Te,Me(Ue),k(Ke=>Ke.find(Re=>Re.toastId===g.id)?Ke.map(Re=>Re.toastId===g.id?{...Re,height:Ue}:Re):[{toastId:g.id,height:Ue,position:g.position},...Ke])},[L,g.title,g.description,k,g.id,g.jsx,g.action,g.cancel]);const re=he.useCallback(()=>{ge(!0),Qe(ji.current),k(Ce=>Ce.filter(Te=>Te.toastId!==g.id)),setTimeout(()=>{_(g)},Hk)},[g,_,k,ji]);he.useEffect(()=>{if(g.promise&&Le==="loading"||g.duration===1/0||g.type==="loading")return;let Ce;return w||z||pe?(()=>{if(ui.current{Xe.current!==1/0&&(oa.current=new Date().getTime(),Ce=setTimeout(()=>{g.onAutoClose==null||g.onAutoClose.call(g,g),re()},Xe.current))})(),()=>clearTimeout(Ce)},[w,z,g,Le,pe,re]),he.useEffect(()=>{g.delete&&(re(),g.onDismiss==null||g.onDismiss.call(g,g))},[re,g.delete]);function ye(){var Ce;if(ne!=null&&ne.loading){var Te;return he.createElement("div",{className:Na(X==null?void 0:X.loader,g==null||(Te=g.classNames)==null?void 0:Te.loader,"sonner-loader"),"data-visible":Le==="loading"},ne.loading)}return he.createElement(zk,{className:Na(X==null?void 0:X.loader,g==null||(Ce=g.classNames)==null?void 0:Ce.loader),visible:Le==="loading"})}const fe=g.icon||(ne==null?void 0:ne[Le])||wk(Le);var _e,ni;return he.createElement("li",{tabIndex:0,ref:Ge,className:Na(N,Gi,X==null?void 0:X.toast,g==null||(r=g.classNames)==null?void 0:r.toast,X==null?void 0:X.default,X==null?void 0:X[Le],g==null||(o=g.classNames)==null?void 0:o[Le]),"data-sonner-toast":"","data-rich-colors":(_e=g.richColors)!=null?_e:x,"data-styled":!(g.jsx||g.unstyled||f),"data-mounted":L,"data-promise":!!g.promise,"data-swiped":Fe,"data-removed":de,"data-visible":si,"data-y-position":_a,"data-x-position":da,"data-index":A,"data-front":yi,"data-swiping":be,"data-dismissible":mi,"data-type":Le,"data-invert":V,"data-swipe-out":ce,"data-swipe-direction":q,"data-expanded":!!(w||ae&&L),"data-testid":g.testId,style:{"--index":A,"--toasts-before":A,"--z-index":C.length-A,"--offset":`${de?ai:ji.current}px`,"--initial-height":ae?"auto":`${Oe}px`,...R,...g.style},onDragEnd:()=>{se(!1),ee(null),ki.current=null},onPointerDown:Ce=>{Ce.button!==2&&(J||!mi||(Ve.current=new Date,Qe(ji.current),Ce.target.setPointerCapture(Ce.pointerId),Ce.target.tagName!=="BUTTON"&&(se(!0),ki.current={x:Ce.clientX,y:Ce.clientY})))},onPointerUp:()=>{var Ce,Te,Ue;if(ce||!mi)return;ki.current=null;const Ke=Number(((Ce=Ge.current)==null?void 0:Ce.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Oi=Number(((Te=Ge.current)==null?void 0:Te.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Re=new Date().getTime()-((Ue=Ve.current)==null?void 0:Ue.getTime()),Ye=oe==="x"?Ke:Oi,bi=Math.abs(Ye)/Re;if(Math.abs(Ye)>=Lk||bi>.11){Qe(ji.current),g.onDismiss==null||g.onDismiss.call(g,g),I(oe==="x"?Ke>0?"right":"left":Oi>0?"down":"up"),re(),Ae(!0);return}else{var Je,hi;(Je=Ge.current)==null||Je.style.setProperty("--swipe-amount-x","0px"),(hi=Ge.current)==null||hi.style.setProperty("--swipe-amount-y","0px")}He(!1),se(!1),ee(null)},onPointerMove:Ce=>{var Te,Ue,Ke;if(!ki.current||!mi||((Te=window.getSelection())==null?void 0:Te.toString().length)>0)return;const Re=Ce.clientY-ki.current.y,Ye=Ce.clientX-ki.current.x;var bi;const Je=(bi=a.swipeDirections)!=null?bi:Vk(H);!oe&&(Math.abs(Ye)>1||Math.abs(Re)>1)&&ee(Math.abs(Ye)>Math.abs(Re)?"x":"y");let hi={x:0,y:0};const ka=Yi=>1/(1.5+Math.abs(Yi)/20);if(oe==="y"){if(Je.includes("top")||Je.includes("bottom"))if(Je.includes("top")&&Re<0||Je.includes("bottom")&&Re>0)hi.y=Re;else{const Yi=Re*ka(Re);hi.y=Math.abs(Yi)0)hi.x=Ye;else{const Yi=Ye*ka(Ye);hi.x=Math.abs(Yi)0||Math.abs(hi.y)>0)&&He(!0),(Ue=Ge.current)==null||Ue.style.setProperty("--swipe-amount-x",`${hi.x}px`),(Ke=Ge.current)==null||Ke.style.setProperty("--swipe-amount-y",`${hi.y}px`)}},Mi&&!g.jsx&&Le!=="loading"?he.createElement("button",{"aria-label":$,"data-disabled":J,"data-close-button":!0,onClick:J||!mi?()=>{}:()=>{re(),g.onDismiss==null||g.onDismiss.call(g,g)},className:Na(X==null?void 0:X.closeButton,g==null||(s=g.classNames)==null?void 0:s.closeButton)},(ni=ne==null?void 0:ne.close)!=null?ni:Ek):null,(Le||g.icon||g.promise)&&g.icon!==null&&((ne==null?void 0:ne[Le])!==null||g.icon)?he.createElement("div",{"data-icon":"",className:Na(X==null?void 0:X.icon,g==null||(u=g.classNames)==null?void 0:u.icon)},g.promise||g.type==="loading"&&!g.icon?g.icon||ye():null,g.type!=="loading"?fe:null):null,he.createElement("div",{"data-content":"",className:Na(X==null?void 0:X.content,g==null||(l=g.classNames)==null?void 0:l.content)},he.createElement("div",{"data-title":"",className:Na(X==null?void 0:X.title,g==null||(m=g.classNames)==null?void 0:m.title)},g.jsx?g.jsx:typeof g.title=="function"?g.title():g.title),g.description?he.createElement("div",{"data-description":"",className:Na(T,va,X==null?void 0:X.description,g==null||(c=g.classNames)==null?void 0:c.description)},typeof g.description=="function"?g.description():g.description):null),he.isValidElement(g.cancel)?g.cancel:g.cancel&&Ys(g.cancel)?he.createElement("button",{"data-button":!0,"data-cancel":!0,style:g.cancelButtonStyle||F,onClick:Ce=>{Ys(g.cancel)&&mi&&(g.cancel.onClick==null||g.cancel.onClick.call(g.cancel,Ce),re())},className:Na(X==null?void 0:X.cancelButton,g==null||(h=g.classNames)==null?void 0:h.cancelButton)},g.cancel.label):null,he.isValidElement(g.action)?g.action:g.action&&Ys(g.action)?he.createElement("button",{"data-button":!0,"data-action":!0,style:g.actionButtonStyle||O,onClick:Ce=>{Ys(g.action)&&(g.action.onClick==null||g.action.onClick.call(g.action,Ce),!Ce.defaultPrevented&&re())},className:Na(X==null?void 0:X.actionButton,g==null||(d=g.classNames)==null?void 0:d.actionButton)},g.action.label):null)};function Ym(){if(typeof window>"u"||typeof document>"u")return"ltr";const a=document.documentElement.getAttribute("dir");return a==="auto"||!a?window.getComputedStyle(document.documentElement).direction:a}function Wk(a,r){const o={};return[a,r].forEach((s,u)=>{const l=u===1,m=l?"--mobile-offset":"--offset",c=l?Ik:Nk;function h(d){["top","right","bottom","left"].forEach(y=>{o[`${m}-${y}`]=typeof d=="number"?`${d}px`:d})}typeof s=="number"||typeof s=="string"?h(s):typeof s=="object"?["top","right","bottom","left"].forEach(d=>{s[d]===void 0?o[`${m}-${d}`]=c:o[`${m}-${d}`]=typeof s[d]=="number"?`${s[d]}px`:s[d]}):h(c)}),o}const $k=he.forwardRef(function(r,o){const{id:s,invert:u,position:l="bottom-right",hotkey:m=["altKey","KeyT"],expand:c,closeButton:h,className:d,offset:y,mobileOffset:g,theme:f="light",richColors:z,duration:k,style:j,visibleToasts:v=Pk,toastOptions:A,dir:C=Ym(),gap:w=Ok,icons:_,containerAriaLabel:x="Notifications"}=r,[D,R]=he.useState([]),F=he.useMemo(()=>s?D.filter(L=>L.toasterId===s):D.filter(L=>!L.toasterId),[D,s]),O=he.useMemo(()=>Array.from(new Set([l].concat(F.filter(L=>L.position).map(L=>L.position)))),[F,l]),[N,T]=he.useState([]),[W,H]=he.useState(!1),[K,ae]=he.useState(!1),[X,ne]=he.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=he.useRef(null),oe=m.join("+").replace(/Key/g,"").replace(/Digit/g,""),ee=he.useRef(null),q=he.useRef(!1),I=he.useCallback(L=>{R(Q=>{var de;return(de=Q.find(ge=>ge.id===L.id))!=null&&de.delete||na.dismiss(L.id),Q.filter(({id:ge})=>ge!==L.id)})},[]);return he.useEffect(()=>na.subscribe(L=>{if(L.dismiss){requestAnimationFrame(()=>{R(Q=>Q.map(de=>de.id===L.id?{...de,delete:!0}:de))});return}setTimeout(()=>{Gg.flushSync(()=>{R(Q=>{const de=Q.findIndex(ge=>ge.id===L.id);return de!==-1?[...Q.slice(0,de),{...Q[de],...L},...Q.slice(de+1)]:[L,...Q]})})})}),[D]),he.useEffect(()=>{if(f!=="system"){ne(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ne("dark"):ne("light")),typeof window>"u")return;const L=window.matchMedia("(prefers-color-scheme: dark)");try{L.addEventListener("change",({matches:Q})=>{ne(Q?"dark":"light")})}catch{L.addListener(({matches:de})=>{try{ne(de?"dark":"light")}catch(ge){console.error(ge)}})}},[f]),he.useEffect(()=>{D.length<=1&&H(!1)},[D]),he.useEffect(()=>{const L=Q=>{var de;if(m.every(se=>Q[se]||Q.code===se)){var be;H(!0),(be=$.current)==null||be.focus()}Q.code==="Escape"&&(document.activeElement===$.current||(de=$.current)!=null&&de.contains(document.activeElement))&&H(!1)};return document.addEventListener("keydown",L),()=>document.removeEventListener("keydown",L)},[m]),he.useEffect(()=>{if($.current)return()=>{ee.current&&(ee.current.focus({preventScroll:!0}),ee.current=null,q.current=!1)}},[$.current]),he.createElement("section",{ref:o,"aria-label":`${x} ${oe}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},O.map((L,Q)=>{var de;const[ge,be]=L.split("-");return F.length?he.createElement("ol",{key:L,dir:C==="auto"?Ym():C,tabIndex:-1,ref:$,className:d,"data-sonner-toaster":!0,"data-sonner-theme":X,"data-y-position":ge,"data-x-position":be,style:{"--front-toast-height":`${((de=N[0])==null?void 0:de.height)||0}px`,"--width":`${Mk}px`,"--gap":`${w}px`,...j,...Wk(y,g)},onBlur:se=>{q.current&&!se.currentTarget.contains(se.relatedTarget)&&(q.current=!1,ee.current&&(ee.current.focus({preventScroll:!0}),ee.current=null))},onFocus:se=>{se.target instanceof HTMLElement&&se.target.dataset.dismissible==="false"||q.current||(q.current=!0,ee.current=se.relatedTarget)},onMouseEnter:()=>H(!0),onMouseMove:()=>H(!0),onMouseLeave:()=>{K||H(!1)},onDragEnd:()=>H(!1),onPointerDown:se=>{se.target instanceof HTMLElement&&se.target.dataset.dismissible==="false"||ae(!0)},onPointerUp:()=>ae(!1)},F.filter(se=>!se.position&&Q===0||se.position===L).map((se,ce)=>{var Ae,Fe;return he.createElement(Uk,{key:se.id,icons:_,index:ce,toast:se,defaultRichColors:z,duration:(Ae=A==null?void 0:A.duration)!=null?Ae:k,className:A==null?void 0:A.className,descriptionClassName:A==null?void 0:A.descriptionClassName,invert:u,visibleToasts:v,closeButton:(Fe=A==null?void 0:A.closeButton)!=null?Fe:h,interacting:K,position:L,style:A==null?void 0:A.style,unstyled:A==null?void 0:A.unstyled,classNames:A==null?void 0:A.classNames,cancelButtonStyle:A==null?void 0:A.cancelButtonStyle,actionButtonStyle:A==null?void 0:A.actionButtonStyle,closeButtonAriaLabel:A==null?void 0:A.closeButtonAriaLabel,removeToast:I,toasts:F.filter(He=>He.position==se.position),heights:N.filter(He=>He.position==se.position),setHeights:T,expandByDefault:c,gap:w,expanded:W,swipeDirections:r.swipeDirections})})):null}))}),Qk=({...a})=>B.jsx($k,{theme:"dark",className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",error:"group-[.toaster]:bg-[#2a1a1a] group-[.toaster]:text-[#e8a0a0] group-[.toaster]:border-[#4a2a2a] [&_[data-description]]:text-[#b08080]"}},...a});function Gk({health:a,config:r,onConfigClick:o,onAdvertise:s,onMenuClick:u}){const l=(a==null?void 0:a.radio_connected)??!1,[m,c]=S.useState(!1),h=async()=>{c(!0);try{const d=await ei.reconnectRadio();d.connected&&Tr.success("Reconnected",{description:d.message})}catch(d){Tr.error("Reconnection failed",{description:d instanceof Error?d.message:"Check radio connection and power"})}finally{c(!1)}};return B.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[u&&B.jsx("button",{onClick:u,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:B.jsx(fk,{className:"h-5 w-5"})}),B.jsx("h1",{className:"hidden lg:block text-base font-semibold mr-auto",children:"RemoteTerm"}),B.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[B.jsx("div",{className:`w-2 h-2 rounded-full ${l?"bg-[#4caf50]":"bg-[#666]"}`}),B.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:l?"Connected":"Disconnected"})]}),(a==null?void 0:a.serial_port)&&B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:["Port: ",B.jsx("span",{className:"text-[#e0e0e0]",children:a.serial_port})]}),r&&B.jsxs(B.Fragment,{children:[B.jsx("div",{className:"hidden lg:flex items-center gap-1 text-[#888]",children:B.jsx("span",{className:"text-[#e0e0e0]",children:r.name||"Unnamed"})}),B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:[r.radio.freq," MHz/SF",r.radio.sf,"/CR",r.radio.cr,"/",r.tx_power,"dBm"]})]}),B.jsx("div",{className:"flex-1 lg:hidden"}),!l&&B.jsx("button",{onClick:h,disabled:m,className:"px-3 py-1 bg-[#4a3000] border border-[#6b4500] text-[#ffa500] rounded text-xs cursor-pointer hover:bg-[#5a3a00] disabled:opacity-50 disabled:cursor-not-allowed",children:m?"Reconnecting...":"Reconnect"}),B.jsx("button",{onClick:s,disabled:!l,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444] disabled:bg-[#333] disabled:text-[#666] disabled:cursor-not-allowed",children:"Advertise"}),B.jsx("button",{onClick:o,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444]",children:"Config"})]})}const Kk=12;function Bo(a){return a.slice(0,Kk)}function Kg(a,r){return!a||!r?!1:Bo(a)===Bo(r)}function Kn(a,r){return a||Bo(r)}const wu="remoteterm-lastMessageTime",xu="remoteterm-lastReadTime";function il(a){try{const r=localStorage.getItem(a);return r?JSON.parse(r):{}}catch{return{}}}function Yg(a,r){try{localStorage.setItem(a,JSON.stringify(r))}catch{}}function Zm(){return il(wu)}function Yk(){return il(xu)}function nu(a,r){const o=il(wu);return(!o[a]||r>o[a])&&(o[a]=r,Yg(wu,o)),o}function ou(a,r){const o=il(xu);return o[a]=r,Yg(xu,o),o}function an(a,r){return a==="channel"?`channel-${r}`:`contact-${Bo(r)}`}const zu=2,Zk={text:"🛜",background:"#444444",textColor:"#ffffff"};function Xk(a){let r=0;for(let o=0;o>8)%30,u=35+(r>>16)%20,l=`hsl(${o}, ${s}%, ${u}%)`,m=u<45?"#ffffff":"#000000";return{background:l,text:m}}function aw(a,r,o){if(o===zu)return Zk;const s=ew(a,r),u=iw(r);return{text:s,background:u.background,textColor:u.text}}function Zg({name:a,publicKey:r,size:o=28,contactType:s}){const u=aw(a,r,s);return B.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:u.background,color:u.textColor,width:o,height:o,fontSize:o*.45},children:u.text})}function Xg(a){var r,o,s="";if(typeof a=="string"||typeof a=="number")s+=a;else if(typeof a=="object")if(Array.isArray(a)){var u=a.length;for(r=0;r{const o=new Array(a.length+r.length);for(let s=0;s({classGroupId:a,validator:r}),ey=(a=new Map,r=null,o)=>({nextPart:a,validators:r,classGroupId:o}),Gt="-",Xm=[],rw="arbitrary..",sw=a=>{const r=lw(a),{conflictingClassGroups:o,conflictingClassGroupModifiers:s}=a;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return tw(m);const c=m.split(Gt),h=c[0]===""&&c.length>1?1:0;return iy(c,h,r)},getConflictingClassGroupIds:(m,c)=>{if(c){const h=s[m],d=o[m];return h?d?nw(d,h):h:d||Xm}return o[m]||Xm}}},iy=(a,r,o)=>{if(a.length-r===0)return o.classGroupId;const u=a[r],l=o.nextPart.get(u);if(l){const d=iy(a,r+1,l);if(d)return d}const m=o.validators;if(m===null)return;const c=r===0?a.join(Gt):a.slice(r).join(Gt),h=m.length;for(let d=0;da.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const r=a.slice(1,-1),o=r.indexOf(":"),s=r.slice(0,o);return s?rw+s:void 0})(),lw=a=>{const{theme:r,classGroups:o}=a;return cw(o,r)},cw=(a,r)=>{const o=ey();for(const s in a){const u=a[s];Iu(u,o,s,r)}return o},Iu=(a,r,o,s)=>{const u=a.length;for(let l=0;l{if(typeof a=="string"){dw(a,r,o);return}if(typeof a=="function"){pw(a,r,o,s);return}mw(a,r,o,s)},dw=(a,r,o)=>{const s=a===""?r:ay(r,a);s.classGroupId=o},pw=(a,r,o,s)=>{if(hw(a)){Iu(a(s),r,o,s);return}r.validators===null&&(r.validators=[]),r.validators.push(ow(o,a))},mw=(a,r,o,s)=>{const u=Object.entries(a),l=u.length;for(let m=0;m{let o=a;const s=r.split(Gt),u=s.length;for(let l=0;l"isThemeGetter"in a&&a.isThemeGetter===!0,gw=a=>{if(a<1)return{get:()=>{},set:()=>{}};let r=0,o=Object.create(null),s=Object.create(null);const u=(l,m)=>{o[l]=m,r++,r>a&&(r=0,s=o,o=Object.create(null))};return{get(l){let m=o[l];if(m!==void 0)return m;if((m=s[l])!==void 0)return u(l,m),m},set(l,m){l in o?o[l]=m:u(l,m)}}},qu="!",Jm=":",yw=[],eh=(a,r,o,s,u)=>({modifiers:a,hasImportantModifier:r,baseClassName:o,maybePostfixModifierPosition:s,isExternal:u}),bw=a=>{const{prefix:r,experimentalParseClassName:o}=a;let s=u=>{const l=[];let m=0,c=0,h=0,d;const y=u.length;for(let j=0;jh?d-h:void 0;return eh(l,z,f,k)};if(r){const u=r+Jm,l=s;s=m=>m.startsWith(u)?l(m.slice(u.length)):eh(yw,!1,m,void 0,!0)}if(o){const u=s;s=l=>o({className:l,parseClassName:u})}return s},fw=a=>{const r=new Map;return a.orderSensitiveModifiers.forEach((o,s)=>{r.set(o,1e6+s)}),o=>{const s=[];let u=[];for(let l=0;l0&&(u.sort(),s.push(...u),u=[]),s.push(m)):u.push(m)}return u.length>0&&(u.sort(),s.push(...u)),s}},vw=a=>({cache:gw(a.cacheSize),parseClassName:bw(a),sortModifiers:fw(a),...sw(a)}),kw=/\s+/,ww=(a,r)=>{const{parseClassName:o,getClassGroupId:s,getConflictingClassGroupIds:u,sortModifiers:l}=r,m=[],c=a.trim().split(kw);let h="";for(let d=c.length-1;d>=0;d-=1){const y=c[d],{isExternal:g,modifiers:f,hasImportantModifier:z,baseClassName:k,maybePostfixModifierPosition:j}=o(y);if(g){h=y+(h.length>0?" "+h:h);continue}let v=!!j,A=s(v?k.substring(0,j):k);if(!A){if(!v){h=y+(h.length>0?" "+h:h);continue}if(A=s(k),!A){h=y+(h.length>0?" "+h:h);continue}v=!1}const C=f.length===0?"":f.length===1?f[0]:l(f).join(":"),w=z?C+qu:C,_=w+A;if(m.indexOf(_)>-1)continue;m.push(_);const x=u(A,v);for(let D=0;D0?" "+h:h)}return h},xw=(...a)=>{let r=0,o,s,u="";for(;r{if(typeof a=="string")return a;let r,o="";for(let s=0;s{let o,s,u,l;const m=h=>{const d=r.reduce((y,g)=>g(y),a());return o=vw(d),s=o.cache.get,u=o.cache.set,l=c,c(h)},c=h=>{const d=s(h);if(d)return d;const y=ww(h,o);return u(h,y),y};return l=m,(...h)=>l(xw(...h))},qw=[],Ei=a=>{const r=o=>o[a]||qw;return r.isThemeGetter=!0,r},oy=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ry=/^\((?:(\w[\w-]*):)?(.+)\)$/i,jw=/^\d+\/\d+$/,Aw=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Cw=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ew=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Sw=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Bw=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,zo=a=>jw.test(a),Pe=a=>!!a&&!Number.isNaN(Number(a)),zn=a=>!!a&&Number.isInteger(Number(a)),ru=a=>a.endsWith("%")&&Pe(a.slice(0,-1)),Za=a=>Aw.test(a),_w=()=>!0,Dw=a=>Cw.test(a)&&!Ew.test(a),sy=()=>!1,Fw=a=>Sw.test(a),Rw=a=>Bw.test(a),Tw=a=>!xe(a)&&!ze(a),Pw=a=>Ro(a,cy,sy),xe=a=>oy.test(a),Hn=a=>Ro(a,uy,Dw),su=a=>Ro(a,Lw,Pe),ih=a=>Ro(a,ty,sy),Nw=a=>Ro(a,ly,Rw),Zs=a=>Ro(a,dy,Fw),ze=a=>ry.test(a),fr=a=>To(a,uy),Iw=a=>To(a,Hw),ah=a=>To(a,ty),Mw=a=>To(a,cy),Ow=a=>To(a,ly),Xs=a=>To(a,dy,!0),Ro=(a,r,o)=>{const s=oy.exec(a);return s?s[1]?r(s[1]):o(s[2]):!1},To=(a,r,o=!1)=>{const s=ry.exec(a);return s?s[1]?r(s[1]):o:!1},ty=a=>a==="position"||a==="percentage",ly=a=>a==="image"||a==="url",cy=a=>a==="length"||a==="size"||a==="bg-size",uy=a=>a==="length",Lw=a=>a==="number",Hw=a=>a==="family-name",dy=a=>a==="shadow",Vw=()=>{const a=Ei("color"),r=Ei("font"),o=Ei("text"),s=Ei("font-weight"),u=Ei("tracking"),l=Ei("leading"),m=Ei("breakpoint"),c=Ei("container"),h=Ei("spacing"),d=Ei("radius"),y=Ei("shadow"),g=Ei("inset-shadow"),f=Ei("text-shadow"),z=Ei("drop-shadow"),k=Ei("blur"),j=Ei("perspective"),v=Ei("aspect"),A=Ei("ease"),C=Ei("animate"),w=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],x=()=>[..._(),ze,xe],D=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],F=()=>[ze,xe,h],O=()=>[zo,"full","auto",...F()],N=()=>[zn,"none","subgrid",ze,xe],T=()=>["auto",{span:["full",zn,ze,xe]},zn,ze,xe],W=()=>[zn,"auto",ze,xe],H=()=>["auto","min","max","fr",ze,xe],K=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ae=()=>["start","end","center","stretch","center-safe","end-safe"],X=()=>["auto",...F()],ne=()=>[zo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...F()],$=()=>[a,ze,xe],oe=()=>[..._(),ah,ih,{position:[ze,xe]}],ee=()=>["no-repeat",{repeat:["","x","y","space","round"]}],q=()=>["auto","cover","contain",Mw,Pw,{size:[ze,xe]}],I=()=>[ru,fr,Hn],L=()=>["","none","full",d,ze,xe],Q=()=>["",Pe,fr,Hn],de=()=>["solid","dashed","dotted","double"],ge=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],be=()=>[Pe,ru,ah,ih],se=()=>["","none",k,ze,xe],ce=()=>["none",Pe,ze,xe],Ae=()=>["none",Pe,ze,xe],Fe=()=>[Pe,ze,xe],He=()=>[zo,"full",...F()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Za],breakpoint:[Za],color:[_w],container:[Za],"drop-shadow":[Za],ease:["in","out","in-out"],font:[Tw],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Za],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Za],shadow:[Za],spacing:["px",Pe],text:[Za],"text-shadow":[Za],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",zo,xe,ze,v]}],container:["container"],columns:[{columns:[Pe,xe,ze,c]}],"break-after":[{"break-after":w()}],"break-before":[{"break-before":w()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:x()}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:O()}],"inset-x":[{"inset-x":O()}],"inset-y":[{"inset-y":O()}],start:[{start:O()}],end:[{end:O()}],top:[{top:O()}],right:[{right:O()}],bottom:[{bottom:O()}],left:[{left:O()}],visibility:["visible","invisible","collapse"],z:[{z:[zn,"auto",ze,xe]}],basis:[{basis:[zo,"full","auto",c,...F()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Pe,zo,"auto","initial","none",xe]}],grow:[{grow:["",Pe,ze,xe]}],shrink:[{shrink:["",Pe,ze,xe]}],order:[{order:[zn,"first","last","none",ze,xe]}],"grid-cols":[{"grid-cols":N()}],"col-start-end":[{col:T()}],"col-start":[{"col-start":W()}],"col-end":[{"col-end":W()}],"grid-rows":[{"grid-rows":N()}],"row-start-end":[{row:T()}],"row-start":[{"row-start":W()}],"row-end":[{"row-end":W()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:F()}],"gap-x":[{"gap-x":F()}],"gap-y":[{"gap-y":F()}],"justify-content":[{justify:[...K(),"normal"]}],"justify-items":[{"justify-items":[...ae(),"normal"]}],"justify-self":[{"justify-self":["auto",...ae()]}],"align-content":[{content:["normal",...K()]}],"align-items":[{items:[...ae(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ae(),{baseline:["","last"]}]}],"place-content":[{"place-content":K()}],"place-items":[{"place-items":[...ae(),"baseline"]}],"place-self":[{"place-self":["auto",...ae()]}],p:[{p:F()}],px:[{px:F()}],py:[{py:F()}],ps:[{ps:F()}],pe:[{pe:F()}],pt:[{pt:F()}],pr:[{pr:F()}],pb:[{pb:F()}],pl:[{pl:F()}],m:[{m:X()}],mx:[{mx:X()}],my:[{my:X()}],ms:[{ms:X()}],me:[{me:X()}],mt:[{mt:X()}],mr:[{mr:X()}],mb:[{mb:X()}],ml:[{ml:X()}],"space-x":[{"space-x":F()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":F()}],"space-y-reverse":["space-y-reverse"],size:[{size:ne()}],w:[{w:[c,"screen",...ne()]}],"min-w":[{"min-w":[c,"screen","none",...ne()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[m]},...ne()]}],h:[{h:["screen","lh",...ne()]}],"min-h":[{"min-h":["screen","lh","none",...ne()]}],"max-h":[{"max-h":["screen","lh",...ne()]}],"font-size":[{text:["base",o,fr,Hn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,ze,su]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ru,xe]}],"font-family":[{font:[Iw,xe,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,ze,xe]}],"line-clamp":[{"line-clamp":[Pe,"none",ze,su]}],leading:[{leading:[l,...F()]}],"list-image":[{"list-image":["none",ze,xe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ze,xe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:$()}],"text-color":[{text:$()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...de(),"wavy"]}],"text-decoration-thickness":[{decoration:[Pe,"from-font","auto",ze,Hn]}],"text-decoration-color":[{decoration:$()}],"underline-offset":[{"underline-offset":[Pe,"auto",ze,xe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ze,xe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ze,xe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:oe()}],"bg-repeat":[{bg:ee()}],"bg-size":[{bg:q()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},zn,ze,xe],radial:["",ze,xe],conic:[zn,ze,xe]},Ow,Nw]}],"bg-color":[{bg:$()}],"gradient-from-pos":[{from:I()}],"gradient-via-pos":[{via:I()}],"gradient-to-pos":[{to:I()}],"gradient-from":[{from:$()}],"gradient-via":[{via:$()}],"gradient-to":[{to:$()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:Q()}],"border-w-x":[{"border-x":Q()}],"border-w-y":[{"border-y":Q()}],"border-w-s":[{"border-s":Q()}],"border-w-e":[{"border-e":Q()}],"border-w-t":[{"border-t":Q()}],"border-w-r":[{"border-r":Q()}],"border-w-b":[{"border-b":Q()}],"border-w-l":[{"border-l":Q()}],"divide-x":[{"divide-x":Q()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Q()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...de(),"hidden","none"]}],"divide-style":[{divide:[...de(),"hidden","none"]}],"border-color":[{border:$()}],"border-color-x":[{"border-x":$()}],"border-color-y":[{"border-y":$()}],"border-color-s":[{"border-s":$()}],"border-color-e":[{"border-e":$()}],"border-color-t":[{"border-t":$()}],"border-color-r":[{"border-r":$()}],"border-color-b":[{"border-b":$()}],"border-color-l":[{"border-l":$()}],"divide-color":[{divide:$()}],"outline-style":[{outline:[...de(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Pe,ze,xe]}],"outline-w":[{outline:["",Pe,fr,Hn]}],"outline-color":[{outline:$()}],shadow:[{shadow:["","none",y,Xs,Zs]}],"shadow-color":[{shadow:$()}],"inset-shadow":[{"inset-shadow":["none",g,Xs,Zs]}],"inset-shadow-color":[{"inset-shadow":$()}],"ring-w":[{ring:Q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:$()}],"ring-offset-w":[{"ring-offset":[Pe,Hn]}],"ring-offset-color":[{"ring-offset":$()}],"inset-ring-w":[{"inset-ring":Q()}],"inset-ring-color":[{"inset-ring":$()}],"text-shadow":[{"text-shadow":["none",f,Xs,Zs]}],"text-shadow-color":[{"text-shadow":$()}],opacity:[{opacity:[Pe,ze,xe]}],"mix-blend":[{"mix-blend":[...ge(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ge()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Pe]}],"mask-image-linear-from-pos":[{"mask-linear-from":be()}],"mask-image-linear-to-pos":[{"mask-linear-to":be()}],"mask-image-linear-from-color":[{"mask-linear-from":$()}],"mask-image-linear-to-color":[{"mask-linear-to":$()}],"mask-image-t-from-pos":[{"mask-t-from":be()}],"mask-image-t-to-pos":[{"mask-t-to":be()}],"mask-image-t-from-color":[{"mask-t-from":$()}],"mask-image-t-to-color":[{"mask-t-to":$()}],"mask-image-r-from-pos":[{"mask-r-from":be()}],"mask-image-r-to-pos":[{"mask-r-to":be()}],"mask-image-r-from-color":[{"mask-r-from":$()}],"mask-image-r-to-color":[{"mask-r-to":$()}],"mask-image-b-from-pos":[{"mask-b-from":be()}],"mask-image-b-to-pos":[{"mask-b-to":be()}],"mask-image-b-from-color":[{"mask-b-from":$()}],"mask-image-b-to-color":[{"mask-b-to":$()}],"mask-image-l-from-pos":[{"mask-l-from":be()}],"mask-image-l-to-pos":[{"mask-l-to":be()}],"mask-image-l-from-color":[{"mask-l-from":$()}],"mask-image-l-to-color":[{"mask-l-to":$()}],"mask-image-x-from-pos":[{"mask-x-from":be()}],"mask-image-x-to-pos":[{"mask-x-to":be()}],"mask-image-x-from-color":[{"mask-x-from":$()}],"mask-image-x-to-color":[{"mask-x-to":$()}],"mask-image-y-from-pos":[{"mask-y-from":be()}],"mask-image-y-to-pos":[{"mask-y-to":be()}],"mask-image-y-from-color":[{"mask-y-from":$()}],"mask-image-y-to-color":[{"mask-y-to":$()}],"mask-image-radial":[{"mask-radial":[ze,xe]}],"mask-image-radial-from-pos":[{"mask-radial-from":be()}],"mask-image-radial-to-pos":[{"mask-radial-to":be()}],"mask-image-radial-from-color":[{"mask-radial-from":$()}],"mask-image-radial-to-color":[{"mask-radial-to":$()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[Pe]}],"mask-image-conic-from-pos":[{"mask-conic-from":be()}],"mask-image-conic-to-pos":[{"mask-conic-to":be()}],"mask-image-conic-from-color":[{"mask-conic-from":$()}],"mask-image-conic-to-color":[{"mask-conic-to":$()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:oe()}],"mask-repeat":[{mask:ee()}],"mask-size":[{mask:q()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ze,xe]}],filter:[{filter:["","none",ze,xe]}],blur:[{blur:se()}],brightness:[{brightness:[Pe,ze,xe]}],contrast:[{contrast:[Pe,ze,xe]}],"drop-shadow":[{"drop-shadow":["","none",z,Xs,Zs]}],"drop-shadow-color":[{"drop-shadow":$()}],grayscale:[{grayscale:["",Pe,ze,xe]}],"hue-rotate":[{"hue-rotate":[Pe,ze,xe]}],invert:[{invert:["",Pe,ze,xe]}],saturate:[{saturate:[Pe,ze,xe]}],sepia:[{sepia:["",Pe,ze,xe]}],"backdrop-filter":[{"backdrop-filter":["","none",ze,xe]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[Pe,ze,xe]}],"backdrop-contrast":[{"backdrop-contrast":[Pe,ze,xe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Pe,ze,xe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Pe,ze,xe]}],"backdrop-invert":[{"backdrop-invert":["",Pe,ze,xe]}],"backdrop-opacity":[{"backdrop-opacity":[Pe,ze,xe]}],"backdrop-saturate":[{"backdrop-saturate":[Pe,ze,xe]}],"backdrop-sepia":[{"backdrop-sepia":["",Pe,ze,xe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":F()}],"border-spacing-x":[{"border-spacing-x":F()}],"border-spacing-y":[{"border-spacing-y":F()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ze,xe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Pe,"initial",ze,xe]}],ease:[{ease:["linear","initial",A,ze,xe]}],delay:[{delay:[Pe,ze,xe]}],animate:[{animate:["none",C,ze,xe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[j,ze,xe]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:ce()}],"rotate-x":[{"rotate-x":ce()}],"rotate-y":[{"rotate-y":ce()}],"rotate-z":[{"rotate-z":ce()}],scale:[{scale:Ae()}],"scale-x":[{"scale-x":Ae()}],"scale-y":[{"scale-y":Ae()}],"scale-z":[{"scale-z":Ae()}],"scale-3d":["scale-3d"],skew:[{skew:Fe()}],"skew-x":[{"skew-x":Fe()}],"skew-y":[{"skew-y":Fe()}],transform:[{transform:[ze,xe,"","none","gpu","cpu"]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:He()}],"translate-x":[{"translate-x":He()}],"translate-y":[{"translate-y":He()}],"translate-z":[{"translate-z":He()}],"translate-none":["translate-none"],accent:[{accent:$()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:$()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ze,xe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":F()}],"scroll-mx":[{"scroll-mx":F()}],"scroll-my":[{"scroll-my":F()}],"scroll-ms":[{"scroll-ms":F()}],"scroll-me":[{"scroll-me":F()}],"scroll-mt":[{"scroll-mt":F()}],"scroll-mr":[{"scroll-mr":F()}],"scroll-mb":[{"scroll-mb":F()}],"scroll-ml":[{"scroll-ml":F()}],"scroll-p":[{"scroll-p":F()}],"scroll-px":[{"scroll-px":F()}],"scroll-py":[{"scroll-py":F()}],"scroll-ps":[{"scroll-ps":F()}],"scroll-pe":[{"scroll-pe":F()}],"scroll-pt":[{"scroll-pt":F()}],"scroll-pr":[{"scroll-pr":F()}],"scroll-pb":[{"scroll-pb":F()}],"scroll-pl":[{"scroll-pl":F()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ze,xe]}],fill:[{fill:["none",...$()]}],"stroke-w":[{stroke:[Pe,fr,Hn,su]}],stroke:[{stroke:["none",...$()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Uw=zw(Vw);function $e(...a){return Uw(Jg(a))}const zi=S.forwardRef(({className:a,type:r,...o},s)=>B.jsx("input",{type:r,className:$e("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),ref:s,...o}));zi.displayName="Input";function nh(a,r){if(typeof a=="function")return a(r);a!=null&&(a.current=r)}function Or(...a){return r=>{let o=!1;const s=a.map(u=>{const l=nh(u,r);return!o&&typeof l=="function"&&(o=!0),l});if(o)return()=>{for(let u=0;u{let{children:l,...m}=s;py(l)&&typeof Kt=="function"&&(l=Kt(l._payload));const c=S.Children.toArray(l),h=c.find(Yw);if(h){const d=h.props.children,y=c.map(g=>g===h?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:g);return B.jsx(r,{...m,ref:u,children:S.isValidElement(d)?S.cloneElement(d,void 0,y):null})}return B.jsx(r,{...m,ref:u,children:l})});return o.displayName=`${a}.Slot`,o}var Qw=Mu("Slot");function Gw(a){const r=S.forwardRef((o,s)=>{let{children:u,...l}=o;if(py(u)&&typeof Kt=="function"&&(u=Kt(u._payload)),S.isValidElement(u)){const m=Xw(u),c=Zw(l,u.props);return u.type!==S.Fragment&&(c.ref=s?Or(s,m):m),S.cloneElement(u,c)}return S.Children.count(u)>1?S.Children.only(null):null});return r.displayName=`${a}.SlotClone`,r}var Kw=Symbol("radix.slottable");function Yw(a){return S.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===Kw}function Zw(a,r){const o={...r};for(const s in r){const u=a[s],l=r[s];/^on[A-Z]/.test(s)?u&&l?o[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(o[s]=u):s==="style"?o[s]={...u,...l}:s==="className"&&(o[s]=[u,l].filter(Boolean).join(" "))}return{...a,...o}}function Xw(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}const oh=a=>typeof a=="boolean"?`${a}`:a===0?"0":a,rh=Jg,al=(a,r)=>o=>{var s;if((r==null?void 0:r.variants)==null)return rh(a,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:u,defaultVariants:l}=r,m=Object.keys(u).map(d=>{const y=o==null?void 0:o[d],g=l==null?void 0:l[d];if(y===null)return null;const f=oh(y)||oh(g);return u[d][f]}),c=o&&Object.entries(o).reduce((d,y)=>{let[g,f]=y;return f===void 0||(d[g]=f),d},{}),h=r==null||(s=r.compoundVariants)===null||s===void 0?void 0:s.reduce((d,y)=>{let{class:g,className:f,...z}=y;return Object.entries(z).every(k=>{let[j,v]=k;return Array.isArray(v)?v.includes({...l,...c}[j]):{...l,...c}[j]===v})?[...d,g,f]:d},[]);return rh(a,m,h,o==null?void 0:o.class,o==null?void 0:o.className)},Jw=al("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),La=S.forwardRef(({className:a,variant:r,size:o,asChild:s=!1,...u},l)=>{const m=s?Qw:"button";return B.jsx(m,{className:$e(Jw({variant:r,size:o,className:a})),ref:l,...u})});La.displayName="Button";function ex(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function ix(a){try{localStorage.setItem("remoteterm-sortOrder",a)}catch{}}function ax({contacts:a,channels:r,activeConversation:o,onSelectConversation:s,onNewMessage:u,lastMessageTimes:l,unreadCounts:m,showCracker:c,crackerRunning:h,onToggleCracker:d,onMarkAllRead:y}){const[g,f]=S.useState(ex),[z,k]=S.useState(""),j=()=>{const T=g==="alpha"?"recent":"alpha";f(T),ix(T)},v=T=>{k(""),s(T)},A=(T,W)=>(o==null?void 0:o.type)===T&&(o==null?void 0:o.id)===W,C=(T,W)=>{const H=an(T,W);return m[H]||0},w=(T,W)=>{const H=an(T,W);return l[H]||0},_=r.reduce((T,W)=>(T.some(H=>H.name===W.name)||T.push(W),T),[]),x=a.filter(T=>T.public_key&&T.public_key.length>0).sort((T,W)=>T.name&&!W.name?-1:!T.name&&W.name?1:(T.name||"").localeCompare(W.name||"")).reduce((T,W)=>{const H=Bo(W.public_key);return T.some(K=>Bo(K.public_key)===H)||T.push(W),T},[]),D=[..._].sort((T,W)=>{if(T.name==="Public")return-1;if(W.name==="Public")return 1;if(g==="recent"){const H=w("channel",T.key),K=w("channel",W.key);if(H&&K)return K-H;if(H&&!K)return-1;if(!H&&K)return 1}return T.name.localeCompare(W.name)}),R=[...x].sort((T,W)=>{const H=T.type===zu,K=W.type===zu;if(H&&!K)return 1;if(!H&&K)return-1;if(H&&K)return(T.name||T.public_key).localeCompare(W.name||W.public_key);if(g==="recent"){const ae=w("contact",T.public_key),X=w("contact",W.public_key);if(ae&&X)return X-ae;if(ae&&!X)return-1;if(!ae&&X)return 1}return(T.name||T.public_key).localeCompare(W.name||W.public_key)}),F=z.toLowerCase().trim(),O=F?D.filter(T=>T.name.toLowerCase().includes(F)):D,N=F?R.filter(T=>{var W;return((W=T.name)==null?void 0:W.toLowerCase().includes(F))||T.public_key.toLowerCase().includes(F)}):R;return B.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[B.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),B.jsx(La,{variant:"ghost",size:"sm",onClick:u,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),B.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[B.jsx(zi,{type:"text",placeholder:"Search...",value:z,onChange:T=>k(T.target.value),className:"h-8 text-sm pr-8"}),z&&B.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>k(""),title:"Clear search",children:"×"})]}),B.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",A("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>v({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),B.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",c&&"bg-accent border-l-primary"),onClick:d,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),B.jsxs("span",{className:"flex-1 truncate",children:[c?"Hide":"Show"," Cracker",B.jsxs("span",{className:$e("ml-1 text-xs",h?"text-green-500":"text-muted-foreground"),children:["(",h?"running":"stopped",")"]})]})]}),!F&&Object.keys(m).length>0&&B.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:y,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),B.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),O.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:j,title:g==="alpha"?"Sort by recent":"Sort alphabetically",children:g==="alpha"?"A-Z":"⏱"})]}),O.map(T=>{const W=C("channel",T.key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",A("channel",T.key)&&"bg-accent border-l-primary",W>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"channel",id:T.key,name:T.name}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"#"}),B.jsx("span",{className:"name flex-1 truncate",children:T.name}),W>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:W})]},`chan-${T.key}`)})]}),N.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),O.length===0&&B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:j,title:g==="alpha"?"Sort by recent":"Sort alphabetically",children:g==="alpha"?"A-Z":"⏱"})]}),N.map(T=>{const W=C("contact",T.public_key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",A("contact",T.public_key)&&"bg-accent border-l-primary",W>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"contact",id:T.public_key,name:Kn(T.name,T.public_key)}),children:[B.jsx(Zg,{name:T.name,publicKey:T.public_key,size:24,contactType:T.type}),B.jsx("span",{className:"name flex-1 truncate",children:Kn(T.name,T.public_key)}),W>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:W})]},T.public_key)})]}),N.length===0&&O.length===0&&B.jsx("div",{className:"p-5 text-center text-muted-foreground",children:F?"No matches found":"No conversations yet"})]})]})}const my=2;function sh(a){const r=a.indexOf(": ");if(r>0&&r<50){const o=a.substring(0,r);if(!o.includes(":"))return{sender:o,content:a.substring(r+2)}}return{sender:null,content:a}}function th(a){const r=new Date(a*1e3),o=new Date,s=r.toDateString()===o.toDateString(),u=r.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return s?u:`${r.toLocaleDateString([],{month:"short",day:"numeric"})} ${u}`}function nx(a,r){if(!r)return a;const o=/@\[([^\]]+)\]/g,s=[];let u=0,l,m=0;for(;(l=o.exec(a))!==null;){l.index>u&&s.push(a.slice(u,l.index));const c=l[1],h=c===r;s.push(B.jsxs("span",{className:$e("rounded px-0.5",h?"bg-primary/30 text-primary font-medium":"bg-muted-foreground/20"),children:["@[",c,"]"]},m++)),u=l.index+l[0].length}return u0?s:a}function ox({messages:a,contacts:r,loading:o,loadingOlder:s=!1,hasOlderMessages:u=!1,onSenderClick:l,onLoadOlder:m,radioName:c}){const h=S.useRef(null),d=S.useRef(0),y=S.useRef(!0),[g,f]=S.useState(!1),z=S.useRef({scrollTop:0,scrollHeight:0,wasNearTop:!1});S.useLayoutEffect(()=>{if(!h.current)return;const x=h.current,D=a.length-d.current;if(y.current&&a.length>0)x.scrollTop=x.scrollHeight,y.current=!1;else if(D>0&&d.current>0){const R=x.scrollHeight-z.current.scrollHeight;z.current.wasNearTop&&R>0?x.scrollTop=z.current.scrollTop+R:z.current.wasNearTop||(x.scrollTop=x.scrollHeight)}d.current=a.length},[a]),S.useEffect(()=>{a.length===0&&(y.current=!0,d.current=0,z.current={scrollTop:0,scrollHeight:0,wasNearTop:!1})},[a.length]);const k=S.useCallback(()=>{if(!h.current)return;const{scrollTop:x,scrollHeight:D,clientHeight:R}=h.current;z.current={scrollTop:x,scrollHeight:D,wasNearTop:x<150};const F=D-x-R;f(F>100),!(!m||s||!u)&&x<100&&m()},[m,s,u]),j=S.useCallback(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)},[]),v=x=>x&&r.find(D=>Kg(D.public_key,x))||null,A=x=>r.find(D=>D.name===x)||null;if(o)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"Loading messages..."});if(a.length===0)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"No messages yet"});const w=[...a.reduce((x,D)=>{const R=`${D.type}-${D.conversation_key}-${D.text}-${D.sender_timestamp}`;return x.find(O=>`${O.type}-${O.conversation_key}-${O.text}-${O.sender_timestamp}`===R)||x.push(D),x},[])].sort((x,D)=>x.received_at-D.received_at),_=(x,D)=>x.outgoing?"__outgoing__":x.type==="PRIV"&&x.conversation_key?x.conversation_key:D||"__unknown__";return B.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[B.jsxs("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-0.5",ref:h,onScroll:k,children:[s&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-sm",children:"Loading older messages..."}),!s&&u&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-xs",children:"Scroll up for older messages"}),w.map((x,D)=>{var ee;const R=x.type==="PRIV"?v(x.conversation_key):null,F=(R==null?void 0:R.type)===my,{sender:O,content:N}=F?{sender:null,content:x.text}:sh(x.text),T=x.outgoing?"You":(R==null?void 0:R.name)||O||((ee=x.conversation_key)==null?void 0:ee.slice(0,8))||"Unknown",W=!x.outgoing&&l&&T!=="Unknown",H=_(x,O),K=w[D-1],ae=K?_(K,sh(K.text).sender):null,X=!x.outgoing&&H!==ae,ne=D===0;let $=null,oe="";if(!x.outgoing){if(x.type==="PRIV"&&x.conversation_key)$=(R==null?void 0:R.name)||null,oe=x.conversation_key;else if(O){const q=A(O);$=O,oe=(q==null?void 0:q.public_key)||`name:${O}`}}return B.jsxs("div",{className:$e("flex items-start max-w-[85%]",x.outgoing&&"flex-row-reverse self-end",X&&!ne&&"mt-3"),children:[!x.outgoing&&B.jsx("div",{className:"w-10 flex-shrink-0 flex items-start pt-0.5",children:X&&oe&&B.jsx(Zg,{name:$,publicKey:oe,size:32})}),B.jsxs("div",{className:$e("py-1.5 px-3 rounded-lg min-w-0",x.outgoing?"bg-[#1e3a29]":"bg-muted"),children:[X&&B.jsxs("div",{className:"text-[13px] font-semibold text-muted-foreground mb-0.5",children:[W?B.jsx("span",{className:"cursor-pointer hover:text-primary hover:underline",onClick:()=>l(T),title:`Mention ${T}`,children:T}):T,B.jsx("span",{className:"font-normal text-muted-foreground/70 ml-2 text-[11px]",children:th(x.sender_timestamp||x.received_at)})]}),B.jsxs("div",{className:"break-words whitespace-pre-wrap",children:[N.split(` +`).map((q,I,L)=>B.jsxs("span",{children:[nx(q,c),I0?` ✓${x.acked>1?x.acked:""}`:" ?")]})]})]},x.id)})]}),g&&B.jsx("button",{onClick:j,className:"absolute bottom-4 right-4 w-10 h-10 rounded-full bg-muted hover:bg-accent border border-border flex items-center justify-center shadow-lg transition-opacity",title:"Scroll to bottom",children:B.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-muted-foreground",children:B.jsx("polyline",{points:"6 9 12 15 18 9"})})})]})}const rx=S.forwardRef(function({onSend:r,disabled:o,placeholder:s,isRepeaterMode:u},l){const[m,c]=S.useState(""),[h,d]=S.useState(!1),y=S.useRef(null);S.useImperativeHandle(l,()=>({appendText:k=>{var j;c(v=>v+k),(j=y.current)==null||j.focus()}}));const g=S.useCallback(async k=>{k.preventDefault();const j=m.trim();if(u){if(h||o)return;const v=j==="."?"":j;d(!0);try{await r(v),c("")}catch(A){console.error("Failed to request telemetry:",A);return}finally{d(!1)}setTimeout(()=>{var A;return(A=y.current)==null?void 0:A.focus()},0)}else{if(!j||h||o)return;d(!0);try{await r(j),c("")}catch(v){console.error("Failed to send message:",v);return}finally{d(!1)}setTimeout(()=>{var v;return(v=y.current)==null?void 0:v.focus()},0)}},[m,h,o,r,u]),f=S.useCallback(k=>{k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),g(k))},[g]),z=u?m.trim().length>0||m===".":m.trim().length>0;return B.jsxs("form",{className:"px-4 py-3 border-t border-border flex gap-2",onSubmit:g,children:[B.jsx(zi,{ref:y,type:u?"password":"text",value:m,onChange:k=>c(k.target.value),onKeyDown:f,placeholder:s||(u?"Enter password (or . for none)...":"Type a message..."),disabled:o||h,className:"flex-1"}),B.jsx(La,{type:"submit",disabled:o||h||!z,children:h?u?"Fetching...":"Sending...":u?"Fetch":"Send"})]})});function Si(a,r,{checkForDefaultPrevented:o=!0}={}){return function(u){if(a==null||a(u),o===!1||!u.defaultPrevented)return r==null?void 0:r(u)}}function sx(a,r){const o=S.createContext(r),s=l=>{const{children:m,...c}=l,h=S.useMemo(()=>c,Object.values(c));return B.jsx(o.Provider,{value:h,children:m})};s.displayName=a+"Provider";function u(l){const m=S.useContext(o);if(m)return m;if(r!==void 0)return r;throw new Error(`\`${l}\` must be used within \`${a}\``)}return[s,u]}function Lr(a,r=[]){let o=[];function s(l,m){const c=S.createContext(m),h=o.length;o=[...o,m];const d=g=>{var A;const{scope:f,children:z,...k}=g,j=((A=f==null?void 0:f[a])==null?void 0:A[h])||c,v=S.useMemo(()=>k,Object.values(k));return B.jsx(j.Provider,{value:v,children:z})};d.displayName=l+"Provider";function y(g,f){var j;const z=((j=f==null?void 0:f[a])==null?void 0:j[h])||c,k=S.useContext(z);if(k)return k;if(m!==void 0)return m;throw new Error(`\`${g}\` must be used within \`${l}\``)}return[d,y]}const u=()=>{const l=o.map(m=>S.createContext(m));return function(c){const h=(c==null?void 0:c[a])||l;return S.useMemo(()=>({[`__scope${a}`]:{...c,[a]:h}}),[c,h])}};return u.scopeName=a,[s,tx(u,...r)]}function tx(...a){const r=a[0];if(a.length===1)return r;const o=()=>{const s=a.map(u=>({useScope:u(),scopeName:u.scopeName}));return function(l){const m=s.reduce((c,{useScope:h,scopeName:d})=>{const g=h(l)[`__scope${d}`];return{...c,...g}},{});return S.useMemo(()=>({[`__scope${r.scopeName}`]:m}),[m])}};return o.scopeName=r.scopeName,o}var _o=globalThis!=null&&globalThis.document?S.useLayoutEffect:()=>{},lx=Pu[" useId ".trim().toString()]||(()=>{}),cx=0;function Pr(a){const[r,o]=S.useState(lx());return _o(()=>{o(s=>s??String(cx++))},[a]),r?`radix-${r}`:""}var ux=Pu[" useInsertionEffect ".trim().toString()]||_o;function nl({prop:a,defaultProp:r,onChange:o=()=>{},caller:s}){const[u,l,m]=dx({defaultProp:r,onChange:o}),c=a!==void 0,h=c?a:u;{const y=S.useRef(a!==void 0);S.useEffect(()=>{const g=y.current;g!==c&&console.warn(`${s} is changing from ${g?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),y.current=c},[c,s])}const d=S.useCallback(y=>{var g;if(c){const f=px(y)?y(a):y;f!==a&&((g=m.current)==null||g.call(m,f))}else l(y)},[c,a,l,m]);return[h,d]}function dx({defaultProp:a,onChange:r}){const[o,s]=S.useState(a),u=S.useRef(o),l=S.useRef(r);return ux(()=>{l.current=r},[r]),S.useEffect(()=>{var m;u.current!==o&&((m=l.current)==null||m.call(l,o),u.current=o)},[o,u]),[o,s,l]}function px(a){return typeof a=="function"}function mx(a){const r=hx(a),o=S.forwardRef((s,u)=>{const{children:l,...m}=s,c=S.Children.toArray(l),h=c.find(yx);if(h){const d=h.props.children,y=c.map(g=>g===h?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:g);return B.jsx(r,{...m,ref:u,children:S.isValidElement(d)?S.cloneElement(d,void 0,y):null})}return B.jsx(r,{...m,ref:u,children:l})});return o.displayName=`${a}.Slot`,o}function hx(a){const r=S.forwardRef((o,s)=>{const{children:u,...l}=o;if(S.isValidElement(u)){const m=fx(u),c=bx(l,u.props);return u.type!==S.Fragment&&(c.ref=s?Or(s,m):m),S.cloneElement(u,c)}return S.Children.count(u)>1?S.Children.only(null):null});return r.displayName=`${a}.SlotClone`,r}var gx=Symbol("radix.slottable");function yx(a){return S.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===gx}function bx(a,r){const o={...r};for(const s in r){const u=a[s],l=r[s];/^on[A-Z]/.test(s)?u&&l?o[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(o[s]=u):s==="style"?o[s]={...u,...l}:s==="className"&&(o[s]=[u,l].filter(Boolean).join(" "))}return{...a,...o}}function fx(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}var vx=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Fi=vx.reduce((a,r)=>{const o=mx(`Primitive.${r}`),s=S.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?o:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${r}`,{...a,[r]:s}},{});function kx(a,r){a&&Qg.flushSync(()=>a.dispatchEvent(r))}function Do(a){const r=S.useRef(a);return S.useEffect(()=>{r.current=a}),S.useMemo(()=>(...o)=>{var s;return(s=r.current)==null?void 0:s.call(r,...o)},[])}function wx(a,r=globalThis==null?void 0:globalThis.document){const o=Do(a);S.useEffect(()=>{const s=u=>{u.key==="Escape"&&o(u)};return r.addEventListener("keydown",s,{capture:!0}),()=>r.removeEventListener("keydown",s,{capture:!0})},[o,r])}var xx="DismissableLayer",ju="dismissableLayer.update",zx="dismissableLayer.pointerDownOutside",qx="dismissableLayer.focusOutside",lh,hy=S.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),gy=S.forwardRef((a,r)=>{const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:l,onInteractOutside:m,onDismiss:c,...h}=a,d=S.useContext(hy),[y,g]=S.useState(null),f=(y==null?void 0:y.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,z]=S.useState({}),k=fa(r,R=>g(R)),j=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),A=j.indexOf(v),C=y?j.indexOf(y):-1,w=d.layersWithOutsidePointerEventsDisabled.size>0,_=C>=A,x=Cx(R=>{const F=R.target,O=[...d.branches].some(N=>N.contains(F));!_||O||(u==null||u(R),m==null||m(R),R.defaultPrevented||c==null||c())},f),D=Ex(R=>{const F=R.target;[...d.branches].some(N=>N.contains(F))||(l==null||l(R),m==null||m(R),R.defaultPrevented||c==null||c())},f);return wx(R=>{C===d.layers.size-1&&(s==null||s(R),!R.defaultPrevented&&c&&(R.preventDefault(),c()))},f),S.useEffect(()=>{if(y)return o&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(lh=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(y)),d.layers.add(y),ch(),()=>{o&&d.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=lh)}},[y,f,o,d]),S.useEffect(()=>()=>{y&&(d.layers.delete(y),d.layersWithOutsidePointerEventsDisabled.delete(y),ch())},[y,d]),S.useEffect(()=>{const R=()=>z({});return document.addEventListener(ju,R),()=>document.removeEventListener(ju,R)},[]),B.jsx(Fi.div,{...h,ref:k,style:{pointerEvents:w?_?"auto":"none":void 0,...a.style},onFocusCapture:Si(a.onFocusCapture,D.onFocusCapture),onBlurCapture:Si(a.onBlurCapture,D.onBlurCapture),onPointerDownCapture:Si(a.onPointerDownCapture,x.onPointerDownCapture)})});gy.displayName=xx;var jx="DismissableLayerBranch",Ax=S.forwardRef((a,r)=>{const o=S.useContext(hy),s=S.useRef(null),u=fa(r,s);return S.useEffect(()=>{const l=s.current;if(l)return o.branches.add(l),()=>{o.branches.delete(l)}},[o.branches]),B.jsx(Fi.div,{...a,ref:u})});Ax.displayName=jx;function Cx(a,r=globalThis==null?void 0:globalThis.document){const o=Do(a),s=S.useRef(!1),u=S.useRef(()=>{});return S.useEffect(()=>{const l=c=>{if(c.target&&!s.current){let h=function(){yy(zx,o,d,{discrete:!0})};const d={originalEvent:c};c.pointerType==="touch"?(r.removeEventListener("click",u.current),u.current=h,r.addEventListener("click",u.current,{once:!0})):h()}else r.removeEventListener("click",u.current);s.current=!1},m=window.setTimeout(()=>{r.addEventListener("pointerdown",l)},0);return()=>{window.clearTimeout(m),r.removeEventListener("pointerdown",l),r.removeEventListener("click",u.current)}},[r,o]),{onPointerDownCapture:()=>s.current=!0}}function Ex(a,r=globalThis==null?void 0:globalThis.document){const o=Do(a),s=S.useRef(!1);return S.useEffect(()=>{const u=l=>{l.target&&!s.current&&yy(qx,o,{originalEvent:l},{discrete:!1})};return r.addEventListener("focusin",u),()=>r.removeEventListener("focusin",u)},[r,o]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function ch(){const a=new CustomEvent(ju);document.dispatchEvent(a)}function yy(a,r,o,{discrete:s}){const u=o.originalEvent.target,l=new CustomEvent(a,{bubbles:!1,cancelable:!0,detail:o});r&&u.addEventListener(a,r,{once:!0}),s?kx(u,l):u.dispatchEvent(l)}var tu="focusScope.autoFocusOnMount",lu="focusScope.autoFocusOnUnmount",uh={bubbles:!1,cancelable:!0},Sx="FocusScope",by=S.forwardRef((a,r)=>{const{loop:o=!1,trapped:s=!1,onMountAutoFocus:u,onUnmountAutoFocus:l,...m}=a,[c,h]=S.useState(null),d=Do(u),y=Do(l),g=S.useRef(null),f=fa(r,j=>h(j)),z=S.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;S.useEffect(()=>{if(s){let j=function(w){if(z.paused||!c)return;const _=w.target;c.contains(_)?g.current=_:qn(g.current,{select:!0})},v=function(w){if(z.paused||!c)return;const _=w.relatedTarget;_!==null&&(c.contains(_)||qn(g.current,{select:!0}))},A=function(w){if(document.activeElement===document.body)for(const x of w)x.removedNodes.length>0&&qn(c)};document.addEventListener("focusin",j),document.addEventListener("focusout",v);const C=new MutationObserver(A);return c&&C.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",j),document.removeEventListener("focusout",v),C.disconnect()}}},[s,c,z.paused]),S.useEffect(()=>{if(c){ph.add(z);const j=document.activeElement;if(!c.contains(j)){const A=new CustomEvent(tu,uh);c.addEventListener(tu,d),c.dispatchEvent(A),A.defaultPrevented||(Bx(Tx(fy(c)),{select:!0}),document.activeElement===j&&qn(c))}return()=>{c.removeEventListener(tu,d),setTimeout(()=>{const A=new CustomEvent(lu,uh);c.addEventListener(lu,y),c.dispatchEvent(A),A.defaultPrevented||qn(j??document.body,{select:!0}),c.removeEventListener(lu,y),ph.remove(z)},0)}}},[c,d,y,z]);const k=S.useCallback(j=>{if(!o&&!s||z.paused)return;const v=j.key==="Tab"&&!j.altKey&&!j.ctrlKey&&!j.metaKey,A=document.activeElement;if(v&&A){const C=j.currentTarget,[w,_]=_x(C);w&&_?!j.shiftKey&&A===_?(j.preventDefault(),o&&qn(w,{select:!0})):j.shiftKey&&A===w&&(j.preventDefault(),o&&qn(_,{select:!0})):A===C&&j.preventDefault()}},[o,s,z.paused]);return B.jsx(Fi.div,{tabIndex:-1,...m,ref:f,onKeyDown:k})});by.displayName=Sx;function Bx(a,{select:r=!1}={}){const o=document.activeElement;for(const s of a)if(qn(s,{select:r}),document.activeElement!==o)return}function _x(a){const r=fy(a),o=dh(r,a),s=dh(r.reverse(),a);return[o,s]}function fy(a){const r=[],o=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const u=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||u?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)r.push(o.currentNode);return r}function dh(a,r){for(const o of a)if(!Dx(o,{upTo:r}))return o}function Dx(a,{upTo:r}){if(getComputedStyle(a).visibility==="hidden")return!0;for(;a;){if(r!==void 0&&a===r)return!1;if(getComputedStyle(a).display==="none")return!0;a=a.parentElement}return!1}function Fx(a){return a instanceof HTMLInputElement&&"select"in a}function qn(a,{select:r=!1}={}){if(a&&a.focus){const o=document.activeElement;a.focus({preventScroll:!0}),a!==o&&Fx(a)&&r&&a.select()}}var ph=Rx();function Rx(){let a=[];return{add(r){const o=a[0];r!==o&&(o==null||o.pause()),a=mh(a,r),a.unshift(r)},remove(r){var o;a=mh(a,r),(o=a[0])==null||o.resume()}}}function mh(a,r){const o=[...a],s=o.indexOf(r);return s!==-1&&o.splice(s,1),o}function Tx(a){return a.filter(r=>r.tagName!=="A")}var Px="Portal",vy=S.forwardRef((a,r)=>{var c;const{container:o,...s}=a,[u,l]=S.useState(!1);_o(()=>l(!0),[]);const m=o||u&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return m?Gg.createPortal(B.jsx(Fi.div,{...s,ref:r}),m):null});vy.displayName=Px;function Nx(a,r){return S.useReducer((o,s)=>r[o][s]??o,a)}var Po=a=>{const{present:r,children:o}=a,s=Ix(r),u=typeof o=="function"?o({present:s.isPresent}):S.Children.only(o),l=fa(s.ref,Mx(u));return typeof o=="function"||s.isPresent?S.cloneElement(u,{ref:l}):null};Po.displayName="Presence";function Ix(a){const[r,o]=S.useState(),s=S.useRef(null),u=S.useRef(a),l=S.useRef("none"),m=a?"mounted":"unmounted",[c,h]=Nx(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return S.useEffect(()=>{const d=Js(s.current);l.current=c==="mounted"?d:"none"},[c]),_o(()=>{const d=s.current,y=u.current;if(y!==a){const f=l.current,z=Js(d);a?h("MOUNT"):z==="none"||(d==null?void 0:d.display)==="none"?h("UNMOUNT"):h(y&&f!==z?"ANIMATION_OUT":"UNMOUNT"),u.current=a}},[a,h]),_o(()=>{if(r){let d;const y=r.ownerDocument.defaultView??window,g=z=>{const j=Js(s.current).includes(CSS.escape(z.animationName));if(z.target===r&&j&&(h("ANIMATION_END"),!u.current)){const v=r.style.animationFillMode;r.style.animationFillMode="forwards",d=y.setTimeout(()=>{r.style.animationFillMode==="forwards"&&(r.style.animationFillMode=v)})}},f=z=>{z.target===r&&(l.current=Js(s.current))};return r.addEventListener("animationstart",f),r.addEventListener("animationcancel",g),r.addEventListener("animationend",g),()=>{y.clearTimeout(d),r.removeEventListener("animationstart",f),r.removeEventListener("animationcancel",g),r.removeEventListener("animationend",g)}}else h("ANIMATION_END")},[r,h]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:S.useCallback(d=>{s.current=d?getComputedStyle(d):null,o(d)},[])}}function Js(a){return(a==null?void 0:a.animationName)||"none"}function Mx(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}var cu=0;function Ox(){S.useEffect(()=>{const a=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",a[0]??hh()),document.body.insertAdjacentElement("beforeend",a[1]??hh()),cu++,()=>{cu===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),cu--}},[])}function hh(){const a=document.createElement("span");return a.setAttribute("data-radix-focus-guard",""),a.tabIndex=0,a.style.outline="none",a.style.opacity="0",a.style.position="fixed",a.style.pointerEvents="none",a}var Oa=function(){return Oa=Object.assign||function(r){for(var o,s=1,u=arguments.length;s"u")return nz;var r=oz(a),o=document.documentElement.clientWidth,s=window.innerWidth;return{left:r[0],top:r[1],right:r[2],gap:Math.max(0,s-o+r[2]-r[0])}},sz=zy(),Eo="data-scroll-locked",tz=function(a,r,o,s){var u=a.left,l=a.top,m=a.right,c=a.gap;return o===void 0&&(o="margin"),` .`.concat(Hx,` { overflow: hidden `).concat(s,`; padding-right: `).concat(c,"px ").concat(s,`; @@ -117,7 +117,7 @@ Error generating stack: `+b.message+` If you want to hide the \`${r.titleName}\`, you can wrap it with our VisuallyHidden component. -For more information, see https://radix-ui.com/primitives/docs/components/${r.docsSlug}`;return S.useEffect(()=>{a&&(document.getElementById(a)||console.error(o))},[o,a]),null},Lz="DialogDescriptionWarning",Hz=({contentRef:a,descriptionId:r})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Vy(Lz).contentName}}.`;return S.useEffect(()=>{var l;const u=(l=a.current)==null?void 0:l.getAttribute("aria-describedby");r&&u&&(document.getElementById(r)||console.warn(s))},[s,a,r]),null},Uy=By,Wy=Fy,sl=Ry,tl=Ty,ll=Ny,cl=My,$y=Ly;const Qy=Uy,Vz=Wy,Gy=S.forwardRef(({className:a,...r},o)=>B.jsx(sl,{ref:o,className:$e("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...r}));Gy.displayName=sl.displayName;const Vu=S.forwardRef(({className:a,children:r,...o},s)=>B.jsxs(Vz,{children:[B.jsx(Gy,{}),B.jsxs(tl,{ref:s,className:$e("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...o,children:[r,B.jsxs($y,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[B.jsx($g,{className:"h-4 w-4"}),B.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Vu.displayName=tl.displayName;const Uu=({className:a,...r})=>B.jsx("div",{className:$e("flex flex-col space-y-1.5 text-center sm:text-left",a),...r});Uu.displayName="DialogHeader";const Wu=({className:a,...r})=>B.jsx("div",{className:$e("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...r});Wu.displayName="DialogFooter";const $u=S.forwardRef(({className:a,...r},o)=>B.jsx(ll,{ref:o,className:$e("text-lg font-semibold leading-none tracking-tight",a),...r}));$u.displayName=ll.displayName;const Uz=S.forwardRef(({className:a,...r},o)=>B.jsx(cl,{ref:o,className:$e("text-sm text-muted-foreground",a),...r}));Uz.displayName=cl.displayName;function kh(a){const r=Wz(a),o=S.forwardRef((s,u)=>{const{children:l,...m}=s,c=S.Children.toArray(l),h=c.find(Qz);if(h){const d=h.props.children,y=c.map(g=>g===h?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:g);return B.jsx(r,{...m,ref:u,children:S.isValidElement(d)?S.cloneElement(d,void 0,y):null})}return B.jsx(r,{...m,ref:u,children:l})});return o.displayName=`${a}.Slot`,o}function Wz(a){const r=S.forwardRef((o,s)=>{const{children:u,...l}=o;if(S.isValidElement(u)){const m=Kz(u),c=Gz(l,u.props);return u.type!==S.Fragment&&(c.ref=s?Or(s,m):m),S.cloneElement(u,c)}return S.Children.count(u)>1?S.Children.only(null):null});return r.displayName=`${a}.SlotClone`,r}var $z=Symbol("radix.slottable");function Qz(a){return S.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===$z}function Gz(a,r){const o={...r};for(const s in r){const u=a[s],l=r[s];/^on[A-Z]/.test(s)?u&&l?o[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(o[s]=u):s==="style"?o[s]={...u,...l}:s==="className"&&(o[s]=[u,l].filter(Boolean).join(" "))}return{...a,...o}}function Kz(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}function Yz(a){const r=a+"CollectionProvider",[o,s]=Lr(r),[u,l]=o(r,{collectionRef:{current:null},itemMap:new Map}),m=j=>{const{scope:v,children:A}=j,C=he.useRef(null),w=he.useRef(new Map).current;return B.jsx(u,{scope:v,itemMap:w,collectionRef:C,children:A})};m.displayName=r;const c=a+"CollectionSlot",h=kh(c),d=he.forwardRef((j,v)=>{const{scope:A,children:C}=j,w=l(c,A),_=fa(v,w.collectionRef);return B.jsx(h,{ref:_,children:C})});d.displayName=c;const y=a+"CollectionItemSlot",g="data-radix-collection-item",f=kh(y),z=he.forwardRef((j,v)=>{const{scope:A,children:C,...w}=j,_=he.useRef(null),x=fa(v,_),D=l(y,A);return he.useEffect(()=>(D.itemMap.set(_,{ref:_,...w}),()=>void D.itemMap.delete(_))),B.jsx(f,{[g]:"",ref:x,children:C})});z.displayName=y;function k(j){const v=l(a+"CollectionConsumer",j);return he.useCallback(()=>{const C=v.collectionRef.current;if(!C)return[];const w=Array.from(C.querySelectorAll(`[${g}]`));return Array.from(v.itemMap.values()).sort((D,R)=>w.indexOf(D.ref.current)-w.indexOf(R.ref.current))},[v.collectionRef,v.itemMap])}return[{Provider:m,Slot:d,ItemSlot:z},k,s]}var Zz=S.createContext(void 0);function Ky(a){const r=S.useContext(Zz);return a||r||"ltr"}var hu="rovingFocusGroup.onEntryFocus",Xz={bubbles:!1,cancelable:!0},Hr="RovingFocusGroup",[Cu,Yy,Jz]=Yz(Hr),[e0,Zy]=Lr(Hr,[Jz]),[i0,a0]=e0(Hr),Xy=S.forwardRef((a,r)=>B.jsx(Cu.Provider,{scope:a.__scopeRovingFocusGroup,children:B.jsx(Cu.Slot,{scope:a.__scopeRovingFocusGroup,children:B.jsx(n0,{...a,ref:r})})}));Xy.displayName=Hr;var n0=S.forwardRef((a,r)=>{const{__scopeRovingFocusGroup:o,orientation:s,loop:u=!1,dir:l,currentTabStopId:m,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:h,onEntryFocus:d,preventScrollOnEntryFocus:y=!1,...g}=a,f=S.useRef(null),z=fa(r,f),k=Ky(l),[j,v]=nl({prop:m,defaultProp:c??null,onChange:h,caller:Hr}),[A,C]=S.useState(!1),w=Do(d),_=Yy(o),x=S.useRef(!1),[D,R]=S.useState(0);return S.useEffect(()=>{const F=f.current;if(F)return F.addEventListener(hu,w),()=>F.removeEventListener(hu,w)},[w]),B.jsx(i0,{scope:o,orientation:s,dir:k,loop:u,currentTabStopId:j,onItemFocus:S.useCallback(F=>v(F),[v]),onItemShiftTab:S.useCallback(()=>C(!0),[]),onFocusableItemAdd:S.useCallback(()=>R(F=>F+1),[]),onFocusableItemRemove:S.useCallback(()=>R(F=>F-1),[]),children:B.jsx(Fi.div,{tabIndex:A||D===0?-1:0,"data-orientation":s,...g,ref:z,style:{outline:"none",...a.style},onMouseDown:Si(a.onMouseDown,()=>{x.current=!0}),onFocus:Si(a.onFocus,F=>{const O=!x.current;if(F.target===F.currentTarget&&O&&!A){const N=new CustomEvent(hu,Xz);if(F.currentTarget.dispatchEvent(N),!N.defaultPrevented){const T=_().filter(X=>X.focusable),W=T.find(X=>X.active),H=T.find(X=>X.id===j),ae=[W,H,...T].filter(Boolean).map(X=>X.ref.current);ib(ae,y)}}x.current=!1}),onBlur:Si(a.onBlur,()=>C(!1))})})}),Jy="RovingFocusGroupItem",eb=S.forwardRef((a,r)=>{const{__scopeRovingFocusGroup:o,focusable:s=!0,active:u=!1,tabStopId:l,children:m,...c}=a,h=Pr(),d=l||h,y=a0(Jy,o),g=y.currentTabStopId===d,f=Yy(o),{onFocusableItemAdd:z,onFocusableItemRemove:k,currentTabStopId:j}=y;return S.useEffect(()=>{if(s)return z(),()=>k()},[s,z,k]),B.jsx(Cu.ItemSlot,{scope:o,id:d,focusable:s,active:u,children:B.jsx(Fi.span,{tabIndex:g?0:-1,"data-orientation":y.orientation,...c,ref:r,onMouseDown:Si(a.onMouseDown,v=>{s?y.onItemFocus(d):v.preventDefault()}),onFocus:Si(a.onFocus,()=>y.onItemFocus(d)),onKeyDown:Si(a.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){y.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const A=s0(v,y.orientation,y.dir);if(A!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let w=f().filter(_=>_.focusable).map(_=>_.ref.current);if(A==="last")w.reverse();else if(A==="prev"||A==="next"){A==="prev"&&w.reverse();const _=w.indexOf(v.currentTarget);w=y.loop?t0(w,_+1):w.slice(_+1)}setTimeout(()=>ib(w))}}),children:typeof m=="function"?m({isCurrentTabStop:g,hasTabStop:j!=null}):m})})});eb.displayName=Jy;var o0={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function r0(a,r){return r!=="rtl"?a:a==="ArrowLeft"?"ArrowRight":a==="ArrowRight"?"ArrowLeft":a}function s0(a,r,o){const s=r0(a.key,o);if(!(r==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(r==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return o0[s]}function ib(a,r=!1){const o=document.activeElement;for(const s of a)if(s===o||(s.focus({preventScroll:r}),document.activeElement!==o))return}function t0(a,r){return a.map((o,s)=>a[(r+s)%a.length])}var l0=Xy,c0=eb,ul="Tabs",[u0]=Lr(ul,[Zy]),ab=Zy(),[d0,Qu]=u0(ul),nb=S.forwardRef((a,r)=>{const{__scopeTabs:o,value:s,onValueChange:u,defaultValue:l,orientation:m="horizontal",dir:c,activationMode:h="automatic",...d}=a,y=Ky(c),[g,f]=nl({prop:s,onChange:u,defaultProp:l??"",caller:ul});return B.jsx(d0,{scope:o,baseId:Pr(),value:g,onValueChange:f,orientation:m,dir:y,activationMode:h,children:B.jsx(Fi.div,{dir:y,"data-orientation":m,...d,ref:r})})});nb.displayName=ul;var ob="TabsList",rb=S.forwardRef((a,r)=>{const{__scopeTabs:o,loop:s=!0,...u}=a,l=Qu(ob,o),m=ab(o);return B.jsx(l0,{asChild:!0,...m,orientation:l.orientation,dir:l.dir,loop:s,children:B.jsx(Fi.div,{role:"tablist","aria-orientation":l.orientation,...u,ref:r})})});rb.displayName=ob;var sb="TabsTrigger",tb=S.forwardRef((a,r)=>{const{__scopeTabs:o,value:s,disabled:u=!1,...l}=a,m=Qu(sb,o),c=ab(o),h=ub(m.baseId,s),d=db(m.baseId,s),y=s===m.value;return B.jsx(c0,{asChild:!0,...c,focusable:!u,active:y,children:B.jsx(Fi.button,{type:"button",role:"tab","aria-selected":y,"aria-controls":d,"data-state":y?"active":"inactive","data-disabled":u?"":void 0,disabled:u,id:h,...l,ref:r,onMouseDown:Si(a.onMouseDown,g=>{!u&&g.button===0&&g.ctrlKey===!1?m.onValueChange(s):g.preventDefault()}),onKeyDown:Si(a.onKeyDown,g=>{[" ","Enter"].includes(g.key)&&m.onValueChange(s)}),onFocus:Si(a.onFocus,()=>{const g=m.activationMode!=="manual";!y&&!u&&g&&m.onValueChange(s)})})})});tb.displayName=sb;var lb="TabsContent",cb=S.forwardRef((a,r)=>{const{__scopeTabs:o,value:s,forceMount:u,children:l,...m}=a,c=Qu(lb,o),h=ub(c.baseId,s),d=db(c.baseId,s),y=s===c.value,g=S.useRef(y);return S.useEffect(()=>{const f=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(f)},[]),B.jsx(Po,{present:u||y,children:({present:f})=>B.jsx(Fi.div,{"data-state":y?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":h,hidden:!f,id:d,tabIndex:0,...m,ref:r,style:{...a.style,animationDuration:g.current?"0s":void 0},children:f&&l})})});cb.displayName=lb;function ub(a,r){return`${a}-trigger-${r}`}function db(a,r){return`${a}-content-${r}`}var p0=nb,pb=rb,mb=tb,hb=cb;const m0=p0,gb=S.forwardRef(({className:a,...r},o)=>B.jsx(pb,{ref:o,className:$e("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",a),...r}));gb.displayName=pb.displayName;const Dr=S.forwardRef(({className:a,...r},o)=>B.jsx(mb,{ref:o,className:$e("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",a),...r}));Dr.displayName=mb.displayName;const Fr=S.forwardRef(({className:a,...r},o)=>B.jsx(hb,{ref:o,className:$e("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",a),...r}));Fr.displayName=hb.displayName;var h0=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],g0=h0.reduce((a,r)=>{const o=Mu(`Primitive.${r}`),s=S.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?o:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${r}`,{...a,[r]:s}},{}),y0="Label",yb=S.forwardRef((a,r)=>B.jsx(g0.label,{...a,ref:r,onMouseDown:o=>{var u;o.target.closest("button, input, select, textarea")||((u=a.onMouseDown)==null||u.call(a,o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));yb.displayName=y0;var bb=yb;const b0=al("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),xi=S.forwardRef(({className:a,...r},o)=>B.jsx(bb,{ref:o,className:$e(b0(),a),...r}));xi.displayName=bb.displayName;function f0(a){const r=S.useRef({value:a,previous:a});return S.useMemo(()=>(r.current.value!==a&&(r.current.previous=r.current.value,r.current.value=a),r.current.previous),[a])}function v0(a){const[r,o]=S.useState(void 0);return _o(()=>{if(a){o({width:a.offsetWidth,height:a.offsetHeight});const s=new ResizeObserver(u=>{if(!Array.isArray(u)||!u.length)return;const l=u[0];let m,c;if("borderBoxSize"in l){const h=l.borderBoxSize,d=Array.isArray(h)?h[0]:h;m=d.inlineSize,c=d.blockSize}else m=a.offsetWidth,c=a.offsetHeight;o({width:m,height:c})});return s.observe(a,{box:"border-box"}),()=>s.unobserve(a)}else o(void 0)},[a]),r}var dl="Checkbox",[k0]=Lr(dl),[w0,Gu]=k0(dl);function x0(a){const{__scopeCheckbox:r,checked:o,children:s,defaultChecked:u,disabled:l,form:m,name:c,onCheckedChange:h,required:d,value:y="on",internal_do_not_use_render:g}=a,[f,z]=nl({prop:o,defaultProp:u??!1,onChange:h,caller:dl}),[k,j]=S.useState(null),[v,A]=S.useState(null),C=S.useRef(!1),w=k?!!m||!!k.closest("form"):!0,_={checked:f,disabled:l,setChecked:z,control:k,setControl:j,name:c,form:m,value:y,hasConsumerStoppedPropagationRef:C,required:d,defaultChecked:jn(u)?!1:u,isFormControl:w,bubbleInput:v,setBubbleInput:A};return B.jsx(w0,{scope:r,..._,children:z0(g)?g(_):s})}var fb="CheckboxTrigger",vb=S.forwardRef(({__scopeCheckbox:a,onKeyDown:r,onClick:o,...s},u)=>{const{control:l,value:m,disabled:c,checked:h,required:d,setControl:y,setChecked:g,hasConsumerStoppedPropagationRef:f,isFormControl:z,bubbleInput:k}=Gu(fb,a),j=fa(u,y),v=S.useRef(h);return S.useEffect(()=>{const A=l==null?void 0:l.form;if(A){const C=()=>g(v.current);return A.addEventListener("reset",C),()=>A.removeEventListener("reset",C)}},[l,g]),B.jsx(Fi.button,{type:"button",role:"checkbox","aria-checked":jn(h)?"mixed":h,"aria-required":d,"data-state":qb(h),"data-disabled":c?"":void 0,disabled:c,value:m,...s,ref:j,onKeyDown:Si(r,A=>{A.key==="Enter"&&A.preventDefault()}),onClick:Si(o,A=>{g(C=>jn(C)?!0:!C),k&&z&&(f.current=A.isPropagationStopped(),f.current||A.stopPropagation())})})});vb.displayName=fb;var Ku=S.forwardRef((a,r)=>{const{__scopeCheckbox:o,name:s,checked:u,defaultChecked:l,required:m,disabled:c,value:h,onCheckedChange:d,form:y,...g}=a;return B.jsx(x0,{__scopeCheckbox:o,checked:u,defaultChecked:l,disabled:c,required:m,onCheckedChange:d,name:s,form:y,value:h,internal_do_not_use_render:({isFormControl:f})=>B.jsxs(B.Fragment,{children:[B.jsx(vb,{...g,ref:r,__scopeCheckbox:o}),f&&B.jsx(zb,{__scopeCheckbox:o})]})})});Ku.displayName=dl;var kb="CheckboxIndicator",wb=S.forwardRef((a,r)=>{const{__scopeCheckbox:o,forceMount:s,...u}=a,l=Gu(kb,o);return B.jsx(Po,{present:s||jn(l.checked)||l.checked===!0,children:B.jsx(Fi.span,{"data-state":qb(l.checked),"data-disabled":l.disabled?"":void 0,...u,ref:r,style:{pointerEvents:"none",...a.style}})})});wb.displayName=kb;var xb="CheckboxBubbleInput",zb=S.forwardRef(({__scopeCheckbox:a,...r},o)=>{const{control:s,hasConsumerStoppedPropagationRef:u,checked:l,defaultChecked:m,required:c,disabled:h,name:d,value:y,form:g,bubbleInput:f,setBubbleInput:z}=Gu(xb,a),k=fa(o,z),j=f0(l),v=v0(s);S.useEffect(()=>{const C=f;if(!C)return;const w=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(w,"checked").set,D=!u.current;if(j!==l&&x){const R=new Event("click",{bubbles:D});C.indeterminate=jn(l),x.call(C,jn(l)?!1:l),C.dispatchEvent(R)}},[f,j,l,u]);const A=S.useRef(jn(l)?!1:l);return B.jsx(Fi.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??A.current,required:c,disabled:h,name:d,value:y,form:g,...r,tabIndex:-1,ref:k,style:{...r.style,...v,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});zb.displayName=xb;function z0(a){return typeof a=="function"}function jn(a){return a==="indeterminate"}function qb(a){return jn(a)?"indeterminate":a?"checked":"unchecked"}const jb=S.forwardRef(({className:a,...r},o)=>B.jsx(Ku,{ref:o,className:$e("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",a),...r,children:B.jsx(wb,{className:$e("flex items-center justify-center text-current"),children:B.jsx(yk,{className:"h-4 w-4"})})}));jb.displayName=Ku.displayName;function q0({open:a,contacts:r,undecryptedCount:o,onClose:s,onSelectConversation:u,onCreateContact:l,onCreateChannel:m,onCreateHashtagChannel:c}){const[h,d]=S.useState("existing"),[y,g]=S.useState(""),[f,z]=S.useState(""),[k,j]=S.useState(!1),[v,A]=S.useState(""),[C,w]=S.useState(!1),_=S.useRef(null),x=async()=>{A(""),w(!0);try{if(h==="new-contact"){if(!y.trim()||!f.trim()){A("Name and public key are required");return}await l(y.trim(),f.trim(),k),u({type:"contact",id:f.trim(),name:y.trim()})}else if(h==="new-room"){if(!y.trim()||!f.trim()){A("Room name and key are required");return}await m(y.trim(),f.trim(),k)}else if(h==="hashtag"){const O=y.trim(),N=D(O);if(N){A(N);return}await c(`#${O}`,k)}s()}catch(O){A(O instanceof Error?O.message:"Failed to create")}finally{w(!1)}},D=O=>O?/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/.test(O)?null:"Use letters, numbers, and single dashes (no leading/trailing dashes)":"Channel name is required",R=async()=>{var T;A("");const O=y.trim(),N=D(O);if(N){A(N);return}w(!0);try{await c(`#${O}`,k),g(""),(T=_.current)==null||T.focus()}catch(W){A(W instanceof Error?W.message:"Failed to create")}finally{w(!1)}},F=h!=="existing"&&o>0;return B.jsx(Qy,{open:a,onOpenChange:O=>!O&&s(),children:B.jsxs(Vu,{className:"sm:max-w-[500px]",children:[B.jsx(Uu,{children:B.jsx($u,{children:"New Conversation"})}),B.jsxs(m0,{value:h,onValueChange:O=>d(O),className:"w-full",children:[B.jsxs(gb,{className:"grid w-full grid-cols-4",children:[B.jsx(Dr,{value:"existing",children:"Existing"}),B.jsx(Dr,{value:"new-contact",children:"Contact"}),B.jsx(Dr,{value:"new-room",children:"Room"}),B.jsx(Dr,{value:"hashtag",children:"Hashtag"})]}),B.jsx(Fr,{value:"existing",className:"mt-4",children:B.jsx("div",{className:"max-h-[300px] overflow-y-auto rounded-md border",children:r.length===0?B.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"No contacts available"}):r.map(O=>B.jsx("div",{className:"cursor-pointer px-4 py-2 hover:bg-accent",onClick:()=>{u({type:"contact",id:O.public_key,name:Kn(O.name,O.public_key)}),s()},children:Kn(O.name,O.public_key)},O.public_key))})}),B.jsxs(Fr,{value:"new-contact",className:"mt-4 space-y-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"contact-name",children:"Name"}),B.jsx(zi,{id:"contact-name",value:y,onChange:O=>g(O.target.value),placeholder:"Contact name"})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"contact-key",children:"Public Key"}),B.jsx(zi,{id:"contact-key",value:f,onChange:O=>z(O.target.value),placeholder:"64-character hex public key"})]})]}),B.jsxs(Fr,{value:"new-room",className:"mt-4 space-y-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"room-name",children:"Room Name"}),B.jsx(zi,{id:"room-name",value:y,onChange:O=>g(O.target.value),placeholder:"Room name"})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"room-key",children:"Room Key"}),B.jsx(zi,{id:"room-key",value:f,onChange:O=>z(O.target.value),placeholder:"Pre-shared key (hex)"})]})]}),B.jsx(Fr,{value:"hashtag",className:"mt-4",children:B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"hashtag-name",children:"Hashtag Channel"}),B.jsxs("div",{className:"flex items-center gap-1",children:[B.jsx("span",{className:"text-sm text-muted-foreground",children:"#"}),B.jsx(zi,{ref:_,id:"hashtag-name",value:y,onChange:O=>g(O.target.value),placeholder:"channel-name",className:"flex-1"})]})]})})]}),F&&B.jsxs("div",{className:"space-y-1",children:[B.jsxs("div",{className:"flex items-center justify-end space-x-2",children:[B.jsxs(xi,{htmlFor:"try-historical",className:"text-sm text-muted-foreground cursor-pointer",children:["Try decrypting ",o.toLocaleString()," stored packet",o!==1?"s":""]}),B.jsx(jb,{id:"try-historical",checked:k,onCheckedChange:O=>j(O===!0)})]}),k&&B.jsx("p",{className:"text-xs text-muted-foreground text-right",children:"Messages will stream in as they decrypt in the background"})]}),v&&B.jsx("div",{className:"text-sm text-destructive",children:v}),B.jsxs(Wu,{children:[B.jsx(La,{variant:"outline",onClick:s,children:"Cancel"}),h==="hashtag"&&B.jsx(La,{variant:"secondary",onClick:R,disabled:C,children:C?"Creating...":"Create & Add Another"}),h!=="existing"&&B.jsx(La,{onClick:x,disabled:C,children:C?"Creating...":"Create"})]})]})})}var j0=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],A0=j0.reduce((a,r)=>{const o=Mu(`Primitive.${r}`),s=S.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?o:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${r}`,{...a,[r]:s}},{}),C0="Separator",wh="horizontal",E0=["horizontal","vertical"],Ab=S.forwardRef((a,r)=>{const{decorative:o,orientation:s=wh,...u}=a,l=S0(s)?s:wh,c=o?{role:"none"}:{"aria-orientation":l==="vertical"?l:void 0,role:"separator"};return B.jsx(A0.div,{"data-orientation":l,...c,...u,ref:r})});Ab.displayName=C0;function S0(a){return E0.includes(a)}var Cb=Ab;const st=S.forwardRef(({className:a,orientation:r="horizontal",decorative:o=!0,...s},u)=>B.jsx(Cb,{ref:u,decorative:o,orientation:r,className:$e("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",a),...s}));st.displayName=Cb.displayName;const B0=al("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",warning:"border-yellow-500/50 bg-yellow-500/10 text-yellow-200 [&>svg]:text-yellow-500"}},defaultVariants:{variant:"default"}}),Eb=S.forwardRef(({className:a,variant:r,...o},s)=>B.jsx("div",{ref:s,role:"alert",className:$e(B0({variant:r}),a),...o}));Eb.displayName="Alert";const _0=S.forwardRef(({className:a,...r},o)=>B.jsx("h5",{ref:o,className:$e("mb-1 font-medium leading-none tracking-tight",a),...r}));_0.displayName="AlertTitle";const Sb=S.forwardRef(({className:a,...r},o)=>B.jsx("div",{ref:o,className:$e("text-sm [&_p]:leading-relaxed",a),...r}));Sb.displayName="AlertDescription";function D0({open:a,config:r,appSettings:o,onClose:s,onSave:u,onSaveAppSettings:l,onSetPrivateKey:m,onReboot:c}){const[h,d]=S.useState(""),[y,g]=S.useState(""),[f,z]=S.useState(""),[k,j]=S.useState(""),[v,A]=S.useState(""),[C,w]=S.useState(""),[_,x]=S.useState(""),[D,R]=S.useState(""),[F,O]=S.useState(""),[N,T]=S.useState(""),[W,H]=S.useState(!1),[K,ae]=S.useState(!1),[X,ne]=S.useState("");S.useEffect(()=>{r&&(d(r.name),g(String(r.lat)),z(String(r.lon)),j(String(r.tx_power)),A(String(r.radio.freq)),w(String(r.radio.bw)),x(String(r.radio.sf)),R(String(r.radio.cr)))},[r]),S.useEffect(()=>{o&&T(String(o.max_radio_contacts))},[o]);const $=async()=>{ne(""),H(!0);try{const q={name:h,lat:parseFloat(y),lon:parseFloat(f),tx_power:parseInt(k,10),radio:{freq:parseFloat(v),bw:parseFloat(C),sf:parseInt(_,10),cr:parseInt(D,10)}};await u(q);const I=parseInt(N,10);!isNaN(I)&&I!==(o==null?void 0:o.max_radio_contacts)&&await l({max_radio_contacts:I}),s()}catch(q){ne(q instanceof Error?q.message:"Failed to save")}finally{H(!1)}},oe=async()=>{if(!F.trim()){ne("Private key is required");return}ne(""),H(!0);try{await m(F.trim()),O(""),s()}catch(q){ne(q instanceof Error?q.message:"Failed to set private key")}finally{H(!1)}},ee=async()=>{if(confirm("Are you sure you want to reboot the radio? The connection will drop temporarily.")){ne(""),ae(!0);try{await c(),s()}catch(q){ne(q instanceof Error?q.message:"Failed to reboot radio")}finally{ae(!1)}}};return B.jsx(Qy,{open:a,onOpenChange:q=>!q&&s(),children:B.jsxs(Vu,{className:"sm:max-w-[500px] max-h-[90vh] overflow-y-auto",children:[B.jsx(Uu,{children:B.jsx($u,{children:"Radio Configuration"})}),r?B.jsxs("div",{className:"space-y-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"public-key",children:"Public Key"}),B.jsx(zi,{id:"public-key",value:r.public_key,disabled:!0})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"name",children:"Name"}),B.jsx(zi,{id:"name",value:h,onChange:q=>d(q.target.value)})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"lat",children:"Latitude"}),B.jsx(zi,{id:"lat",type:"number",step:"any",value:y,onChange:q=>g(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"lon",children:"Longitude"}),B.jsx(zi,{id:"lon",type:"number",step:"any",value:f,onChange:q=>z(q.target.value)})]})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"freq",children:"Frequency (MHz)"}),B.jsx(zi,{id:"freq",type:"number",step:"any",value:v,onChange:q=>A(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"bw",children:"Bandwidth (kHz)"}),B.jsx(zi,{id:"bw",type:"number",step:"any",value:C,onChange:q=>w(q.target.value)})]})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"sf",children:"Spreading Factor"}),B.jsx(zi,{id:"sf",type:"number",min:"7",max:"12",value:_,onChange:q=>x(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"cr",children:"Coding Rate"}),B.jsx(zi,{id:"cr",type:"number",min:"1",max:"4",value:D,onChange:q=>R(q.target.value)})]})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"tx-power",children:"TX Power (dBm)"}),B.jsx(zi,{id:"tx-power",type:"number",value:k,onChange:q=>j(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"max-tx",children:"Max TX Power"}),B.jsx(zi,{id:"max-tx",type:"number",value:r.max_tx_power,disabled:!0})]})]}),B.jsx(st,{className:"my-4"}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"max-contacts",children:"Max Contacts on Radio"}),B.jsx(zi,{id:"max-contacts",type:"number",min:"1",max:"1000",value:N,onChange:q=>T(q.target.value)}),B.jsx("p",{className:"text-xs text-muted-foreground",children:"Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)"})]}),B.jsx(st,{className:"my-4"}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"private-key",children:"Set Private Key (write-only)"}),B.jsxs("div",{className:"flex gap-2",children:[B.jsx(zi,{id:"private-key",type:"password",value:F,onChange:q=>O(q.target.value),placeholder:"64-character hex private key",className:"flex-1"}),B.jsx(La,{onClick:oe,disabled:W||!F.trim(),children:"Set"})]})]}),B.jsx(st,{className:"my-4"}),B.jsxs("div",{className:"space-y-3",children:[B.jsx(xi,{children:"Reboot Radio"}),B.jsx(Eb,{variant:"warning",children:B.jsx(Sb,{children:"Some configuration changes (like name) require a radio reboot to take effect. The connection will temporarily drop and automatically reconnect."})}),B.jsx(La,{variant:"outline",onClick:ee,disabled:K||W,className:"border-yellow-500/50 text-yellow-200 hover:bg-yellow-500/10",children:K?"Rebooting...":"Reboot Radio"})]}),X&&B.jsx("div",{className:"text-sm text-destructive",children:X})]}):B.jsx("div",{className:"py-8 text-center text-muted-foreground",children:"Loading configuration..."}),B.jsxs(Wu,{children:[B.jsx(La,{variant:"outline",onClick:s,children:"Cancel"}),B.jsx(La,{onClick:$,disabled:W||!r,children:W?"Saving...":"Save Config"})]})]})})}function F0(a){return new Date(a*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function xh(a){return a.split("_").map(r=>r.charAt(0)+r.slice(1).toLowerCase()).join(" ")}function R0(a){if(!a.decrypted||!a.decrypted_info)return xh(a.payload_type);const r=a.decrypted_info;return a.payload_type==="GROUP_TEXT"&&r.channel_name?`GroupText to ${r.channel_name}`:a.payload_type==="TEXT_MESSAGE"&&r.sender?`TextMessage from ${r.sender}`:xh(a.payload_type)}function T0(a){const r=[];return a.snr!==null&&a.snr!==void 0&&r.push(`SNR: ${a.snr.toFixed(1)} dB`),a.rssi!==null&&a.rssi!==void 0&&r.push(`RSSI: ${a.rssi} dBm`),r.join(" | ")}function P0({packets:a}){const r=S.useRef(null);if(S.useEffect(()=>{r.current&&(r.current.scrollTop=r.current.scrollHeight)},[a]),a.length===0)return B.jsx("div",{className:"h-full overflow-y-auto p-5 text-center text-muted-foreground",children:"No packets received yet. Packets will appear here in real-time."});const o=[...a].sort((s,u)=>s.timestamp-u.timestamp);return B.jsx("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-3",ref:r,children:o.map(s=>B.jsxs("div",{className:"py-2 px-3 bg-muted rounded",children:[B.jsxs("div",{className:s.decrypted?"text-primary":"text-destructive",children:[!s.decrypted&&B.jsx("span",{className:"mr-1",children:"🔒"}),R0(s)," • ",F0(s.timestamp)]}),(s.snr!==null||s.rssi!==null)&&B.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:T0(s)}),B.jsx("div",{className:"font-mono text-[11px] break-all text-muted-foreground/70 mt-1",children:s.data.toUpperCase()})]},s.id))})}var Xa={},vr={},Ni={},zh;function ua(){if(zh)return Ni;zh=1,Object.defineProperty(Ni,"__esModule",{value:!0}),Ni.RequestType=Ni.AdvertFlags=Ni.DeviceRole=Ni.PayloadVersion=Ni.ControlSubType=Ni.PayloadType=Ni.RouteType=void 0;var a;(function(c){c[c.TransportFlood=0]="TransportFlood",c[c.Flood=1]="Flood",c[c.Direct=2]="Direct",c[c.TransportDirect=3]="TransportDirect"})(a||(Ni.RouteType=a={}));var r;(function(c){c[c.Request=0]="Request",c[c.Response=1]="Response",c[c.TextMessage=2]="TextMessage",c[c.Ack=3]="Ack",c[c.Advert=4]="Advert",c[c.GroupText=5]="GroupText",c[c.GroupData=6]="GroupData",c[c.AnonRequest=7]="AnonRequest",c[c.Path=8]="Path",c[c.Trace=9]="Trace",c[c.Multipart=10]="Multipart",c[c.Control=11]="Control",c[c.RawCustom=15]="RawCustom"})(r||(Ni.PayloadType=r={}));var o;(function(c){c[c.NodeDiscoverReq=128]="NodeDiscoverReq",c[c.NodeDiscoverResp=144]="NodeDiscoverResp"})(o||(Ni.ControlSubType=o={}));var s;(function(c){c[c.Version1=0]="Version1",c[c.Version2=1]="Version2",c[c.Version3=2]="Version3",c[c.Version4=3]="Version4"})(s||(Ni.PayloadVersion=s={}));var u;(function(c){c[c.Unknown=0]="Unknown",c[c.ChatNode=1]="ChatNode",c[c.Repeater=2]="Repeater",c[c.RoomServer=3]="RoomServer",c[c.Sensor=4]="Sensor"})(u||(Ni.DeviceRole=u={}));var l;(function(c){c[c.HasLocation=16]="HasLocation",c[c.HasFeature1=32]="HasFeature1",c[c.HasFeature2=64]="HasFeature2",c[c.HasName=128]="HasName"})(l||(Ni.AdvertFlags=l={}));var m;return(function(c){c[c.GetStats=1]="GetStats",c[c.Keepalive=2]="Keepalive",c[c.GetTelemetryData=3]="GetTelemetryData",c[c.GetMinMaxAvgData=4]="GetMinMaxAvgData",c[c.GetAccessList=5]="GetAccessList"})(m||(Ni.RequestType=m={})),Ni}var Vn={},qh;function Ii(){if(qh)return Vn;qh=1,Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.byteToHex=a,Vn.bytesToHex=r,Vn.numberToHex=o,Vn.hexToBytes=s;function a(u){return u.toString(16).padStart(2,"0").toUpperCase()}function r(u){return Array.from(u).map(a).join("")}function o(u,l=8){return(u>>>0).toString(16).padStart(l,"0").toUpperCase()}function s(u){const l=u.replace(/\s/g,"").toUpperCase();if(!/^[0-9A-F]*$/.test(l))throw new Error("Invalid hex string: invalid characters at position 0");if(l.length%2!==0)throw new Error("Invalid hex string: odd length");const m=new Uint8Array(l.length/2);for(let c=0;c>>2]>>>24-R%4*8&255;w[x+R>>>2]|=F<<24-(x+R)%4*8}else for(var O=0;O>>2]=_[O>>>2];return this.sigBytes+=D,this},clamp:function(){var C=this.words,w=this.sigBytes;C[w>>>2]&=4294967295<<32-w%4*8,C.length=s.ceil(w/4)},clone:function(){var C=y.clone.call(this);return C.words=this.words.slice(0),C},random:function(C){for(var w=[],_=0;_>>2]>>>24-D%4*8&255;x.push((R>>>4).toString(16)),x.push((R&15).toString(16))}return x.join("")},parse:function(C){for(var w=C.length,_=[],x=0;x>>3]|=parseInt(C.substr(x,2),16)<<24-x%8*4;return new g.init(_,w/2)}},k=f.Latin1={stringify:function(C){for(var w=C.words,_=C.sigBytes,x=[],D=0;D<_;D++){var R=w[D>>>2]>>>24-D%4*8&255;x.push(String.fromCharCode(R))}return x.join("")},parse:function(C){for(var w=C.length,_=[],x=0;x>>2]|=(C.charCodeAt(x)&255)<<24-x%4*8;return new g.init(_,w)}},j=f.Utf8={stringify:function(C){try{return decodeURIComponent(escape(k.stringify(C)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(C){return k.parse(unescape(encodeURIComponent(C)))}},v=d.BufferedBlockAlgorithm=y.extend({reset:function(){this._data=new g.init,this._nDataBytes=0},_append:function(C){typeof C=="string"&&(C=j.parse(C)),this._data.concat(C),this._nDataBytes+=C.sigBytes},_process:function(C){var w,_=this._data,x=_.words,D=_.sigBytes,R=this.blockSize,F=R*4,O=D/F;C?O=s.ceil(O):O=s.max((O|0)-this._minBufferSize,0);var N=O*R,T=s.min(N*4,D);if(N){for(var W=0;W>>2]|=h[g]<<24-g%4*8;m.call(this,y,d)}else m.apply(this,arguments)};c.prototype=l}})(),o.lib.WordArray})})(ut)),ut.exports}var dt={exports:{}},V0=dt.exports,Sh;function U0(){return Sh||(Sh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(V0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.enc;m.Utf16=m.Utf16BE={stringify:function(h){for(var d=h.words,y=h.sigBytes,g=[],f=0;f>>2]>>>16-f%4*8&65535;g.push(String.fromCharCode(z))}return g.join("")},parse:function(h){for(var d=h.length,y=[],g=0;g>>1]|=h.charCodeAt(g)<<16-g%2*16;return l.create(y,d*2)}},m.Utf16LE={stringify:function(h){for(var d=h.words,y=h.sigBytes,g=[],f=0;f>>2]>>>16-f%4*8&65535);g.push(String.fromCharCode(z))}return g.join("")},parse:function(h){for(var d=h.length,y=[],g=0;g>>1]|=c(h.charCodeAt(g)<<16-g%2*16);return l.create(y,d*2)}};function c(h){return h<<8&4278255360|h>>>8&16711935}})(),o.enc.Utf16})})(dt)),dt.exports}var pt={exports:{}},W0=pt.exports,Bh;function Xn(){return Bh||(Bh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(W0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.enc;m.Base64={stringify:function(h){var d=h.words,y=h.sigBytes,g=this._map;h.clamp();for(var f=[],z=0;z>>2]>>>24-z%4*8&255,j=d[z+1>>>2]>>>24-(z+1)%4*8&255,v=d[z+2>>>2]>>>24-(z+2)%4*8&255,A=k<<16|j<<8|v,C=0;C<4&&z+C*.75>>6*(3-C)&63));var w=g.charAt(64);if(w)for(;f.length%4;)f.push(w);return f.join("")},parse:function(h){var d=h.length,y=this._map,g=this._reverseMap;if(!g){g=this._reverseMap=[];for(var f=0;f>>6-z%4*2,v=k|j;g[f>>>2]|=v<<24-f%4*8,f++}return l.create(g,f)}})(),o.enc.Base64})})(pt)),pt.exports}var mt={exports:{}},$0=mt.exports,_h;function Q0(){return _h||(_h=1,(function(a,r){(function(o,s){a.exports=s(Ie())})($0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.enc;m.Base64url={stringify:function(h,d){d===void 0&&(d=!0);var y=h.words,g=h.sigBytes,f=d?this._safe_map:this._map;h.clamp();for(var z=[],k=0;k>>2]>>>24-k%4*8&255,v=y[k+1>>>2]>>>24-(k+1)%4*8&255,A=y[k+2>>>2]>>>24-(k+2)%4*8&255,C=j<<16|v<<8|A,w=0;w<4&&k+w*.75>>6*(3-w)&63));var _=f.charAt(64);if(_)for(;z.length%4;)z.push(_);return z.join("")},parse:function(h,d){d===void 0&&(d=!0);var y=h.length,g=d?this._safe_map:this._map,f=this._reverseMap;if(!f){f=this._reverseMap=[];for(var z=0;z>>6-z%4*2,v=k|j;g[f>>>2]|=v<<24-f%4*8,f++}return l.create(g,f)}})(),o.enc.Base64url})})(mt)),mt.exports}var ht={exports:{}},G0=ht.exports,Dh;function Jn(){return Dh||(Dh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(G0,function(o){return(function(s){var u=o,l=u.lib,m=l.WordArray,c=l.Hasher,h=u.algo,d=[];(function(){for(var j=0;j<64;j++)d[j]=s.abs(s.sin(j+1))*4294967296|0})();var y=h.MD5=c.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(j,v){for(var A=0;A<16;A++){var C=v+A,w=j[C];j[C]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360}var _=this._hash.words,x=j[v+0],D=j[v+1],R=j[v+2],F=j[v+3],O=j[v+4],N=j[v+5],T=j[v+6],W=j[v+7],H=j[v+8],K=j[v+9],ae=j[v+10],X=j[v+11],ne=j[v+12],$=j[v+13],oe=j[v+14],ee=j[v+15],q=_[0],I=_[1],L=_[2],Q=_[3];q=g(q,I,L,Q,x,7,d[0]),Q=g(Q,q,I,L,D,12,d[1]),L=g(L,Q,q,I,R,17,d[2]),I=g(I,L,Q,q,F,22,d[3]),q=g(q,I,L,Q,O,7,d[4]),Q=g(Q,q,I,L,N,12,d[5]),L=g(L,Q,q,I,T,17,d[6]),I=g(I,L,Q,q,W,22,d[7]),q=g(q,I,L,Q,H,7,d[8]),Q=g(Q,q,I,L,K,12,d[9]),L=g(L,Q,q,I,ae,17,d[10]),I=g(I,L,Q,q,X,22,d[11]),q=g(q,I,L,Q,ne,7,d[12]),Q=g(Q,q,I,L,$,12,d[13]),L=g(L,Q,q,I,oe,17,d[14]),I=g(I,L,Q,q,ee,22,d[15]),q=f(q,I,L,Q,D,5,d[16]),Q=f(Q,q,I,L,T,9,d[17]),L=f(L,Q,q,I,X,14,d[18]),I=f(I,L,Q,q,x,20,d[19]),q=f(q,I,L,Q,N,5,d[20]),Q=f(Q,q,I,L,ae,9,d[21]),L=f(L,Q,q,I,ee,14,d[22]),I=f(I,L,Q,q,O,20,d[23]),q=f(q,I,L,Q,K,5,d[24]),Q=f(Q,q,I,L,oe,9,d[25]),L=f(L,Q,q,I,F,14,d[26]),I=f(I,L,Q,q,H,20,d[27]),q=f(q,I,L,Q,$,5,d[28]),Q=f(Q,q,I,L,R,9,d[29]),L=f(L,Q,q,I,W,14,d[30]),I=f(I,L,Q,q,ne,20,d[31]),q=z(q,I,L,Q,N,4,d[32]),Q=z(Q,q,I,L,H,11,d[33]),L=z(L,Q,q,I,X,16,d[34]),I=z(I,L,Q,q,oe,23,d[35]),q=z(q,I,L,Q,D,4,d[36]),Q=z(Q,q,I,L,O,11,d[37]),L=z(L,Q,q,I,W,16,d[38]),I=z(I,L,Q,q,ae,23,d[39]),q=z(q,I,L,Q,$,4,d[40]),Q=z(Q,q,I,L,x,11,d[41]),L=z(L,Q,q,I,F,16,d[42]),I=z(I,L,Q,q,T,23,d[43]),q=z(q,I,L,Q,K,4,d[44]),Q=z(Q,q,I,L,ne,11,d[45]),L=z(L,Q,q,I,ee,16,d[46]),I=z(I,L,Q,q,R,23,d[47]),q=k(q,I,L,Q,x,6,d[48]),Q=k(Q,q,I,L,W,10,d[49]),L=k(L,Q,q,I,oe,15,d[50]),I=k(I,L,Q,q,N,21,d[51]),q=k(q,I,L,Q,ne,6,d[52]),Q=k(Q,q,I,L,F,10,d[53]),L=k(L,Q,q,I,ae,15,d[54]),I=k(I,L,Q,q,D,21,d[55]),q=k(q,I,L,Q,H,6,d[56]),Q=k(Q,q,I,L,ee,10,d[57]),L=k(L,Q,q,I,T,15,d[58]),I=k(I,L,Q,q,$,21,d[59]),q=k(q,I,L,Q,O,6,d[60]),Q=k(Q,q,I,L,X,10,d[61]),L=k(L,Q,q,I,R,15,d[62]),I=k(I,L,Q,q,K,21,d[63]),_[0]=_[0]+q|0,_[1]=_[1]+I|0,_[2]=_[2]+L|0,_[3]=_[3]+Q|0},_doFinalize:function(){var j=this._data,v=j.words,A=this._nDataBytes*8,C=j.sigBytes*8;v[C>>>5]|=128<<24-C%32;var w=s.floor(A/4294967296),_=A;v[(C+64>>>9<<4)+15]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,v[(C+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,j.sigBytes=(v.length+1)*4,this._process();for(var x=this._hash,D=x.words,R=0;R<4;R++){var F=D[R];D[R]=(F<<8|F>>>24)&16711935|(F<<24|F>>>8)&4278255360}return x},clone:function(){var j=c.clone.call(this);return j._hash=this._hash.clone(),j}});function g(j,v,A,C,w,_,x){var D=j+(v&A|~v&C)+w+x;return(D<<_|D>>>32-_)+v}function f(j,v,A,C,w,_,x){var D=j+(v&C|A&~C)+w+x;return(D<<_|D>>>32-_)+v}function z(j,v,A,C,w,_,x){var D=j+(v^A^C)+w+x;return(D<<_|D>>>32-_)+v}function k(j,v,A,C,w,_,x){var D=j+(A^(v|~C))+w+x;return(D<<_|D>>>32-_)+v}u.MD5=c._createHelper(y),u.HmacMD5=c._createHmacHelper(y)})(Math),o.MD5})})(ht)),ht.exports}var gt={exports:{}},K0=gt.exports,Fh;function Bb(){return Fh||(Fh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(K0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=u.Hasher,c=s.algo,h=[],d=c.SHA1=m.extend({_doReset:function(){this._hash=new l.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(y,g){for(var f=this._hash.words,z=f[0],k=f[1],j=f[2],v=f[3],A=f[4],C=0;C<80;C++){if(C<16)h[C]=y[g+C]|0;else{var w=h[C-3]^h[C-8]^h[C-14]^h[C-16];h[C]=w<<1|w>>>31}var _=(z<<5|z>>>27)+A+h[C];C<20?_+=(k&j|~k&v)+1518500249:C<40?_+=(k^j^v)+1859775393:C<60?_+=(k&j|k&v|j&v)-1894007588:_+=(k^j^v)-899497514,A=v,v=j,j=k<<30|k>>>2,k=z,z=_}f[0]=f[0]+z|0,f[1]=f[1]+k|0,f[2]=f[2]+j|0,f[3]=f[3]+v|0,f[4]=f[4]+A|0},_doFinalize:function(){var y=this._data,g=y.words,f=this._nDataBytes*8,z=y.sigBytes*8;return g[z>>>5]|=128<<24-z%32,g[(z+64>>>9<<4)+14]=Math.floor(f/4294967296),g[(z+64>>>9<<4)+15]=f,y.sigBytes=g.length*4,this._process(),this._hash},clone:function(){var y=m.clone.call(this);return y._hash=this._hash.clone(),y}});s.SHA1=m._createHelper(d),s.HmacSHA1=m._createHmacHelper(d)})(),o.SHA1})})(gt)),gt.exports}var yt={exports:{}},Y0=yt.exports,Rh;function Vr(){return Rh||(Rh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(Y0,function(o){return(function(s){var u=o,l=u.lib,m=l.WordArray,c=l.Hasher,h=u.algo,d=[],y=[];(function(){function z(A){for(var C=s.sqrt(A),w=2;w<=C;w++)if(!(A%w))return!1;return!0}function k(A){return(A-(A|0))*4294967296|0}for(var j=2,v=0;v<64;)z(j)&&(v<8&&(d[v]=k(s.pow(j,1/2))),y[v]=k(s.pow(j,1/3)),v++),j++})();var g=[],f=h.SHA256=c.extend({_doReset:function(){this._hash=new m.init(d.slice(0))},_doProcessBlock:function(z,k){for(var j=this._hash.words,v=j[0],A=j[1],C=j[2],w=j[3],_=j[4],x=j[5],D=j[6],R=j[7],F=0;F<64;F++){if(F<16)g[F]=z[k+F]|0;else{var O=g[F-15],N=(O<<25|O>>>7)^(O<<14|O>>>18)^O>>>3,T=g[F-2],W=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;g[F]=N+g[F-7]+W+g[F-16]}var H=_&x^~_&D,K=v&A^v&C^A&C,ae=(v<<30|v>>>2)^(v<<19|v>>>13)^(v<<10|v>>>22),X=(_<<26|_>>>6)^(_<<21|_>>>11)^(_<<7|_>>>25),ne=R+X+H+y[F]+g[F],$=ae+K;R=D,D=x,x=_,_=w+ne|0,w=C,C=A,A=v,v=ne+$|0}j[0]=j[0]+v|0,j[1]=j[1]+A|0,j[2]=j[2]+C|0,j[3]=j[3]+w|0,j[4]=j[4]+_|0,j[5]=j[5]+x|0,j[6]=j[6]+D|0,j[7]=j[7]+R|0},_doFinalize:function(){var z=this._data,k=z.words,j=this._nDataBytes*8,v=z.sigBytes*8;return k[v>>>5]|=128<<24-v%32,k[(v+64>>>9<<4)+14]=s.floor(j/4294967296),k[(v+64>>>9<<4)+15]=j,z.sigBytes=k.length*4,this._process(),this._hash},clone:function(){var z=c.clone.call(this);return z._hash=this._hash.clone(),z}});u.SHA256=c._createHelper(f),u.HmacSHA256=c._createHmacHelper(f)})(Math),o.SHA256})})(yt)),yt.exports}var bt={exports:{}},Z0=bt.exports,Th;function X0(){return Th||(Th=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Vr())})(Z0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.algo,c=m.SHA256,h=m.SHA224=c.extend({_doReset:function(){this._hash=new l.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var d=c._doFinalize.call(this);return d.sigBytes-=4,d}});s.SHA224=c._createHelper(h),s.HmacSHA224=c._createHmacHelper(h)})(),o.SHA224})})(bt)),bt.exports}var ft={exports:{}},J0=ft.exports,Ph;function _b(){return Ph||(Ph=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),pl())})(J0,function(o){return(function(){var s=o,u=s.lib,l=u.Hasher,m=s.x64,c=m.Word,h=m.WordArray,d=s.algo;function y(){return c.create.apply(c,arguments)}var g=[y(1116352408,3609767458),y(1899447441,602891725),y(3049323471,3964484399),y(3921009573,2173295548),y(961987163,4081628472),y(1508970993,3053834265),y(2453635748,2937671579),y(2870763221,3664609560),y(3624381080,2734883394),y(310598401,1164996542),y(607225278,1323610764),y(1426881987,3590304994),y(1925078388,4068182383),y(2162078206,991336113),y(2614888103,633803317),y(3248222580,3479774868),y(3835390401,2666613458),y(4022224774,944711139),y(264347078,2341262773),y(604807628,2007800933),y(770255983,1495990901),y(1249150122,1856431235),y(1555081692,3175218132),y(1996064986,2198950837),y(2554220882,3999719339),y(2821834349,766784016),y(2952996808,2566594879),y(3210313671,3203337956),y(3336571891,1034457026),y(3584528711,2466948901),y(113926993,3758326383),y(338241895,168717936),y(666307205,1188179964),y(773529912,1546045734),y(1294757372,1522805485),y(1396182291,2643833823),y(1695183700,2343527390),y(1986661051,1014477480),y(2177026350,1206759142),y(2456956037,344077627),y(2730485921,1290863460),y(2820302411,3158454273),y(3259730800,3505952657),y(3345764771,106217008),y(3516065817,3606008344),y(3600352804,1432725776),y(4094571909,1467031594),y(275423344,851169720),y(430227734,3100823752),y(506948616,1363258195),y(659060556,3750685593),y(883997877,3785050280),y(958139571,3318307427),y(1322822218,3812723403),y(1537002063,2003034995),y(1747873779,3602036899),y(1955562222,1575990012),y(2024104815,1125592928),y(2227730452,2716904306),y(2361852424,442776044),y(2428436474,593698344),y(2756734187,3733110249),y(3204031479,2999351573),y(3329325298,3815920427),y(3391569614,3928383900),y(3515267271,566280711),y(3940187606,3454069534),y(4118630271,4000239992),y(116418474,1914138554),y(174292421,2731055270),y(289380356,3203993006),y(460393269,320620315),y(685471733,587496836),y(852142971,1086792851),y(1017036298,365543100),y(1126000580,2618297676),y(1288033470,3409855158),y(1501505948,4234509866),y(1607167915,987167468),y(1816402316,1246189591)],f=[];(function(){for(var k=0;k<80;k++)f[k]=y()})();var z=d.SHA512=l.extend({_doReset:function(){this._hash=new h.init([new c.init(1779033703,4089235720),new c.init(3144134277,2227873595),new c.init(1013904242,4271175723),new c.init(2773480762,1595750129),new c.init(1359893119,2917565137),new c.init(2600822924,725511199),new c.init(528734635,4215389547),new c.init(1541459225,327033209)])},_doProcessBlock:function(k,j){for(var v=this._hash.words,A=v[0],C=v[1],w=v[2],_=v[3],x=v[4],D=v[5],R=v[6],F=v[7],O=A.high,N=A.low,T=C.high,W=C.low,H=w.high,K=w.low,ae=_.high,X=_.low,ne=x.high,$=x.low,oe=D.high,ee=D.low,q=R.high,I=R.low,L=F.high,Q=F.low,de=O,ge=N,be=T,se=W,ce=H,Ae=K,Fe=ae,He=X,ai=ne,Qe=$,Oe=oe,Me=ee,Xe=q,Ve=I,Ge=L,yi=Q,si=0;si<80;si++){var Le,mi,Gi=f[si];if(si<16)mi=Gi.high=k[j+si*2]|0,Le=Gi.low=k[j+si*2+1]|0;else{var va=f[si-15],qi=va.high,Mi=va.low,Ki=(qi>>>1|Mi<<31)^(qi>>>8|Mi<<24)^qi>>>7,oa=(Mi>>>1|qi<<31)^(Mi>>>8|qi<<24)^(Mi>>>7|qi<<25),ji=f[si-2],ui=ji.high,ki=ji.low,_a=(ui>>>19|ki<<13)^(ui<<3|ki>>>29)^ui>>>6,da=(ki>>>19|ui<<13)^(ki<<3|ui>>>29)^(ki>>>6|ui<<26),ie=f[si-7],pe=ie.high,V=ie.low,J=f[si-16],re=J.high,ye=J.low;Le=oa+V,mi=Ki+pe+(Le>>>0>>0?1:0),Le=Le+da,mi=mi+_a+(Le>>>0>>0?1:0),Le=Le+ye,mi=mi+re+(Le>>>0>>0?1:0),Gi.high=mi,Gi.low=Le}var ve=ai&Oe^~ai&Xe,_e=Qe&Me^~Qe&Ve,ni=de&be^de&ce^be&ce,Ce=ge&se^ge&Ae^se&Ae,Te=(de>>>28|ge<<4)^(de<<30|ge>>>2)^(de<<25|ge>>>7),Ue=(ge>>>28|de<<4)^(ge<<30|de>>>2)^(ge<<25|de>>>7),Ke=(ai>>>14|Qe<<18)^(ai>>>18|Qe<<14)^(ai<<23|Qe>>>9),Oi=(Qe>>>14|ai<<18)^(Qe>>>18|ai<<14)^(Qe<<23|ai>>>9),Re=g[si],Ye=Re.high,bi=Re.low,Je=yi+Oi,hi=Ge+Ke+(Je>>>0>>0?1:0),Je=Je+_e,hi=hi+ve+(Je>>>0<_e>>>0?1:0),Je=Je+bi,hi=hi+Ye+(Je>>>0>>0?1:0),Je=Je+Le,hi=hi+mi+(Je>>>0>>0?1:0),ka=Ue+Ce,Yi=Te+ni+(ka>>>0>>0?1:0);Ge=Xe,yi=Ve,Xe=Oe,Ve=Me,Oe=ai,Me=Qe,Qe=He+Je|0,ai=Fe+hi+(Qe>>>0>>0?1:0)|0,Fe=ce,He=Ae,ce=be,Ae=se,be=de,se=ge,ge=Je+ka|0,de=hi+Yi+(ge>>>0>>0?1:0)|0}N=A.low=N+ge,A.high=O+de+(N>>>0>>0?1:0),W=C.low=W+se,C.high=T+be+(W>>>0>>0?1:0),K=w.low=K+Ae,w.high=H+ce+(K>>>0>>0?1:0),X=_.low=X+He,_.high=ae+Fe+(X>>>0>>0?1:0),$=x.low=$+Qe,x.high=ne+ai+($>>>0>>0?1:0),ee=D.low=ee+Me,D.high=oe+Oe+(ee>>>0>>0?1:0),I=R.low=I+Ve,R.high=q+Xe+(I>>>0>>0?1:0),Q=F.low=Q+yi,F.high=L+Ge+(Q>>>0>>0?1:0)},_doFinalize:function(){var k=this._data,j=k.words,v=this._nDataBytes*8,A=k.sigBytes*8;j[A>>>5]|=128<<24-A%32,j[(A+128>>>10<<5)+30]=Math.floor(v/4294967296),j[(A+128>>>10<<5)+31]=v,k.sigBytes=j.length*4,this._process();var C=this._hash.toX32();return C},clone:function(){var k=l.clone.call(this);return k._hash=this._hash.clone(),k},blockSize:1024/32});s.SHA512=l._createHelper(z),s.HmacSHA512=l._createHmacHelper(z)})(),o.SHA512})})(ft)),ft.exports}var vt={exports:{}},eq=vt.exports,Nh;function iq(){return Nh||(Nh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),pl(),_b())})(eq,function(o){return(function(){var s=o,u=s.x64,l=u.Word,m=u.WordArray,c=s.algo,h=c.SHA512,d=c.SHA384=h.extend({_doReset:function(){this._hash=new m.init([new l.init(3418070365,3238371032),new l.init(1654270250,914150663),new l.init(2438529370,812702999),new l.init(355462360,4144912697),new l.init(1731405415,4290775857),new l.init(2394180231,1750603025),new l.init(3675008525,1694076839),new l.init(1203062813,3204075428)])},_doFinalize:function(){var y=h._doFinalize.call(this);return y.sigBytes-=16,y}});s.SHA384=h._createHelper(d),s.HmacSHA384=h._createHmacHelper(d)})(),o.SHA384})})(vt)),vt.exports}var kt={exports:{}},aq=kt.exports,Ih;function nq(){return Ih||(Ih=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),pl())})(aq,function(o){return(function(s){var u=o,l=u.lib,m=l.WordArray,c=l.Hasher,h=u.x64,d=h.Word,y=u.algo,g=[],f=[],z=[];(function(){for(var v=1,A=0,C=0;C<24;C++){g[v+5*A]=(C+1)*(C+2)/2%64;var w=A%5,_=(2*v+3*A)%5;v=w,A=_}for(var v=0;v<5;v++)for(var A=0;A<5;A++)f[v+5*A]=A+(2*v+3*A)%5*5;for(var x=1,D=0;D<24;D++){for(var R=0,F=0,O=0;O<7;O++){if(x&1){var N=(1<>>24)&16711935|(x<<24|x>>>8)&4278255360,D=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360;var R=C[_];R.high^=D,R.low^=x}for(var F=0;F<24;F++){for(var O=0;O<5;O++){for(var N=0,T=0,W=0;W<5;W++){var R=C[O+5*W];N^=R.high,T^=R.low}var H=k[O];H.high=N,H.low=T}for(var O=0;O<5;O++)for(var K=k[(O+4)%5],ae=k[(O+1)%5],X=ae.high,ne=ae.low,N=K.high^(X<<1|ne>>>31),T=K.low^(ne<<1|X>>>31),W=0;W<5;W++){var R=C[O+5*W];R.high^=N,R.low^=T}for(var $=1;$<25;$++){var N,T,R=C[$],oe=R.high,ee=R.low,q=g[$];q<32?(N=oe<>>32-q,T=ee<>>32-q):(N=ee<>>64-q,T=oe<>>64-q);var I=k[f[$]];I.high=N,I.low=T}var L=k[0],Q=C[0];L.high=Q.high,L.low=Q.low;for(var O=0;O<5;O++)for(var W=0;W<5;W++){var $=O+5*W,R=C[$],de=k[$],ge=k[(O+1)%5+5*W],be=k[(O+2)%5+5*W];R.high=de.high^~ge.high&be.high,R.low=de.low^~ge.low&be.low}var R=C[0],se=z[F];R.high^=se.high,R.low^=se.low}},_doFinalize:function(){var v=this._data,A=v.words;this._nDataBytes*8;var C=v.sigBytes*8,w=this.blockSize*32;A[C>>>5]|=1<<24-C%32,A[(s.ceil((C+1)/w)*w>>>5)-1]|=128,v.sigBytes=A.length*4,this._process();for(var _=this._state,x=this.cfg.outputLength/8,D=x/8,R=[],F=0;F>>24)&16711935|(N<<24|N>>>8)&4278255360,T=(T<<8|T>>>24)&16711935|(T<<24|T>>>8)&4278255360,R.push(T),R.push(N)}return new m.init(R,x)},clone:function(){for(var v=c.clone.call(this),A=v._state=this._state.slice(0),C=0;C<25;C++)A[C]=A[C].clone();return v}});u.SHA3=c._createHelper(j),u.HmacSHA3=c._createHmacHelper(j)})(Math),o.SHA3})})(kt)),kt.exports}var wt={exports:{}},oq=wt.exports,Mh;function rq(){return Mh||(Mh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(oq,function(o){/** @preserve +For more information, see https://radix-ui.com/primitives/docs/components/${r.docsSlug}`;return S.useEffect(()=>{a&&(document.getElementById(a)||console.error(o))},[o,a]),null},Lz="DialogDescriptionWarning",Hz=({contentRef:a,descriptionId:r})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Vy(Lz).contentName}}.`;return S.useEffect(()=>{var l;const u=(l=a.current)==null?void 0:l.getAttribute("aria-describedby");r&&u&&(document.getElementById(r)||console.warn(s))},[s,a,r]),null},Uy=By,Wy=Fy,sl=Ry,tl=Ty,ll=Ny,cl=My,$y=Ly;const Qy=Uy,Vz=Wy,Gy=S.forwardRef(({className:a,...r},o)=>B.jsx(sl,{ref:o,className:$e("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...r}));Gy.displayName=sl.displayName;const Vu=S.forwardRef(({className:a,children:r,...o},s)=>B.jsxs(Vz,{children:[B.jsx(Gy,{}),B.jsxs(tl,{ref:s,className:$e("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...o,children:[r,B.jsxs($y,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[B.jsx($g,{className:"h-4 w-4"}),B.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Vu.displayName=tl.displayName;const Uu=({className:a,...r})=>B.jsx("div",{className:$e("flex flex-col space-y-1.5 text-center sm:text-left",a),...r});Uu.displayName="DialogHeader";const Wu=({className:a,...r})=>B.jsx("div",{className:$e("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...r});Wu.displayName="DialogFooter";const $u=S.forwardRef(({className:a,...r},o)=>B.jsx(ll,{ref:o,className:$e("text-lg font-semibold leading-none tracking-tight",a),...r}));$u.displayName=ll.displayName;const Uz=S.forwardRef(({className:a,...r},o)=>B.jsx(cl,{ref:o,className:$e("text-sm text-muted-foreground",a),...r}));Uz.displayName=cl.displayName;function kh(a){const r=Wz(a),o=S.forwardRef((s,u)=>{const{children:l,...m}=s,c=S.Children.toArray(l),h=c.find(Qz);if(h){const d=h.props.children,y=c.map(g=>g===h?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:g);return B.jsx(r,{...m,ref:u,children:S.isValidElement(d)?S.cloneElement(d,void 0,y):null})}return B.jsx(r,{...m,ref:u,children:l})});return o.displayName=`${a}.Slot`,o}function Wz(a){const r=S.forwardRef((o,s)=>{const{children:u,...l}=o;if(S.isValidElement(u)){const m=Kz(u),c=Gz(l,u.props);return u.type!==S.Fragment&&(c.ref=s?Or(s,m):m),S.cloneElement(u,c)}return S.Children.count(u)>1?S.Children.only(null):null});return r.displayName=`${a}.SlotClone`,r}var $z=Symbol("radix.slottable");function Qz(a){return S.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===$z}function Gz(a,r){const o={...r};for(const s in r){const u=a[s],l=r[s];/^on[A-Z]/.test(s)?u&&l?o[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(o[s]=u):s==="style"?o[s]={...u,...l}:s==="className"&&(o[s]=[u,l].filter(Boolean).join(" "))}return{...a,...o}}function Kz(a){var s,u;let r=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?a.ref:(r=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o?a.props.ref:a.props.ref||a.ref)}function Yz(a){const r=a+"CollectionProvider",[o,s]=Lr(r),[u,l]=o(r,{collectionRef:{current:null},itemMap:new Map}),m=j=>{const{scope:v,children:A}=j,C=he.useRef(null),w=he.useRef(new Map).current;return B.jsx(u,{scope:v,itemMap:w,collectionRef:C,children:A})};m.displayName=r;const c=a+"CollectionSlot",h=kh(c),d=he.forwardRef((j,v)=>{const{scope:A,children:C}=j,w=l(c,A),_=fa(v,w.collectionRef);return B.jsx(h,{ref:_,children:C})});d.displayName=c;const y=a+"CollectionItemSlot",g="data-radix-collection-item",f=kh(y),z=he.forwardRef((j,v)=>{const{scope:A,children:C,...w}=j,_=he.useRef(null),x=fa(v,_),D=l(y,A);return he.useEffect(()=>(D.itemMap.set(_,{ref:_,...w}),()=>void D.itemMap.delete(_))),B.jsx(f,{[g]:"",ref:x,children:C})});z.displayName=y;function k(j){const v=l(a+"CollectionConsumer",j);return he.useCallback(()=>{const C=v.collectionRef.current;if(!C)return[];const w=Array.from(C.querySelectorAll(`[${g}]`));return Array.from(v.itemMap.values()).sort((D,R)=>w.indexOf(D.ref.current)-w.indexOf(R.ref.current))},[v.collectionRef,v.itemMap])}return[{Provider:m,Slot:d,ItemSlot:z},k,s]}var Zz=S.createContext(void 0);function Ky(a){const r=S.useContext(Zz);return a||r||"ltr"}var hu="rovingFocusGroup.onEntryFocus",Xz={bubbles:!1,cancelable:!0},Hr="RovingFocusGroup",[Cu,Yy,Jz]=Yz(Hr),[e0,Zy]=Lr(Hr,[Jz]),[i0,a0]=e0(Hr),Xy=S.forwardRef((a,r)=>B.jsx(Cu.Provider,{scope:a.__scopeRovingFocusGroup,children:B.jsx(Cu.Slot,{scope:a.__scopeRovingFocusGroup,children:B.jsx(n0,{...a,ref:r})})}));Xy.displayName=Hr;var n0=S.forwardRef((a,r)=>{const{__scopeRovingFocusGroup:o,orientation:s,loop:u=!1,dir:l,currentTabStopId:m,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:h,onEntryFocus:d,preventScrollOnEntryFocus:y=!1,...g}=a,f=S.useRef(null),z=fa(r,f),k=Ky(l),[j,v]=nl({prop:m,defaultProp:c??null,onChange:h,caller:Hr}),[A,C]=S.useState(!1),w=Do(d),_=Yy(o),x=S.useRef(!1),[D,R]=S.useState(0);return S.useEffect(()=>{const F=f.current;if(F)return F.addEventListener(hu,w),()=>F.removeEventListener(hu,w)},[w]),B.jsx(i0,{scope:o,orientation:s,dir:k,loop:u,currentTabStopId:j,onItemFocus:S.useCallback(F=>v(F),[v]),onItemShiftTab:S.useCallback(()=>C(!0),[]),onFocusableItemAdd:S.useCallback(()=>R(F=>F+1),[]),onFocusableItemRemove:S.useCallback(()=>R(F=>F-1),[]),children:B.jsx(Fi.div,{tabIndex:A||D===0?-1:0,"data-orientation":s,...g,ref:z,style:{outline:"none",...a.style},onMouseDown:Si(a.onMouseDown,()=>{x.current=!0}),onFocus:Si(a.onFocus,F=>{const O=!x.current;if(F.target===F.currentTarget&&O&&!A){const N=new CustomEvent(hu,Xz);if(F.currentTarget.dispatchEvent(N),!N.defaultPrevented){const T=_().filter(X=>X.focusable),W=T.find(X=>X.active),H=T.find(X=>X.id===j),ae=[W,H,...T].filter(Boolean).map(X=>X.ref.current);ib(ae,y)}}x.current=!1}),onBlur:Si(a.onBlur,()=>C(!1))})})}),Jy="RovingFocusGroupItem",eb=S.forwardRef((a,r)=>{const{__scopeRovingFocusGroup:o,focusable:s=!0,active:u=!1,tabStopId:l,children:m,...c}=a,h=Pr(),d=l||h,y=a0(Jy,o),g=y.currentTabStopId===d,f=Yy(o),{onFocusableItemAdd:z,onFocusableItemRemove:k,currentTabStopId:j}=y;return S.useEffect(()=>{if(s)return z(),()=>k()},[s,z,k]),B.jsx(Cu.ItemSlot,{scope:o,id:d,focusable:s,active:u,children:B.jsx(Fi.span,{tabIndex:g?0:-1,"data-orientation":y.orientation,...c,ref:r,onMouseDown:Si(a.onMouseDown,v=>{s?y.onItemFocus(d):v.preventDefault()}),onFocus:Si(a.onFocus,()=>y.onItemFocus(d)),onKeyDown:Si(a.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){y.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const A=s0(v,y.orientation,y.dir);if(A!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let w=f().filter(_=>_.focusable).map(_=>_.ref.current);if(A==="last")w.reverse();else if(A==="prev"||A==="next"){A==="prev"&&w.reverse();const _=w.indexOf(v.currentTarget);w=y.loop?t0(w,_+1):w.slice(_+1)}setTimeout(()=>ib(w))}}),children:typeof m=="function"?m({isCurrentTabStop:g,hasTabStop:j!=null}):m})})});eb.displayName=Jy;var o0={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function r0(a,r){return r!=="rtl"?a:a==="ArrowLeft"?"ArrowRight":a==="ArrowRight"?"ArrowLeft":a}function s0(a,r,o){const s=r0(a.key,o);if(!(r==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(r==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return o0[s]}function ib(a,r=!1){const o=document.activeElement;for(const s of a)if(s===o||(s.focus({preventScroll:r}),document.activeElement!==o))return}function t0(a,r){return a.map((o,s)=>a[(r+s)%a.length])}var l0=Xy,c0=eb,ul="Tabs",[u0]=Lr(ul,[Zy]),ab=Zy(),[d0,Qu]=u0(ul),nb=S.forwardRef((a,r)=>{const{__scopeTabs:o,value:s,onValueChange:u,defaultValue:l,orientation:m="horizontal",dir:c,activationMode:h="automatic",...d}=a,y=Ky(c),[g,f]=nl({prop:s,onChange:u,defaultProp:l??"",caller:ul});return B.jsx(d0,{scope:o,baseId:Pr(),value:g,onValueChange:f,orientation:m,dir:y,activationMode:h,children:B.jsx(Fi.div,{dir:y,"data-orientation":m,...d,ref:r})})});nb.displayName=ul;var ob="TabsList",rb=S.forwardRef((a,r)=>{const{__scopeTabs:o,loop:s=!0,...u}=a,l=Qu(ob,o),m=ab(o);return B.jsx(l0,{asChild:!0,...m,orientation:l.orientation,dir:l.dir,loop:s,children:B.jsx(Fi.div,{role:"tablist","aria-orientation":l.orientation,...u,ref:r})})});rb.displayName=ob;var sb="TabsTrigger",tb=S.forwardRef((a,r)=>{const{__scopeTabs:o,value:s,disabled:u=!1,...l}=a,m=Qu(sb,o),c=ab(o),h=ub(m.baseId,s),d=db(m.baseId,s),y=s===m.value;return B.jsx(c0,{asChild:!0,...c,focusable:!u,active:y,children:B.jsx(Fi.button,{type:"button",role:"tab","aria-selected":y,"aria-controls":d,"data-state":y?"active":"inactive","data-disabled":u?"":void 0,disabled:u,id:h,...l,ref:r,onMouseDown:Si(a.onMouseDown,g=>{!u&&g.button===0&&g.ctrlKey===!1?m.onValueChange(s):g.preventDefault()}),onKeyDown:Si(a.onKeyDown,g=>{[" ","Enter"].includes(g.key)&&m.onValueChange(s)}),onFocus:Si(a.onFocus,()=>{const g=m.activationMode!=="manual";!y&&!u&&g&&m.onValueChange(s)})})})});tb.displayName=sb;var lb="TabsContent",cb=S.forwardRef((a,r)=>{const{__scopeTabs:o,value:s,forceMount:u,children:l,...m}=a,c=Qu(lb,o),h=ub(c.baseId,s),d=db(c.baseId,s),y=s===c.value,g=S.useRef(y);return S.useEffect(()=>{const f=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(f)},[]),B.jsx(Po,{present:u||y,children:({present:f})=>B.jsx(Fi.div,{"data-state":y?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":h,hidden:!f,id:d,tabIndex:0,...m,ref:r,style:{...a.style,animationDuration:g.current?"0s":void 0},children:f&&l})})});cb.displayName=lb;function ub(a,r){return`${a}-trigger-${r}`}function db(a,r){return`${a}-content-${r}`}var p0=nb,pb=rb,mb=tb,hb=cb;const m0=p0,gb=S.forwardRef(({className:a,...r},o)=>B.jsx(pb,{ref:o,className:$e("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",a),...r}));gb.displayName=pb.displayName;const Dr=S.forwardRef(({className:a,...r},o)=>B.jsx(mb,{ref:o,className:$e("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",a),...r}));Dr.displayName=mb.displayName;const Fr=S.forwardRef(({className:a,...r},o)=>B.jsx(hb,{ref:o,className:$e("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",a),...r}));Fr.displayName=hb.displayName;var h0=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],g0=h0.reduce((a,r)=>{const o=Mu(`Primitive.${r}`),s=S.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?o:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${r}`,{...a,[r]:s}},{}),y0="Label",yb=S.forwardRef((a,r)=>B.jsx(g0.label,{...a,ref:r,onMouseDown:o=>{var u;o.target.closest("button, input, select, textarea")||((u=a.onMouseDown)==null||u.call(a,o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));yb.displayName=y0;var bb=yb;const b0=al("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),xi=S.forwardRef(({className:a,...r},o)=>B.jsx(bb,{ref:o,className:$e(b0(),a),...r}));xi.displayName=bb.displayName;function f0(a){const r=S.useRef({value:a,previous:a});return S.useMemo(()=>(r.current.value!==a&&(r.current.previous=r.current.value,r.current.value=a),r.current.previous),[a])}function v0(a){const[r,o]=S.useState(void 0);return _o(()=>{if(a){o({width:a.offsetWidth,height:a.offsetHeight});const s=new ResizeObserver(u=>{if(!Array.isArray(u)||!u.length)return;const l=u[0];let m,c;if("borderBoxSize"in l){const h=l.borderBoxSize,d=Array.isArray(h)?h[0]:h;m=d.inlineSize,c=d.blockSize}else m=a.offsetWidth,c=a.offsetHeight;o({width:m,height:c})});return s.observe(a,{box:"border-box"}),()=>s.unobserve(a)}else o(void 0)},[a]),r}var dl="Checkbox",[k0]=Lr(dl),[w0,Gu]=k0(dl);function x0(a){const{__scopeCheckbox:r,checked:o,children:s,defaultChecked:u,disabled:l,form:m,name:c,onCheckedChange:h,required:d,value:y="on",internal_do_not_use_render:g}=a,[f,z]=nl({prop:o,defaultProp:u??!1,onChange:h,caller:dl}),[k,j]=S.useState(null),[v,A]=S.useState(null),C=S.useRef(!1),w=k?!!m||!!k.closest("form"):!0,_={checked:f,disabled:l,setChecked:z,control:k,setControl:j,name:c,form:m,value:y,hasConsumerStoppedPropagationRef:C,required:d,defaultChecked:jn(u)?!1:u,isFormControl:w,bubbleInput:v,setBubbleInput:A};return B.jsx(w0,{scope:r,..._,children:z0(g)?g(_):s})}var fb="CheckboxTrigger",vb=S.forwardRef(({__scopeCheckbox:a,onKeyDown:r,onClick:o,...s},u)=>{const{control:l,value:m,disabled:c,checked:h,required:d,setControl:y,setChecked:g,hasConsumerStoppedPropagationRef:f,isFormControl:z,bubbleInput:k}=Gu(fb,a),j=fa(u,y),v=S.useRef(h);return S.useEffect(()=>{const A=l==null?void 0:l.form;if(A){const C=()=>g(v.current);return A.addEventListener("reset",C),()=>A.removeEventListener("reset",C)}},[l,g]),B.jsx(Fi.button,{type:"button",role:"checkbox","aria-checked":jn(h)?"mixed":h,"aria-required":d,"data-state":qb(h),"data-disabled":c?"":void 0,disabled:c,value:m,...s,ref:j,onKeyDown:Si(r,A=>{A.key==="Enter"&&A.preventDefault()}),onClick:Si(o,A=>{g(C=>jn(C)?!0:!C),k&&z&&(f.current=A.isPropagationStopped(),f.current||A.stopPropagation())})})});vb.displayName=fb;var Ku=S.forwardRef((a,r)=>{const{__scopeCheckbox:o,name:s,checked:u,defaultChecked:l,required:m,disabled:c,value:h,onCheckedChange:d,form:y,...g}=a;return B.jsx(x0,{__scopeCheckbox:o,checked:u,defaultChecked:l,disabled:c,required:m,onCheckedChange:d,name:s,form:y,value:h,internal_do_not_use_render:({isFormControl:f})=>B.jsxs(B.Fragment,{children:[B.jsx(vb,{...g,ref:r,__scopeCheckbox:o}),f&&B.jsx(zb,{__scopeCheckbox:o})]})})});Ku.displayName=dl;var kb="CheckboxIndicator",wb=S.forwardRef((a,r)=>{const{__scopeCheckbox:o,forceMount:s,...u}=a,l=Gu(kb,o);return B.jsx(Po,{present:s||jn(l.checked)||l.checked===!0,children:B.jsx(Fi.span,{"data-state":qb(l.checked),"data-disabled":l.disabled?"":void 0,...u,ref:r,style:{pointerEvents:"none",...a.style}})})});wb.displayName=kb;var xb="CheckboxBubbleInput",zb=S.forwardRef(({__scopeCheckbox:a,...r},o)=>{const{control:s,hasConsumerStoppedPropagationRef:u,checked:l,defaultChecked:m,required:c,disabled:h,name:d,value:y,form:g,bubbleInput:f,setBubbleInput:z}=Gu(xb,a),k=fa(o,z),j=f0(l),v=v0(s);S.useEffect(()=>{const C=f;if(!C)return;const w=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(w,"checked").set,D=!u.current;if(j!==l&&x){const R=new Event("click",{bubbles:D});C.indeterminate=jn(l),x.call(C,jn(l)?!1:l),C.dispatchEvent(R)}},[f,j,l,u]);const A=S.useRef(jn(l)?!1:l);return B.jsx(Fi.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??A.current,required:c,disabled:h,name:d,value:y,form:g,...r,tabIndex:-1,ref:k,style:{...r.style,...v,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});zb.displayName=xb;function z0(a){return typeof a=="function"}function jn(a){return a==="indeterminate"}function qb(a){return jn(a)?"indeterminate":a?"checked":"unchecked"}const jb=S.forwardRef(({className:a,...r},o)=>B.jsx(Ku,{ref:o,className:$e("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",a),...r,children:B.jsx(wb,{className:$e("flex items-center justify-center text-current"),children:B.jsx(yk,{className:"h-4 w-4"})})}));jb.displayName=Ku.displayName;function q0({open:a,contacts:r,undecryptedCount:o,onClose:s,onSelectConversation:u,onCreateContact:l,onCreateChannel:m,onCreateHashtagChannel:c}){const[h,d]=S.useState("existing"),[y,g]=S.useState(""),[f,z]=S.useState(""),[k,j]=S.useState(!1),[v,A]=S.useState(""),[C,w]=S.useState(!1),_=S.useRef(null),x=async()=>{A(""),w(!0);try{if(h==="new-contact"){if(!y.trim()||!f.trim()){A("Name and public key are required");return}await l(y.trim(),f.trim(),k),u({type:"contact",id:f.trim(),name:y.trim()})}else if(h==="new-room"){if(!y.trim()||!f.trim()){A("Room name and key are required");return}await m(y.trim(),f.trim(),k)}else if(h==="hashtag"){const O=y.trim(),N=D(O);if(N){A(N);return}await c(`#${O}`,k)}s()}catch(O){A(O instanceof Error?O.message:"Failed to create")}finally{w(!1)}},D=O=>O?/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/.test(O)?null:"Use letters, numbers, and single dashes (no leading/trailing dashes)":"Channel name is required",R=async()=>{var T;A("");const O=y.trim(),N=D(O);if(N){A(N);return}w(!0);try{await c(`#${O}`,k),g(""),(T=_.current)==null||T.focus()}catch(W){A(W instanceof Error?W.message:"Failed to create")}finally{w(!1)}},F=h!=="existing"&&o>0;return B.jsx(Qy,{open:a,onOpenChange:O=>!O&&s(),children:B.jsxs(Vu,{className:"sm:max-w-[500px]",children:[B.jsx(Uu,{children:B.jsx($u,{children:"New Conversation"})}),B.jsxs(m0,{value:h,onValueChange:O=>d(O),className:"w-full",children:[B.jsxs(gb,{className:"grid w-full grid-cols-4",children:[B.jsx(Dr,{value:"existing",children:"Existing"}),B.jsx(Dr,{value:"new-contact",children:"Contact"}),B.jsx(Dr,{value:"new-room",children:"Room"}),B.jsx(Dr,{value:"hashtag",children:"Hashtag"})]}),B.jsx(Fr,{value:"existing",className:"mt-4",children:B.jsx("div",{className:"max-h-[300px] overflow-y-auto rounded-md border",children:r.length===0?B.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"No contacts available"}):r.map(O=>B.jsx("div",{className:"cursor-pointer px-4 py-2 hover:bg-accent",onClick:()=>{u({type:"contact",id:O.public_key,name:Kn(O.name,O.public_key)}),s()},children:Kn(O.name,O.public_key)},O.public_key))})}),B.jsxs(Fr,{value:"new-contact",className:"mt-4 space-y-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"contact-name",children:"Name"}),B.jsx(zi,{id:"contact-name",value:y,onChange:O=>g(O.target.value),placeholder:"Contact name"})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"contact-key",children:"Public Key"}),B.jsx(zi,{id:"contact-key",value:f,onChange:O=>z(O.target.value),placeholder:"64-character hex public key"})]})]}),B.jsxs(Fr,{value:"new-room",className:"mt-4 space-y-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"room-name",children:"Room Name"}),B.jsx(zi,{id:"room-name",value:y,onChange:O=>g(O.target.value),placeholder:"Room name"})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"room-key",children:"Room Key"}),B.jsx(zi,{id:"room-key",value:f,onChange:O=>z(O.target.value),placeholder:"Pre-shared key (hex)"})]})]}),B.jsx(Fr,{value:"hashtag",className:"mt-4",children:B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"hashtag-name",children:"Hashtag Channel"}),B.jsxs("div",{className:"flex items-center gap-1",children:[B.jsx("span",{className:"text-sm text-muted-foreground",children:"#"}),B.jsx(zi,{ref:_,id:"hashtag-name",value:y,onChange:O=>g(O.target.value),placeholder:"channel-name",className:"flex-1"})]})]})})]}),F&&B.jsxs("div",{className:"space-y-1",children:[B.jsxs("div",{className:"flex items-center justify-end space-x-2",children:[B.jsxs(xi,{htmlFor:"try-historical",className:"text-sm text-muted-foreground cursor-pointer",children:["Try decrypting ",o.toLocaleString()," stored packet",o!==1?"s":""]}),B.jsx(jb,{id:"try-historical",checked:k,onCheckedChange:O=>j(O===!0)})]}),k&&B.jsx("p",{className:"text-xs text-muted-foreground text-right",children:"Messages will stream in as they decrypt in the background"})]}),v&&B.jsx("div",{className:"text-sm text-destructive",children:v}),B.jsxs(Wu,{children:[B.jsx(La,{variant:"outline",onClick:s,children:"Cancel"}),h==="hashtag"&&B.jsx(La,{variant:"secondary",onClick:R,disabled:C,children:C?"Creating...":"Create & Add Another"}),h!=="existing"&&B.jsx(La,{onClick:x,disabled:C,children:C?"Creating...":"Create"})]})]})})}var j0=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],A0=j0.reduce((a,r)=>{const o=Mu(`Primitive.${r}`),s=S.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?o:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${r}`,{...a,[r]:s}},{}),C0="Separator",wh="horizontal",E0=["horizontal","vertical"],Ab=S.forwardRef((a,r)=>{const{decorative:o,orientation:s=wh,...u}=a,l=S0(s)?s:wh,c=o?{role:"none"}:{"aria-orientation":l==="vertical"?l:void 0,role:"separator"};return B.jsx(A0.div,{"data-orientation":l,...c,...u,ref:r})});Ab.displayName=C0;function S0(a){return E0.includes(a)}var Cb=Ab;const st=S.forwardRef(({className:a,orientation:r="horizontal",decorative:o=!0,...s},u)=>B.jsx(Cb,{ref:u,decorative:o,orientation:r,className:$e("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",a),...s}));st.displayName=Cb.displayName;const B0=al("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",warning:"border-yellow-500/50 bg-yellow-500/10 text-yellow-200 [&>svg]:text-yellow-500"}},defaultVariants:{variant:"default"}}),Eb=S.forwardRef(({className:a,variant:r,...o},s)=>B.jsx("div",{ref:s,role:"alert",className:$e(B0({variant:r}),a),...o}));Eb.displayName="Alert";const _0=S.forwardRef(({className:a,...r},o)=>B.jsx("h5",{ref:o,className:$e("mb-1 font-medium leading-none tracking-tight",a),...r}));_0.displayName="AlertTitle";const Sb=S.forwardRef(({className:a,...r},o)=>B.jsx("div",{ref:o,className:$e("text-sm [&_p]:leading-relaxed",a),...r}));Sb.displayName="AlertDescription";function D0({open:a,config:r,appSettings:o,onClose:s,onSave:u,onSaveAppSettings:l,onSetPrivateKey:m,onReboot:c}){const[h,d]=S.useState(""),[y,g]=S.useState(""),[f,z]=S.useState(""),[k,j]=S.useState(""),[v,A]=S.useState(""),[C,w]=S.useState(""),[_,x]=S.useState(""),[D,R]=S.useState(""),[F,O]=S.useState(""),[N,T]=S.useState(""),[W,H]=S.useState(!1),[K,ae]=S.useState(!1),[X,ne]=S.useState("");S.useEffect(()=>{r&&(d(r.name),g(String(r.lat)),z(String(r.lon)),j(String(r.tx_power)),A(String(r.radio.freq)),w(String(r.radio.bw)),x(String(r.radio.sf)),R(String(r.radio.cr)))},[r]),S.useEffect(()=>{o&&T(String(o.max_radio_contacts))},[o]);const $=async()=>{ne(""),H(!0);try{const q={name:h,lat:parseFloat(y),lon:parseFloat(f),tx_power:parseInt(k,10),radio:{freq:parseFloat(v),bw:parseFloat(C),sf:parseInt(_,10),cr:parseInt(D,10)}};await u(q);const I=parseInt(N,10);!isNaN(I)&&I!==(o==null?void 0:o.max_radio_contacts)&&await l({max_radio_contacts:I}),s()}catch(q){ne(q instanceof Error?q.message:"Failed to save")}finally{H(!1)}},oe=async()=>{if(!F.trim()){ne("Private key is required");return}ne(""),H(!0);try{await m(F.trim()),O(""),s()}catch(q){ne(q instanceof Error?q.message:"Failed to set private key")}finally{H(!1)}},ee=async()=>{if(confirm("Are you sure you want to reboot the radio? The connection will drop temporarily.")){ne(""),ae(!0);try{await c(),s()}catch(q){ne(q instanceof Error?q.message:"Failed to reboot radio")}finally{ae(!1)}}};return B.jsx(Qy,{open:a,onOpenChange:q=>!q&&s(),children:B.jsxs(Vu,{className:"sm:max-w-[500px] max-h-[90vh] overflow-y-auto",children:[B.jsx(Uu,{children:B.jsx($u,{children:"Radio Configuration"})}),r?B.jsxs("div",{className:"space-y-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"public-key",children:"Public Key"}),B.jsx(zi,{id:"public-key",value:r.public_key,disabled:!0})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"name",children:"Name"}),B.jsx(zi,{id:"name",value:h,onChange:q=>d(q.target.value)})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"lat",children:"Latitude"}),B.jsx(zi,{id:"lat",type:"number",step:"any",value:y,onChange:q=>g(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"lon",children:"Longitude"}),B.jsx(zi,{id:"lon",type:"number",step:"any",value:f,onChange:q=>z(q.target.value)})]})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"freq",children:"Frequency (MHz)"}),B.jsx(zi,{id:"freq",type:"number",step:"any",value:v,onChange:q=>A(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"bw",children:"Bandwidth (kHz)"}),B.jsx(zi,{id:"bw",type:"number",step:"any",value:C,onChange:q=>w(q.target.value)})]})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"sf",children:"Spreading Factor"}),B.jsx(zi,{id:"sf",type:"number",min:"7",max:"12",value:_,onChange:q=>x(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"cr",children:"Coding Rate"}),B.jsx(zi,{id:"cr",type:"number",min:"1",max:"4",value:D,onChange:q=>R(q.target.value)})]})]}),B.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"tx-power",children:"TX Power (dBm)"}),B.jsx(zi,{id:"tx-power",type:"number",value:k,onChange:q=>j(q.target.value)})]}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"max-tx",children:"Max TX Power"}),B.jsx(zi,{id:"max-tx",type:"number",value:r.max_tx_power,disabled:!0})]})]}),B.jsx(st,{className:"my-4"}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"max-contacts",children:"Max Contacts on Radio"}),B.jsx(zi,{id:"max-contacts",type:"number",min:"1",max:"1000",value:N,onChange:q=>T(q.target.value)}),B.jsx("p",{className:"text-xs text-muted-foreground",children:"Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)"})]}),B.jsx(st,{className:"my-4"}),B.jsxs("div",{className:"space-y-2",children:[B.jsx(xi,{htmlFor:"private-key",children:"Set Private Key (write-only)"}),B.jsxs("div",{className:"flex gap-2",children:[B.jsx(zi,{id:"private-key",type:"password",value:F,onChange:q=>O(q.target.value),placeholder:"64-character hex private key",className:"flex-1"}),B.jsx(La,{onClick:oe,disabled:W||!F.trim(),children:"Set"})]})]}),B.jsx(st,{className:"my-4"}),B.jsxs("div",{className:"space-y-3",children:[B.jsx(xi,{children:"Reboot Radio"}),B.jsx(Eb,{variant:"warning",children:B.jsx(Sb,{children:"Some configuration changes (like name) require a radio reboot to take effect. The connection will temporarily drop and automatically reconnect."})}),B.jsx(La,{variant:"outline",onClick:ee,disabled:K||W,className:"border-yellow-500/50 text-yellow-200 hover:bg-yellow-500/10",children:K?"Rebooting...":"Reboot Radio"})]}),X&&B.jsx("div",{className:"text-sm text-destructive",children:X})]}):B.jsx("div",{className:"py-8 text-center text-muted-foreground",children:"Loading configuration..."}),B.jsxs(Wu,{children:[B.jsx(La,{variant:"outline",onClick:s,children:"Cancel"}),B.jsx(La,{onClick:$,disabled:W||!r,children:W?"Saving...":"Save Config"})]})]})})}function F0(a){return new Date(a*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function xh(a){return a.split("_").map(r=>r.charAt(0)+r.slice(1).toLowerCase()).join(" ")}function R0(a){if(!a.decrypted||!a.decrypted_info)return xh(a.payload_type);const r=a.decrypted_info;return a.payload_type==="GROUP_TEXT"&&r.channel_name?`GroupText to ${r.channel_name}`:a.payload_type==="TEXT_MESSAGE"&&r.sender?`TextMessage from ${r.sender}`:xh(a.payload_type)}function T0(a){const r=[];return a.snr!==null&&a.snr!==void 0&&r.push(`SNR: ${a.snr.toFixed(1)} dB`),a.rssi!==null&&a.rssi!==void 0&&r.push(`RSSI: ${a.rssi} dBm`),r.join(" | ")}function P0({packets:a}){const r=S.useRef(null);if(S.useEffect(()=>{r.current&&(r.current.scrollTop=r.current.scrollHeight)},[a]),a.length===0)return B.jsx("div",{className:"h-full overflow-y-auto p-5 text-center text-muted-foreground",children:"No packets received yet. Packets will appear here in real-time."});const o=[...a].sort((s,u)=>s.timestamp-u.timestamp);return B.jsx("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-3",ref:r,children:o.map(s=>B.jsxs("div",{className:"py-2 px-3 bg-muted rounded",children:[B.jsxs("div",{className:s.decrypted?"text-primary":"text-destructive",children:[!s.decrypted&&B.jsx("span",{className:"mr-1",children:"🔒"}),R0(s)," • ",F0(s.timestamp)]}),(s.snr!==null||s.rssi!==null)&&B.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:T0(s)}),B.jsx("div",{className:"font-mono text-[11px] break-all text-muted-foreground/70 mt-1",children:s.data.toUpperCase()})]},s.id))})}var Xa={},vr={},Ni={},zh;function ua(){if(zh)return Ni;zh=1,Object.defineProperty(Ni,"__esModule",{value:!0}),Ni.RequestType=Ni.AdvertFlags=Ni.DeviceRole=Ni.PayloadVersion=Ni.ControlSubType=Ni.PayloadType=Ni.RouteType=void 0;var a;(function(c){c[c.TransportFlood=0]="TransportFlood",c[c.Flood=1]="Flood",c[c.Direct=2]="Direct",c[c.TransportDirect=3]="TransportDirect"})(a||(Ni.RouteType=a={}));var r;(function(c){c[c.Request=0]="Request",c[c.Response=1]="Response",c[c.TextMessage=2]="TextMessage",c[c.Ack=3]="Ack",c[c.Advert=4]="Advert",c[c.GroupText=5]="GroupText",c[c.GroupData=6]="GroupData",c[c.AnonRequest=7]="AnonRequest",c[c.Path=8]="Path",c[c.Trace=9]="Trace",c[c.Multipart=10]="Multipart",c[c.Control=11]="Control",c[c.RawCustom=15]="RawCustom"})(r||(Ni.PayloadType=r={}));var o;(function(c){c[c.NodeDiscoverReq=128]="NodeDiscoverReq",c[c.NodeDiscoverResp=144]="NodeDiscoverResp"})(o||(Ni.ControlSubType=o={}));var s;(function(c){c[c.Version1=0]="Version1",c[c.Version2=1]="Version2",c[c.Version3=2]="Version3",c[c.Version4=3]="Version4"})(s||(Ni.PayloadVersion=s={}));var u;(function(c){c[c.Unknown=0]="Unknown",c[c.ChatNode=1]="ChatNode",c[c.Repeater=2]="Repeater",c[c.RoomServer=3]="RoomServer",c[c.Sensor=4]="Sensor"})(u||(Ni.DeviceRole=u={}));var l;(function(c){c[c.HasLocation=16]="HasLocation",c[c.HasFeature1=32]="HasFeature1",c[c.HasFeature2=64]="HasFeature2",c[c.HasName=128]="HasName"})(l||(Ni.AdvertFlags=l={}));var m;return(function(c){c[c.GetStats=1]="GetStats",c[c.Keepalive=2]="Keepalive",c[c.GetTelemetryData=3]="GetTelemetryData",c[c.GetMinMaxAvgData=4]="GetMinMaxAvgData",c[c.GetAccessList=5]="GetAccessList"})(m||(Ni.RequestType=m={})),Ni}var Vn={},qh;function Ii(){if(qh)return Vn;qh=1,Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.byteToHex=a,Vn.bytesToHex=r,Vn.numberToHex=o,Vn.hexToBytes=s;function a(u){return u.toString(16).padStart(2,"0").toUpperCase()}function r(u){return Array.from(u).map(a).join("")}function o(u,l=8){return(u>>>0).toString(16).padStart(l,"0").toUpperCase()}function s(u){const l=u.replace(/\s/g,"").toUpperCase();if(!/^[0-9A-F]*$/.test(l))throw new Error("Invalid hex string: invalid characters at position 0");if(l.length%2!==0)throw new Error("Invalid hex string: odd length");const m=new Uint8Array(l.length/2);for(let c=0;c>>2]>>>24-R%4*8&255;w[x+R>>>2]|=F<<24-(x+R)%4*8}else for(var O=0;O>>2]=_[O>>>2];return this.sigBytes+=D,this},clamp:function(){var C=this.words,w=this.sigBytes;C[w>>>2]&=4294967295<<32-w%4*8,C.length=s.ceil(w/4)},clone:function(){var C=y.clone.call(this);return C.words=this.words.slice(0),C},random:function(C){for(var w=[],_=0;_>>2]>>>24-D%4*8&255;x.push((R>>>4).toString(16)),x.push((R&15).toString(16))}return x.join("")},parse:function(C){for(var w=C.length,_=[],x=0;x>>3]|=parseInt(C.substr(x,2),16)<<24-x%8*4;return new g.init(_,w/2)}},k=f.Latin1={stringify:function(C){for(var w=C.words,_=C.sigBytes,x=[],D=0;D<_;D++){var R=w[D>>>2]>>>24-D%4*8&255;x.push(String.fromCharCode(R))}return x.join("")},parse:function(C){for(var w=C.length,_=[],x=0;x>>2]|=(C.charCodeAt(x)&255)<<24-x%4*8;return new g.init(_,w)}},j=f.Utf8={stringify:function(C){try{return decodeURIComponent(escape(k.stringify(C)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(C){return k.parse(unescape(encodeURIComponent(C)))}},v=d.BufferedBlockAlgorithm=y.extend({reset:function(){this._data=new g.init,this._nDataBytes=0},_append:function(C){typeof C=="string"&&(C=j.parse(C)),this._data.concat(C),this._nDataBytes+=C.sigBytes},_process:function(C){var w,_=this._data,x=_.words,D=_.sigBytes,R=this.blockSize,F=R*4,O=D/F;C?O=s.ceil(O):O=s.max((O|0)-this._minBufferSize,0);var N=O*R,T=s.min(N*4,D);if(N){for(var W=0;W>>2]|=h[g]<<24-g%4*8;m.call(this,y,d)}else m.apply(this,arguments)};c.prototype=l}})(),o.lib.WordArray})})(ut)),ut.exports}var dt={exports:{}},V0=dt.exports,Sh;function U0(){return Sh||(Sh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(V0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.enc;m.Utf16=m.Utf16BE={stringify:function(h){for(var d=h.words,y=h.sigBytes,g=[],f=0;f>>2]>>>16-f%4*8&65535;g.push(String.fromCharCode(z))}return g.join("")},parse:function(h){for(var d=h.length,y=[],g=0;g>>1]|=h.charCodeAt(g)<<16-g%2*16;return l.create(y,d*2)}},m.Utf16LE={stringify:function(h){for(var d=h.words,y=h.sigBytes,g=[],f=0;f>>2]>>>16-f%4*8&65535);g.push(String.fromCharCode(z))}return g.join("")},parse:function(h){for(var d=h.length,y=[],g=0;g>>1]|=c(h.charCodeAt(g)<<16-g%2*16);return l.create(y,d*2)}};function c(h){return h<<8&4278255360|h>>>8&16711935}})(),o.enc.Utf16})})(dt)),dt.exports}var pt={exports:{}},W0=pt.exports,Bh;function Xn(){return Bh||(Bh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(W0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.enc;m.Base64={stringify:function(h){var d=h.words,y=h.sigBytes,g=this._map;h.clamp();for(var f=[],z=0;z>>2]>>>24-z%4*8&255,j=d[z+1>>>2]>>>24-(z+1)%4*8&255,v=d[z+2>>>2]>>>24-(z+2)%4*8&255,A=k<<16|j<<8|v,C=0;C<4&&z+C*.75>>6*(3-C)&63));var w=g.charAt(64);if(w)for(;f.length%4;)f.push(w);return f.join("")},parse:function(h){var d=h.length,y=this._map,g=this._reverseMap;if(!g){g=this._reverseMap=[];for(var f=0;f>>6-z%4*2,v=k|j;g[f>>>2]|=v<<24-f%4*8,f++}return l.create(g,f)}})(),o.enc.Base64})})(pt)),pt.exports}var mt={exports:{}},$0=mt.exports,_h;function Q0(){return _h||(_h=1,(function(a,r){(function(o,s){a.exports=s(Ie())})($0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.enc;m.Base64url={stringify:function(h,d){d===void 0&&(d=!0);var y=h.words,g=h.sigBytes,f=d?this._safe_map:this._map;h.clamp();for(var z=[],k=0;k>>2]>>>24-k%4*8&255,v=y[k+1>>>2]>>>24-(k+1)%4*8&255,A=y[k+2>>>2]>>>24-(k+2)%4*8&255,C=j<<16|v<<8|A,w=0;w<4&&k+w*.75>>6*(3-w)&63));var _=f.charAt(64);if(_)for(;z.length%4;)z.push(_);return z.join("")},parse:function(h,d){d===void 0&&(d=!0);var y=h.length,g=d?this._safe_map:this._map,f=this._reverseMap;if(!f){f=this._reverseMap=[];for(var z=0;z>>6-z%4*2,v=k|j;g[f>>>2]|=v<<24-f%4*8,f++}return l.create(g,f)}})(),o.enc.Base64url})})(mt)),mt.exports}var ht={exports:{}},G0=ht.exports,Dh;function Jn(){return Dh||(Dh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(G0,function(o){return(function(s){var u=o,l=u.lib,m=l.WordArray,c=l.Hasher,h=u.algo,d=[];(function(){for(var j=0;j<64;j++)d[j]=s.abs(s.sin(j+1))*4294967296|0})();var y=h.MD5=c.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(j,v){for(var A=0;A<16;A++){var C=v+A,w=j[C];j[C]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360}var _=this._hash.words,x=j[v+0],D=j[v+1],R=j[v+2],F=j[v+3],O=j[v+4],N=j[v+5],T=j[v+6],W=j[v+7],H=j[v+8],K=j[v+9],ae=j[v+10],X=j[v+11],ne=j[v+12],$=j[v+13],oe=j[v+14],ee=j[v+15],q=_[0],I=_[1],L=_[2],Q=_[3];q=g(q,I,L,Q,x,7,d[0]),Q=g(Q,q,I,L,D,12,d[1]),L=g(L,Q,q,I,R,17,d[2]),I=g(I,L,Q,q,F,22,d[3]),q=g(q,I,L,Q,O,7,d[4]),Q=g(Q,q,I,L,N,12,d[5]),L=g(L,Q,q,I,T,17,d[6]),I=g(I,L,Q,q,W,22,d[7]),q=g(q,I,L,Q,H,7,d[8]),Q=g(Q,q,I,L,K,12,d[9]),L=g(L,Q,q,I,ae,17,d[10]),I=g(I,L,Q,q,X,22,d[11]),q=g(q,I,L,Q,ne,7,d[12]),Q=g(Q,q,I,L,$,12,d[13]),L=g(L,Q,q,I,oe,17,d[14]),I=g(I,L,Q,q,ee,22,d[15]),q=f(q,I,L,Q,D,5,d[16]),Q=f(Q,q,I,L,T,9,d[17]),L=f(L,Q,q,I,X,14,d[18]),I=f(I,L,Q,q,x,20,d[19]),q=f(q,I,L,Q,N,5,d[20]),Q=f(Q,q,I,L,ae,9,d[21]),L=f(L,Q,q,I,ee,14,d[22]),I=f(I,L,Q,q,O,20,d[23]),q=f(q,I,L,Q,K,5,d[24]),Q=f(Q,q,I,L,oe,9,d[25]),L=f(L,Q,q,I,F,14,d[26]),I=f(I,L,Q,q,H,20,d[27]),q=f(q,I,L,Q,$,5,d[28]),Q=f(Q,q,I,L,R,9,d[29]),L=f(L,Q,q,I,W,14,d[30]),I=f(I,L,Q,q,ne,20,d[31]),q=z(q,I,L,Q,N,4,d[32]),Q=z(Q,q,I,L,H,11,d[33]),L=z(L,Q,q,I,X,16,d[34]),I=z(I,L,Q,q,oe,23,d[35]),q=z(q,I,L,Q,D,4,d[36]),Q=z(Q,q,I,L,O,11,d[37]),L=z(L,Q,q,I,W,16,d[38]),I=z(I,L,Q,q,ae,23,d[39]),q=z(q,I,L,Q,$,4,d[40]),Q=z(Q,q,I,L,x,11,d[41]),L=z(L,Q,q,I,F,16,d[42]),I=z(I,L,Q,q,T,23,d[43]),q=z(q,I,L,Q,K,4,d[44]),Q=z(Q,q,I,L,ne,11,d[45]),L=z(L,Q,q,I,ee,16,d[46]),I=z(I,L,Q,q,R,23,d[47]),q=k(q,I,L,Q,x,6,d[48]),Q=k(Q,q,I,L,W,10,d[49]),L=k(L,Q,q,I,oe,15,d[50]),I=k(I,L,Q,q,N,21,d[51]),q=k(q,I,L,Q,ne,6,d[52]),Q=k(Q,q,I,L,F,10,d[53]),L=k(L,Q,q,I,ae,15,d[54]),I=k(I,L,Q,q,D,21,d[55]),q=k(q,I,L,Q,H,6,d[56]),Q=k(Q,q,I,L,ee,10,d[57]),L=k(L,Q,q,I,T,15,d[58]),I=k(I,L,Q,q,$,21,d[59]),q=k(q,I,L,Q,O,6,d[60]),Q=k(Q,q,I,L,X,10,d[61]),L=k(L,Q,q,I,R,15,d[62]),I=k(I,L,Q,q,K,21,d[63]),_[0]=_[0]+q|0,_[1]=_[1]+I|0,_[2]=_[2]+L|0,_[3]=_[3]+Q|0},_doFinalize:function(){var j=this._data,v=j.words,A=this._nDataBytes*8,C=j.sigBytes*8;v[C>>>5]|=128<<24-C%32;var w=s.floor(A/4294967296),_=A;v[(C+64>>>9<<4)+15]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,v[(C+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,j.sigBytes=(v.length+1)*4,this._process();for(var x=this._hash,D=x.words,R=0;R<4;R++){var F=D[R];D[R]=(F<<8|F>>>24)&16711935|(F<<24|F>>>8)&4278255360}return x},clone:function(){var j=c.clone.call(this);return j._hash=this._hash.clone(),j}});function g(j,v,A,C,w,_,x){var D=j+(v&A|~v&C)+w+x;return(D<<_|D>>>32-_)+v}function f(j,v,A,C,w,_,x){var D=j+(v&C|A&~C)+w+x;return(D<<_|D>>>32-_)+v}function z(j,v,A,C,w,_,x){var D=j+(v^A^C)+w+x;return(D<<_|D>>>32-_)+v}function k(j,v,A,C,w,_,x){var D=j+(A^(v|~C))+w+x;return(D<<_|D>>>32-_)+v}u.MD5=c._createHelper(y),u.HmacMD5=c._createHmacHelper(y)})(Math),o.MD5})})(ht)),ht.exports}var gt={exports:{}},K0=gt.exports,Fh;function Bb(){return Fh||(Fh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(K0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=u.Hasher,c=s.algo,h=[],d=c.SHA1=m.extend({_doReset:function(){this._hash=new l.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(y,g){for(var f=this._hash.words,z=f[0],k=f[1],j=f[2],v=f[3],A=f[4],C=0;C<80;C++){if(C<16)h[C]=y[g+C]|0;else{var w=h[C-3]^h[C-8]^h[C-14]^h[C-16];h[C]=w<<1|w>>>31}var _=(z<<5|z>>>27)+A+h[C];C<20?_+=(k&j|~k&v)+1518500249:C<40?_+=(k^j^v)+1859775393:C<60?_+=(k&j|k&v|j&v)-1894007588:_+=(k^j^v)-899497514,A=v,v=j,j=k<<30|k>>>2,k=z,z=_}f[0]=f[0]+z|0,f[1]=f[1]+k|0,f[2]=f[2]+j|0,f[3]=f[3]+v|0,f[4]=f[4]+A|0},_doFinalize:function(){var y=this._data,g=y.words,f=this._nDataBytes*8,z=y.sigBytes*8;return g[z>>>5]|=128<<24-z%32,g[(z+64>>>9<<4)+14]=Math.floor(f/4294967296),g[(z+64>>>9<<4)+15]=f,y.sigBytes=g.length*4,this._process(),this._hash},clone:function(){var y=m.clone.call(this);return y._hash=this._hash.clone(),y}});s.SHA1=m._createHelper(d),s.HmacSHA1=m._createHmacHelper(d)})(),o.SHA1})})(gt)),gt.exports}var yt={exports:{}},Y0=yt.exports,Rh;function Vr(){return Rh||(Rh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(Y0,function(o){return(function(s){var u=o,l=u.lib,m=l.WordArray,c=l.Hasher,h=u.algo,d=[],y=[];(function(){function z(A){for(var C=s.sqrt(A),w=2;w<=C;w++)if(!(A%w))return!1;return!0}function k(A){return(A-(A|0))*4294967296|0}for(var j=2,v=0;v<64;)z(j)&&(v<8&&(d[v]=k(s.pow(j,1/2))),y[v]=k(s.pow(j,1/3)),v++),j++})();var g=[],f=h.SHA256=c.extend({_doReset:function(){this._hash=new m.init(d.slice(0))},_doProcessBlock:function(z,k){for(var j=this._hash.words,v=j[0],A=j[1],C=j[2],w=j[3],_=j[4],x=j[5],D=j[6],R=j[7],F=0;F<64;F++){if(F<16)g[F]=z[k+F]|0;else{var O=g[F-15],N=(O<<25|O>>>7)^(O<<14|O>>>18)^O>>>3,T=g[F-2],W=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;g[F]=N+g[F-7]+W+g[F-16]}var H=_&x^~_&D,K=v&A^v&C^A&C,ae=(v<<30|v>>>2)^(v<<19|v>>>13)^(v<<10|v>>>22),X=(_<<26|_>>>6)^(_<<21|_>>>11)^(_<<7|_>>>25),ne=R+X+H+y[F]+g[F],$=ae+K;R=D,D=x,x=_,_=w+ne|0,w=C,C=A,A=v,v=ne+$|0}j[0]=j[0]+v|0,j[1]=j[1]+A|0,j[2]=j[2]+C|0,j[3]=j[3]+w|0,j[4]=j[4]+_|0,j[5]=j[5]+x|0,j[6]=j[6]+D|0,j[7]=j[7]+R|0},_doFinalize:function(){var z=this._data,k=z.words,j=this._nDataBytes*8,v=z.sigBytes*8;return k[v>>>5]|=128<<24-v%32,k[(v+64>>>9<<4)+14]=s.floor(j/4294967296),k[(v+64>>>9<<4)+15]=j,z.sigBytes=k.length*4,this._process(),this._hash},clone:function(){var z=c.clone.call(this);return z._hash=this._hash.clone(),z}});u.SHA256=c._createHelper(f),u.HmacSHA256=c._createHmacHelper(f)})(Math),o.SHA256})})(yt)),yt.exports}var bt={exports:{}},Z0=bt.exports,Th;function X0(){return Th||(Th=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Vr())})(Z0,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=s.algo,c=m.SHA256,h=m.SHA224=c.extend({_doReset:function(){this._hash=new l.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var d=c._doFinalize.call(this);return d.sigBytes-=4,d}});s.SHA224=c._createHelper(h),s.HmacSHA224=c._createHmacHelper(h)})(),o.SHA224})})(bt)),bt.exports}var ft={exports:{}},J0=ft.exports,Ph;function _b(){return Ph||(Ph=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),pl())})(J0,function(o){return(function(){var s=o,u=s.lib,l=u.Hasher,m=s.x64,c=m.Word,h=m.WordArray,d=s.algo;function y(){return c.create.apply(c,arguments)}var g=[y(1116352408,3609767458),y(1899447441,602891725),y(3049323471,3964484399),y(3921009573,2173295548),y(961987163,4081628472),y(1508970993,3053834265),y(2453635748,2937671579),y(2870763221,3664609560),y(3624381080,2734883394),y(310598401,1164996542),y(607225278,1323610764),y(1426881987,3590304994),y(1925078388,4068182383),y(2162078206,991336113),y(2614888103,633803317),y(3248222580,3479774868),y(3835390401,2666613458),y(4022224774,944711139),y(264347078,2341262773),y(604807628,2007800933),y(770255983,1495990901),y(1249150122,1856431235),y(1555081692,3175218132),y(1996064986,2198950837),y(2554220882,3999719339),y(2821834349,766784016),y(2952996808,2566594879),y(3210313671,3203337956),y(3336571891,1034457026),y(3584528711,2466948901),y(113926993,3758326383),y(338241895,168717936),y(666307205,1188179964),y(773529912,1546045734),y(1294757372,1522805485),y(1396182291,2643833823),y(1695183700,2343527390),y(1986661051,1014477480),y(2177026350,1206759142),y(2456956037,344077627),y(2730485921,1290863460),y(2820302411,3158454273),y(3259730800,3505952657),y(3345764771,106217008),y(3516065817,3606008344),y(3600352804,1432725776),y(4094571909,1467031594),y(275423344,851169720),y(430227734,3100823752),y(506948616,1363258195),y(659060556,3750685593),y(883997877,3785050280),y(958139571,3318307427),y(1322822218,3812723403),y(1537002063,2003034995),y(1747873779,3602036899),y(1955562222,1575990012),y(2024104815,1125592928),y(2227730452,2716904306),y(2361852424,442776044),y(2428436474,593698344),y(2756734187,3733110249),y(3204031479,2999351573),y(3329325298,3815920427),y(3391569614,3928383900),y(3515267271,566280711),y(3940187606,3454069534),y(4118630271,4000239992),y(116418474,1914138554),y(174292421,2731055270),y(289380356,3203993006),y(460393269,320620315),y(685471733,587496836),y(852142971,1086792851),y(1017036298,365543100),y(1126000580,2618297676),y(1288033470,3409855158),y(1501505948,4234509866),y(1607167915,987167468),y(1816402316,1246189591)],f=[];(function(){for(var k=0;k<80;k++)f[k]=y()})();var z=d.SHA512=l.extend({_doReset:function(){this._hash=new h.init([new c.init(1779033703,4089235720),new c.init(3144134277,2227873595),new c.init(1013904242,4271175723),new c.init(2773480762,1595750129),new c.init(1359893119,2917565137),new c.init(2600822924,725511199),new c.init(528734635,4215389547),new c.init(1541459225,327033209)])},_doProcessBlock:function(k,j){for(var v=this._hash.words,A=v[0],C=v[1],w=v[2],_=v[3],x=v[4],D=v[5],R=v[6],F=v[7],O=A.high,N=A.low,T=C.high,W=C.low,H=w.high,K=w.low,ae=_.high,X=_.low,ne=x.high,$=x.low,oe=D.high,ee=D.low,q=R.high,I=R.low,L=F.high,Q=F.low,de=O,ge=N,be=T,se=W,ce=H,Ae=K,Fe=ae,He=X,ai=ne,Qe=$,Oe=oe,Me=ee,Xe=q,Ve=I,Ge=L,yi=Q,si=0;si<80;si++){var Le,mi,Gi=f[si];if(si<16)mi=Gi.high=k[j+si*2]|0,Le=Gi.low=k[j+si*2+1]|0;else{var va=f[si-15],qi=va.high,Mi=va.low,Ki=(qi>>>1|Mi<<31)^(qi>>>8|Mi<<24)^qi>>>7,oa=(Mi>>>1|qi<<31)^(Mi>>>8|qi<<24)^(Mi>>>7|qi<<25),ji=f[si-2],ui=ji.high,ki=ji.low,_a=(ui>>>19|ki<<13)^(ui<<3|ki>>>29)^ui>>>6,da=(ki>>>19|ui<<13)^(ki<<3|ui>>>29)^(ki>>>6|ui<<26),ie=f[si-7],pe=ie.high,V=ie.low,J=f[si-16],re=J.high,ye=J.low;Le=oa+V,mi=Ki+pe+(Le>>>0>>0?1:0),Le=Le+da,mi=mi+_a+(Le>>>0>>0?1:0),Le=Le+ye,mi=mi+re+(Le>>>0>>0?1:0),Gi.high=mi,Gi.low=Le}var fe=ai&Oe^~ai&Xe,_e=Qe&Me^~Qe&Ve,ni=de&be^de&ce^be&ce,Ce=ge&se^ge&Ae^se&Ae,Te=(de>>>28|ge<<4)^(de<<30|ge>>>2)^(de<<25|ge>>>7),Ue=(ge>>>28|de<<4)^(ge<<30|de>>>2)^(ge<<25|de>>>7),Ke=(ai>>>14|Qe<<18)^(ai>>>18|Qe<<14)^(ai<<23|Qe>>>9),Oi=(Qe>>>14|ai<<18)^(Qe>>>18|ai<<14)^(Qe<<23|ai>>>9),Re=g[si],Ye=Re.high,bi=Re.low,Je=yi+Oi,hi=Ge+Ke+(Je>>>0>>0?1:0),Je=Je+_e,hi=hi+fe+(Je>>>0<_e>>>0?1:0),Je=Je+bi,hi=hi+Ye+(Je>>>0>>0?1:0),Je=Je+Le,hi=hi+mi+(Je>>>0>>0?1:0),ka=Ue+Ce,Yi=Te+ni+(ka>>>0>>0?1:0);Ge=Xe,yi=Ve,Xe=Oe,Ve=Me,Oe=ai,Me=Qe,Qe=He+Je|0,ai=Fe+hi+(Qe>>>0>>0?1:0)|0,Fe=ce,He=Ae,ce=be,Ae=se,be=de,se=ge,ge=Je+ka|0,de=hi+Yi+(ge>>>0>>0?1:0)|0}N=A.low=N+ge,A.high=O+de+(N>>>0>>0?1:0),W=C.low=W+se,C.high=T+be+(W>>>0>>0?1:0),K=w.low=K+Ae,w.high=H+ce+(K>>>0>>0?1:0),X=_.low=X+He,_.high=ae+Fe+(X>>>0>>0?1:0),$=x.low=$+Qe,x.high=ne+ai+($>>>0>>0?1:0),ee=D.low=ee+Me,D.high=oe+Oe+(ee>>>0>>0?1:0),I=R.low=I+Ve,R.high=q+Xe+(I>>>0>>0?1:0),Q=F.low=Q+yi,F.high=L+Ge+(Q>>>0>>0?1:0)},_doFinalize:function(){var k=this._data,j=k.words,v=this._nDataBytes*8,A=k.sigBytes*8;j[A>>>5]|=128<<24-A%32,j[(A+128>>>10<<5)+30]=Math.floor(v/4294967296),j[(A+128>>>10<<5)+31]=v,k.sigBytes=j.length*4,this._process();var C=this._hash.toX32();return C},clone:function(){var k=l.clone.call(this);return k._hash=this._hash.clone(),k},blockSize:1024/32});s.SHA512=l._createHelper(z),s.HmacSHA512=l._createHmacHelper(z)})(),o.SHA512})})(ft)),ft.exports}var vt={exports:{}},eq=vt.exports,Nh;function iq(){return Nh||(Nh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),pl(),_b())})(eq,function(o){return(function(){var s=o,u=s.x64,l=u.Word,m=u.WordArray,c=s.algo,h=c.SHA512,d=c.SHA384=h.extend({_doReset:function(){this._hash=new m.init([new l.init(3418070365,3238371032),new l.init(1654270250,914150663),new l.init(2438529370,812702999),new l.init(355462360,4144912697),new l.init(1731405415,4290775857),new l.init(2394180231,1750603025),new l.init(3675008525,1694076839),new l.init(1203062813,3204075428)])},_doFinalize:function(){var y=h._doFinalize.call(this);return y.sigBytes-=16,y}});s.SHA384=h._createHelper(d),s.HmacSHA384=h._createHmacHelper(d)})(),o.SHA384})})(vt)),vt.exports}var kt={exports:{}},aq=kt.exports,Ih;function nq(){return Ih||(Ih=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),pl())})(aq,function(o){return(function(s){var u=o,l=u.lib,m=l.WordArray,c=l.Hasher,h=u.x64,d=h.Word,y=u.algo,g=[],f=[],z=[];(function(){for(var v=1,A=0,C=0;C<24;C++){g[v+5*A]=(C+1)*(C+2)/2%64;var w=A%5,_=(2*v+3*A)%5;v=w,A=_}for(var v=0;v<5;v++)for(var A=0;A<5;A++)f[v+5*A]=A+(2*v+3*A)%5*5;for(var x=1,D=0;D<24;D++){for(var R=0,F=0,O=0;O<7;O++){if(x&1){var N=(1<>>24)&16711935|(x<<24|x>>>8)&4278255360,D=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360;var R=C[_];R.high^=D,R.low^=x}for(var F=0;F<24;F++){for(var O=0;O<5;O++){for(var N=0,T=0,W=0;W<5;W++){var R=C[O+5*W];N^=R.high,T^=R.low}var H=k[O];H.high=N,H.low=T}for(var O=0;O<5;O++)for(var K=k[(O+4)%5],ae=k[(O+1)%5],X=ae.high,ne=ae.low,N=K.high^(X<<1|ne>>>31),T=K.low^(ne<<1|X>>>31),W=0;W<5;W++){var R=C[O+5*W];R.high^=N,R.low^=T}for(var $=1;$<25;$++){var N,T,R=C[$],oe=R.high,ee=R.low,q=g[$];q<32?(N=oe<>>32-q,T=ee<>>32-q):(N=ee<>>64-q,T=oe<>>64-q);var I=k[f[$]];I.high=N,I.low=T}var L=k[0],Q=C[0];L.high=Q.high,L.low=Q.low;for(var O=0;O<5;O++)for(var W=0;W<5;W++){var $=O+5*W,R=C[$],de=k[$],ge=k[(O+1)%5+5*W],be=k[(O+2)%5+5*W];R.high=de.high^~ge.high&be.high,R.low=de.low^~ge.low&be.low}var R=C[0],se=z[F];R.high^=se.high,R.low^=se.low}},_doFinalize:function(){var v=this._data,A=v.words;this._nDataBytes*8;var C=v.sigBytes*8,w=this.blockSize*32;A[C>>>5]|=1<<24-C%32,A[(s.ceil((C+1)/w)*w>>>5)-1]|=128,v.sigBytes=A.length*4,this._process();for(var _=this._state,x=this.cfg.outputLength/8,D=x/8,R=[],F=0;F>>24)&16711935|(N<<24|N>>>8)&4278255360,T=(T<<8|T>>>24)&16711935|(T<<24|T>>>8)&4278255360,R.push(T),R.push(N)}return new m.init(R,x)},clone:function(){for(var v=c.clone.call(this),A=v._state=this._state.slice(0),C=0;C<25;C++)A[C]=A[C].clone();return v}});u.SHA3=c._createHelper(j),u.HmacSHA3=c._createHmacHelper(j)})(Math),o.SHA3})})(kt)),kt.exports}var wt={exports:{}},oq=wt.exports,Mh;function rq(){return Mh||(Mh=1,(function(a,r){(function(o,s){a.exports=s(Ie())})(oq,function(o){/** @preserve (c) 2012 by Cédric Mesnil. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -130,7 +130,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/${r.do * Counter block mode compatible with Dr Brian Gladman fileenc.c * derived from CryptoJS.mode.CTR * Jan Hruby jhruby.web@gmail.com - */return o.mode.CTRGladman=(function(){var s=o.lib.BlockCipherMode.extend();function u(c){if((c>>24&255)===255){var h=c>>16&255,d=c>>8&255,y=c&255;h===255?(h=0,d===255?(d=0,y===255?y=0:++y):++d):++h,c=0,c+=h<<16,c+=d<<8,c+=y}else c+=1<<24;return c}function l(c){return(c[0]=u(c[0]))===0&&(c[1]=u(c[1])),c}var m=s.Encryptor=s.extend({processBlock:function(c,h){var d=this._cipher,y=d.blockSize,g=this._iv,f=this._counter;g&&(f=this._counter=g.slice(0),this._iv=void 0),l(f);var z=f.slice(0);d.encryptBlock(z,0);for(var k=0;k>>2]|=c<<24-h%4*8,s.sigBytes+=c},unpad:function(s){var u=s.words[s.sigBytes-1>>>2]&255;s.sigBytes-=u}},o.pad.Ansix923})})(_t)),_t.exports}var Dt={exports:{}},zq=Dt.exports,Yh;function qq(){return Yh||(Yh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(zq,function(o){return o.pad.Iso10126={pad:function(s,u){var l=u*4,m=l-s.sigBytes%l;s.concat(o.lib.WordArray.random(m-1)).concat(o.lib.WordArray.create([m<<24],1))},unpad:function(s){var u=s.words[s.sigBytes-1>>>2]&255;s.sigBytes-=u}},o.pad.Iso10126})})(Dt)),Dt.exports}var Ft={exports:{}},jq=Ft.exports,Zh;function Aq(){return Zh||(Zh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(jq,function(o){return o.pad.Iso97971={pad:function(s,u){s.concat(o.lib.WordArray.create([2147483648],1)),o.pad.ZeroPadding.pad(s,u)},unpad:function(s){o.pad.ZeroPadding.unpad(s),s.sigBytes--}},o.pad.Iso97971})})(Ft)),Ft.exports}var Rt={exports:{}},Cq=Rt.exports,Xh;function Eq(){return Xh||(Xh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(Cq,function(o){return o.pad.ZeroPadding={pad:function(s,u){var l=u*4;s.clamp(),s.sigBytes+=l-(s.sigBytes%l||l)},unpad:function(s){for(var u=s.words,l=s.sigBytes-1,l=s.sigBytes-1;l>=0;l--)if(u[l>>>2]>>>24-l%4*8&255){s.sigBytes=l+1;break}}},o.pad.ZeroPadding})})(Rt)),Rt.exports}var Tt={exports:{}},Sq=Tt.exports,Jh;function Bq(){return Jh||(Jh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(Sq,function(o){return o.pad.NoPadding={pad:function(){},unpad:function(){}},o.pad.NoPadding})})(Tt)),Tt.exports}var Pt={exports:{}},_q=Pt.exports,eg;function Dq(){return eg||(eg=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(_q,function(o){return(function(s){var u=o,l=u.lib,m=l.CipherParams,c=u.enc,h=c.Hex,d=u.format;d.Hex={stringify:function(y){return y.ciphertext.toString(h)},parse:function(y){var g=h.parse(y);return m.create({ciphertext:g})}}})(),o.format.Hex})})(Pt)),Pt.exports}var Nt={exports:{}},Fq=Nt.exports,ig;function Rq(){return ig||(ig=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Fq,function(o){return(function(){var s=o,u=s.lib,l=u.BlockCipher,m=s.algo,c=[],h=[],d=[],y=[],g=[],f=[],z=[],k=[],j=[],v=[];(function(){for(var w=[],_=0;_<256;_++)_<128?w[_]=_<<1:w[_]=_<<1^283;for(var x=0,D=0,_=0;_<256;_++){var R=D^D<<1^D<<2^D<<3^D<<4;R=R>>>8^R&255^99,c[x]=R,h[R]=x;var F=w[x],O=w[F],N=w[O],T=w[R]*257^R*16843008;d[x]=T<<24|T>>>8,y[x]=T<<16|T>>>16,g[x]=T<<8|T>>>24,f[x]=T;var T=N*16843009^O*65537^F*257^x*16843008;z[R]=T<<24|T>>>8,k[R]=T<<16|T>>>16,j[R]=T<<8|T>>>24,v[R]=T,x?(x=F^w[w[w[N^F]]],D^=w[w[D]]):x=D=1}})();var A=[0,1,2,4,8,16,32,64,128,27,54],C=m.AES=l.extend({_doReset:function(){var w;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var _=this._keyPriorReset=this._key,x=_.words,D=_.sigBytes/4,R=this._nRounds=D+6,F=(R+1)*4,O=this._keySchedule=[],N=0;N6&&N%D==4&&(w=c[w>>>24]<<24|c[w>>>16&255]<<16|c[w>>>8&255]<<8|c[w&255]):(w=w<<8|w>>>24,w=c[w>>>24]<<24|c[w>>>16&255]<<16|c[w>>>8&255]<<8|c[w&255],w^=A[N/D|0]<<24),O[N]=O[N-D]^w);for(var T=this._invKeySchedule=[],W=0;W>>24]]^k[c[w>>>16&255]]^j[c[w>>>8&255]]^v[c[w&255]]}}},encryptBlock:function(w,_){this._doCryptBlock(w,_,this._keySchedule,d,y,g,f,c)},decryptBlock:function(w,_){var x=w[_+1];w[_+1]=w[_+3],w[_+3]=x,this._doCryptBlock(w,_,this._invKeySchedule,z,k,j,v,h);var x=w[_+1];w[_+1]=w[_+3],w[_+3]=x},_doCryptBlock:function(w,_,x,D,R,F,O,N){for(var T=this._nRounds,W=w[_]^x[0],H=w[_+1]^x[1],K=w[_+2]^x[2],ae=w[_+3]^x[3],X=4,ne=1;ne>>24]^R[H>>>16&255]^F[K>>>8&255]^O[ae&255]^x[X++],oe=D[H>>>24]^R[K>>>16&255]^F[ae>>>8&255]^O[W&255]^x[X++],ee=D[K>>>24]^R[ae>>>16&255]^F[W>>>8&255]^O[H&255]^x[X++],q=D[ae>>>24]^R[W>>>16&255]^F[H>>>8&255]^O[K&255]^x[X++];W=$,H=oe,K=ee,ae=q}var $=(N[W>>>24]<<24|N[H>>>16&255]<<16|N[K>>>8&255]<<8|N[ae&255])^x[X++],oe=(N[H>>>24]<<24|N[K>>>16&255]<<16|N[ae>>>8&255]<<8|N[W&255])^x[X++],ee=(N[K>>>24]<<24|N[ae>>>16&255]<<16|N[W>>>8&255]<<8|N[H&255])^x[X++],q=(N[ae>>>24]<<24|N[W>>>16&255]<<16|N[H>>>8&255]<<8|N[K&255])^x[X++];w[_]=$,w[_+1]=oe,w[_+2]=ee,w[_+3]=q},keySize:256/32});s.AES=l._createHelper(C)})(),o.AES})})(Nt)),Nt.exports}var It={exports:{}},Tq=It.exports,ag;function Pq(){return ag||(ag=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Tq,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=u.BlockCipher,c=s.algo,h=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],d=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],y=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],g=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],f=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],z=c.DES=m.extend({_doReset:function(){for(var A=this._key,C=A.words,w=[],_=0;_<56;_++){var x=h[_]-1;w[_]=C[x>>>5]>>>31-x%32&1}for(var D=this._subKeys=[],R=0;R<16;R++){for(var F=D[R]=[],O=y[R],_=0;_<24;_++)F[_/6|0]|=w[(d[_]-1+O)%28]<<31-_%6,F[4+(_/6|0)]|=w[28+(d[_+24]-1+O)%28]<<31-_%6;F[0]=F[0]<<1|F[0]>>>31;for(var _=1;_<7;_++)F[_]=F[_]>>>(_-1)*4+3;F[7]=F[7]<<5|F[7]>>>27}for(var N=this._invSubKeys=[],_=0;_<16;_++)N[_]=D[15-_]},encryptBlock:function(A,C){this._doCryptBlock(A,C,this._subKeys)},decryptBlock:function(A,C){this._doCryptBlock(A,C,this._invSubKeys)},_doCryptBlock:function(A,C,w){this._lBlock=A[C],this._rBlock=A[C+1],k.call(this,4,252645135),k.call(this,16,65535),j.call(this,2,858993459),j.call(this,8,16711935),k.call(this,1,1431655765);for(var _=0;_<16;_++){for(var x=w[_],D=this._lBlock,R=this._rBlock,F=0,O=0;O<8;O++)F|=g[O][((R^x[O])&f[O])>>>0];this._lBlock=R,this._rBlock=D^F}var N=this._lBlock;this._lBlock=this._rBlock,this._rBlock=N,k.call(this,1,1431655765),j.call(this,8,16711935),j.call(this,2,858993459),k.call(this,16,65535),k.call(this,4,252645135),A[C]=this._lBlock,A[C+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function k(A,C){var w=(this._lBlock>>>A^this._rBlock)&C;this._rBlock^=w,this._lBlock^=w<>>A^this._lBlock)&C;this._lBlock^=w,this._rBlock^=w<192.");var w=C.slice(0,2),_=C.length<4?C.slice(0,2):C.slice(2,4),x=C.length<6?C.slice(0,2):C.slice(4,6);this._des1=z.createEncryptor(l.create(w)),this._des2=z.createEncryptor(l.create(_)),this._des3=z.createEncryptor(l.create(x))},encryptBlock:function(A,C){this._des1.encryptBlock(A,C),this._des2.decryptBlock(A,C),this._des3.encryptBlock(A,C)},decryptBlock:function(A,C){this._des3.decryptBlock(A,C),this._des2.encryptBlock(A,C),this._des1.decryptBlock(A,C)},keySize:192/32,ivSize:64/32,blockSize:64/32});s.TripleDES=m._createHelper(v)})(),o.TripleDES})})(It)),It.exports}var Mt={exports:{}},Nq=Mt.exports,ng;function Iq(){return ng||(ng=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Nq,function(o){return(function(){var s=o,u=s.lib,l=u.StreamCipher,m=s.algo,c=m.RC4=l.extend({_doReset:function(){for(var y=this._key,g=y.words,f=y.sigBytes,z=this._S=[],k=0;k<256;k++)z[k]=k;for(var k=0,j=0;k<256;k++){var v=k%f,A=g[v>>>2]>>>24-v%4*8&255;j=(j+z[k]+A)%256;var C=z[k];z[k]=z[j],z[j]=C}this._i=this._j=0},_doProcessBlock:function(y,g){y[g]^=h.call(this)},keySize:256/32,ivSize:0});function h(){for(var y=this._S,g=this._i,f=this._j,z=0,k=0;k<4;k++){g=(g+1)%256,f=(f+y[g])%256;var j=y[g];y[g]=y[f],y[f]=j,z|=y[(y[g]+y[f])%256]<<24-k*8}return this._i=g,this._j=f,z}s.RC4=l._createHelper(c);var d=m.RC4Drop=c.extend({cfg:c.cfg.extend({drop:192}),_doReset:function(){c._doReset.call(this);for(var y=this.cfg.drop;y>0;y--)h.call(this)}});s.RC4Drop=l._createHelper(d)})(),o.RC4})})(Mt)),Mt.exports}var Ot={exports:{}},Mq=Ot.exports,og;function Oq(){return og||(og=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Mq,function(o){return(function(){var s=o,u=s.lib,l=u.StreamCipher,m=s.algo,c=[],h=[],d=[],y=m.Rabbit=l.extend({_doReset:function(){for(var f=this._key.words,z=this.cfg.iv,k=0;k<4;k++)f[k]=(f[k]<<8|f[k]>>>24)&16711935|(f[k]<<24|f[k]>>>8)&4278255360;var j=this._X=[f[0],f[3]<<16|f[2]>>>16,f[1],f[0]<<16|f[3]>>>16,f[2],f[1]<<16|f[0]>>>16,f[3],f[2]<<16|f[1]>>>16],v=this._C=[f[2]<<16|f[2]>>>16,f[0]&4294901760|f[1]&65535,f[3]<<16|f[3]>>>16,f[1]&4294901760|f[2]&65535,f[0]<<16|f[0]>>>16,f[2]&4294901760|f[3]&65535,f[1]<<16|f[1]>>>16,f[3]&4294901760|f[0]&65535];this._b=0;for(var k=0;k<4;k++)g.call(this);for(var k=0;k<8;k++)v[k]^=j[k+4&7];if(z){var A=z.words,C=A[0],w=A[1],_=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360,x=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,D=_>>>16|x&4294901760,R=x<<16|_&65535;v[0]^=_,v[1]^=D,v[2]^=x,v[3]^=R,v[4]^=_,v[5]^=D,v[6]^=x,v[7]^=R;for(var k=0;k<4;k++)g.call(this)}},_doProcessBlock:function(f,z){var k=this._X;g.call(this),c[0]=k[0]^k[5]>>>16^k[3]<<16,c[1]=k[2]^k[7]>>>16^k[5]<<16,c[2]=k[4]^k[1]>>>16^k[7]<<16,c[3]=k[6]^k[3]>>>16^k[1]<<16;for(var j=0;j<4;j++)c[j]=(c[j]<<8|c[j]>>>24)&16711935|(c[j]<<24|c[j]>>>8)&4278255360,f[z+j]^=c[j]},blockSize:128/32,ivSize:64/32});function g(){for(var f=this._X,z=this._C,k=0;k<8;k++)h[k]=z[k];z[0]=z[0]+1295307597+this._b|0,z[1]=z[1]+3545052371+(z[0]>>>0>>0?1:0)|0,z[2]=z[2]+886263092+(z[1]>>>0>>0?1:0)|0,z[3]=z[3]+1295307597+(z[2]>>>0>>0?1:0)|0,z[4]=z[4]+3545052371+(z[3]>>>0>>0?1:0)|0,z[5]=z[5]+886263092+(z[4]>>>0>>0?1:0)|0,z[6]=z[6]+1295307597+(z[5]>>>0>>0?1:0)|0,z[7]=z[7]+3545052371+(z[6]>>>0>>0?1:0)|0,this._b=z[7]>>>0>>0?1:0;for(var k=0;k<8;k++){var j=f[k]+z[k],v=j&65535,A=j>>>16,C=((v*v>>>17)+v*A>>>15)+A*A,w=((j&4294901760)*j|0)+((j&65535)*j|0);d[k]=C^w}f[0]=d[0]+(d[7]<<16|d[7]>>>16)+(d[6]<<16|d[6]>>>16)|0,f[1]=d[1]+(d[0]<<8|d[0]>>>24)+d[7]|0,f[2]=d[2]+(d[1]<<16|d[1]>>>16)+(d[0]<<16|d[0]>>>16)|0,f[3]=d[3]+(d[2]<<8|d[2]>>>24)+d[1]|0,f[4]=d[4]+(d[3]<<16|d[3]>>>16)+(d[2]<<16|d[2]>>>16)|0,f[5]=d[5]+(d[4]<<8|d[4]>>>24)+d[3]|0,f[6]=d[6]+(d[5]<<16|d[5]>>>16)+(d[4]<<16|d[4]>>>16)|0,f[7]=d[7]+(d[6]<<8|d[6]>>>24)+d[5]|0}s.Rabbit=l._createHelper(y)})(),o.Rabbit})})(Ot)),Ot.exports}var Lt={exports:{}},Lq=Lt.exports,rg;function Hq(){return rg||(rg=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Lq,function(o){return(function(){var s=o,u=s.lib,l=u.StreamCipher,m=s.algo,c=[],h=[],d=[],y=m.RabbitLegacy=l.extend({_doReset:function(){var f=this._key.words,z=this.cfg.iv,k=this._X=[f[0],f[3]<<16|f[2]>>>16,f[1],f[0]<<16|f[3]>>>16,f[2],f[1]<<16|f[0]>>>16,f[3],f[2]<<16|f[1]>>>16],j=this._C=[f[2]<<16|f[2]>>>16,f[0]&4294901760|f[1]&65535,f[3]<<16|f[3]>>>16,f[1]&4294901760|f[2]&65535,f[0]<<16|f[0]>>>16,f[2]&4294901760|f[3]&65535,f[1]<<16|f[1]>>>16,f[3]&4294901760|f[0]&65535];this._b=0;for(var v=0;v<4;v++)g.call(this);for(var v=0;v<8;v++)j[v]^=k[v+4&7];if(z){var A=z.words,C=A[0],w=A[1],_=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360,x=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,D=_>>>16|x&4294901760,R=x<<16|_&65535;j[0]^=_,j[1]^=D,j[2]^=x,j[3]^=R,j[4]^=_,j[5]^=D,j[6]^=x,j[7]^=R;for(var v=0;v<4;v++)g.call(this)}},_doProcessBlock:function(f,z){var k=this._X;g.call(this),c[0]=k[0]^k[5]>>>16^k[3]<<16,c[1]=k[2]^k[7]>>>16^k[5]<<16,c[2]=k[4]^k[1]>>>16^k[7]<<16,c[3]=k[6]^k[3]>>>16^k[1]<<16;for(var j=0;j<4;j++)c[j]=(c[j]<<8|c[j]>>>24)&16711935|(c[j]<<24|c[j]>>>8)&4278255360,f[z+j]^=c[j]},blockSize:128/32,ivSize:64/32});function g(){for(var f=this._X,z=this._C,k=0;k<8;k++)h[k]=z[k];z[0]=z[0]+1295307597+this._b|0,z[1]=z[1]+3545052371+(z[0]>>>0>>0?1:0)|0,z[2]=z[2]+886263092+(z[1]>>>0>>0?1:0)|0,z[3]=z[3]+1295307597+(z[2]>>>0>>0?1:0)|0,z[4]=z[4]+3545052371+(z[3]>>>0>>0?1:0)|0,z[5]=z[5]+886263092+(z[4]>>>0>>0?1:0)|0,z[6]=z[6]+1295307597+(z[5]>>>0>>0?1:0)|0,z[7]=z[7]+3545052371+(z[6]>>>0>>0?1:0)|0,this._b=z[7]>>>0>>0?1:0;for(var k=0;k<8;k++){var j=f[k]+z[k],v=j&65535,A=j>>>16,C=((v*v>>>17)+v*A>>>15)+A*A,w=((j&4294901760)*j|0)+((j&65535)*j|0);d[k]=C^w}f[0]=d[0]+(d[7]<<16|d[7]>>>16)+(d[6]<<16|d[6]>>>16)|0,f[1]=d[1]+(d[0]<<8|d[0]>>>24)+d[7]|0,f[2]=d[2]+(d[1]<<16|d[1]>>>16)+(d[0]<<16|d[0]>>>16)|0,f[3]=d[3]+(d[2]<<8|d[2]>>>24)+d[1]|0,f[4]=d[4]+(d[3]<<16|d[3]>>>16)+(d[2]<<16|d[2]>>>16)|0,f[5]=d[5]+(d[4]<<8|d[4]>>>24)+d[3]|0,f[6]=d[6]+(d[5]<<16|d[5]>>>16)+(d[4]<<16|d[4]>>>16)|0,f[7]=d[7]+(d[6]<<8|d[6]>>>24)+d[5]|0}s.RabbitLegacy=l._createHelper(y)})(),o.RabbitLegacy})})(Lt)),Lt.exports}var Ht={exports:{}},Vq=Ht.exports,sg;function Uq(){return sg||(sg=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Vq,function(o){return(function(){var s=o,u=s.lib,l=u.BlockCipher,m=s.algo;const c=16,h=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],d=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var y={pbox:[],sbox:[]};function g(v,A){let C=A>>24&255,w=A>>16&255,_=A>>8&255,x=A&255,D=v.sbox[0][C]+v.sbox[1][w];return D=D^v.sbox[2][_],D=D+v.sbox[3][x],D}function f(v,A,C){let w=A,_=C,x;for(let D=0;D1;--D)w=w^v.pbox[D],_=g(v,w)^_,x=w,w=_,_=x;return x=w,w=_,_=x,_=_^v.pbox[1],w=w^v.pbox[0],{left:w,right:_}}function k(v,A,C){for(let R=0;R<4;R++){v.sbox[R]=[];for(let F=0;F<256;F++)v.sbox[R][F]=d[R][F]}let w=0;for(let R=0;R=C&&(w=0);let _=0,x=0,D=0;for(let R=0;R=0&&(x=x.substring(0,D));const R=x.indexOf(": ");let F,O;if(R>0&&R<50){const N=x.substring(0,R);/[:\[\]]/.test(N)?O=x:(F=N,O=x.substring(R+2))}else O=x;return{success:!0,data:{timestamp:A,flags:C,sender:F,message:O}}}catch(c){return{success:!1,error:c instanceof Error?c.message:"Decryption failed"}}}static calculateChannelHash(u){const l=(0,a.SHA256)(a.enc.Hex.parse(u));return(0,r.hexToBytes)(l.toString(a.enc.Hex))[0].toString(16).padStart(2,"0")}}return wr.ChannelCrypto=o,wr}var cg;function Fb(){if(cg)return kr;cg=1,Object.defineProperty(kr,"__esModule",{value:!0}),kr.MeshCoreKeyStore=void 0;const a=Yu();class r{constructor(s){this.nodeKeys=new Map,this.channelHashToKeys=new Map,s!=null&&s.channelSecrets&&this.addChannelSecrets(s.channelSecrets),s!=null&&s.nodeKeys&&Object.entries(s.nodeKeys).forEach(([u,l])=>{this.addNodeKey(u,l)})}addNodeKey(s,u){const l=s.toUpperCase();this.nodeKeys.set(l,u)}hasChannelKey(s){const u=s.toLowerCase();return this.channelHashToKeys.has(u)}hasNodeKey(s){const u=s.toUpperCase();return this.nodeKeys.has(u)}getChannelKeys(s){const u=s.toLowerCase();return this.channelHashToKeys.get(u)||[]}getNodeKey(s){const u=s.toUpperCase();return this.nodeKeys.get(u)}addChannelSecrets(s){for(const u of s){const l=a.ChannelCrypto.calculateChannelHash(u).toLowerCase();this.channelHashToKeys.has(l)||this.channelHashToKeys.set(l,[]),this.channelHashToKeys.get(l).push(u)}}}return kr.MeshCoreKeyStore=r,kr}var xr={},Ea={};/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Rb={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Wi,n:Vt,Gx:ug,Gy:dg,a:gu,d:yu}=Rb,$q=8n,Ha=32,Ir=64,ca=(a="")=>{throw new Error(a)},Qq=a=>typeof a=="bigint",Tb=a=>typeof a=="string",Gq=a=>a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array",Zn=(a,r)=>!Gq(a)||typeof r=="number"&&r>0&&a.length!==r?ca("Uint8Array expected"):a,hl=a=>new Uint8Array(a),Zu=a=>Uint8Array.from(a),Pb=(a,r)=>a.toString(16).padStart(r,"0"),Xu=a=>Array.from(Zn(a)).map(r=>Pb(r,2)).join(""),en={_0:48,_9:57,A:65,F:70,a:97,f:102},pg=a=>{if(a>=en._0&&a<=en._9)return a-en._0;if(a>=en.A&&a<=en.F)return a-(en.A-10);if(a>=en.a&&a<=en.f)return a-(en.a-10)},Ju=a=>{const r="hex invalid";if(!Tb(a))return ca(r);const o=a.length,s=o/2;if(o%2)return ca(r);const u=hl(s);for(let l=0,m=0;lZn(Tb(a)?Ju(a):Zu(Zn(a)),r),Nb=()=>globalThis==null?void 0:globalThis.crypto,Kq=()=>{var a;return((a=Nb())==null?void 0:a.subtle)??ca("crypto.subtle must be defined")},Mr=(...a)=>{const r=hl(a.reduce((s,u)=>s+Zn(u).length,0));let o=0;return a.forEach(s=>{r.set(s,o),o+=s.length}),r},Ib=(a=Ha)=>Nb().getRandomValues(hl(a)),Xt=BigInt,Qn=(a,r,o,s="bad number: out of range")=>Qq(a)&&r<=a&&a{const o=a%r;return o>=0n?o:r+o},Mb=a=>qe(a,Vt),Ob=(a,r)=>{(a===0n||r<=0n)&&ca("no inverse n="+a+" mod="+r);let o=qe(a,r),s=r,u=0n,l=1n;for(;o!==0n;){const m=s/o,c=s%o,h=u-l*m;s=o,o=c,u=l,l=h}return s===1n?qe(u,r):ca("no inverse")},Yq=a=>{const r=sd[a];return typeof r!="function"&&ca("hashes."+a+" not set"),r},mg=a=>a instanceof Sa?a:ca("Point expected"),Su=2n**256n,Ma=class Ma{constructor(r,o,s,u){Ln(this,"ex");Ln(this,"ey");Ln(this,"ez");Ln(this,"et");const l=Su;this.ex=Qn(r,0n,l),this.ey=Qn(o,0n,l),this.ez=Qn(s,1n,l),this.et=Qn(u,0n,l),Object.freeze(this)}static fromAffine(r){return new Ma(r.x,r.y,1n,qe(r.x*r.y))}static fromBytes(r,o=!1){const s=yu,u=Zu(Zn(r,Ha)),l=r[31];u[31]=l&-129;const m=ed(u);Qn(m,0n,o?Su:Wi);const h=qe(m*m),d=qe(h-1n),y=qe(s*h+1n);let{isValid:g,value:f}=Xq(d,y);g||ca("bad point: y not sqrt");const z=(f&1n)===1n,k=(l&128)!==0;return!o&&f===0n&&k&&ca("bad point: x==0, isLastByteOdd"),k!==z&&(f=qe(-f)),new Ma(f,m,1n,qe(f*m))}assertValidity(){const r=gu,o=yu,s=this;if(s.is0())throw new Error("bad point: ZERO");const{ex:u,ey:l,ez:m,et:c}=s,h=qe(u*u),d=qe(l*l),y=qe(m*m),g=qe(y*y),f=qe(h*r),z=qe(y*qe(f+d)),k=qe(g+qe(o*qe(h*d)));if(z!==k)throw new Error("bad point: equation left != right (1)");const j=qe(u*l),v=qe(m*c);if(j!==v)throw new Error("bad point: equation left != right (2)");return this}equals(r){const{ex:o,ey:s,ez:u}=this,{ex:l,ey:m,ez:c}=mg(r),h=qe(o*c),d=qe(l*u),y=qe(s*c),g=qe(m*u);return h===d&&y===g}is0(){return this.equals(Co)}negate(){return new Ma(qe(-this.ex),this.ey,this.ez,qe(-this.et))}double(){const{ex:r,ey:o,ez:s}=this,u=gu,l=qe(r*r),m=qe(o*o),c=qe(2n*qe(s*s)),h=qe(u*l),d=r+o,y=qe(qe(d*d)-l-m),g=h+m,f=g-c,z=h-m,k=qe(y*f),j=qe(g*z),v=qe(y*z),A=qe(f*g);return new Ma(k,j,A,v)}add(r){const{ex:o,ey:s,ez:u,et:l}=this,{ex:m,ey:c,ez:h,et:d}=mg(r),y=gu,g=yu,f=qe(o*m),z=qe(s*c),k=qe(l*g*d),j=qe(u*h),v=qe((o+s)*(m+c)-f-z),A=qe(j-k),C=qe(j+k),w=qe(z-y*f),_=qe(v*A),x=qe(C*w),D=qe(v*w),R=qe(A*C);return new Ma(_,x,R,D)}multiply(r,o=!0){if(!o&&(r===0n||this.is0()))return Co;if(Qn(r,1n,Vt),r===1n)return this;if(this.equals(nn))return lj(r).p;let s=Co,u=nn;for(let l=this;r>0n;l=l.double(),r>>=1n)r&1n?s=s.add(l):o&&(u=u.add(l));return s}toAffine(){const{ex:r,ey:o,ez:s}=this;if(this.equals(Co))return{x:0n,y:1n};const u=Ob(s,Wi);return qe(s*u)!==1n&&ca("invalid inverse"),{x:qe(r*u),y:qe(o*u)}}toBytes(){const{x:r,y:o}=this.assertValidity().toAffine(),s=Lb(o);return s[31]|=r&1n?128:0,s}toHex(){return Xu(this.toBytes())}clearCofactor(){return this.multiply(Xt($q),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let r=this.multiply(Vt/2n,!1).double();return Vt%2n&&(r=r.add(this)),r.is0()}static fromHex(r,o){return Ma.fromBytes(An(r),o)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(){return this.toBytes()}};Ln(Ma,"BASE"),Ln(Ma,"ZERO");let Sa=Ma;const nn=new Sa(ug,dg,1n,qe(ug*dg)),Co=new Sa(0n,1n,1n,0n);Sa.BASE=nn;Sa.ZERO=Co;const Lb=a=>Ju(Pb(Qn(a,0n,Su),Ir)).reverse(),ed=a=>Xt("0x"+Xu(Zu(Zn(a)).reverse())),Ia=(a,r)=>{let o=a;for(;r-- >0n;)o*=o,o%=Wi;return o},Zq=a=>{const o=a*a%Wi*a%Wi,s=Ia(o,2n)*o%Wi,u=Ia(s,1n)*a%Wi,l=Ia(u,5n)*u%Wi,m=Ia(l,10n)*l%Wi,c=Ia(m,20n)*m%Wi,h=Ia(c,40n)*c%Wi,d=Ia(h,80n)*h%Wi,y=Ia(d,80n)*h%Wi,g=Ia(y,10n)*l%Wi;return{pow_p_5_8:Ia(g,2n)*a%Wi,b2:o}},hg=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Xq=(a,r)=>{const o=qe(r*r*r),s=qe(o*o*r),u=Zq(a*s).pow_p_5_8;let l=qe(a*o*u);const m=qe(r*l*l),c=l,h=qe(l*hg),d=m===a,y=m===qe(-a),g=m===qe(-a*hg);return d&&(l=c),(y||g)&&(l=h),(qe(l)&1n)===1n&&(l=qe(-l)),{isValid:d||y,value:l}},Jt=a=>Mb(ed(a)),id=(...a)=>sd.sha512Async(...a),ad=(...a)=>Yq("sha512Sync")(...a),Hb=a=>{const r=a.slice(0,Ha);r[0]&=248,r[31]&=127,r[31]|=64;const o=a.slice(Ha,Ir),s=Jt(r),u=nn.multiply(s),l=u.toBytes();return{head:r,prefix:o,scalar:s,point:u,pointBytes:l}},nd=a=>id(An(a,Ha)).then(Hb),od=a=>Hb(ad(An(a,Ha))),Jq=a=>nd(a).then(r=>r.pointBytes),ej=a=>od(a).pointBytes,Vb=a=>id(a.hashable).then(a.finish),Ub=a=>a.finish(ad(a.hashable)),Wb=(a,r,o)=>{const{pointBytes:s,scalar:u}=a,l=Jt(r),m=nn.multiply(l).toBytes();return{hashable:Mr(m,s,o),finish:d=>{const y=Mb(l+Jt(d)*u);return Zn(Mr(m,Lb(y)),Ir)}}},ij=async(a,r)=>{const o=An(a),s=await nd(r),u=await id(s.prefix,o);return Vb(Wb(s,u,o))},aj=(a,r)=>{const o=An(a),s=od(r),u=ad(s.prefix,o);return Ub(Wb(s,u,o))},rd={zip215:!0},$b=(a,r,o,s=rd)=>{a=An(a,Ir),r=An(r),o=An(o,Ha);const{zip215:u}=s;let l,m,c,h,d=Uint8Array.of();try{l=Sa.fromHex(o,u),m=Sa.fromHex(a.slice(0,Ha),u),c=ed(a.slice(Ha,Ir)),h=nn.multiply(c,!1),d=Mr(m.toBytes(),l.toBytes(),r)}catch{}return{hashable:d,finish:g=>{if(h==null||!u&&l.isSmallOrder())return!1;const f=Jt(g);return m.add(l.multiply(f,!1)).add(h.negate()).clearCofactor().is0()}}},nj=async(a,r,o,s=rd)=>Vb($b(a,r,o,s)),oj=(a,r,o,s=rd)=>Ub($b(a,r,o,s)),sd={sha512Async:async(...a)=>{const r=Kq(),o=Mr(...a);return hl(await r.digest("SHA-512",o.buffer))},sha512Sync:void 0,bytesToHex:Xu,hexToBytes:Ju,concatBytes:Mr,mod:qe,invert:Ob,randomBytes:Ib},rj={getExtendedPublicKeyAsync:nd,getExtendedPublicKey:od,randomPrivateKey:()=>Ib(Ha),precompute:(a=8,r=nn)=>(r.multiply(3n),r)},el=8,sj=256,Qb=Math.ceil(sj/el)+1,Bu=2**(el-1),tj=()=>{const a=[];let r=nn,o=r;for(let s=0;s{const o=r.negate();return a?o:r},lj=a=>{const r=gg||(gg=tj());let o=Co,s=nn;const u=2**el,l=u,m=Xt(u-1),c=Xt(el);for(let h=0;h>=c,d>Bu&&(d-=l,a+=1n);const y=h*Bu,g=y,f=y+Math.abs(d)-1,z=h%2!==0,k=d<0;d===0?s=s.add(yg(z,r[g])):o=o.add(yg(k,r[f]))}return{p:o,f:s}},cj=Object.freeze(Object.defineProperty({__proto__:null,CURVE:Rb,ExtendedPoint:Sa,Point:Sa,etc:sd,getPublicKey:ej,getPublicKeyAsync:Jq,sign:aj,signAsync:ij,utils:rj,verify:oj,verifyAsync:nj},Symbol.toStringTag,{value:"Module"})),uj=Vg(cj);var Un={},bu={exports:{}},bg;function dj(){return bg||(bg=1,(function(a,r){var o=(()=>{var u;var s=typeof document<"u"?(u=document.currentScript)==null?void 0:u.src:void 0;return(async function(l={}){var da;var m,c=l,h=typeof window=="object",d=typeof WorkerGlobalScope<"u",y=typeof process=="object"&&((da=process.versions)==null?void 0:da.node)&&process.type!="renderer";typeof __filename<"u"?s=__filename:d&&(s=self.location.href);var g="";function f(ie){return c.locateFile?c.locateFile(ie,g):g+ie}var z,k;if(y){var j=Zt;g=__dirname+"/",k=ie=>{ie=w(ie)?new URL(ie):ie;var pe=j.readFileSync(ie);return pe},z=async(ie,pe=!0)=>{ie=w(ie)?new URL(ie):ie;var V=j.readFileSync(ie,pe?void 0:"utf8");return V},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2)}else if(h||d){try{g=new URL(".",s).href}catch{}d&&(k=ie=>{var pe=new XMLHttpRequest;return pe.open("GET",ie,!1),pe.responseType="arraybuffer",pe.send(null),new Uint8Array(pe.response)}),z=async ie=>{if(w(ie))return new Promise((V,J)=>{var re=new XMLHttpRequest;re.open("GET",ie,!0),re.responseType="arraybuffer",re.onload=()=>{if(re.status==200||re.status==0&&re.response){V(re.response);return}J(re.status)},re.onerror=J,re.send(null)});var pe=await fetch(ie,{credentials:"same-origin"});if(pe.ok)return pe.arrayBuffer();throw new Error(pe.status+" : "+pe.url)}}console.log.bind(console);var v=console.error.bind(console),A,C=!1,w=ie=>ie.startsWith("file://"),_,x,D,R,F,O=!1;function N(){var ie=D.buffer;c.HEAP8=R=new Int8Array(ie),c.HEAPU8=F=new Uint8Array(ie),c.HEAP32=new Int32Array(ie),c.HEAPU32=new Uint32Array(ie),new BigInt64Array(ie),new BigUint64Array(ie)}function T(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Fe(c.preRun.shift());be(Ae)}function W(){O=!0,ui.b()}function H(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)ce(c.postRun.shift());be(se)}var K=0,ae=null;function X(ie){var pe;K++,(pe=c.monitorRunDependencies)==null||pe.call(c,K)}function ne(ie){var V;if(K--,(V=c.monitorRunDependencies)==null||V.call(c,K),K==0&&ae){var pe=ae;ae=null,pe()}}function $(ie){var V;(V=c.onAbort)==null||V.call(c,ie),ie="Aborted("+ie+")",v(ie),C=!0,ie+=". Build with -sASSERTIONS for more info.";var pe=new WebAssembly.RuntimeError(ie);throw x==null||x(pe),pe}var oe;function ee(){return f("orlp-ed25519.wasm")}function q(ie){if(ie==oe&&A)return new Uint8Array(A);if(k)return k(ie);throw"both async and sync fetching of the wasm failed"}async function I(ie){if(!A)try{var pe=await z(ie);return new Uint8Array(pe)}catch{}return q(ie)}async function L(ie,pe){try{var V=await I(ie),J=await WebAssembly.instantiate(V,pe);return J}catch(re){v(`failed to asynchronously prepare wasm: ${re}`),$(re)}}async function Q(ie,pe,V){if(!ie&&typeof WebAssembly.instantiateStreaming=="function"&&!w(pe)&&!y)try{var J=fetch(pe,{credentials:"same-origin"}),re=await WebAssembly.instantiateStreaming(J,V);return re}catch(ye){v(`wasm streaming compile failed: ${ye}`),v("falling back to ArrayBuffer instantiation")}return L(pe,V)}function de(){return{a:ji}}async function ge(){function ie(ye,ve){return ui=ye.exports,D=ui.a,N(),oa(ui),ne(),ui}X();function pe(ye){return ie(ye.instance)}var V=de();if(c.instantiateWasm)return new Promise((ye,ve)=>{c.instantiateWasm(V,(_e,ni)=>{ye(ie(_e))})});oe??(oe=ee());var J=await Q(A,oe,V),re=pe(J);return re}var be=ie=>{for(;ie.length>0;)ie.shift()(c)},se=[],ce=ie=>se.push(ie),Ae=[],Fe=ie=>Ae.push(ie),He=ie=>qi(ie),ai=()=>Ki(),Qe=ie=>{var pe=c["_"+ie];return pe},Oe=(ie,pe)=>{R.set(ie,pe)},Me=ie=>{for(var pe=0,V=0;V=55296&&J<=57343?(pe+=4,++V):pe+=3}return pe},Xe=(ie,pe,V,J)=>{if(!(J>0))return 0;for(var re=V,ye=V+J-1,ve=0;ve=ye)break;pe[V++]=_e}else if(_e<=2047){if(V+1>=ye)break;pe[V++]=192|_e>>6,pe[V++]=128|_e&63}else if(_e<=65535){if(V+2>=ye)break;pe[V++]=224|_e>>12,pe[V++]=128|_e>>6&63,pe[V++]=128|_e&63}else{if(V+3>=ye)break;pe[V++]=240|_e>>18,pe[V++]=128|_e>>12&63,pe[V++]=128|_e>>6&63,pe[V++]=128|_e&63,ve++}}return pe[V]=0,V-re},Ve=(ie,pe,V)=>Xe(ie,F,pe,V),Ge=ie=>Mi(ie),yi=ie=>{var pe=Me(ie)+1,V=Ge(pe);return Ve(ie,V,pe),V},si=typeof TextDecoder<"u"?new TextDecoder:void 0,Le=(ie,pe=0,V=NaN)=>{for(var J=pe+V,re=pe;ie[re]&&!(re>=J);)++re;if(re-pe>16&&ie.buffer&&si)return si.decode(ie.subarray(pe,re));for(var ye="";pe>10,56320|Ce&1023)}}return ye},mi=(ie,pe)=>ie?Le(F,ie,pe):"",Gi=(ie,pe,V,J,re)=>{var ye={string:Re=>{var Ye=0;return Re!=null&&Re!==0&&(Ye=yi(Re)),Ye},array:Re=>{var Ye=Ge(Re.length);return Oe(Re,Ye),Ye}};function ve(Re){return pe==="string"?mi(Re):pe==="boolean"?!!Re:Re}var _e=Qe(ie),ni=[],Ce=0;if(J)for(var Te=0;Te{var re=!V||V.every(ve=>ve==="number"||ve==="boolean"),ye=pe!=="string";return ye&&re&&!J?Qe(ie):(...ve)=>Gi(ie,pe,V,ve)};c.noExitRuntime&&c.noExitRuntime,c.print&&c.print,c.printErr&&(v=c.printErr),c.wasmBinary&&(A=c.wasmBinary),c.arguments&&c.arguments,c.thisProgram&&c.thisProgram,c.ccall=Gi,c.cwrap=va;var qi,Mi,Ki;function oa(ie){c._orlp_derive_public_key=ie.c,c._orlp_validate_keypair=ie.d,c._orlp_sign=ie.e,c._orlp_verify=ie.f,qi=ie.g,Mi=ie.h,Ki=ie.i}var ji={},ui=await ge();function ki(){if(K>0){ae=ki;return}if(T(),K>0){ae=ki;return}function ie(){var pe;c.calledRun=!0,!C&&(W(),_==null||_(c),(pe=c.onRuntimeInitialized)==null||pe.call(c),H())}c.setStatus?(c.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>c.setStatus(""),1),ie()},1)):ie()}function _a(){if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.shift()()}return _a(),ki(),O?m=c:m=new Promise((ie,pe)=>{_=ie,x=pe}),m})})();a.exports=o,a.exports.default=o})(bu)),bu.exports}var fg;function td(){if(fg)return Un;fg=1,Object.defineProperty(Un,"__esModule",{value:!0}),Un.derivePublicKey=s,Un.validateKeyPair=u,Un.sign=l,Un.verify=m;const a=Ii(),r=dj();async function o(){return await r()}async function s(c){const h=await o(),d=(0,a.hexToBytes)(c);if(d.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${d.length}`);const y=1024,g=1088;if(h.HEAPU8.set(d,y),h.ccall("orlp_derive_public_key","number",["number","number"],[g,y])!==0)throw new Error("orlp key derivation failed: invalid private key");const z=new Uint8Array(32);return z.set(h.HEAPU8.subarray(g,g+32)),(0,a.bytesToHex)(z)}async function u(c,h){try{const d=await o(),y=(0,a.hexToBytes)(c),g=(0,a.hexToBytes)(h);if(y.length!==64||g.length!==32)return!1;const f=2048,z=2112;return d.HEAPU8.set(y,f),d.HEAPU8.set(g,z),d.ccall("orlp_validate_keypair","number",["number","number"],[z,f])===1}catch{return!1}}async function l(c,h,d){const y=await o(),g=(0,a.hexToBytes)(c),f=(0,a.hexToBytes)(h),z=(0,a.hexToBytes)(d);if(f.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${f.length}`);if(z.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${z.length}`);const k=1e5,j=2e5,v=3e5,A=4e5;y.HEAPU8.set(g,k),y.HEAPU8.set(f,j),y.HEAPU8.set(z,v),y.ccall("orlp_sign","void",["number","number","number","number","number"],[A,k,g.length,v,j]);const C=new Uint8Array(64);return C.set(y.HEAPU8.subarray(A,A+64)),(0,a.bytesToHex)(C)}async function m(c,h,d){try{const y=await o(),g=(0,a.hexToBytes)(c),f=(0,a.hexToBytes)(h),z=(0,a.hexToBytes)(d);if(g.length!==64||z.length!==32)return!1;const k=5e5,j=6e5,v=7e5;return y.HEAPU8.set(g,j),y.HEAPU8.set(f,k),y.HEAPU8.set(z,v),y.ccall("orlp_verify","number",["number","number","number","number"],[j,k,f.length,v])===1}catch{return!1}}return Un}var vg;function Gb(){if(vg)return Ea;vg=1;var a=Ea&&Ea.__createBinding||(Object.create?(function(d,y,g,f){f===void 0&&(f=g);var z=Object.getOwnPropertyDescriptor(y,g);(!z||("get"in z?!y.__esModule:z.writable||z.configurable))&&(z={enumerable:!0,get:function(){return y[g]}}),Object.defineProperty(d,f,z)}):(function(d,y,g,f){f===void 0&&(f=g),d[f]=y[g]})),r=Ea&&Ea.__setModuleDefault||(Object.create?(function(d,y){Object.defineProperty(d,"default",{enumerable:!0,value:y})}):function(d,y){d.default=y}),o=Ea&&Ea.__importStar||(function(){var d=function(y){return d=Object.getOwnPropertyNames||function(g){var f=[];for(var z in g)Object.prototype.hasOwnProperty.call(g,z)&&(f[f.length]=z);return f},d(y)};return function(y){if(y&&y.__esModule)return y;var g={};if(y!=null)for(var f=d(y),z=0;z>>24&255,z[k*4+1]=j>>>16&255,z[k*4+2]=j>>>8&255,z[k*4+3]=j&255}return z}catch{throw new Error("No SHA-512 implementation available for synchronous operation")}}s.etc.sha512Async=m;try{s.etc.sha512Sync=c}catch(d){console.debug("Could not set up synchronous SHA-512:",d)}class h{static async verifyAdvertisementSignature(y,g,f,z){try{const k=(0,u.hexToBytes)(y),j=(0,u.hexToBytes)(g),v=(0,u.hexToBytes)(z),A=this.constructAdvertSignedMessage(y,f,v);return await s.verify(j,A,k)}catch(k){return console.error("Ed25519 signature verification failed:",k),!1}}static constructAdvertSignedMessage(y,g,f){const z=(0,u.hexToBytes)(y),k=new Uint8Array(4);k[0]=g&255,k[1]=g>>8&255,k[2]=g>>16&255,k[3]=g>>24&255;const j=new Uint8Array(36+f.length);return j.set(z,0),j.set(k,32),j.set(f,36),j}static getSignedMessageDescription(y,g,f){return`Public Key: ${y} + Timestamp: ${g} (${new Date(g*1e3).toISOString()}) + App Data: ${f}`}static getSignedMessageHex(y,g,f){const z=(0,u.hexToBytes)(f),k=this.constructAdvertSignedMessage(y,g,z);return(0,u.bytesToHex)(k)}static async derivePublicKey(y){try{const g=(0,u.hexToBytes)(y);if(g.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${g.length}`);return await(0,l.derivePublicKey)(y)}catch(g){throw new Error(`Failed to derive public key: ${g instanceof Error?g.message:"Unknown error"}`)}}static derivePublicKeySync(y){try{const g=(0,u.hexToBytes)(y);throw g.length!==64?new Error(`Invalid private key length: expected 64 bytes, got ${g.length}`):new Error("Synchronous key derivation not supported with WASM. Use derivePublicKey() instead.")}catch(g){throw new Error(`Failed to derive public key: ${g instanceof Error?g.message:"Unknown error"}`)}}static async validateKeyPair(y,g){try{return await(0,l.validateKeyPair)(y,g)}catch{return!1}}}return Ea.Ed25519SignatureVerifier=h,Ea}var kg;function pj(){if(kg)return xr;kg=1,Object.defineProperty(xr,"__esModule",{value:!0}),xr.AdvertPayloadDecoder=void 0;const a=ua(),r=Ii(),o=Nr(),s=Gb();class u{static decode(m,c){try{if(m.length<101){const A={type:a.PayloadType.Advert,version:a.PayloadVersion.Version1,isValid:!1,errors:["Advertisement payload too short"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:a.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}};return c!=null&&c.includeSegments&&(A.segments=[{name:"Invalid Advert Data",description:"Advert payload too short (minimum 101 bytes required)",startByte:c.segmentOffset||0,endByte:(c.segmentOffset||0)+m.length-1,value:(0,r.bytesToHex)(m)}]),A}const h=[],d=(c==null?void 0:c.segmentOffset)||0;let y=0;const g=(0,r.bytesToHex)(m.subarray(y,y+32));c!=null&&c.includeSegments&&h.push({name:"Public Key",description:"Ed25519 public key",startByte:d+y,endByte:d+y+31,value:g}),y+=32;const f=this.readUint32LE(m,y);if(c!=null&&c.includeSegments){const A=new Date(f*1e3);h.push({name:"Timestamp",description:`${f} (${A.toISOString().slice(0,19)}Z)`,startByte:d+y,endByte:d+y+3,value:(0,r.bytesToHex)(m.subarray(y,y+4))})}y+=4;const z=(0,r.bytesToHex)(m.subarray(y,y+64));c!=null&&c.includeSegments&&h.push({name:"Signature",description:"Ed25519 signature",startByte:d+y,endByte:d+y+63,value:z}),y+=64;const k=m[y];if(c!=null&&c.includeSegments){const A=k.toString(2).padStart(8,"0"),C=this.parseDeviceRole(k),_=` | Bits 0-3 (Role): ${(0,o.getDeviceRoleName)(C)} | Bit 4 (Location): ${k&a.AdvertFlags.HasLocation?"Yes":"No"} | Bit 7 (Name): ${k&a.AdvertFlags.HasName?"Yes":"No"}`;h.push({name:"App Flags",description:`Binary: ${A}${_}`,startByte:d+y,endByte:d+y,value:k.toString(16).padStart(2,"0").toUpperCase()})}y+=1;const j={type:a.PayloadType.Advert,version:a.PayloadVersion.Version1,isValid:!0,publicKey:g,timestamp:f,signature:z,appData:{flags:k,deviceRole:this.parseDeviceRole(k),hasLocation:!!(k&a.AdvertFlags.HasLocation),hasName:!!(k&a.AdvertFlags.HasName)}};let v=y;if(k&a.AdvertFlags.HasLocation&&m.length>=v+8){const A=this.readInt32LE(m,v)/1e6,C=this.readInt32LE(m,v+4)/1e6;j.appData.location={latitude:Math.round(A*1e6)/1e6,longitude:Math.round(C*1e6)/1e6},c!=null&&c.includeSegments&&(h.push({name:"Latitude",description:`${A}° (${A})`,startByte:d+v,endByte:d+v+3,value:(0,r.bytesToHex)(m.subarray(v,v+4))}),h.push({name:"Longitude",description:`${C}° (${C})`,startByte:d+v+4,endByte:d+v+7,value:(0,r.bytesToHex)(m.subarray(v+4,v+8))})),v+=8}if(k&a.AdvertFlags.HasFeature1&&(v+=2),k&a.AdvertFlags.HasFeature2&&(v+=2),k&a.AdvertFlags.HasName&&m.length>v){const A=m.subarray(v),C=new TextDecoder("utf-8").decode(A).replace(/\0.*$/,"");j.appData.name=this.sanitizeControlCharacters(C)||C,c!=null&&c.includeSegments&&h.push({name:"Node Name",description:`Node name: "${j.appData.name}"`,startByte:d+v,endByte:d+m.length-1,value:(0,r.bytesToHex)(A)})}return c!=null&&c.includeSegments&&(j.segments=h),j}catch(h){return{type:a.PayloadType.Advert,version:a.PayloadVersion.Version1,isValid:!1,errors:[h instanceof Error?h.message:"Failed to decode advertisement payload"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:a.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}}}}static async decodeWithVerification(m,c){const h=this.decode(m,c);if(!h||!h.isValid)return h;try{const y=m.subarray(100),g=(0,r.bytesToHex)(y),f=await s.Ed25519SignatureVerifier.verifyAdvertisementSignature(h.publicKey,h.signature,h.timestamp,g);h.signatureValid=f,f||(h.signatureError="Ed25519 signature verification failed",h.isValid=!1,h.errors||(h.errors=[]),h.errors.push("Invalid Ed25519 signature"))}catch(d){h.signatureValid=!1,h.signatureError=d instanceof Error?d.message:"Signature verification error",h.isValid=!1,h.errors||(h.errors=[]),h.errors.push("Signature verification failed: "+(d instanceof Error?d.message:"Unknown error"))}return h}static parseDeviceRole(m){switch(m&15){case 1:return a.DeviceRole.ChatNode;case 2:return a.DeviceRole.Repeater;case 3:return a.DeviceRole.RoomServer;case 4:return a.DeviceRole.Sensor;default:return a.DeviceRole.ChatNode}}static readUint32LE(m,c){return m[c]|m[c+1]<<8|m[c+2]<<16|m[c+3]<<24}static readInt32LE(m,c){const h=this.readUint32LE(m,c);return h>2147483647?h-4294967296:h}static sanitizeControlCharacters(m){return m&&m.trim().replace(/[\x00-\x1F\x7F]/g,"")||null}}return xr.AdvertPayloadDecoder=u,xr}var zr={},wg;function mj(){if(wg)return zr;wg=1,Object.defineProperty(zr,"__esModule",{value:!0}),zr.TracePayloadDecoder=void 0;const a=ua(),r=Ii();class o{static decode(u,l,m){try{if(u.length<9){const C={type:a.PayloadType.Trace,version:a.PayloadVersion.Version1,isValid:!1,errors:["Trace payload too short (need at least tag(4) + auth(4) + flags(1))"],traceTag:"00000000",authCode:0,flags:0,pathHashes:[]};return m!=null&&m.includeSegments&&(C.segments=[{name:"Invalid Trace Data",description:"Trace payload too short (minimum 9 bytes required)",startByte:m.segmentOffset||0,endByte:(m.segmentOffset||0)+u.length-1,value:(0,r.bytesToHex)(u)}]),C}let c=0;const h=[],d=(m==null?void 0:m.segmentOffset)||0,y=this.readUint32LE(u,c),g=(0,r.numberToHex)(y,8);m!=null&&m.includeSegments&&h.push({name:"Trace Tag",description:`Unique identifier for this trace: 0x${y.toString(16).padStart(8,"0")}`,startByte:d+c,endByte:d+c+3,value:(0,r.bytesToHex)(u.slice(c,c+4))}),c+=4;const f=this.readUint32LE(u,c);m!=null&&m.includeSegments&&h.push({name:"Auth Code",description:`Authentication/verification code: ${f}`,startByte:d+c,endByte:d+c+3,value:(0,r.bytesToHex)(u.slice(c,c+4))}),c+=4;const z=u[c];m!=null&&m.includeSegments&&h.push({name:"Flags",description:`Application-defined control flags: 0x${z.toString(16).padStart(2,"0")} (${z.toString(2).padStart(8,"0")}b)`,startByte:d+c,endByte:d+c,value:z.toString(16).padStart(2,"0").toUpperCase()}),c+=1;const k=[],j=c;for(;c0){const C=k.join(" ");h.push({name:"Path Hashes",description:`Node hashes in trace path: ${C}`,startByte:d+j,endByte:d+u.length-1,value:(0,r.bytesToHex)(u.slice(j))})}let v;l&&l.length>0&&(v=l.map(C=>{const w=parseInt(C,16);return(w>127?w-256:w)/4}));const A={type:a.PayloadType.Trace,version:a.PayloadVersion.Version1,isValid:!0,traceTag:g,authCode:f,flags:z,pathHashes:k,snrValues:v};return m!=null&&m.includeSegments&&(A.segments=h),A}catch(c){return{type:a.PayloadType.Trace,version:a.PayloadVersion.Version1,isValid:!1,errors:[c instanceof Error?c.message:"Failed to decode trace payload"],traceTag:"00000000",authCode:0,flags:0,pathHashes:[]}}}static readUint32LE(u,l){return u[l]|u[l+1]<<8|u[l+2]<<16|u[l+3]<<24}}return zr.TracePayloadDecoder=o,zr}var qr={},xg;function hj(){if(xg)return qr;xg=1,Object.defineProperty(qr,"__esModule",{value:!0}),qr.GroupTextPayloadDecoder=void 0;const a=ua(),r=Yu(),o=Ii();class s{static decode(l,m){try{if(l.length<3){const k={type:a.PayloadType.GroupText,version:a.PayloadVersion.Version1,isValid:!1,errors:["GroupText payload too short (need at least channel_hash(1) + MAC(2))"],channelHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return m!=null&&m.includeSegments&&(k.segments=[{name:"Invalid GroupText Data",description:"GroupText payload too short (minimum 3 bytes required)",startByte:m.segmentOffset||0,endByte:(m.segmentOffset||0)+l.length-1,value:(0,o.bytesToHex)(l)}]),k}const c=[],h=(m==null?void 0:m.segmentOffset)||0;let d=0;const y=(0,o.byteToHex)(l[d]);m!=null&&m.includeSegments&&c.push({name:"Channel Hash",description:"First byte of SHA256 of channel's shared key",startByte:h+d,endByte:h+d,value:y}),d+=1;const g=(0,o.bytesToHex)(l.subarray(d,d+2));m!=null&&m.includeSegments&&c.push({name:"Cipher MAC",description:"MAC for encrypted data",startByte:h+d,endByte:h+d+1,value:g}),d+=2;const f=(0,o.bytesToHex)(l.subarray(d));m!=null&&m.includeSegments&&l.length>d&&c.push({name:"Ciphertext",description:"Encrypted message content (timestamp + flags + message)",startByte:h+d,endByte:h+l.length-1,value:f});const z={type:a.PayloadType.GroupText,version:a.PayloadVersion.Version1,isValid:!0,channelHash:y,cipherMac:g,ciphertext:f,ciphertextLength:l.length-3};if(m!=null&&m.keyStore&&m.keyStore.hasChannelKey(y)){const k=m.keyStore.getChannelKeys(y);for(const j of k){const v=r.ChannelCrypto.decryptGroupTextMessage(f,g,j);if(v.success&&v.data){z.decrypted={timestamp:v.data.timestamp,flags:v.data.flags,sender:v.data.sender,message:v.data.message};break}}}return m!=null&&m.includeSegments&&(z.segments=c),z}catch(c){return{type:a.PayloadType.GroupText,version:a.PayloadVersion.Version1,isValid:!1,errors:[c instanceof Error?c.message:"Failed to decode GroupText payload"],channelHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return qr.GroupTextPayloadDecoder=s,qr}var jr={},zg;function gj(){if(zg)return jr;zg=1,Object.defineProperty(jr,"__esModule",{value:!0}),jr.RequestPayloadDecoder=void 0;const a=ua(),r=Ii();class o{static decode(u,l){try{if(u.length<4){const k={type:a.PayloadType.Request,version:a.PayloadVersion.Version1,isValid:!1,errors:["Request payload too short (minimum 4 bytes: dest hash + source hash + MAC)"],timestamp:0,requestType:a.RequestType.GetStats,requestData:"",destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:""};return l!=null&&l.includeSegments&&(k.segments=[{name:"Invalid Request Data",description:"Request payload too short (minimum 4 bytes required: 1 for dest hash + 1 for source hash + 2 for MAC)",startByte:l.segmentOffset||0,endByte:(l.segmentOffset||0)+u.length-1,value:(0,r.bytesToHex)(u)}]),k}const m=[],c=(l==null?void 0:l.segmentOffset)||0;let h=0;const d=(0,r.bytesToHex)(u.subarray(h,h+1));l!=null&&l.includeSegments&&m.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${d}`,startByte:c+h,endByte:c+h,value:d}),h+=1;const y=(0,r.bytesToHex)(u.subarray(h,h+1));l!=null&&l.includeSegments&&m.push({name:"Source Hash",description:`First byte of source node public key: 0x${y}`,startByte:c+h,endByte:c+h,value:y}),h+=1;const g=(0,r.bytesToHex)(u.subarray(h,h+2));l!=null&&l.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:c+h,endByte:c+h+1,value:g}),h+=2;const f=(0,r.bytesToHex)(u.subarray(h));l!=null&&l.includeSegments&&u.length>h&&m.push({name:"Ciphertext",description:`Encrypted message data (${u.length-h} bytes). Contains encrypted plaintext with this structure: + */return o.mode.CTRGladman=(function(){var s=o.lib.BlockCipherMode.extend();function u(c){if((c>>24&255)===255){var h=c>>16&255,d=c>>8&255,y=c&255;h===255?(h=0,d===255?(d=0,y===255?y=0:++y):++d):++h,c=0,c+=h<<16,c+=d<<8,c+=y}else c+=1<<24;return c}function l(c){return(c[0]=u(c[0]))===0&&(c[1]=u(c[1])),c}var m=s.Encryptor=s.extend({processBlock:function(c,h){var d=this._cipher,y=d.blockSize,g=this._iv,f=this._counter;g&&(f=this._counter=g.slice(0),this._iv=void 0),l(f);var z=f.slice(0);d.encryptBlock(z,0);for(var k=0;k>>2]|=c<<24-h%4*8,s.sigBytes+=c},unpad:function(s){var u=s.words[s.sigBytes-1>>>2]&255;s.sigBytes-=u}},o.pad.Ansix923})})(_t)),_t.exports}var Dt={exports:{}},zq=Dt.exports,Yh;function qq(){return Yh||(Yh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(zq,function(o){return o.pad.Iso10126={pad:function(s,u){var l=u*4,m=l-s.sigBytes%l;s.concat(o.lib.WordArray.random(m-1)).concat(o.lib.WordArray.create([m<<24],1))},unpad:function(s){var u=s.words[s.sigBytes-1>>>2]&255;s.sigBytes-=u}},o.pad.Iso10126})})(Dt)),Dt.exports}var Ft={exports:{}},jq=Ft.exports,Zh;function Aq(){return Zh||(Zh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(jq,function(o){return o.pad.Iso97971={pad:function(s,u){s.concat(o.lib.WordArray.create([2147483648],1)),o.pad.ZeroPadding.pad(s,u)},unpad:function(s){o.pad.ZeroPadding.unpad(s),s.sigBytes--}},o.pad.Iso97971})})(Ft)),Ft.exports}var Rt={exports:{}},Cq=Rt.exports,Xh;function Eq(){return Xh||(Xh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(Cq,function(o){return o.pad.ZeroPadding={pad:function(s,u){var l=u*4;s.clamp(),s.sigBytes+=l-(s.sigBytes%l||l)},unpad:function(s){for(var u=s.words,l=s.sigBytes-1,l=s.sigBytes-1;l>=0;l--)if(u[l>>>2]>>>24-l%4*8&255){s.sigBytes=l+1;break}}},o.pad.ZeroPadding})})(Rt)),Rt.exports}var Tt={exports:{}},Sq=Tt.exports,Jh;function Bq(){return Jh||(Jh=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(Sq,function(o){return o.pad.NoPadding={pad:function(){},unpad:function(){}},o.pad.NoPadding})})(Tt)),Tt.exports}var Pt={exports:{}},_q=Pt.exports,eg;function Dq(){return eg||(eg=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Ri())})(_q,function(o){return(function(s){var u=o,l=u.lib,m=l.CipherParams,c=u.enc,h=c.Hex,d=u.format;d.Hex={stringify:function(y){return y.ciphertext.toString(h)},parse:function(y){var g=h.parse(y);return m.create({ciphertext:g})}}})(),o.format.Hex})})(Pt)),Pt.exports}var Nt={exports:{}},Fq=Nt.exports,ig;function Rq(){return ig||(ig=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Fq,function(o){return(function(){var s=o,u=s.lib,l=u.BlockCipher,m=s.algo,c=[],h=[],d=[],y=[],g=[],f=[],z=[],k=[],j=[],v=[];(function(){for(var w=[],_=0;_<256;_++)_<128?w[_]=_<<1:w[_]=_<<1^283;for(var x=0,D=0,_=0;_<256;_++){var R=D^D<<1^D<<2^D<<3^D<<4;R=R>>>8^R&255^99,c[x]=R,h[R]=x;var F=w[x],O=w[F],N=w[O],T=w[R]*257^R*16843008;d[x]=T<<24|T>>>8,y[x]=T<<16|T>>>16,g[x]=T<<8|T>>>24,f[x]=T;var T=N*16843009^O*65537^F*257^x*16843008;z[R]=T<<24|T>>>8,k[R]=T<<16|T>>>16,j[R]=T<<8|T>>>24,v[R]=T,x?(x=F^w[w[w[N^F]]],D^=w[w[D]]):x=D=1}})();var A=[0,1,2,4,8,16,32,64,128,27,54],C=m.AES=l.extend({_doReset:function(){var w;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var _=this._keyPriorReset=this._key,x=_.words,D=_.sigBytes/4,R=this._nRounds=D+6,F=(R+1)*4,O=this._keySchedule=[],N=0;N6&&N%D==4&&(w=c[w>>>24]<<24|c[w>>>16&255]<<16|c[w>>>8&255]<<8|c[w&255]):(w=w<<8|w>>>24,w=c[w>>>24]<<24|c[w>>>16&255]<<16|c[w>>>8&255]<<8|c[w&255],w^=A[N/D|0]<<24),O[N]=O[N-D]^w);for(var T=this._invKeySchedule=[],W=0;W>>24]]^k[c[w>>>16&255]]^j[c[w>>>8&255]]^v[c[w&255]]}}},encryptBlock:function(w,_){this._doCryptBlock(w,_,this._keySchedule,d,y,g,f,c)},decryptBlock:function(w,_){var x=w[_+1];w[_+1]=w[_+3],w[_+3]=x,this._doCryptBlock(w,_,this._invKeySchedule,z,k,j,v,h);var x=w[_+1];w[_+1]=w[_+3],w[_+3]=x},_doCryptBlock:function(w,_,x,D,R,F,O,N){for(var T=this._nRounds,W=w[_]^x[0],H=w[_+1]^x[1],K=w[_+2]^x[2],ae=w[_+3]^x[3],X=4,ne=1;ne>>24]^R[H>>>16&255]^F[K>>>8&255]^O[ae&255]^x[X++],oe=D[H>>>24]^R[K>>>16&255]^F[ae>>>8&255]^O[W&255]^x[X++],ee=D[K>>>24]^R[ae>>>16&255]^F[W>>>8&255]^O[H&255]^x[X++],q=D[ae>>>24]^R[W>>>16&255]^F[H>>>8&255]^O[K&255]^x[X++];W=$,H=oe,K=ee,ae=q}var $=(N[W>>>24]<<24|N[H>>>16&255]<<16|N[K>>>8&255]<<8|N[ae&255])^x[X++],oe=(N[H>>>24]<<24|N[K>>>16&255]<<16|N[ae>>>8&255]<<8|N[W&255])^x[X++],ee=(N[K>>>24]<<24|N[ae>>>16&255]<<16|N[W>>>8&255]<<8|N[H&255])^x[X++],q=(N[ae>>>24]<<24|N[W>>>16&255]<<16|N[H>>>8&255]<<8|N[K&255])^x[X++];w[_]=$,w[_+1]=oe,w[_+2]=ee,w[_+3]=q},keySize:256/32});s.AES=l._createHelper(C)})(),o.AES})})(Nt)),Nt.exports}var It={exports:{}},Tq=It.exports,ag;function Pq(){return ag||(ag=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Tq,function(o){return(function(){var s=o,u=s.lib,l=u.WordArray,m=u.BlockCipher,c=s.algo,h=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],d=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],y=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],g=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],f=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],z=c.DES=m.extend({_doReset:function(){for(var A=this._key,C=A.words,w=[],_=0;_<56;_++){var x=h[_]-1;w[_]=C[x>>>5]>>>31-x%32&1}for(var D=this._subKeys=[],R=0;R<16;R++){for(var F=D[R]=[],O=y[R],_=0;_<24;_++)F[_/6|0]|=w[(d[_]-1+O)%28]<<31-_%6,F[4+(_/6|0)]|=w[28+(d[_+24]-1+O)%28]<<31-_%6;F[0]=F[0]<<1|F[0]>>>31;for(var _=1;_<7;_++)F[_]=F[_]>>>(_-1)*4+3;F[7]=F[7]<<5|F[7]>>>27}for(var N=this._invSubKeys=[],_=0;_<16;_++)N[_]=D[15-_]},encryptBlock:function(A,C){this._doCryptBlock(A,C,this._subKeys)},decryptBlock:function(A,C){this._doCryptBlock(A,C,this._invSubKeys)},_doCryptBlock:function(A,C,w){this._lBlock=A[C],this._rBlock=A[C+1],k.call(this,4,252645135),k.call(this,16,65535),j.call(this,2,858993459),j.call(this,8,16711935),k.call(this,1,1431655765);for(var _=0;_<16;_++){for(var x=w[_],D=this._lBlock,R=this._rBlock,F=0,O=0;O<8;O++)F|=g[O][((R^x[O])&f[O])>>>0];this._lBlock=R,this._rBlock=D^F}var N=this._lBlock;this._lBlock=this._rBlock,this._rBlock=N,k.call(this,1,1431655765),j.call(this,8,16711935),j.call(this,2,858993459),k.call(this,16,65535),k.call(this,4,252645135),A[C]=this._lBlock,A[C+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function k(A,C){var w=(this._lBlock>>>A^this._rBlock)&C;this._rBlock^=w,this._lBlock^=w<>>A^this._lBlock)&C;this._lBlock^=w,this._rBlock^=w<192.");var w=C.slice(0,2),_=C.length<4?C.slice(0,2):C.slice(2,4),x=C.length<6?C.slice(0,2):C.slice(4,6);this._des1=z.createEncryptor(l.create(w)),this._des2=z.createEncryptor(l.create(_)),this._des3=z.createEncryptor(l.create(x))},encryptBlock:function(A,C){this._des1.encryptBlock(A,C),this._des2.decryptBlock(A,C),this._des3.encryptBlock(A,C)},decryptBlock:function(A,C){this._des3.decryptBlock(A,C),this._des2.encryptBlock(A,C),this._des1.decryptBlock(A,C)},keySize:192/32,ivSize:64/32,blockSize:64/32});s.TripleDES=m._createHelper(v)})(),o.TripleDES})})(It)),It.exports}var Mt={exports:{}},Nq=Mt.exports,ng;function Iq(){return ng||(ng=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Nq,function(o){return(function(){var s=o,u=s.lib,l=u.StreamCipher,m=s.algo,c=m.RC4=l.extend({_doReset:function(){for(var y=this._key,g=y.words,f=y.sigBytes,z=this._S=[],k=0;k<256;k++)z[k]=k;for(var k=0,j=0;k<256;k++){var v=k%f,A=g[v>>>2]>>>24-v%4*8&255;j=(j+z[k]+A)%256;var C=z[k];z[k]=z[j],z[j]=C}this._i=this._j=0},_doProcessBlock:function(y,g){y[g]^=h.call(this)},keySize:256/32,ivSize:0});function h(){for(var y=this._S,g=this._i,f=this._j,z=0,k=0;k<4;k++){g=(g+1)%256,f=(f+y[g])%256;var j=y[g];y[g]=y[f],y[f]=j,z|=y[(y[g]+y[f])%256]<<24-k*8}return this._i=g,this._j=f,z}s.RC4=l._createHelper(c);var d=m.RC4Drop=c.extend({cfg:c.cfg.extend({drop:192}),_doReset:function(){c._doReset.call(this);for(var y=this.cfg.drop;y>0;y--)h.call(this)}});s.RC4Drop=l._createHelper(d)})(),o.RC4})})(Mt)),Mt.exports}var Ot={exports:{}},Mq=Ot.exports,og;function Oq(){return og||(og=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Mq,function(o){return(function(){var s=o,u=s.lib,l=u.StreamCipher,m=s.algo,c=[],h=[],d=[],y=m.Rabbit=l.extend({_doReset:function(){for(var f=this._key.words,z=this.cfg.iv,k=0;k<4;k++)f[k]=(f[k]<<8|f[k]>>>24)&16711935|(f[k]<<24|f[k]>>>8)&4278255360;var j=this._X=[f[0],f[3]<<16|f[2]>>>16,f[1],f[0]<<16|f[3]>>>16,f[2],f[1]<<16|f[0]>>>16,f[3],f[2]<<16|f[1]>>>16],v=this._C=[f[2]<<16|f[2]>>>16,f[0]&4294901760|f[1]&65535,f[3]<<16|f[3]>>>16,f[1]&4294901760|f[2]&65535,f[0]<<16|f[0]>>>16,f[2]&4294901760|f[3]&65535,f[1]<<16|f[1]>>>16,f[3]&4294901760|f[0]&65535];this._b=0;for(var k=0;k<4;k++)g.call(this);for(var k=0;k<8;k++)v[k]^=j[k+4&7];if(z){var A=z.words,C=A[0],w=A[1],_=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360,x=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,D=_>>>16|x&4294901760,R=x<<16|_&65535;v[0]^=_,v[1]^=D,v[2]^=x,v[3]^=R,v[4]^=_,v[5]^=D,v[6]^=x,v[7]^=R;for(var k=0;k<4;k++)g.call(this)}},_doProcessBlock:function(f,z){var k=this._X;g.call(this),c[0]=k[0]^k[5]>>>16^k[3]<<16,c[1]=k[2]^k[7]>>>16^k[5]<<16,c[2]=k[4]^k[1]>>>16^k[7]<<16,c[3]=k[6]^k[3]>>>16^k[1]<<16;for(var j=0;j<4;j++)c[j]=(c[j]<<8|c[j]>>>24)&16711935|(c[j]<<24|c[j]>>>8)&4278255360,f[z+j]^=c[j]},blockSize:128/32,ivSize:64/32});function g(){for(var f=this._X,z=this._C,k=0;k<8;k++)h[k]=z[k];z[0]=z[0]+1295307597+this._b|0,z[1]=z[1]+3545052371+(z[0]>>>0>>0?1:0)|0,z[2]=z[2]+886263092+(z[1]>>>0>>0?1:0)|0,z[3]=z[3]+1295307597+(z[2]>>>0>>0?1:0)|0,z[4]=z[4]+3545052371+(z[3]>>>0>>0?1:0)|0,z[5]=z[5]+886263092+(z[4]>>>0>>0?1:0)|0,z[6]=z[6]+1295307597+(z[5]>>>0>>0?1:0)|0,z[7]=z[7]+3545052371+(z[6]>>>0>>0?1:0)|0,this._b=z[7]>>>0>>0?1:0;for(var k=0;k<8;k++){var j=f[k]+z[k],v=j&65535,A=j>>>16,C=((v*v>>>17)+v*A>>>15)+A*A,w=((j&4294901760)*j|0)+((j&65535)*j|0);d[k]=C^w}f[0]=d[0]+(d[7]<<16|d[7]>>>16)+(d[6]<<16|d[6]>>>16)|0,f[1]=d[1]+(d[0]<<8|d[0]>>>24)+d[7]|0,f[2]=d[2]+(d[1]<<16|d[1]>>>16)+(d[0]<<16|d[0]>>>16)|0,f[3]=d[3]+(d[2]<<8|d[2]>>>24)+d[1]|0,f[4]=d[4]+(d[3]<<16|d[3]>>>16)+(d[2]<<16|d[2]>>>16)|0,f[5]=d[5]+(d[4]<<8|d[4]>>>24)+d[3]|0,f[6]=d[6]+(d[5]<<16|d[5]>>>16)+(d[4]<<16|d[4]>>>16)|0,f[7]=d[7]+(d[6]<<8|d[6]>>>24)+d[5]|0}s.Rabbit=l._createHelper(y)})(),o.Rabbit})})(Ot)),Ot.exports}var Lt={exports:{}},Lq=Lt.exports,rg;function Hq(){return rg||(rg=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Lq,function(o){return(function(){var s=o,u=s.lib,l=u.StreamCipher,m=s.algo,c=[],h=[],d=[],y=m.RabbitLegacy=l.extend({_doReset:function(){var f=this._key.words,z=this.cfg.iv,k=this._X=[f[0],f[3]<<16|f[2]>>>16,f[1],f[0]<<16|f[3]>>>16,f[2],f[1]<<16|f[0]>>>16,f[3],f[2]<<16|f[1]>>>16],j=this._C=[f[2]<<16|f[2]>>>16,f[0]&4294901760|f[1]&65535,f[3]<<16|f[3]>>>16,f[1]&4294901760|f[2]&65535,f[0]<<16|f[0]>>>16,f[2]&4294901760|f[3]&65535,f[1]<<16|f[1]>>>16,f[3]&4294901760|f[0]&65535];this._b=0;for(var v=0;v<4;v++)g.call(this);for(var v=0;v<8;v++)j[v]^=k[v+4&7];if(z){var A=z.words,C=A[0],w=A[1],_=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360,x=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,D=_>>>16|x&4294901760,R=x<<16|_&65535;j[0]^=_,j[1]^=D,j[2]^=x,j[3]^=R,j[4]^=_,j[5]^=D,j[6]^=x,j[7]^=R;for(var v=0;v<4;v++)g.call(this)}},_doProcessBlock:function(f,z){var k=this._X;g.call(this),c[0]=k[0]^k[5]>>>16^k[3]<<16,c[1]=k[2]^k[7]>>>16^k[5]<<16,c[2]=k[4]^k[1]>>>16^k[7]<<16,c[3]=k[6]^k[3]>>>16^k[1]<<16;for(var j=0;j<4;j++)c[j]=(c[j]<<8|c[j]>>>24)&16711935|(c[j]<<24|c[j]>>>8)&4278255360,f[z+j]^=c[j]},blockSize:128/32,ivSize:64/32});function g(){for(var f=this._X,z=this._C,k=0;k<8;k++)h[k]=z[k];z[0]=z[0]+1295307597+this._b|0,z[1]=z[1]+3545052371+(z[0]>>>0>>0?1:0)|0,z[2]=z[2]+886263092+(z[1]>>>0>>0?1:0)|0,z[3]=z[3]+1295307597+(z[2]>>>0>>0?1:0)|0,z[4]=z[4]+3545052371+(z[3]>>>0>>0?1:0)|0,z[5]=z[5]+886263092+(z[4]>>>0>>0?1:0)|0,z[6]=z[6]+1295307597+(z[5]>>>0>>0?1:0)|0,z[7]=z[7]+3545052371+(z[6]>>>0>>0?1:0)|0,this._b=z[7]>>>0>>0?1:0;for(var k=0;k<8;k++){var j=f[k]+z[k],v=j&65535,A=j>>>16,C=((v*v>>>17)+v*A>>>15)+A*A,w=((j&4294901760)*j|0)+((j&65535)*j|0);d[k]=C^w}f[0]=d[0]+(d[7]<<16|d[7]>>>16)+(d[6]<<16|d[6]>>>16)|0,f[1]=d[1]+(d[0]<<8|d[0]>>>24)+d[7]|0,f[2]=d[2]+(d[1]<<16|d[1]>>>16)+(d[0]<<16|d[0]>>>16)|0,f[3]=d[3]+(d[2]<<8|d[2]>>>24)+d[1]|0,f[4]=d[4]+(d[3]<<16|d[3]>>>16)+(d[2]<<16|d[2]>>>16)|0,f[5]=d[5]+(d[4]<<8|d[4]>>>24)+d[3]|0,f[6]=d[6]+(d[5]<<16|d[5]>>>16)+(d[4]<<16|d[4]>>>16)|0,f[7]=d[7]+(d[6]<<8|d[6]>>>24)+d[5]|0}s.RabbitLegacy=l._createHelper(y)})(),o.RabbitLegacy})})(Lt)),Lt.exports}var Ht={exports:{}},Vq=Ht.exports,sg;function Uq(){return sg||(sg=1,(function(a,r){(function(o,s,u){a.exports=s(Ie(),Xn(),Jn(),Cn(),Ri())})(Vq,function(o){return(function(){var s=o,u=s.lib,l=u.BlockCipher,m=s.algo;const c=16,h=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],d=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var y={pbox:[],sbox:[]};function g(v,A){let C=A>>24&255,w=A>>16&255,_=A>>8&255,x=A&255,D=v.sbox[0][C]+v.sbox[1][w];return D=D^v.sbox[2][_],D=D+v.sbox[3][x],D}function f(v,A,C){let w=A,_=C,x;for(let D=0;D1;--D)w=w^v.pbox[D],_=g(v,w)^_,x=w,w=_,_=x;return x=w,w=_,_=x,_=_^v.pbox[1],w=w^v.pbox[0],{left:w,right:_}}function k(v,A,C){for(let R=0;R<4;R++){v.sbox[R]=[];for(let F=0;F<256;F++)v.sbox[R][F]=d[R][F]}let w=0;for(let R=0;R=C&&(w=0);let _=0,x=0,D=0;for(let R=0;R=0&&(x=x.substring(0,D));const R=x.indexOf(": ");let F,O;if(R>0&&R<50){const N=x.substring(0,R);/[:\[\]]/.test(N)?O=x:(F=N,O=x.substring(R+2))}else O=x;return{success:!0,data:{timestamp:A,flags:C,sender:F,message:O}}}catch(c){return{success:!1,error:c instanceof Error?c.message:"Decryption failed"}}}static calculateChannelHash(u){const l=(0,a.SHA256)(a.enc.Hex.parse(u));return(0,r.hexToBytes)(l.toString(a.enc.Hex))[0].toString(16).padStart(2,"0")}}return wr.ChannelCrypto=o,wr}var cg;function Fb(){if(cg)return kr;cg=1,Object.defineProperty(kr,"__esModule",{value:!0}),kr.MeshCoreKeyStore=void 0;const a=Yu();class r{constructor(s){this.nodeKeys=new Map,this.channelHashToKeys=new Map,s!=null&&s.channelSecrets&&this.addChannelSecrets(s.channelSecrets),s!=null&&s.nodeKeys&&Object.entries(s.nodeKeys).forEach(([u,l])=>{this.addNodeKey(u,l)})}addNodeKey(s,u){const l=s.toUpperCase();this.nodeKeys.set(l,u)}hasChannelKey(s){const u=s.toLowerCase();return this.channelHashToKeys.has(u)}hasNodeKey(s){const u=s.toUpperCase();return this.nodeKeys.has(u)}getChannelKeys(s){const u=s.toLowerCase();return this.channelHashToKeys.get(u)||[]}getNodeKey(s){const u=s.toUpperCase();return this.nodeKeys.get(u)}addChannelSecrets(s){for(const u of s){const l=a.ChannelCrypto.calculateChannelHash(u).toLowerCase();this.channelHashToKeys.has(l)||this.channelHashToKeys.set(l,[]),this.channelHashToKeys.get(l).push(u)}}}return kr.MeshCoreKeyStore=r,kr}var xr={},Ea={};/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Rb={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Wi,n:Vt,Gx:ug,Gy:dg,a:gu,d:yu}=Rb,$q=8n,Ha=32,Ir=64,ca=(a="")=>{throw new Error(a)},Qq=a=>typeof a=="bigint",Tb=a=>typeof a=="string",Gq=a=>a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array",Zn=(a,r)=>!Gq(a)||typeof r=="number"&&r>0&&a.length!==r?ca("Uint8Array expected"):a,hl=a=>new Uint8Array(a),Zu=a=>Uint8Array.from(a),Pb=(a,r)=>a.toString(16).padStart(r,"0"),Xu=a=>Array.from(Zn(a)).map(r=>Pb(r,2)).join(""),en={_0:48,_9:57,A:65,F:70,a:97,f:102},pg=a=>{if(a>=en._0&&a<=en._9)return a-en._0;if(a>=en.A&&a<=en.F)return a-(en.A-10);if(a>=en.a&&a<=en.f)return a-(en.a-10)},Ju=a=>{const r="hex invalid";if(!Tb(a))return ca(r);const o=a.length,s=o/2;if(o%2)return ca(r);const u=hl(s);for(let l=0,m=0;lZn(Tb(a)?Ju(a):Zu(Zn(a)),r),Nb=()=>globalThis==null?void 0:globalThis.crypto,Kq=()=>{var a;return((a=Nb())==null?void 0:a.subtle)??ca("crypto.subtle must be defined")},Mr=(...a)=>{const r=hl(a.reduce((s,u)=>s+Zn(u).length,0));let o=0;return a.forEach(s=>{r.set(s,o),o+=s.length}),r},Ib=(a=Ha)=>Nb().getRandomValues(hl(a)),Xt=BigInt,Qn=(a,r,o,s="bad number: out of range")=>Qq(a)&&r<=a&&a{const o=a%r;return o>=0n?o:r+o},Mb=a=>qe(a,Vt),Ob=(a,r)=>{(a===0n||r<=0n)&&ca("no inverse n="+a+" mod="+r);let o=qe(a,r),s=r,u=0n,l=1n;for(;o!==0n;){const m=s/o,c=s%o,h=u-l*m;s=o,o=c,u=l,l=h}return s===1n?qe(u,r):ca("no inverse")},Yq=a=>{const r=sd[a];return typeof r!="function"&&ca("hashes."+a+" not set"),r},mg=a=>a instanceof Sa?a:ca("Point expected"),Su=2n**256n,Ma=class Ma{constructor(r,o,s,u){Ln(this,"ex");Ln(this,"ey");Ln(this,"ez");Ln(this,"et");const l=Su;this.ex=Qn(r,0n,l),this.ey=Qn(o,0n,l),this.ez=Qn(s,1n,l),this.et=Qn(u,0n,l),Object.freeze(this)}static fromAffine(r){return new Ma(r.x,r.y,1n,qe(r.x*r.y))}static fromBytes(r,o=!1){const s=yu,u=Zu(Zn(r,Ha)),l=r[31];u[31]=l&-129;const m=ed(u);Qn(m,0n,o?Su:Wi);const h=qe(m*m),d=qe(h-1n),y=qe(s*h+1n);let{isValid:g,value:f}=Xq(d,y);g||ca("bad point: y not sqrt");const z=(f&1n)===1n,k=(l&128)!==0;return!o&&f===0n&&k&&ca("bad point: x==0, isLastByteOdd"),k!==z&&(f=qe(-f)),new Ma(f,m,1n,qe(f*m))}assertValidity(){const r=gu,o=yu,s=this;if(s.is0())throw new Error("bad point: ZERO");const{ex:u,ey:l,ez:m,et:c}=s,h=qe(u*u),d=qe(l*l),y=qe(m*m),g=qe(y*y),f=qe(h*r),z=qe(y*qe(f+d)),k=qe(g+qe(o*qe(h*d)));if(z!==k)throw new Error("bad point: equation left != right (1)");const j=qe(u*l),v=qe(m*c);if(j!==v)throw new Error("bad point: equation left != right (2)");return this}equals(r){const{ex:o,ey:s,ez:u}=this,{ex:l,ey:m,ez:c}=mg(r),h=qe(o*c),d=qe(l*u),y=qe(s*c),g=qe(m*u);return h===d&&y===g}is0(){return this.equals(Co)}negate(){return new Ma(qe(-this.ex),this.ey,this.ez,qe(-this.et))}double(){const{ex:r,ey:o,ez:s}=this,u=gu,l=qe(r*r),m=qe(o*o),c=qe(2n*qe(s*s)),h=qe(u*l),d=r+o,y=qe(qe(d*d)-l-m),g=h+m,f=g-c,z=h-m,k=qe(y*f),j=qe(g*z),v=qe(y*z),A=qe(f*g);return new Ma(k,j,A,v)}add(r){const{ex:o,ey:s,ez:u,et:l}=this,{ex:m,ey:c,ez:h,et:d}=mg(r),y=gu,g=yu,f=qe(o*m),z=qe(s*c),k=qe(l*g*d),j=qe(u*h),v=qe((o+s)*(m+c)-f-z),A=qe(j-k),C=qe(j+k),w=qe(z-y*f),_=qe(v*A),x=qe(C*w),D=qe(v*w),R=qe(A*C);return new Ma(_,x,R,D)}multiply(r,o=!0){if(!o&&(r===0n||this.is0()))return Co;if(Qn(r,1n,Vt),r===1n)return this;if(this.equals(nn))return lj(r).p;let s=Co,u=nn;for(let l=this;r>0n;l=l.double(),r>>=1n)r&1n?s=s.add(l):o&&(u=u.add(l));return s}toAffine(){const{ex:r,ey:o,ez:s}=this;if(this.equals(Co))return{x:0n,y:1n};const u=Ob(s,Wi);return qe(s*u)!==1n&&ca("invalid inverse"),{x:qe(r*u),y:qe(o*u)}}toBytes(){const{x:r,y:o}=this.assertValidity().toAffine(),s=Lb(o);return s[31]|=r&1n?128:0,s}toHex(){return Xu(this.toBytes())}clearCofactor(){return this.multiply(Xt($q),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let r=this.multiply(Vt/2n,!1).double();return Vt%2n&&(r=r.add(this)),r.is0()}static fromHex(r,o){return Ma.fromBytes(An(r),o)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(){return this.toBytes()}};Ln(Ma,"BASE"),Ln(Ma,"ZERO");let Sa=Ma;const nn=new Sa(ug,dg,1n,qe(ug*dg)),Co=new Sa(0n,1n,1n,0n);Sa.BASE=nn;Sa.ZERO=Co;const Lb=a=>Ju(Pb(Qn(a,0n,Su),Ir)).reverse(),ed=a=>Xt("0x"+Xu(Zu(Zn(a)).reverse())),Ia=(a,r)=>{let o=a;for(;r-- >0n;)o*=o,o%=Wi;return o},Zq=a=>{const o=a*a%Wi*a%Wi,s=Ia(o,2n)*o%Wi,u=Ia(s,1n)*a%Wi,l=Ia(u,5n)*u%Wi,m=Ia(l,10n)*l%Wi,c=Ia(m,20n)*m%Wi,h=Ia(c,40n)*c%Wi,d=Ia(h,80n)*h%Wi,y=Ia(d,80n)*h%Wi,g=Ia(y,10n)*l%Wi;return{pow_p_5_8:Ia(g,2n)*a%Wi,b2:o}},hg=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Xq=(a,r)=>{const o=qe(r*r*r),s=qe(o*o*r),u=Zq(a*s).pow_p_5_8;let l=qe(a*o*u);const m=qe(r*l*l),c=l,h=qe(l*hg),d=m===a,y=m===qe(-a),g=m===qe(-a*hg);return d&&(l=c),(y||g)&&(l=h),(qe(l)&1n)===1n&&(l=qe(-l)),{isValid:d||y,value:l}},Jt=a=>Mb(ed(a)),id=(...a)=>sd.sha512Async(...a),ad=(...a)=>Yq("sha512Sync")(...a),Hb=a=>{const r=a.slice(0,Ha);r[0]&=248,r[31]&=127,r[31]|=64;const o=a.slice(Ha,Ir),s=Jt(r),u=nn.multiply(s),l=u.toBytes();return{head:r,prefix:o,scalar:s,point:u,pointBytes:l}},nd=a=>id(An(a,Ha)).then(Hb),od=a=>Hb(ad(An(a,Ha))),Jq=a=>nd(a).then(r=>r.pointBytes),ej=a=>od(a).pointBytes,Vb=a=>id(a.hashable).then(a.finish),Ub=a=>a.finish(ad(a.hashable)),Wb=(a,r,o)=>{const{pointBytes:s,scalar:u}=a,l=Jt(r),m=nn.multiply(l).toBytes();return{hashable:Mr(m,s,o),finish:d=>{const y=Mb(l+Jt(d)*u);return Zn(Mr(m,Lb(y)),Ir)}}},ij=async(a,r)=>{const o=An(a),s=await nd(r),u=await id(s.prefix,o);return Vb(Wb(s,u,o))},aj=(a,r)=>{const o=An(a),s=od(r),u=ad(s.prefix,o);return Ub(Wb(s,u,o))},rd={zip215:!0},$b=(a,r,o,s=rd)=>{a=An(a,Ir),r=An(r),o=An(o,Ha);const{zip215:u}=s;let l,m,c,h,d=Uint8Array.of();try{l=Sa.fromHex(o,u),m=Sa.fromHex(a.slice(0,Ha),u),c=ed(a.slice(Ha,Ir)),h=nn.multiply(c,!1),d=Mr(m.toBytes(),l.toBytes(),r)}catch{}return{hashable:d,finish:g=>{if(h==null||!u&&l.isSmallOrder())return!1;const f=Jt(g);return m.add(l.multiply(f,!1)).add(h.negate()).clearCofactor().is0()}}},nj=async(a,r,o,s=rd)=>Vb($b(a,r,o,s)),oj=(a,r,o,s=rd)=>Ub($b(a,r,o,s)),sd={sha512Async:async(...a)=>{const r=Kq(),o=Mr(...a);return hl(await r.digest("SHA-512",o.buffer))},sha512Sync:void 0,bytesToHex:Xu,hexToBytes:Ju,concatBytes:Mr,mod:qe,invert:Ob,randomBytes:Ib},rj={getExtendedPublicKeyAsync:nd,getExtendedPublicKey:od,randomPrivateKey:()=>Ib(Ha),precompute:(a=8,r=nn)=>(r.multiply(3n),r)},el=8,sj=256,Qb=Math.ceil(sj/el)+1,Bu=2**(el-1),tj=()=>{const a=[];let r=nn,o=r;for(let s=0;s{const o=r.negate();return a?o:r},lj=a=>{const r=gg||(gg=tj());let o=Co,s=nn;const u=2**el,l=u,m=Xt(u-1),c=Xt(el);for(let h=0;h>=c,d>Bu&&(d-=l,a+=1n);const y=h*Bu,g=y,f=y+Math.abs(d)-1,z=h%2!==0,k=d<0;d===0?s=s.add(yg(z,r[g])):o=o.add(yg(k,r[f]))}return{p:o,f:s}},cj=Object.freeze(Object.defineProperty({__proto__:null,CURVE:Rb,ExtendedPoint:Sa,Point:Sa,etc:sd,getPublicKey:ej,getPublicKeyAsync:Jq,sign:aj,signAsync:ij,utils:rj,verify:oj,verifyAsync:nj},Symbol.toStringTag,{value:"Module"})),uj=Vg(cj);var Un={},bu={exports:{}},bg;function dj(){return bg||(bg=1,(function(a,r){var o=(()=>{var u;var s=typeof document<"u"?(u=document.currentScript)==null?void 0:u.src:void 0;return(async function(l={}){var da;var m,c=l,h=typeof window=="object",d=typeof WorkerGlobalScope<"u",y=typeof process=="object"&&((da=process.versions)==null?void 0:da.node)&&process.type!="renderer";typeof __filename<"u"?s=__filename:d&&(s=self.location.href);var g="";function f(ie){return c.locateFile?c.locateFile(ie,g):g+ie}var z,k;if(y){var j=Zt;g=__dirname+"/",k=ie=>{ie=w(ie)?new URL(ie):ie;var pe=j.readFileSync(ie);return pe},z=async(ie,pe=!0)=>{ie=w(ie)?new URL(ie):ie;var V=j.readFileSync(ie,pe?void 0:"utf8");return V},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2)}else if(h||d){try{g=new URL(".",s).href}catch{}d&&(k=ie=>{var pe=new XMLHttpRequest;return pe.open("GET",ie,!1),pe.responseType="arraybuffer",pe.send(null),new Uint8Array(pe.response)}),z=async ie=>{if(w(ie))return new Promise((V,J)=>{var re=new XMLHttpRequest;re.open("GET",ie,!0),re.responseType="arraybuffer",re.onload=()=>{if(re.status==200||re.status==0&&re.response){V(re.response);return}J(re.status)},re.onerror=J,re.send(null)});var pe=await fetch(ie,{credentials:"same-origin"});if(pe.ok)return pe.arrayBuffer();throw new Error(pe.status+" : "+pe.url)}}console.log.bind(console);var v=console.error.bind(console),A,C=!1,w=ie=>ie.startsWith("file://"),_,x,D,R,F,O=!1;function N(){var ie=D.buffer;c.HEAP8=R=new Int8Array(ie),c.HEAPU8=F=new Uint8Array(ie),c.HEAP32=new Int32Array(ie),c.HEAPU32=new Uint32Array(ie),new BigInt64Array(ie),new BigUint64Array(ie)}function T(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Fe(c.preRun.shift());be(Ae)}function W(){O=!0,ui.b()}function H(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)ce(c.postRun.shift());be(se)}var K=0,ae=null;function X(ie){var pe;K++,(pe=c.monitorRunDependencies)==null||pe.call(c,K)}function ne(ie){var V;if(K--,(V=c.monitorRunDependencies)==null||V.call(c,K),K==0&&ae){var pe=ae;ae=null,pe()}}function $(ie){var V;(V=c.onAbort)==null||V.call(c,ie),ie="Aborted("+ie+")",v(ie),C=!0,ie+=". Build with -sASSERTIONS for more info.";var pe=new WebAssembly.RuntimeError(ie);throw x==null||x(pe),pe}var oe;function ee(){return f("orlp-ed25519.wasm")}function q(ie){if(ie==oe&&A)return new Uint8Array(A);if(k)return k(ie);throw"both async and sync fetching of the wasm failed"}async function I(ie){if(!A)try{var pe=await z(ie);return new Uint8Array(pe)}catch{}return q(ie)}async function L(ie,pe){try{var V=await I(ie),J=await WebAssembly.instantiate(V,pe);return J}catch(re){v(`failed to asynchronously prepare wasm: ${re}`),$(re)}}async function Q(ie,pe,V){if(!ie&&typeof WebAssembly.instantiateStreaming=="function"&&!w(pe)&&!y)try{var J=fetch(pe,{credentials:"same-origin"}),re=await WebAssembly.instantiateStreaming(J,V);return re}catch(ye){v(`wasm streaming compile failed: ${ye}`),v("falling back to ArrayBuffer instantiation")}return L(pe,V)}function de(){return{a:ji}}async function ge(){function ie(ye,fe){return ui=ye.exports,D=ui.a,N(),oa(ui),ne(),ui}X();function pe(ye){return ie(ye.instance)}var V=de();if(c.instantiateWasm)return new Promise((ye,fe)=>{c.instantiateWasm(V,(_e,ni)=>{ye(ie(_e))})});oe??(oe=ee());var J=await Q(A,oe,V),re=pe(J);return re}var be=ie=>{for(;ie.length>0;)ie.shift()(c)},se=[],ce=ie=>se.push(ie),Ae=[],Fe=ie=>Ae.push(ie),He=ie=>qi(ie),ai=()=>Ki(),Qe=ie=>{var pe=c["_"+ie];return pe},Oe=(ie,pe)=>{R.set(ie,pe)},Me=ie=>{for(var pe=0,V=0;V=55296&&J<=57343?(pe+=4,++V):pe+=3}return pe},Xe=(ie,pe,V,J)=>{if(!(J>0))return 0;for(var re=V,ye=V+J-1,fe=0;fe=ye)break;pe[V++]=_e}else if(_e<=2047){if(V+1>=ye)break;pe[V++]=192|_e>>6,pe[V++]=128|_e&63}else if(_e<=65535){if(V+2>=ye)break;pe[V++]=224|_e>>12,pe[V++]=128|_e>>6&63,pe[V++]=128|_e&63}else{if(V+3>=ye)break;pe[V++]=240|_e>>18,pe[V++]=128|_e>>12&63,pe[V++]=128|_e>>6&63,pe[V++]=128|_e&63,fe++}}return pe[V]=0,V-re},Ve=(ie,pe,V)=>Xe(ie,F,pe,V),Ge=ie=>Mi(ie),yi=ie=>{var pe=Me(ie)+1,V=Ge(pe);return Ve(ie,V,pe),V},si=typeof TextDecoder<"u"?new TextDecoder:void 0,Le=(ie,pe=0,V=NaN)=>{for(var J=pe+V,re=pe;ie[re]&&!(re>=J);)++re;if(re-pe>16&&ie.buffer&&si)return si.decode(ie.subarray(pe,re));for(var ye="";pe>10,56320|Ce&1023)}}return ye},mi=(ie,pe)=>ie?Le(F,ie,pe):"",Gi=(ie,pe,V,J,re)=>{var ye={string:Re=>{var Ye=0;return Re!=null&&Re!==0&&(Ye=yi(Re)),Ye},array:Re=>{var Ye=Ge(Re.length);return Oe(Re,Ye),Ye}};function fe(Re){return pe==="string"?mi(Re):pe==="boolean"?!!Re:Re}var _e=Qe(ie),ni=[],Ce=0;if(J)for(var Te=0;Te{var re=!V||V.every(fe=>fe==="number"||fe==="boolean"),ye=pe!=="string";return ye&&re&&!J?Qe(ie):(...fe)=>Gi(ie,pe,V,fe)};c.noExitRuntime&&c.noExitRuntime,c.print&&c.print,c.printErr&&(v=c.printErr),c.wasmBinary&&(A=c.wasmBinary),c.arguments&&c.arguments,c.thisProgram&&c.thisProgram,c.ccall=Gi,c.cwrap=va;var qi,Mi,Ki;function oa(ie){c._orlp_derive_public_key=ie.c,c._orlp_validate_keypair=ie.d,c._orlp_sign=ie.e,c._orlp_verify=ie.f,qi=ie.g,Mi=ie.h,Ki=ie.i}var ji={},ui=await ge();function ki(){if(K>0){ae=ki;return}if(T(),K>0){ae=ki;return}function ie(){var pe;c.calledRun=!0,!C&&(W(),_==null||_(c),(pe=c.onRuntimeInitialized)==null||pe.call(c),H())}c.setStatus?(c.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>c.setStatus(""),1),ie()},1)):ie()}function _a(){if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.shift()()}return _a(),ki(),O?m=c:m=new Promise((ie,pe)=>{_=ie,x=pe}),m})})();a.exports=o,a.exports.default=o})(bu)),bu.exports}var fg;function td(){if(fg)return Un;fg=1,Object.defineProperty(Un,"__esModule",{value:!0}),Un.derivePublicKey=s,Un.validateKeyPair=u,Un.sign=l,Un.verify=m;const a=Ii(),r=dj();async function o(){return await r()}async function s(c){const h=await o(),d=(0,a.hexToBytes)(c);if(d.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${d.length}`);const y=1024,g=1088;if(h.HEAPU8.set(d,y),h.ccall("orlp_derive_public_key","number",["number","number"],[g,y])!==0)throw new Error("orlp key derivation failed: invalid private key");const z=new Uint8Array(32);return z.set(h.HEAPU8.subarray(g,g+32)),(0,a.bytesToHex)(z)}async function u(c,h){try{const d=await o(),y=(0,a.hexToBytes)(c),g=(0,a.hexToBytes)(h);if(y.length!==64||g.length!==32)return!1;const f=2048,z=2112;return d.HEAPU8.set(y,f),d.HEAPU8.set(g,z),d.ccall("orlp_validate_keypair","number",["number","number"],[z,f])===1}catch{return!1}}async function l(c,h,d){const y=await o(),g=(0,a.hexToBytes)(c),f=(0,a.hexToBytes)(h),z=(0,a.hexToBytes)(d);if(f.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${f.length}`);if(z.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${z.length}`);const k=1e5,j=2e5,v=3e5,A=4e5;y.HEAPU8.set(g,k),y.HEAPU8.set(f,j),y.HEAPU8.set(z,v),y.ccall("orlp_sign","void",["number","number","number","number","number"],[A,k,g.length,v,j]);const C=new Uint8Array(64);return C.set(y.HEAPU8.subarray(A,A+64)),(0,a.bytesToHex)(C)}async function m(c,h,d){try{const y=await o(),g=(0,a.hexToBytes)(c),f=(0,a.hexToBytes)(h),z=(0,a.hexToBytes)(d);if(g.length!==64||z.length!==32)return!1;const k=5e5,j=6e5,v=7e5;return y.HEAPU8.set(g,j),y.HEAPU8.set(f,k),y.HEAPU8.set(z,v),y.ccall("orlp_verify","number",["number","number","number","number"],[j,k,f.length,v])===1}catch{return!1}}return Un}var vg;function Gb(){if(vg)return Ea;vg=1;var a=Ea&&Ea.__createBinding||(Object.create?(function(d,y,g,f){f===void 0&&(f=g);var z=Object.getOwnPropertyDescriptor(y,g);(!z||("get"in z?!y.__esModule:z.writable||z.configurable))&&(z={enumerable:!0,get:function(){return y[g]}}),Object.defineProperty(d,f,z)}):(function(d,y,g,f){f===void 0&&(f=g),d[f]=y[g]})),r=Ea&&Ea.__setModuleDefault||(Object.create?(function(d,y){Object.defineProperty(d,"default",{enumerable:!0,value:y})}):function(d,y){d.default=y}),o=Ea&&Ea.__importStar||(function(){var d=function(y){return d=Object.getOwnPropertyNames||function(g){var f=[];for(var z in g)Object.prototype.hasOwnProperty.call(g,z)&&(f[f.length]=z);return f},d(y)};return function(y){if(y&&y.__esModule)return y;var g={};if(y!=null)for(var f=d(y),z=0;z>>24&255,z[k*4+1]=j>>>16&255,z[k*4+2]=j>>>8&255,z[k*4+3]=j&255}return z}catch{throw new Error("No SHA-512 implementation available for synchronous operation")}}s.etc.sha512Async=m;try{s.etc.sha512Sync=c}catch(d){console.debug("Could not set up synchronous SHA-512:",d)}class h{static async verifyAdvertisementSignature(y,g,f,z){try{const k=(0,u.hexToBytes)(y),j=(0,u.hexToBytes)(g),v=(0,u.hexToBytes)(z),A=this.constructAdvertSignedMessage(y,f,v);return await s.verify(j,A,k)}catch(k){return console.error("Ed25519 signature verification failed:",k),!1}}static constructAdvertSignedMessage(y,g,f){const z=(0,u.hexToBytes)(y),k=new Uint8Array(4);k[0]=g&255,k[1]=g>>8&255,k[2]=g>>16&255,k[3]=g>>24&255;const j=new Uint8Array(36+f.length);return j.set(z,0),j.set(k,32),j.set(f,36),j}static getSignedMessageDescription(y,g,f){return`Public Key: ${y} + Timestamp: ${g} (${new Date(g*1e3).toISOString()}) + App Data: ${f}`}static getSignedMessageHex(y,g,f){const z=(0,u.hexToBytes)(f),k=this.constructAdvertSignedMessage(y,g,z);return(0,u.bytesToHex)(k)}static async derivePublicKey(y){try{const g=(0,u.hexToBytes)(y);if(g.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${g.length}`);return await(0,l.derivePublicKey)(y)}catch(g){throw new Error(`Failed to derive public key: ${g instanceof Error?g.message:"Unknown error"}`)}}static derivePublicKeySync(y){try{const g=(0,u.hexToBytes)(y);throw g.length!==64?new Error(`Invalid private key length: expected 64 bytes, got ${g.length}`):new Error("Synchronous key derivation not supported with WASM. Use derivePublicKey() instead.")}catch(g){throw new Error(`Failed to derive public key: ${g instanceof Error?g.message:"Unknown error"}`)}}static async validateKeyPair(y,g){try{return await(0,l.validateKeyPair)(y,g)}catch{return!1}}}return Ea.Ed25519SignatureVerifier=h,Ea}var kg;function pj(){if(kg)return xr;kg=1,Object.defineProperty(xr,"__esModule",{value:!0}),xr.AdvertPayloadDecoder=void 0;const a=ua(),r=Ii(),o=Nr(),s=Gb();class u{static decode(m,c){try{if(m.length<101){const A={type:a.PayloadType.Advert,version:a.PayloadVersion.Version1,isValid:!1,errors:["Advertisement payload too short"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:a.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}};return c!=null&&c.includeSegments&&(A.segments=[{name:"Invalid Advert Data",description:"Advert payload too short (minimum 101 bytes required)",startByte:c.segmentOffset||0,endByte:(c.segmentOffset||0)+m.length-1,value:(0,r.bytesToHex)(m)}]),A}const h=[],d=(c==null?void 0:c.segmentOffset)||0;let y=0;const g=(0,r.bytesToHex)(m.subarray(y,y+32));c!=null&&c.includeSegments&&h.push({name:"Public Key",description:"Ed25519 public key",startByte:d+y,endByte:d+y+31,value:g}),y+=32;const f=this.readUint32LE(m,y);if(c!=null&&c.includeSegments){const A=new Date(f*1e3);h.push({name:"Timestamp",description:`${f} (${A.toISOString().slice(0,19)}Z)`,startByte:d+y,endByte:d+y+3,value:(0,r.bytesToHex)(m.subarray(y,y+4))})}y+=4;const z=(0,r.bytesToHex)(m.subarray(y,y+64));c!=null&&c.includeSegments&&h.push({name:"Signature",description:"Ed25519 signature",startByte:d+y,endByte:d+y+63,value:z}),y+=64;const k=m[y];if(c!=null&&c.includeSegments){const A=k.toString(2).padStart(8,"0"),C=this.parseDeviceRole(k),_=` | Bits 0-3 (Role): ${(0,o.getDeviceRoleName)(C)} | Bit 4 (Location): ${k&a.AdvertFlags.HasLocation?"Yes":"No"} | Bit 7 (Name): ${k&a.AdvertFlags.HasName?"Yes":"No"}`;h.push({name:"App Flags",description:`Binary: ${A}${_}`,startByte:d+y,endByte:d+y,value:k.toString(16).padStart(2,"0").toUpperCase()})}y+=1;const j={type:a.PayloadType.Advert,version:a.PayloadVersion.Version1,isValid:!0,publicKey:g,timestamp:f,signature:z,appData:{flags:k,deviceRole:this.parseDeviceRole(k),hasLocation:!!(k&a.AdvertFlags.HasLocation),hasName:!!(k&a.AdvertFlags.HasName)}};let v=y;if(k&a.AdvertFlags.HasLocation&&m.length>=v+8){const A=this.readInt32LE(m,v)/1e6,C=this.readInt32LE(m,v+4)/1e6;j.appData.location={latitude:Math.round(A*1e6)/1e6,longitude:Math.round(C*1e6)/1e6},c!=null&&c.includeSegments&&(h.push({name:"Latitude",description:`${A}° (${A})`,startByte:d+v,endByte:d+v+3,value:(0,r.bytesToHex)(m.subarray(v,v+4))}),h.push({name:"Longitude",description:`${C}° (${C})`,startByte:d+v+4,endByte:d+v+7,value:(0,r.bytesToHex)(m.subarray(v+4,v+8))})),v+=8}if(k&a.AdvertFlags.HasFeature1&&(v+=2),k&a.AdvertFlags.HasFeature2&&(v+=2),k&a.AdvertFlags.HasName&&m.length>v){const A=m.subarray(v),C=new TextDecoder("utf-8").decode(A).replace(/\0.*$/,"");j.appData.name=this.sanitizeControlCharacters(C)||C,c!=null&&c.includeSegments&&h.push({name:"Node Name",description:`Node name: "${j.appData.name}"`,startByte:d+v,endByte:d+m.length-1,value:(0,r.bytesToHex)(A)})}return c!=null&&c.includeSegments&&(j.segments=h),j}catch(h){return{type:a.PayloadType.Advert,version:a.PayloadVersion.Version1,isValid:!1,errors:[h instanceof Error?h.message:"Failed to decode advertisement payload"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:a.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}}}}static async decodeWithVerification(m,c){const h=this.decode(m,c);if(!h||!h.isValid)return h;try{const y=m.subarray(100),g=(0,r.bytesToHex)(y),f=await s.Ed25519SignatureVerifier.verifyAdvertisementSignature(h.publicKey,h.signature,h.timestamp,g);h.signatureValid=f,f||(h.signatureError="Ed25519 signature verification failed",h.isValid=!1,h.errors||(h.errors=[]),h.errors.push("Invalid Ed25519 signature"))}catch(d){h.signatureValid=!1,h.signatureError=d instanceof Error?d.message:"Signature verification error",h.isValid=!1,h.errors||(h.errors=[]),h.errors.push("Signature verification failed: "+(d instanceof Error?d.message:"Unknown error"))}return h}static parseDeviceRole(m){switch(m&15){case 1:return a.DeviceRole.ChatNode;case 2:return a.DeviceRole.Repeater;case 3:return a.DeviceRole.RoomServer;case 4:return a.DeviceRole.Sensor;default:return a.DeviceRole.ChatNode}}static readUint32LE(m,c){return m[c]|m[c+1]<<8|m[c+2]<<16|m[c+3]<<24}static readInt32LE(m,c){const h=this.readUint32LE(m,c);return h>2147483647?h-4294967296:h}static sanitizeControlCharacters(m){return m&&m.trim().replace(/[\x00-\x1F\x7F]/g,"")||null}}return xr.AdvertPayloadDecoder=u,xr}var zr={},wg;function mj(){if(wg)return zr;wg=1,Object.defineProperty(zr,"__esModule",{value:!0}),zr.TracePayloadDecoder=void 0;const a=ua(),r=Ii();class o{static decode(u,l,m){try{if(u.length<9){const C={type:a.PayloadType.Trace,version:a.PayloadVersion.Version1,isValid:!1,errors:["Trace payload too short (need at least tag(4) + auth(4) + flags(1))"],traceTag:"00000000",authCode:0,flags:0,pathHashes:[]};return m!=null&&m.includeSegments&&(C.segments=[{name:"Invalid Trace Data",description:"Trace payload too short (minimum 9 bytes required)",startByte:m.segmentOffset||0,endByte:(m.segmentOffset||0)+u.length-1,value:(0,r.bytesToHex)(u)}]),C}let c=0;const h=[],d=(m==null?void 0:m.segmentOffset)||0,y=this.readUint32LE(u,c),g=(0,r.numberToHex)(y,8);m!=null&&m.includeSegments&&h.push({name:"Trace Tag",description:`Unique identifier for this trace: 0x${y.toString(16).padStart(8,"0")}`,startByte:d+c,endByte:d+c+3,value:(0,r.bytesToHex)(u.slice(c,c+4))}),c+=4;const f=this.readUint32LE(u,c);m!=null&&m.includeSegments&&h.push({name:"Auth Code",description:`Authentication/verification code: ${f}`,startByte:d+c,endByte:d+c+3,value:(0,r.bytesToHex)(u.slice(c,c+4))}),c+=4;const z=u[c];m!=null&&m.includeSegments&&h.push({name:"Flags",description:`Application-defined control flags: 0x${z.toString(16).padStart(2,"0")} (${z.toString(2).padStart(8,"0")}b)`,startByte:d+c,endByte:d+c,value:z.toString(16).padStart(2,"0").toUpperCase()}),c+=1;const k=[],j=c;for(;c0){const C=k.join(" ");h.push({name:"Path Hashes",description:`Node hashes in trace path: ${C}`,startByte:d+j,endByte:d+u.length-1,value:(0,r.bytesToHex)(u.slice(j))})}let v;l&&l.length>0&&(v=l.map(C=>{const w=parseInt(C,16);return(w>127?w-256:w)/4}));const A={type:a.PayloadType.Trace,version:a.PayloadVersion.Version1,isValid:!0,traceTag:g,authCode:f,flags:z,pathHashes:k,snrValues:v};return m!=null&&m.includeSegments&&(A.segments=h),A}catch(c){return{type:a.PayloadType.Trace,version:a.PayloadVersion.Version1,isValid:!1,errors:[c instanceof Error?c.message:"Failed to decode trace payload"],traceTag:"00000000",authCode:0,flags:0,pathHashes:[]}}}static readUint32LE(u,l){return u[l]|u[l+1]<<8|u[l+2]<<16|u[l+3]<<24}}return zr.TracePayloadDecoder=o,zr}var qr={},xg;function hj(){if(xg)return qr;xg=1,Object.defineProperty(qr,"__esModule",{value:!0}),qr.GroupTextPayloadDecoder=void 0;const a=ua(),r=Yu(),o=Ii();class s{static decode(l,m){try{if(l.length<3){const k={type:a.PayloadType.GroupText,version:a.PayloadVersion.Version1,isValid:!1,errors:["GroupText payload too short (need at least channel_hash(1) + MAC(2))"],channelHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return m!=null&&m.includeSegments&&(k.segments=[{name:"Invalid GroupText Data",description:"GroupText payload too short (minimum 3 bytes required)",startByte:m.segmentOffset||0,endByte:(m.segmentOffset||0)+l.length-1,value:(0,o.bytesToHex)(l)}]),k}const c=[],h=(m==null?void 0:m.segmentOffset)||0;let d=0;const y=(0,o.byteToHex)(l[d]);m!=null&&m.includeSegments&&c.push({name:"Channel Hash",description:"First byte of SHA256 of channel's shared key",startByte:h+d,endByte:h+d,value:y}),d+=1;const g=(0,o.bytesToHex)(l.subarray(d,d+2));m!=null&&m.includeSegments&&c.push({name:"Cipher MAC",description:"MAC for encrypted data",startByte:h+d,endByte:h+d+1,value:g}),d+=2;const f=(0,o.bytesToHex)(l.subarray(d));m!=null&&m.includeSegments&&l.length>d&&c.push({name:"Ciphertext",description:"Encrypted message content (timestamp + flags + message)",startByte:h+d,endByte:h+l.length-1,value:f});const z={type:a.PayloadType.GroupText,version:a.PayloadVersion.Version1,isValid:!0,channelHash:y,cipherMac:g,ciphertext:f,ciphertextLength:l.length-3};if(m!=null&&m.keyStore&&m.keyStore.hasChannelKey(y)){const k=m.keyStore.getChannelKeys(y);for(const j of k){const v=r.ChannelCrypto.decryptGroupTextMessage(f,g,j);if(v.success&&v.data){z.decrypted={timestamp:v.data.timestamp,flags:v.data.flags,sender:v.data.sender,message:v.data.message};break}}}return m!=null&&m.includeSegments&&(z.segments=c),z}catch(c){return{type:a.PayloadType.GroupText,version:a.PayloadVersion.Version1,isValid:!1,errors:[c instanceof Error?c.message:"Failed to decode GroupText payload"],channelHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return qr.GroupTextPayloadDecoder=s,qr}var jr={},zg;function gj(){if(zg)return jr;zg=1,Object.defineProperty(jr,"__esModule",{value:!0}),jr.RequestPayloadDecoder=void 0;const a=ua(),r=Ii();class o{static decode(u,l){try{if(u.length<4){const k={type:a.PayloadType.Request,version:a.PayloadVersion.Version1,isValid:!1,errors:["Request payload too short (minimum 4 bytes: dest hash + source hash + MAC)"],timestamp:0,requestType:a.RequestType.GetStats,requestData:"",destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:""};return l!=null&&l.includeSegments&&(k.segments=[{name:"Invalid Request Data",description:"Request payload too short (minimum 4 bytes required: 1 for dest hash + 1 for source hash + 2 for MAC)",startByte:l.segmentOffset||0,endByte:(l.segmentOffset||0)+u.length-1,value:(0,r.bytesToHex)(u)}]),k}const m=[],c=(l==null?void 0:l.segmentOffset)||0;let h=0;const d=(0,r.bytesToHex)(u.subarray(h,h+1));l!=null&&l.includeSegments&&m.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${d}`,startByte:c+h,endByte:c+h,value:d}),h+=1;const y=(0,r.bytesToHex)(u.subarray(h,h+1));l!=null&&l.includeSegments&&m.push({name:"Source Hash",description:`First byte of source node public key: 0x${y}`,startByte:c+h,endByte:c+h,value:y}),h+=1;const g=(0,r.bytesToHex)(u.subarray(h,h+2));l!=null&&l.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:c+h,endByte:c+h+1,value:g}),h+=2;const f=(0,r.bytesToHex)(u.subarray(h));l!=null&&l.includeSegments&&u.length>h&&m.push({name:"Ciphertext",description:`Encrypted message data (${u.length-h} bytes). Contains encrypted plaintext with this structure: • Timestamp (4 bytes) - send time as unix timestamp • Request Type (1 byte) - type of request (GetStats, GetTelemetryData, etc.) • Request Data (remaining bytes) - additional request-specific data`,startByte:c+h,endByte:c+u.length-1,value:f});const z={type:a.PayloadType.Request,version:a.PayloadVersion.Version1,isValid:!0,timestamp:0,requestType:a.RequestType.GetStats,requestData:"",destinationHash:d,sourceHash:y,cipherMac:g,ciphertext:f};return l!=null&&l.includeSegments&&(z.segments=m),z}catch(m){return{type:a.PayloadType.Request,version:a.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode request payload"],timestamp:0,requestType:a.RequestType.GetStats,requestData:"",destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:""}}}}return jr.RequestPayloadDecoder=o,jr}var Ar={},qg;function yj(){if(qg)return Ar;qg=1,Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.ResponsePayloadDecoder=void 0;const a=ua(),r=Ii();class o{static decode(u,l){try{if(u.length<4){const k={type:a.PayloadType.Response,version:a.PayloadVersion.Version1,isValid:!1,errors:["Response payload too short (minimum 4 bytes: dest + source + MAC)"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return l!=null&&l.includeSegments&&(k.segments=[{name:"Invalid Response Data",description:"Response payload too short (minimum 4 bytes required)",startByte:l.segmentOffset||0,endByte:(l.segmentOffset||0)+u.length-1,value:(0,r.bytesToHex)(u)}]),k}const m=[],c=(l==null?void 0:l.segmentOffset)||0;let h=0;const d=(0,r.byteToHex)(u[h]);l!=null&&l.includeSegments&&m.push({name:"Destination Hash",description:"First byte of destination node public key",startByte:c+h,endByte:c+h,value:d}),h+=1;const y=(0,r.byteToHex)(u[h]);l!=null&&l.includeSegments&&m.push({name:"Source Hash",description:"First byte of source node public key",startByte:c+h,endByte:c+h,value:y}),h+=1;const g=(0,r.bytesToHex)(u.subarray(h,h+2));l!=null&&l.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data in next field",startByte:c+h,endByte:c+h+1,value:g}),h+=2;const f=(0,r.bytesToHex)(u.subarray(h));l!=null&&l.includeSegments&&u.length>h&&m.push({name:"Ciphertext",description:"Encrypted response data (tag + content)",startByte:c+h,endByte:c+u.length-1,value:f});const z={type:a.PayloadType.Response,version:a.PayloadVersion.Version1,isValid:!0,destinationHash:d,sourceHash:y,cipherMac:g,ciphertext:f,ciphertextLength:u.length-4};return l!=null&&l.includeSegments&&(z.segments=m),z}catch(m){return{type:a.PayloadType.Response,version:a.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode response payload"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return Ar.ResponsePayloadDecoder=o,Ar}var Cr={},jg;function bj(){if(jg)return Cr;jg=1,Object.defineProperty(Cr,"__esModule",{value:!0}),Cr.AnonRequestPayloadDecoder=void 0;const a=ua(),r=Ii();class o{static decode(u,l){try{if(u.length<35){const k={type:a.PayloadType.AnonRequest,version:a.PayloadVersion.Version1,isValid:!1,errors:["AnonRequest payload too short (minimum 35 bytes: dest + public key + MAC)"],destinationHash:"",senderPublicKey:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return l!=null&&l.includeSegments&&(k.segments=[{name:"Invalid AnonRequest Data",description:"AnonRequest payload too short (minimum 35 bytes required: 1 for dest hash + 32 for public key + 2 for MAC)",startByte:l.segmentOffset||0,endByte:(l.segmentOffset||0)+u.length-1,value:(0,r.bytesToHex)(u)}]),k}const m=[],c=(l==null?void 0:l.segmentOffset)||0;let h=0;const d=(0,r.byteToHex)(u[0]);l!=null&&l.includeSegments&&m.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${d}`,startByte:c+h,endByte:c+h,value:d}),h+=1;const y=(0,r.bytesToHex)(u.subarray(1,33));l!=null&&l.includeSegments&&m.push({name:"Sender Public Key",description:"Ed25519 public key of the sender (32 bytes)",startByte:c+h,endByte:c+h+31,value:y}),h+=32;const g=(0,r.bytesToHex)(u.subarray(33,35));l!=null&&l.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:c+h,endByte:c+h+1,value:g}),h+=2;const f=(0,r.bytesToHex)(u.subarray(35));l!=null&&l.includeSegments&&u.length>35&&m.push({name:"Ciphertext",description:`Encrypted message data (${u.length-35} bytes). Contains encrypted plaintext with this structure: @@ -534,4 +534,4 @@ fn main(@builtin(global_invocation_id) global_id: vec3) { No neighbors reported`;const r=[...a].sort((s,u)=>u.snr-s.snr),o=[`Neighbors (${r.length})`];for(const s of r){const u=s.name||s.pubkey_prefix,l=s.snr>=0?`+${s.snr.toFixed(1)}`:s.snr.toFixed(1);o.push(`${u}, ${l} dB [${Qt(s.last_heard_seconds)} ago]`)}return o.join(` `)}function Zj(a){if(a.length===0)return`ACL No ACL entries`;const r=[`ACL (${a.length})`];for(const o of a){const s=o.name||o.pubkey_prefix;r.push(`${s}: ${o.permission_name}`)}return r.join(` -`)}function Xj(a){return`${a.type}-${a.conversation_key}-${a.text}-${a.sender_timestamp}`}function Jj(){const a=window.location.hash.slice(1);if(!a)return null;if(a==="raw")return{type:"raw",name:"raw"};const r=a.indexOf("/");if(r===-1)return null;const o=a.slice(0,r),s=decodeURIComponent(a.slice(r+1));return(o==="channel"||o==="contact")&&s?{type:o,name:s}:null}function eA(a){if(!a)return"";if(a.type==="raw")return"#raw";const r=a.type==="channel"&&a.name.startsWith("#")?a.name.slice(1):a.name;return`#${a.type}/${encodeURIComponent(r)}`}function iA(){const a=S.useRef(null),r=S.useRef(null),o=S.useRef(new Set),[s,u]=S.useState(null),[l,m]=S.useState(null),[c,h]=S.useState(null),[d,y]=S.useState([]),[g,f]=S.useState([]),[z,k]=S.useState([]),[j,v]=S.useState(!1),[A,C]=S.useState(!1),[w,_]=S.useState([]),[x,D]=S.useState(null),[R,F]=S.useState(!1),[O,N]=S.useState(!1),[T,W]=S.useState(!1),[H,K]=S.useState(!1),[ae,X]=S.useState(0),[ne,$]=S.useState(!1),[oe,ee]=S.useState(!1),[q,I]=S.useState(!1),[L,Q]=S.useState(Zm),[de,ge]=S.useState({}),be=S.useRef(null),se=S.useMemo(()=>({onHealth:V=>{const J=be.current;be.current=V,u(V),J!==null&&J.radio_connected!==V.radio_connected&&(V.radio_connected?Tr.success("Radio connected",{description:V.serial_port?`Connected to ${V.serial_port}`:void 0}):Tr.error("Radio disconnected",{description:"Check radio connection and power"}))},onError:V=>{Tr.error(V.message,{description:V.details})},onContacts:V=>y(V),onChannels:V=>f(V),onMessage:V=>{const J=r.current,re=Xj(V);if(o.current.has(re)){console.debug("Duplicate message content ignored:",re.slice(0,50));return}if(o.current.add(re),o.current.size>1e3){const _e=Array.from(o.current);o.current=new Set(_e.slice(-500))}let ye=null;V.type==="CHAN"&&V.conversation_key?ye=an("channel",V.conversation_key):V.type==="PRIV"&&V.conversation_key&&(ye=an("contact",V.conversation_key));const ve=J?V.type==="CHAN"&&J.type==="channel"?V.conversation_key===J.id:V.type==="PRIV"&&J.type==="contact"?V.conversation_key&&Kg(J.id,V.conversation_key):!1:!1;if(ve&&k(_e=>_e.some(ni=>ni.id===V.id)?_e:[..._e,V]),ye){const _e=V.received_at||Math.floor(Date.now()/1e3),ni=nu(ye,_e);Q(ni),!V.outgoing&&!ve&&ge(Ce=>({...Ce,[ye]:(Ce[ye]||0)+1}))}},onContact:V=>{y(J=>{const re=J.findIndex(ye=>ye.public_key===V.public_key);if(re>=0){const ye=[...J],ve=J[re];return ye[re]={...ve,...V,name:V.name??ve.name,last_path:V.last_path??ve.last_path,lat:V.lat??ve.lat,lon:V.lon??ve.lon},ye}return[...J,V]})},onRawPacket:V=>{_(J=>{if(J.some(ye=>ye.id===V.id))return J;const re=[...J,V];return re.length>Hg?re.slice(-Hg):re})},onMessageAcked:V=>{k(J=>{const re=J.findIndex(ye=>ye.id===V);if(re>=0){const ye=[...J];return ye[re]={...J[re],acked:!0},ye}return J})}}),[]);ck(se);const ce=S.useCallback(async()=>{try{const V=await ei.getRadioConfig();m(V)}catch(V){console.error("Failed to fetch config:",V)}},[]),Ae=S.useCallback(async()=>{try{const V=await ei.getSettings();h(V)}catch(V){console.error("Failed to fetch app settings:",V)}},[]),Fe=S.useCallback(async()=>{try{const V=await ei.getUndecryptedPacketCount();X(V.count)}catch(V){console.error("Failed to fetch undecrypted count:",V)}},[]),He=200,ai=S.useCallback(async(V=!1)=>{if(!x){k([]),v(!1);return}V&&F(!0);try{const J=await ei.getMessages({type:x.type==="channel"?"CHAN":"PRIV",conversation_key:x.id,limit:He});k(J),v(J.length>=He)}catch(J){console.error("Failed to fetch messages:",J)}finally{V&&F(!1)}},[x]),Qe=S.useCallback(async()=>{if(!(!x||A||!j)){C(!0);try{const V=await ei.getMessages({type:x.type==="channel"?"CHAN":"PRIV",conversation_key:x.id,limit:He,offset:z.length});V.length>0&&k(J=>[...J,...V]),v(V.length>=He)}catch(V){console.error("Failed to fetch older messages:",V)}finally{C(!1)}}},[x,A,j,z.length]);S.useEffect(()=>{ce(),Ae(),Fe()},[ce,Ae,Fe]);const Oe=S.useCallback(()=>{const V=Jj();if(!V)return null;if(V.type==="raw")return{type:"raw",id:"raw",name:"Raw Packet Feed"};if(V.type==="channel"){const J=g.find(re=>re.name===V.name||re.name===`#${V.name}`);if(J)return{type:"channel",id:J.key,name:J.name}}if(V.type==="contact"){const J=d.find(re=>Kn(re.name,re.public_key)===V.name);if(J)return{type:"contact",id:J.public_key,name:Kn(J.name,J.public_key)}}return null},[g,d]),Me=S.useRef(!1);S.useEffect(()=>{if(Me.current||x||g.length===0&&d.length===0)return;const V=Oe();if(V){D(V),Me.current=!0;return}const J=g.find(re=>re.name==="Public");J&&(D({type:"channel",id:J.key,name:J.name}),Me.current=!0)},[g,d,x,Oe]);const Xe=S.useRef(new Set),Ve=S.useRef(new Set);S.useEffect(()=>{const V=g.filter(ye=>!Xe.current.has(ye.key)),J=d.filter(ye=>ye.public_key&&!Ve.current.has(ye.public_key));if(V.length===0&&J.length===0)return;V.forEach(ye=>Xe.current.add(ye.key)),J.forEach(ye=>Ve.current.add(ye.public_key)),(async()=>{const ye=[...V.map(ve=>({type:"CHAN",conversation_key:ve.key})),...J.map(ve=>({type:"PRIV",conversation_key:ve.public_key}))];if(ye.length!==0)try{const ve=await ei.getMessagesBulk(ye,100),_e=Yk(),ni={},Ce={};for(const Te of V){const Ue=ve[`CHAN:${Te.key}`]||[];if(Ue.length>0){const Ke=an("channel",Te.key),Oi=_e[Ke]||0,Re=Ue.filter(bi=>!bi.outgoing&&bi.received_at>Oi).length;Re>0&&(ni[Ke]=Re);const Ye=Math.max(...Ue.map(bi=>bi.received_at));Ce[Ke]=Ye,nu(Ke,Ye)}}for(const Te of J){const Ue=ve[`PRIV:${Te.public_key}`]||[];if(Ue.length>0){const Ke=an("contact",Te.public_key),Oi=_e[Ke]||0,Re=Ue.filter(bi=>!bi.outgoing&&bi.received_at>Oi).length;Re>0&&(ni[Ke]=Re);const Ye=Math.max(...Ue.map(bi=>bi.received_at));Ce[Ke]=Ye,nu(Ke,Ye)}}Object.keys(ni).length>0&&ge(Te=>({...Te,...ni})),Q(Zm())}catch(ve){console.error("Failed to fetch messages bulk:",ve)}})()},[g,d]),S.useEffect(()=>{if(r.current=x,I(!1),x&&x.type!=="raw"){const V=an(x.type,x.id),J=Math.floor(Date.now()/1e3);ou(V,J),ge(re=>{if(re[V]){const ye={...re};return delete ye[V],ye}return re})}if(x){const V=eA(x);V!==window.location.hash&&window.history.replaceState(null,"",V)}},[x]),S.useEffect(()=>{ai(!0)},[ai]);const Ge=S.useMemo(()=>{if(!x||x.type!=="contact")return!1;const V=d.find(J=>J.public_key===x.id);return(V==null?void 0:V.type)===my},[x,d]),yi=S.useCallback(async V=>{x&&(x.type==="channel"?await ei.sendChannelMessage(x.id,V):await ei.sendDirectMessage(x.id,V),await ai())},[x,ai]),si=S.useCallback(async V=>{if(!(!x||x.type!=="contact")&&Ge)try{const J=await ei.requestTelemetry(x.id,V),re=Math.floor(Date.now()/1e3),ye={id:-Date.now(),type:"PRIV",conversation_key:x.id,text:Kj(J),sender_timestamp:re,received_at:re,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:!0},ve={id:-Date.now()-1,type:"PRIV",conversation_key:x.id,text:Yj(J.neighbors),sender_timestamp:re,received_at:re,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:!0},_e={id:-Date.now()-2,type:"PRIV",conversation_key:x.id,text:Zj(J.acl),sender_timestamp:re,received_at:re,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:!0};k(ni=>[...ni,ye,ve,_e]),I(!0)}catch(J){const re={id:-Date.now(),type:"PRIV",conversation_key:x.id,text:`Telemetry request failed: ${J instanceof Error?J.message:"Unknown error"}`,sender_timestamp:Math.floor(Date.now()/1e3),received_at:Math.floor(Date.now()/1e3),path_len:null,txt_type:0,signature:null,outgoing:!1,acked:!0};k(ye=>[...ye,re])}},[x,Ge]),Le=S.useCallback(async V=>{if(!x||x.type!=="contact"||!Ge||!q)return;const J=Math.floor(Date.now()/1e3),re={id:-Date.now(),type:"PRIV",conversation_key:x.id,text:`> ${V}`,sender_timestamp:J,received_at:J,path_len:null,txt_type:0,signature:null,outgoing:!0,acked:!0};k(ye=>[...ye,re]);try{const ye=await ei.sendRepeaterCommand(x.id,V),ve=ye.sender_timestamp??J,_e={id:-Date.now()-1,type:"PRIV",conversation_key:x.id,text:ye.response,sender_timestamp:ve,received_at:J,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:!0};k(ni=>[...ni,_e])}catch(ye){const ve={id:-Date.now()-1,type:"PRIV",conversation_key:x.id,text:`Command failed: ${ye instanceof Error?ye.message:"Unknown error"}`,sender_timestamp:J,received_at:J,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:!0};k(_e=>[..._e,ve])}},[x,Ge,q]),mi=S.useCallback(async V=>{await ei.updateRadioConfig(V),await ce()},[ce]),Gi=S.useCallback(async V=>{await ei.updateSettings(V),await Ae()},[Ae]),va=S.useCallback(async V=>{await ei.setPrivateKey(V),await ce()},[ce]),qi=S.useCallback(async()=>{await ei.rebootRadio(),u(J=>J&&{...J,radio_connected:!1}),(async()=>{for(let J=0;J<30;J++){await new Promise(re=>setTimeout(re,1e3));try{const re=await ei.getHealth();if(u(re),re.radio_connected){ce();return}}catch{}}})()},[ce]),Mi=S.useCallback(async()=>{try{await ei.sendAdvertisement(!0)}catch(V){console.error("Failed to send advertisement:",V)}},[]),Ki=S.useCallback(V=>{var J;(J=a.current)==null||J.appendText(`@[${V}] `)},[]),oa=S.useCallback(V=>{D(V),K(!1)},[]),ji=S.useCallback(()=>{const V=Math.floor(Date.now()/1e3);for(const J of g){const re=an("channel",J.key);ou(re,V)}for(const J of d)if(J.public_key){const re=an("contact",J.public_key);ou(re,V)}ge({})},[g,d]),ui=S.useCallback(async V=>{if(confirm("Delete this channel? Message history will be preserved."))try{await ei.deleteChannel(V),f(J=>J.filter(re=>re.key!==V)),D(null)}catch(J){console.error("Failed to delete channel:",J)}},[]),ki=S.useCallback(async V=>{if(confirm("Delete this contact? Message history will be preserved."))try{await ei.deleteContact(V),y(J=>J.filter(re=>re.public_key!==V)),D(null)}catch(J){console.error("Failed to delete contact:",J)}},[]),_a=S.useCallback(async(V,J,re)=>{const ye={public_key:J,name:V,type:0,flags:0,last_path:null,last_path_len:-1,last_advert:null,lat:null,lon:null,last_seen:null,on_radio:!1};y(ve=>[...ve,ye]),D({type:"contact",id:J,name:Kn(V,J)}),re&&console.log("Contact historical decryption not yet supported")},[]),da=S.useCallback(async(V,J,re)=>{const ye=await ei.createChannel(V,J),ve=await ei.getChannels();f(ve),D({type:"channel",id:ye.key,name:V}),re&&(await ei.decryptHistoricalPackets({key_type:"channel",channel_key:ye.key}),Fe())},[Fe]),ie=S.useCallback(async(V,J)=>{const re=V.startsWith("#")?V:`#${V}`,ye=await ei.createChannel(re),ve=await ei.getChannels();f(ve),D({type:"channel",id:ye.key,name:re}),J&&(await ei.decryptHistoricalPackets({key_type:"channel",channel_name:re}),Fe())},[Fe]),pe=B.jsx(ax,{contacts:d,channels:g,activeConversation:x,onSelectConversation:oa,onNewMessage:()=>{N(!0),K(!1)},lastMessageTimes:L,unreadCounts:de,showCracker:ne,crackerRunning:oe,onToggleCracker:()=>$(V=>!V),onMarkAllRead:ji});return B.jsxs("div",{className:"flex flex-col h-screen",children:[B.jsx(Gk,{health:s,config:l,onConfigClick:()=>W(!0),onAdvertise:Mi,onMenuClick:()=>K(!0)}),B.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[B.jsx("div",{className:"hidden md:block",children:pe}),B.jsx(Wj,{open:H,onOpenChange:K,children:B.jsxs(ef,{side:"left",className:"w-[280px] p-0 flex flex-col",hideCloseButton:!0,children:[B.jsx(af,{className:"sr-only",children:B.jsx(nf,{children:"Navigation"})}),B.jsx("div",{className:"flex-1 overflow-hidden",children:pe})]})}),B.jsx("div",{className:"flex-1 flex flex-col bg-background",children:x?x.type==="raw"?B.jsxs(B.Fragment,{children:[B.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium",children:"Raw Packet Feed"}),B.jsx("div",{className:"flex-1 overflow-hidden",children:B.jsx(P0,{packets:w})})]}):B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium",children:[B.jsxs("span",{className:"flex flex-col sm:flex-row sm:items-center sm:gap-2",children:[B.jsxs("span",{children:[x.type==="channel"&&!x.name.startsWith("#")?"#":"",x.name]}),B.jsx("span",{className:"font-normal text-xs text-muted-foreground font-mono",children:x.id})]}),!(x.type==="channel"&&x.name==="Public")&&B.jsx("button",{className:"py-1 px-3 bg-destructive/20 border border-destructive/30 text-destructive rounded text-xs cursor-pointer hover:bg-destructive/30",onClick:()=>{x.type==="channel"?ui(x.id):ki(x.id)},children:"Delete"})]}),B.jsx(ox,{messages:z,contacts:d,loading:R,loadingOlder:A,hasOlderMessages:j,onSenderClick:x.type==="channel"?Ki:void 0,onLoadOlder:Qe,radioName:l==null?void 0:l.name}),B.jsx(rx,{ref:a,onSend:Ge?q?Le:si:yi,disabled:!(s!=null&&s.radio_connected),isRepeaterMode:Ge&&!q,placeholder:s!=null&&s.radio_connected?Ge?q?"Send CLI command (requires admin login)...":`Enter password for ${x.name} (or . for none)...`:`Message ${x.name}...`:"Radio not connected"})]}):B.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:"Select a conversation or start a new one"})})]}),B.jsx("div",{className:$e("border-t border-border bg-background transition-all duration-200 overflow-hidden",ne?"h-[275px]":"h-0"),children:B.jsx(Uj,{packets:w,channels:g,onChannelCreate:async(V,J)=>{const re=await ei.createChannel(V,J),ye=await ei.getChannels();f(ye),await ei.decryptHistoricalPackets({key_type:"channel",channel_key:re.key}),Fe()},onRunningChange:ee})}),B.jsx(q0,{open:O,contacts:d,undecryptedCount:ae,onClose:()=>N(!1),onSelectConversation:V=>{D(V),N(!1)},onCreateContact:_a,onCreateChannel:da,onCreateHashtagChannel:ie}),B.jsx(D0,{open:T,config:l,appSettings:c,onClose:()=>W(!1),onSave:mi,onSaveAppSettings:Gi,onSetPrivateKey:va,onReboot:qi}),B.jsx(Qk,{position:"top-right"})]})}tk.createRoot(document.getElementById("root")).render(B.jsx(S.StrictMode,{children:B.jsx(iA,{})})); +`)}function Xj(a){return`${a.type}-${a.conversation_key}-${a.text}-${a.sender_timestamp}`}function Jj(){const a=window.location.hash.slice(1);if(!a)return null;if(a==="raw")return{type:"raw",name:"raw"};const r=a.indexOf("/");if(r===-1)return null;const o=a.slice(0,r),s=decodeURIComponent(a.slice(r+1));return(o==="channel"||o==="contact")&&s?{type:o,name:s}:null}function eA(a){if(!a)return"";if(a.type==="raw")return"#raw";const r=a.type==="channel"&&a.name.startsWith("#")?a.name.slice(1):a.name;return`#${a.type}/${encodeURIComponent(r)}`}function iA(){const a=S.useRef(null),r=S.useRef(null),o=S.useRef(new Set),[s,u]=S.useState(null),[l,m]=S.useState(null),[c,h]=S.useState(null),[d,y]=S.useState([]),[g,f]=S.useState([]),[z,k]=S.useState([]),[j,v]=S.useState(!1),[A,C]=S.useState(!1),[w,_]=S.useState([]),[x,D]=S.useState(null),[R,F]=S.useState(!1),[O,N]=S.useState(!1),[T,W]=S.useState(!1),[H,K]=S.useState(!1),[ae,X]=S.useState(0),[ne,$]=S.useState(!1),[oe,ee]=S.useState(!1),[q,I]=S.useState(!1),[L,Q]=S.useState(Zm),[de,ge]=S.useState({}),be=S.useRef(null),se=S.useMemo(()=>({onHealth:V=>{const J=be.current;be.current=V,u(V),J!==null&&J.radio_connected!==V.radio_connected&&(V.radio_connected?Tr.success("Radio connected",{description:V.serial_port?`Connected to ${V.serial_port}`:void 0}):Tr.error("Radio disconnected",{description:"Check radio connection and power"}))},onError:V=>{Tr.error(V.message,{description:V.details})},onContacts:V=>y(V),onChannels:V=>f(V),onMessage:V=>{const J=r.current,re=Xj(V);if(o.current.has(re)){console.debug("Duplicate message content ignored:",re.slice(0,50));return}if(o.current.add(re),o.current.size>1e3){const _e=Array.from(o.current);o.current=new Set(_e.slice(-500))}let ye=null;V.type==="CHAN"&&V.conversation_key?ye=an("channel",V.conversation_key):V.type==="PRIV"&&V.conversation_key&&(ye=an("contact",V.conversation_key));const fe=J?V.type==="CHAN"&&J.type==="channel"?V.conversation_key===J.id:V.type==="PRIV"&&J.type==="contact"?V.conversation_key&&Kg(J.id,V.conversation_key):!1:!1;if(fe&&k(_e=>_e.some(ni=>ni.id===V.id)?_e:[..._e,V]),ye){const _e=V.received_at||Math.floor(Date.now()/1e3),ni=nu(ye,_e);Q(ni),!V.outgoing&&!fe&&ge(Ce=>({...Ce,[ye]:(Ce[ye]||0)+1}))}},onContact:V=>{y(J=>{const re=J.findIndex(ye=>ye.public_key===V.public_key);if(re>=0){const ye=[...J],fe=J[re];return ye[re]={...fe,...V,name:V.name??fe.name,last_path:V.last_path??fe.last_path,lat:V.lat??fe.lat,lon:V.lon??fe.lon},ye}return[...J,V]})},onRawPacket:V=>{_(J=>{if(J.some(ye=>ye.id===V.id))return J;const re=[...J,V];return re.length>Hg?re.slice(-Hg):re})},onMessageAcked:(V,J)=>{k(re=>{const ye=re.findIndex(fe=>fe.id===V);if(ye>=0){const fe=[...re];return fe[ye]={...re[ye],acked:J},fe}return re})}}),[]);ck(se);const ce=S.useCallback(async()=>{try{const V=await ei.getRadioConfig();m(V)}catch(V){console.error("Failed to fetch config:",V)}},[]),Ae=S.useCallback(async()=>{try{const V=await ei.getSettings();h(V)}catch(V){console.error("Failed to fetch app settings:",V)}},[]),Fe=S.useCallback(async()=>{try{const V=await ei.getUndecryptedPacketCount();X(V.count)}catch(V){console.error("Failed to fetch undecrypted count:",V)}},[]),He=200,ai=S.useCallback(async(V=!1)=>{if(!x){k([]),v(!1);return}V&&F(!0);try{const J=await ei.getMessages({type:x.type==="channel"?"CHAN":"PRIV",conversation_key:x.id,limit:He});k(J),v(J.length>=He)}catch(J){console.error("Failed to fetch messages:",J)}finally{V&&F(!1)}},[x]),Qe=S.useCallback(async()=>{if(!(!x||A||!j)){C(!0);try{const V=await ei.getMessages({type:x.type==="channel"?"CHAN":"PRIV",conversation_key:x.id,limit:He,offset:z.length});V.length>0&&k(J=>[...J,...V]),v(V.length>=He)}catch(V){console.error("Failed to fetch older messages:",V)}finally{C(!1)}}},[x,A,j,z.length]);S.useEffect(()=>{ce(),Ae(),Fe()},[ce,Ae,Fe]);const Oe=S.useCallback(()=>{const V=Jj();if(!V)return null;if(V.type==="raw")return{type:"raw",id:"raw",name:"Raw Packet Feed"};if(V.type==="channel"){const J=g.find(re=>re.name===V.name||re.name===`#${V.name}`);if(J)return{type:"channel",id:J.key,name:J.name}}if(V.type==="contact"){const J=d.find(re=>Kn(re.name,re.public_key)===V.name);if(J)return{type:"contact",id:J.public_key,name:Kn(J.name,J.public_key)}}return null},[g,d]),Me=S.useRef(!1);S.useEffect(()=>{if(Me.current||x||g.length===0&&d.length===0)return;const V=Oe();if(V){D(V),Me.current=!0;return}const J=g.find(re=>re.name==="Public");J&&(D({type:"channel",id:J.key,name:J.name}),Me.current=!0)},[g,d,x,Oe]);const Xe=S.useRef(new Set),Ve=S.useRef(new Set);S.useEffect(()=>{const V=g.filter(ye=>!Xe.current.has(ye.key)),J=d.filter(ye=>ye.public_key&&!Ve.current.has(ye.public_key));if(V.length===0&&J.length===0)return;V.forEach(ye=>Xe.current.add(ye.key)),J.forEach(ye=>Ve.current.add(ye.public_key)),(async()=>{const ye=[...V.map(fe=>({type:"CHAN",conversation_key:fe.key})),...J.map(fe=>({type:"PRIV",conversation_key:fe.public_key}))];if(ye.length!==0)try{const fe=await ei.getMessagesBulk(ye,100),_e=Yk(),ni={},Ce={};for(const Te of V){const Ue=fe[`CHAN:${Te.key}`]||[];if(Ue.length>0){const Ke=an("channel",Te.key),Oi=_e[Ke]||0,Re=Ue.filter(bi=>!bi.outgoing&&bi.received_at>Oi).length;Re>0&&(ni[Ke]=Re);const Ye=Math.max(...Ue.map(bi=>bi.received_at));Ce[Ke]=Ye,nu(Ke,Ye)}}for(const Te of J){const Ue=fe[`PRIV:${Te.public_key}`]||[];if(Ue.length>0){const Ke=an("contact",Te.public_key),Oi=_e[Ke]||0,Re=Ue.filter(bi=>!bi.outgoing&&bi.received_at>Oi).length;Re>0&&(ni[Ke]=Re);const Ye=Math.max(...Ue.map(bi=>bi.received_at));Ce[Ke]=Ye,nu(Ke,Ye)}}Object.keys(ni).length>0&&ge(Te=>({...Te,...ni})),Q(Zm())}catch(fe){console.error("Failed to fetch messages bulk:",fe)}})()},[g,d]),S.useEffect(()=>{if(r.current=x,I(!1),x&&x.type!=="raw"){const V=an(x.type,x.id),J=Math.floor(Date.now()/1e3);ou(V,J),ge(re=>{if(re[V]){const ye={...re};return delete ye[V],ye}return re})}if(x){const V=eA(x);V!==window.location.hash&&window.history.replaceState(null,"",V)}},[x]),S.useEffect(()=>{ai(!0)},[ai]);const Ge=S.useMemo(()=>{if(!x||x.type!=="contact")return!1;const V=d.find(J=>J.public_key===x.id);return(V==null?void 0:V.type)===my},[x,d]),yi=S.useCallback(async V=>{x&&(x.type==="channel"?await ei.sendChannelMessage(x.id,V):await ei.sendDirectMessage(x.id,V),await ai())},[x,ai]),si=S.useCallback(async V=>{if(!(!x||x.type!=="contact")&&Ge)try{const J=await ei.requestTelemetry(x.id,V),re=Math.floor(Date.now()/1e3),ye={id:-Date.now(),type:"PRIV",conversation_key:x.id,text:Kj(J),sender_timestamp:re,received_at:re,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:1},fe={id:-Date.now()-1,type:"PRIV",conversation_key:x.id,text:Yj(J.neighbors),sender_timestamp:re,received_at:re,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:1},_e={id:-Date.now()-2,type:"PRIV",conversation_key:x.id,text:Zj(J.acl),sender_timestamp:re,received_at:re,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:1};k(ni=>[...ni,ye,fe,_e]),I(!0)}catch(J){const re={id:-Date.now(),type:"PRIV",conversation_key:x.id,text:`Telemetry request failed: ${J instanceof Error?J.message:"Unknown error"}`,sender_timestamp:Math.floor(Date.now()/1e3),received_at:Math.floor(Date.now()/1e3),path_len:null,txt_type:0,signature:null,outgoing:!1,acked:1};k(ye=>[...ye,re])}},[x,Ge]),Le=S.useCallback(async V=>{if(!x||x.type!=="contact"||!Ge||!q)return;const J=Math.floor(Date.now()/1e3),re={id:-Date.now(),type:"PRIV",conversation_key:x.id,text:`> ${V}`,sender_timestamp:J,received_at:J,path_len:null,txt_type:0,signature:null,outgoing:!0,acked:1};k(ye=>[...ye,re]);try{const ye=await ei.sendRepeaterCommand(x.id,V),fe=ye.sender_timestamp??J,_e={id:-Date.now()-1,type:"PRIV",conversation_key:x.id,text:ye.response,sender_timestamp:fe,received_at:J,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:1};k(ni=>[...ni,_e])}catch(ye){const fe={id:-Date.now()-1,type:"PRIV",conversation_key:x.id,text:`Command failed: ${ye instanceof Error?ye.message:"Unknown error"}`,sender_timestamp:J,received_at:J,path_len:null,txt_type:0,signature:null,outgoing:!1,acked:1};k(_e=>[..._e,fe])}},[x,Ge,q]),mi=S.useCallback(async V=>{await ei.updateRadioConfig(V),await ce()},[ce]),Gi=S.useCallback(async V=>{await ei.updateSettings(V),await Ae()},[Ae]),va=S.useCallback(async V=>{await ei.setPrivateKey(V),await ce()},[ce]),qi=S.useCallback(async()=>{await ei.rebootRadio(),u(J=>J&&{...J,radio_connected:!1}),(async()=>{for(let J=0;J<30;J++){await new Promise(re=>setTimeout(re,1e3));try{const re=await ei.getHealth();if(u(re),re.radio_connected){ce();return}}catch{}}})()},[ce]),Mi=S.useCallback(async()=>{try{await ei.sendAdvertisement(!0)}catch(V){console.error("Failed to send advertisement:",V)}},[]),Ki=S.useCallback(V=>{var J;(J=a.current)==null||J.appendText(`@[${V}] `)},[]),oa=S.useCallback(V=>{D(V),K(!1)},[]),ji=S.useCallback(()=>{const V=Math.floor(Date.now()/1e3);for(const J of g){const re=an("channel",J.key);ou(re,V)}for(const J of d)if(J.public_key){const re=an("contact",J.public_key);ou(re,V)}ge({})},[g,d]),ui=S.useCallback(async V=>{if(confirm("Delete this channel? Message history will be preserved."))try{await ei.deleteChannel(V),f(J=>J.filter(re=>re.key!==V)),D(null)}catch(J){console.error("Failed to delete channel:",J)}},[]),ki=S.useCallback(async V=>{if(confirm("Delete this contact? Message history will be preserved."))try{await ei.deleteContact(V),y(J=>J.filter(re=>re.public_key!==V)),D(null)}catch(J){console.error("Failed to delete contact:",J)}},[]),_a=S.useCallback(async(V,J,re)=>{const ye={public_key:J,name:V,type:0,flags:0,last_path:null,last_path_len:-1,last_advert:null,lat:null,lon:null,last_seen:null,on_radio:!1};y(fe=>[...fe,ye]),D({type:"contact",id:J,name:Kn(V,J)}),re&&console.log("Contact historical decryption not yet supported")},[]),da=S.useCallback(async(V,J,re)=>{const ye=await ei.createChannel(V,J),fe=await ei.getChannels();f(fe),D({type:"channel",id:ye.key,name:V}),re&&(await ei.decryptHistoricalPackets({key_type:"channel",channel_key:ye.key}),Fe())},[Fe]),ie=S.useCallback(async(V,J)=>{const re=V.startsWith("#")?V:`#${V}`,ye=await ei.createChannel(re),fe=await ei.getChannels();f(fe),D({type:"channel",id:ye.key,name:re}),J&&(await ei.decryptHistoricalPackets({key_type:"channel",channel_name:re}),Fe())},[Fe]),pe=B.jsx(ax,{contacts:d,channels:g,activeConversation:x,onSelectConversation:oa,onNewMessage:()=>{N(!0),K(!1)},lastMessageTimes:L,unreadCounts:de,showCracker:ne,crackerRunning:oe,onToggleCracker:()=>$(V=>!V),onMarkAllRead:ji});return B.jsxs("div",{className:"flex flex-col h-screen",children:[B.jsx(Gk,{health:s,config:l,onConfigClick:()=>W(!0),onAdvertise:Mi,onMenuClick:()=>K(!0)}),B.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[B.jsx("div",{className:"hidden md:block",children:pe}),B.jsx(Wj,{open:H,onOpenChange:K,children:B.jsxs(ef,{side:"left",className:"w-[280px] p-0 flex flex-col",hideCloseButton:!0,children:[B.jsx(af,{className:"sr-only",children:B.jsx(nf,{children:"Navigation"})}),B.jsx("div",{className:"flex-1 overflow-hidden",children:pe})]})}),B.jsx("div",{className:"flex-1 flex flex-col bg-background",children:x?x.type==="raw"?B.jsxs(B.Fragment,{children:[B.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium",children:"Raw Packet Feed"}),B.jsx("div",{className:"flex-1 overflow-hidden",children:B.jsx(P0,{packets:w})})]}):B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium",children:[B.jsxs("span",{className:"flex flex-col sm:flex-row sm:items-center sm:gap-2",children:[B.jsxs("span",{children:[x.type==="channel"&&!x.name.startsWith("#")?"#":"",x.name]}),B.jsx("span",{className:"font-normal text-xs text-muted-foreground font-mono",children:x.id})]}),!(x.type==="channel"&&x.name==="Public")&&B.jsx("button",{className:"py-1 px-3 bg-destructive/20 border border-destructive/30 text-destructive rounded text-xs cursor-pointer hover:bg-destructive/30",onClick:()=>{x.type==="channel"?ui(x.id):ki(x.id)},children:"Delete"})]}),B.jsx(ox,{messages:z,contacts:d,loading:R,loadingOlder:A,hasOlderMessages:j,onSenderClick:x.type==="channel"?Ki:void 0,onLoadOlder:Qe,radioName:l==null?void 0:l.name}),B.jsx(rx,{ref:a,onSend:Ge?q?Le:si:yi,disabled:!(s!=null&&s.radio_connected),isRepeaterMode:Ge&&!q,placeholder:s!=null&&s.radio_connected?Ge?q?"Send CLI command (requires admin login)...":`Enter password for ${x.name} (or . for none)...`:`Message ${x.name}...`:"Radio not connected"})]}):B.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:"Select a conversation or start a new one"})})]}),B.jsx("div",{className:$e("border-t border-border bg-background transition-all duration-200 overflow-hidden",ne?"h-[275px]":"h-0"),children:B.jsx(Uj,{packets:w,channels:g,onChannelCreate:async(V,J)=>{const re=await ei.createChannel(V,J),ye=await ei.getChannels();f(ye),await ei.decryptHistoricalPackets({key_type:"channel",channel_key:re.key}),Fe()},onRunningChange:ee})}),B.jsx(q0,{open:O,contacts:d,undecryptedCount:ae,onClose:()=>N(!1),onSelectConversation:V=>{D(V),N(!1)},onCreateContact:_a,onCreateChannel:da,onCreateHashtagChannel:ie}),B.jsx(D0,{open:T,config:l,appSettings:c,onClose:()=>W(!1),onSave:mi,onSaveAppSettings:Gi,onSetPrivateKey:va,onReboot:qi}),B.jsx(Qk,{position:"top-right"})]})}tk.createRoot(document.getElementById("root")).render(B.jsx(S.StrictMode,{children:B.jsx(iA,{})})); diff --git a/frontend/dist/index.html b/frontend/dist/index.html index d2923c8..19230df 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,7 +4,7 @@ RemoteTerm for MeshCore - + diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3cdbb76..1ea3ddc 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -305,13 +305,13 @@ export function App() { return updated; }); }, - onMessageAcked: (messageId: number) => { - // Update message acked status + onMessageAcked: (messageId: number, ackCount: number) => { + // Update message acked count setMessages((prev) => { const idx = prev.findIndex((m) => m.id === messageId); if (idx >= 0) { const updated = [...prev]; - updated[idx] = { ...prev[idx], acked: true }; + updated[idx] = { ...prev[idx], acked: ackCount }; return updated; } return prev; @@ -639,7 +639,7 @@ export function App() { txt_type: 0, signature: null, outgoing: false, // Show as incoming (from the repeater) - acked: true, // Mark as acked since it's a response + acked: 1, // Mark as acked since it's a response }; // Create a second message for neighbors @@ -654,7 +654,7 @@ export function App() { txt_type: 0, signature: null, outgoing: false, - acked: true, + acked: 1, }; // Create a third message for ACL @@ -669,7 +669,7 @@ export function App() { txt_type: 0, signature: null, outgoing: false, - acked: true, + acked: 1, }; // Add all messages to the list @@ -690,7 +690,7 @@ export function App() { txt_type: 0, signature: null, outgoing: false, - acked: true, + acked: 1, }; setMessages((prev) => [...prev, errorMessage]); } @@ -718,7 +718,7 @@ export function App() { txt_type: 0, signature: null, outgoing: true, - acked: true, + acked: 1, }; setMessages((prev) => [...prev, commandMessage]); @@ -740,7 +740,7 @@ export function App() { txt_type: 0, signature: null, outgoing: false, - acked: true, + acked: 1, }; setMessages((prev) => [...prev, responseMessage]); @@ -756,7 +756,7 @@ export function App() { txt_type: 0, signature: null, outgoing: false, - acked: true, + acked: 1, }; setMessages((prev) => [...prev, errorMessage]); } diff --git a/frontend/src/components/MessageList.tsx b/frontend/src/components/MessageList.tsx index 957ee71..c066eeb 100644 --- a/frontend/src/components/MessageList.tsx +++ b/frontend/src/components/MessageList.tsx @@ -295,7 +295,7 @@ export function MessageList({ {formatTime(msg.sender_timestamp || msg.received_at)} )} - {msg.outgoing && (msg.acked ? ' ✓' : ' ?')} + {msg.outgoing && (msg.acked > 0 ? ` ✓${msg.acked > 1 ? msg.acked : ''}` : ' ?')} diff --git a/frontend/src/test/messageDeduplication.test.ts b/frontend/src/test/messageDeduplication.test.ts index 536a149..4529997 100644 --- a/frontend/src/test/messageDeduplication.test.ts +++ b/frontend/src/test/messageDeduplication.test.ts @@ -37,7 +37,7 @@ function createMessage(overrides: Partial): Message { txt_type: 0, signature: null, outgoing: false, - acked: false, + acked: 0, ...overrides, }; } diff --git a/frontend/src/test/repeaterMode.test.ts b/frontend/src/test/repeaterMode.test.ts index 2ad7459..9780556 100644 --- a/frontend/src/test/repeaterMode.test.ts +++ b/frontend/src/test/repeaterMode.test.ts @@ -52,7 +52,7 @@ describe('Repeater message sender parsing', () => { it('non-repeater messages still get sender parsed', () => { const channelMessage = 'Alice: Hello everyone!'; - const contactType = CONTACT_TYPE_CLIENT; + const contactType: number = CONTACT_TYPE_CLIENT; const isRepeater = contactType === CONTACT_TYPE_REPEATER; const { sender, content } = isRepeater @@ -107,7 +107,7 @@ describe('Repeater password handling', () => { }); it('normal password is passed through unchanged', () => { - const trimmed = 'mySecretPassword'; + const trimmed: string = 'mySecretPassword'; const password = trimmed === '.' ? '' : trimmed; expect(password).toBe('mySecretPassword'); @@ -123,7 +123,7 @@ describe('Repeater password handling', () => { }); it('".." is NOT converted (only single dot)', () => { - const trimmed = '..'; + const trimmed: string = '..'; const password = trimmed === '.' ? '' : trimmed; // Double dot is passed through as-is (it's a valid password) diff --git a/frontend/src/test/unreadCounts.test.ts b/frontend/src/test/unreadCounts.test.ts index cec6794..35a35fe 100644 --- a/frontend/src/test/unreadCounts.test.ts +++ b/frontend/src/test/unreadCounts.test.ts @@ -73,7 +73,7 @@ describe('shouldIncrementUnread', () => { txt_type: 0, signature: null, outgoing: false, - acked: false, + acked: 0, ...overrides, }); diff --git a/frontend/src/test/websocket.test.ts b/frontend/src/test/websocket.test.ts index 8be1777..ceb1263 100644 --- a/frontend/src/test/websocket.test.ts +++ b/frontend/src/test/websocket.test.ts @@ -21,7 +21,7 @@ function parseWebSocketMessage( onMessage?: (message: Message) => void; onContact?: (contact: Contact) => void; onRawPacket?: (packet: RawPacket) => void; - onMessageAcked?: (messageId: number) => void; + onMessageAcked?: (messageId: number, ackCount: number) => void; } ): { type: string; handled: boolean } { try { @@ -46,9 +46,11 @@ function parseWebSocketMessage( case 'raw_packet': handlers.onRawPacket?.(msg.data as RawPacket); return { type: msg.type, handled: !!handlers.onRawPacket }; - case 'message_acked': - handlers.onMessageAcked?.((msg.data as { message_id: number }).message_id); + case 'message_acked': { + const ackData = msg.data as { message_id: number; ack_count: number }; + handlers.onMessageAcked?.(ackData.message_id, ackData.ack_count); return { type: msg.type, handled: !!handlers.onMessageAcked }; + } case 'pong': return { type: msg.type, handled: true }; default: @@ -77,18 +79,18 @@ describe('parseWebSocketMessage', () => { }); }); - it('routes message_acked to onMessageAcked with message ID', () => { + it('routes message_acked to onMessageAcked with message ID and ack count', () => { const onMessageAcked = vi.fn(); const data = JSON.stringify({ type: 'message_acked', - data: { message_id: 42 }, + data: { message_id: 42, ack_count: 3 }, }); const result = parseWebSocketMessage(data, { onMessageAcked }); expect(result.type).toBe('message_acked'); expect(result.handled).toBe(true); - expect(onMessageAcked).toHaveBeenCalledWith(42); + expect(onMessageAcked).toHaveBeenCalledWith(42, 3); }); it('routes new message to onMessage handler', () => { @@ -100,7 +102,7 @@ describe('parseWebSocketMessage', () => { text: 'Hello', received_at: 1700000000, outgoing: false, - acked: false, + acked: 0, }; const data = JSON.stringify({ type: 'message', data: messageData }); diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 6daa71f..ac284aa 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -76,7 +76,8 @@ export interface Message { txt_type: number; signature: string | null; outgoing: boolean; - acked: boolean; + /** ACK count: 0 = not acked, 1+ = number of acks/flood echoes received */ + acked: number; } export type ConversationType = 'contact' | 'channel' | 'raw'; @@ -110,7 +111,8 @@ export interface AppSettingsUpdate { max_radio_contacts?: number; } -/** Contact type constant for repeaters */ +/** Contact type constants */ +export const CONTACT_TYPE_CLIENT = 1; export const CONTACT_TYPE_REPEATER = 2; export interface NeighborInfo { diff --git a/frontend/src/useWebSocket.ts b/frontend/src/useWebSocket.ts index e835579..4a10496 100644 --- a/frontend/src/useWebSocket.ts +++ b/frontend/src/useWebSocket.ts @@ -18,7 +18,7 @@ interface UseWebSocketOptions { onMessage?: (message: Message) => void; onContact?: (contact: Contact) => void; onRawPacket?: (packet: RawPacket) => void; - onMessageAcked?: (messageId: number) => void; + onMessageAcked?: (messageId: number, ackCount: number) => void; onError?: (error: ErrorEvent) => void; } @@ -82,9 +82,11 @@ export function useWebSocket(options: UseWebSocketOptions) { case 'raw_packet': options.onRawPacket?.(msg.data as RawPacket); break; - case 'message_acked': - options.onMessageAcked?.((msg.data as { message_id: number }).message_id); + case 'message_acked': { + const ackData = msg.data as { message_id: number; ack_count: number }; + options.onMessageAcked?.(ackData.message_id, ackData.ack_count); break; + } case 'error': options.onError?.(msg.data as ErrorEvent); break; diff --git a/tests/test_event_handlers.py b/tests/test_event_handlers.py index d9c69c9..93f2d0a 100644 --- a/tests/test_event_handlers.py +++ b/tests/test_event_handlers.py @@ -143,7 +143,7 @@ class TestAckEventHandler: # Mock dependencies with patch("app.event_handlers.MessageRepository") as mock_repo, \ patch("app.event_handlers.broadcast_event") as mock_broadcast: - mock_repo.mark_acked = AsyncMock() + mock_repo.increment_ack_count = AsyncMock(return_value=1) # Create mock event class MockEvent: @@ -151,11 +151,11 @@ class TestAckEventHandler: await on_ack(MockEvent()) - # Verify message marked as acked - mock_repo.mark_acked.assert_called_once_with(123) + # Verify ack count incremented + mock_repo.increment_ack_count.assert_called_once_with(123) - # Verify broadcast sent - mock_broadcast.assert_called_once_with("message_acked", {"message_id": 123}) + # Verify broadcast sent with ack_count + mock_broadcast.assert_called_once_with("message_acked", {"message_id": 123, "ack_count": 1}) # Verify pending ACK removed assert "deadbeef" not in _pending_acks @@ -169,13 +169,14 @@ class TestAckEventHandler: with patch("app.event_handlers.MessageRepository") as mock_repo, \ patch("app.event_handlers.broadcast_event") as mock_broadcast: + mock_repo.increment_ack_count = AsyncMock() class MockEvent: payload = {"code": "different"} await on_ack(MockEvent()) - mock_repo.mark_acked.assert_not_called() + mock_repo.increment_ack_count.assert_not_called() mock_broadcast.assert_not_called() assert "expected" in _pending_acks @@ -185,14 +186,14 @@ class TestAckEventHandler: from app.event_handlers import on_ack with patch("app.event_handlers.MessageRepository") as mock_repo: - mock_repo.mark_acked = AsyncMock() + mock_repo.increment_ack_count = AsyncMock() class MockEvent: payload = {"code": ""} await on_ack(MockEvent()) - mock_repo.mark_acked.assert_not_called() + mock_repo.increment_ack_count.assert_not_called() class TestContactMessageCLIFiltering: