+
    lHàjqA  ã                  óÎ  a € 0 t $ R t^ RIHt ^ RIHt ^ RIHtHt ^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtHtHtHt ]! ]P.                  ]P0                  ]P2                  ]P4                  ]! ]RR$4      ]! ]RR$4      0R$0,
          4      t]P:                  ! ]4      t]P@                  PC                  RR	4      ;'       g    R	PE                  4       PG                  4       R%9   t$] ! R
 R]4      4       t%]
PL                  ! RRR7      t'R](R&   R R lt)R R lt*R R lt+R R lt,R R lt- ! R R4      t.]! RR7       ! R R4      4       t/ ! R  R!4      t0 ! R" R#4      t1R# )&aø  Transport abstraction for the tui_gateway JSON-RPC server.

A :class:`Transport` forwards a JSON-serialisable dict to its peer, so one dispatcher runs over stdio
(``tui_gateway.entry``) or WebSocket (``tui_gateway.ws``). The request's transport lives in a
``ContextVar`` so pool-dispatched handlers write to the right peer; with nothing bound
``server.write_json`` falls back to the module-level :class:`StdioTransport`, which resolves
``_real_stdout`` lazily so tests that monkey-patch it keep working.
)Úannotations)Údeque)Ú	dataclassÚfieldN)ÚAnyÚCallableÚOptionalÚProtocolÚruntime_checkableÚWSAECONNRESETÚWSAESHUTDOWNÚHERMES_TUI_GATEWAY_NO_FLUSHÚ c                  ó2   € ] tR t^%tRtR R ltR R ltRtR# )Ú	Transportz-Minimal interface every transport implements.c               ó    € V ^8„  d   QhRRRR/# ©é   ÚobjÚdictÚreturnÚbool© )Úformats   "Ú:/home/ubuntu/.hermes/hermes-agent/tui_gateway/transport.pyÚ__annotate__ÚTransport.__annotate__)   s   € ÷ Kñ K˜ð K $ñ Kó    c                ó   € R# )z<Emit one JSON frame. Return ``False`` when the peer is gone.Nr   )Úselfr   s   &&r   ÚwriteÚTransport.write)   ó   ‚ r   c               ó   € V ^8„  d   QhRR/# ©r   r   ÚNoner   )r   s   "r   r   r   ,   s   € ÷ =ñ =�tñ =r   c                ó   € R# )z.Release any resources owned by this transport.Nr   ©r   s   &r   ÚcloseÚTransport.close,   r"   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r(   Ú__static_attributes__r   r   r   r   r   %   s   † á7õK÷=ñ =r   r   Úhermes_gateway_transport)Údefaultz+contextvars.ContextVar[Optional[Transport]]Ú_current_transportc               ó   € V ^8„  d   QhRR/# )r   r   úOptional[Transport]r   )r   s   "r   r   r   5   s   € ÷ $ñ $Ð.ñ $r   c                 ó*   € \         P                  4       # ©N)r2   Úgetr   r   r   Úcurrent_transportr8   5   s   € Ü×!Ñ!Ó#Ð#r   c               ó   € V ^8„  d   QhRR/# )r   Ú	transportr4   r   )r   s   "r   r   r   9   s   € ÷ -ñ -Ð1ñ -r   c                ó,   € \         P                  V 4      # )zVBind *transport* for the current context; returns a token for :func:`reset_transport`.)r2   Úset)r:   s   &r   Úbind_transportr=   9   s   € ä×!Ñ! )Ó,Ð,r   c               ó   € V ^8„  d   QhRR/# r$   r   )r   s   "r   r   r   >   s   € ÷ $ñ $˜dñ $r   c                ó0   € \         P                  V 4       R # r6   )r2   Úreset)Útokens   &r   Úreset_transportrB   >   s   € Ü×Ñ˜UÖ#r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚexcÚ	ExceptionÚwhatÚstrr   r%   r   )r   s   "r   r   r   B   s!   € ÷ ?ñ ? ð ?°#ð ?¸$ñ ?r   c                ó<  € \        V \        4      '       d   R# \        V \        4      '       d+   \        V \        4      '       g   R\	        V 4      9  d   V hR# \        V \
        4      '       d   V P                  \        9  d   V h\        P                  RW4       R# )a
  Return when *exc* from a stream write/flush means the peer is gone; re-raise anything else.
``False`` from :meth:`StdioTransport.write` is the dispatcher's "broken stdout pipe" signal (``entry.py``
exits cleanly on it), so programming errors and real host I/O bugs (UnicodeEncodeError from a misconfigured
locale, ENOSPC, EACCES, ...) MUST re-raise so the crash log records them instead of masquerading as a clean
disconnect. Peer-gone: BrokenPipeError, ValueError("...closed file..."), OSError errno in _PEER_GONE_ERRNOS.Nzclosed filezStdioTransport %s peer gone: %s)
Ú
isinstanceÚBrokenPipeErrorÚ
ValueErrorÚUnicodeEncodeErrorrG   ÚOSErrorÚerrnoÚ_PEER_GONE_ERRNOSÚloggerÚdebug)rD   rF   s   &&r   Ú_raise_unless_peer_gonerR   B   so   € ô �#”×'Ò'ÙÜ�#”z×"Ò"Ü�cÔ-×.Ò.°-ÄsÈ3ÃxÔ2OØˆIÙÜ�cœ7×#Ò# s§y¡yÔ8IÔ'IØˆ	Ü
‡L�LÐ2°DÖ>r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   ÚpeerrG   Úlogzlogging.Loggerr   r   )r   s   "r   r   r   S   s(   € ÷ 8ñ 8˜ð 8 Sð 8¨~ð 8À#ñ 8r   c                ó^  €  \         P                  ! V RR7      #   \        \        3 d‚   p\	        T \
        4      '       d   T P                  R4      MRpTP                  RY\        T4      P                  T4       RRRTRR	RR
RT 2//p\         P                  ! TRR7      u Rp?# Rp?ii ; i)a  ``json.dumps`` the frame; an unserializable payload becomes a JSON-RPC error frame carrying
the original id. Shared by every transport: without it the TypeError escaped from a pool
worker (the executor swallows it), so the client waited forever with no log line (#92506).F)Úensure_asciiÚidNz?frame serialization failed peer=%s id=%s error_type=%s error=%sÚjsonrpcz2.0ÚerrorÚcodeÚmessagezresponse serialization error: i¥€ÿÿ)
ÚjsonÚdumpsÚ	TypeErrorrK   rI   r   r7   rZ   Útyper*   )r   rT   rU   rD   ÚridÚfallbacks   &&&   r   Úserialize_framerc   S   s¢   € ð8Ü�zŠz˜#¨EÔ2Ð2øÜ”zÐ"ô 8Ü)¨#¬t×4Ò4ˆc�g‰g�dŒm¸$ˆØ�	‰	ÐSØœT #›Y×/Ñ/°ô	6à˜u d¨CØ˜f f¨iÐ;YÐZ]ÐY^Ð9_Ð`ðbˆä�zŠz˜(°Ô7Õ7ûð8ús   ‚ šB,«A6B'Â!B,Â'B,c                  óB   € ] tR t^btRtRtR R ltR R ltR R ltRt	R	# )
ÚStdioTransportz†Writes JSON frames to a stream (usually ``sys.stdout``) resolved via a callable, so runtime
monkey-patches of the stream keep working.c               ó$   € V ^8„  d   QhRRRRRR/# )r   Ústream_getterzCallable[[], Any]Úlockzthreading.Lockr   r%   r   )r   s   "r   r   ÚStdioTransport.__annotate__h   s#   € ÷ ñ Ð&7ð ¸~ð ÐRVñ r   c                	ó   € Wn         W n        R # r6   )Ú_stream_getterÚ_lock)r   rg   rh   s   &&&r   Ú__init__ÚStdioTransport.__init__h   s   € Ø+ÔØŽ
r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   ri   l   s   € ÷ ñ ˜ð  $ñ r   c                óÊ  € \        VR\        4      R,           pV P                  ;_uu_ 4        V P                  4       p VP	                  V4       \        '       g    TP                  4        RRR4       R#   \
         d    p\        TR4        Rp?RRR4       R# Rp?ii ; i  \
         d    p\        TR4        Rp?RRR4       R# Rp?ii ; i  + '       g   i     R# ; i)zgReturn ``True`` on success, ``False`` ONLY when the peer is gone (see :func:`_raise_unless_peer_gone`).ÚstdioÚ
r    NFÚflushT)	rc   rP   rl   rk   r    rE   rR   Ú_DISABLE_FLUSHrs   )r   r   ÚlineÚstreamÚes   &&   r   r    ÚStdioTransport.writel   s¶   € ô ˜s G¬VÓ4°tÕ;ˆØ�Z�Z‹ZØ×(Ñ(Ó*ˆFðØ—‘˜TÔ"÷ "“>ð!Ø—L‘L”N÷ ñ øô ô Ü'¨¨7Ô3Û÷ ‰Zûðûô !ô !Ü+¨A¨wÔ7Û ÷ ‰Zûð!ú÷ ŽZñ úsX   ­C¿A7ÁCÁB$Á7B!ÂBÂCÂB!Â!CÂ$CÂ/C	Â;CÃ	CÃCÃC"	c               ó   € V ^8„  d   QhRR/# r$   r   )r   s   "r   r   ri   �   s   € ÷ ñ �tñ r   c                	ó   € R # r6   r   r'   s   &r   r(   ÚStdioTransport.close�   s   € Ùr   )rl   rk   N©
r*   r+   r,   r-   r.   Ú	__slots__rm   r    r(   r/   r   r   r   re   re   b   s"   † ñ2ð ,€Iõõ÷*ñ r   re   F)Úeqc                  óv   € ] tR t^…t$ R]R&   ]! ]R7      tR]R&   ^ tR]R&   Rt	R	]R
&   Rt
R	]R&   ^ tR]R&   RtR# )Ú_FanoutPeerr   r:   )Údefault_factoryr   ÚpendingÚintÚpending_bytesFr   ÚwritingTÚattachedÚ
generationr   N)r*   r+   r,   r-   Ú__annotations__r   r   r‚   r„   r…   r†   r‡   r/   r   r   r   r€   r€   …   s?   ‡ àÓÙ¨5Ô1€GˆUÓ1Ø€M�3ÓØ€GˆTÓØ€HˆdÓØ€J�×r   r€   c                  óÂ   € ] tR t^�tRtRtRtR R ltR R ltR R lt	R	 R
 lt
R R ltR R ltRR/R R lltR R ltR R ltR R ltRR/R R lltR R ltRtR# ) ÚFanoutTransportaV  Ordered, bounded session-event mailboxes; RPC replies remain request-local.

One slow socket must not stop the emitting turn or any healthy subscriber.
Each peer has at most one daemon writer and a bounded backlog. On overflow
it loses its subscription; unless the writer supplies a resume notice for a
still-healthy socket, that peer's transport is closed so the client
notices, reconnects and replays history. Closing the socket also drops any
other sessions multiplexed on it; the same reconnect + replay recovers them.
Other sockets are unaffected. A write already in the OS cannot be revoked.
i @  c               ó    € V ^8„  d   QhRRRR/# )r   Ú
transportsr   r   r%   r   )r   s   "r   r   ÚFanoutTransport.__annotate__¢   s   € ÷ #ñ # Ið #°$ñ #r   c                	ó|   € \         P                  ! 4       V n        . V n        V F  pV P	                  V4       K  	  R # r6   )Ú	threadingÚLockrl   Ú_peersÚattach)r   rŒ   r:   s   &* r   rm   ÚFanoutTransport.__init__¢   s-   € Ü—^’^Ó%ˆŒ
Ø)+ˆŒÛ#ˆIØ�K‰K˜	Ö"ó $r   c               ó    € V ^8„  d   QhRRRR/# ©r   r:   r   r   r   r   )r   s   "r   r   r�   ¨   s   € ÷ ñ  	ð ¨dñ r   c                	óà  € Ve   WJ d   R# V P                   ;_uu_ 4        V P                   F|  pVP                  VJ g   K  VP                  '       d    R R R 4       R# VP                  P                  4        ^ Vn        RVn        V;P                  ^,          un         R R R 4       R# 	  V P                  P                  \        V4      4        R R R 4       R#   + '       g   i     R # ; i)NFT)
rl   r‘   r:   r†   r‚   Úclearr„   r‡   Úappendr€   )r   r:   rT   s   && r   r’   ÚFanoutTransport.attach¨   s¥   € ØÒ 	Ó 1ÙØ�Z�Z‹ZØŸœ�Ø—>‘> YÕ.Ø—}—}�}Ø$÷	 ‰Zð —L‘L×&Ñ&Ô(Ø)*�DÔ&Ø$(�D”MØ—O’O qÕ(•OØ÷ ‰ZÙ#ð �K‰K×Ñœ{¨9Ó5Ô6Ø÷ �Z�ZŠZús$    CÁCÁCÁACÂ+'CÃC-	c               ó    € V ^8„  d   QhRRRR/# ©r   rT   r€   r   r%   r   )r   s   "r   r   r�   º   s   € ÷ %ñ %˜Kð %¨Dñ %r   c                	ó
  € R Vn         V;P                  ^,          un        VP                  P                  4        ^ Vn        VP
                  '       g0   WP                  9   d   V P                  P                  V4       R# R# R# )FN)r†   r‡   r‚   r—   r„   r…   r‘   Úremove©r   rT   s   &&r   Ú_removeÚFanoutTransport._removeº   s\   € ð ˆŒØ�Š˜1Õ�Ø�‰×ÑÔØˆÔØ�|�|ˆ| ¯©Ô 3Ø�K‰K×Ñ˜tÖ$ñ !4‰|r   c               ó    € V ^8„  d   QhRRRR/# r•   r   )r   s   "r   r   r�   Ä   s   € ÷ ñ  	ð ¨dñ r   c                	ó  € V P                   ;_uu_ 4        V P                   F>  pVP                  VJ g   K  VP                  pV P	                  V4       Vu uuR R R 4       # 	  R R R 4       R#   + '       g   i     R# ; i)NF)rl   r‘   r:   r†   rŸ   )r   r:   rT   r†   s   &&  r   ÚdetachÚFanoutTransport.detachÄ   s[   € Ø�Z�Z‹ZØŸœ�Ø—>‘> YÕ.Ø#Ÿ}™}�HØ—L‘L Ô&Ø#‘O÷ ŠZÙ#÷ ñ ÷ ŽZñ ús   •A.· A.Á"A.Á.A?	c               ó    € V ^8„  d   QhRRRR/# r•   r   )r   s   "r   r   r�   Í   s   € ÷ ^ñ ^ )ð ^°ñ ^r   c                	ó  a€ V P                   ;_uu_ 4        \        ;QJ d)    V3R  lV P                   4       F  '       g   K   RM	  RM! V3R  lV P                   4       4      uuRRR4       #   + '       g   i     R# ; i)c              3  óf   <"  € T F&  qP                   ;'       d    VP                  SJ x € K(  	  R # 5ir6   )r†   r:   )Ú.0rT   r:   s   & €r   Ú	<genexpr>Ú+FanoutTransport.contains.<locals>.<genexpr>Ï   s)   øé € Ð]ÑQ\È—}‘}×DÐD¨¯©¸9Ð)DÔDÓQ\ùs   ƒ1š1TFN)rl   Úanyr‘   )r   r:   s   &fr   ÚcontainsÚFanoutTransport.containsÍ   sD   ø€ Ø�Z�Z‹Zß“3Ô]ÐQU×Q\ÒQ\Ó]—3—3’3Ô]ÐQU×Q\ÒQ\Ó]Ó]÷ �Z�Z‹Zús   –*A/Á!A/Á/B 	c               ó   € V ^8„  d   QhRR/# )r   r   zlist[Transport]r   )r   s   "r   r   r�   Ñ   s   € ÷ Mñ M˜Oñ Mr   c                	óä   € V P                   ;_uu_ 4        V P                   Uu. uF"  qP                  '       g   K  VP                  NK$  	  upuuR R R 4       # u upi   + '       g   i     R # ; ir6   )rl   r‘   r†   r:   rž   s   & r   rŒ   ÚFanoutTransport.transportsÑ   s?   € Ø�Z�Z‹ZØ/3¯{ª{ÓL©{ t¿m½m”N�D—N”N©{ÑL÷ ŠZùÚL÷ �ZˆZús!   •A¤A¼AÁAÁAÁA/	Ú	excludingNc               ó    € V ^8„  d   QhRRRR/# )r   r±   zTransport | Noner   r   r   )r   s   "r   r   r�   Õ   s   € ÷ Hñ HÐ+;ð HÀtñ Hr   c               	ó°   a€ \         ;QJ d-    V3R  lV P                  4        4       F  '       g   K   R# 	  R# ! V3R  lV P                  4        4       4      # )c              3  ó*   <"  € T F  qSJx € K
  	  R # 5ir6   r   )r¨   rT   r±   s   & €r   r©   Ú1FanoutTransport.has_transports.<locals>.<genexpr>Ö   s   øé € ÐGÑ5F¨T˜yÕ(Ó5Fùs   ƒTF)r«   rŒ   )r   r±   s   &dr   Úhas_transportsÚFanoutTransport.has_transportsÕ   s:   ø€ ß‹sÔG°T·_±_Ô5FÓG�sŒsÐGŠsÐGˆsÔG°T·_±_Ô5FÓGÓGÐGr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rT   r€   r‡   rƒ   r   r   r   )r   s   "r   r   r�   Ø   s!   € ÷ 1ñ 1 ð 1¸ð 1Àñ 1r   c                	ó†   € V P                   ;_uu_ 4        VP                  V8H  uuR R R 4       #   + '       g   i     R # ; ir6   )rl   r‡   )r   rT   r‡   s   &&&r   Ú_is_currentÚFanoutTransport._is_currentØ   s#   € à�Z�Z‹ZØ—?‘? jÑ0÷ �Z�Z‹Zús	   •/¯A 	c               ó    € V ^8„  d   QhRRRR/# r›   r   )r   s   "r   r   r�   Ý   s   € ÷ 3ñ 3˜;ð 3¨4ñ 3r   c                	óæ  a aa€  S P                   ;_uu_ 4        SP                  '       g6   RSn        SP                  '       g   S P	                  S4        RRR4       R# SP
                  o\        SP                  4      pSP                  P                  4        ^ Sn        RRR4        \        SP                  RR4      pT;'       g    \        SP                  RR4      p\        SP                  RR4      pVe   Ve{   ^ RIHp X UUu. uF  w  rxVNK	  	  p	ppVe   V! V	S3VV 3R ll4      p
M$S P                  SS4      '       d
   V! V	4      p
MEKT  V! W¥4      pVRJ;'       d    VP                  4       pM?\        ;QJ d!    VVV 3R lX 4       F  '       d   K   RM	  R M! VVV 3R lX 4       4      p V'       d   EKÃ  S P                   ;_uu_ 4        SP
                  S8w  d    RRR4       EKõ  RSn        S P	                  S4       RRR4       R#   + '       g   i     EL�; iu uppi   \          d    \"        P%                  R	R R
7       Rp LŸi ; i  + '       g   i     R# ; i)TFNÚwrite_many_if_current_asyncÚwrite_many_asyncÚ_loop)Úsafe_schedule_threadsafec                ó(   <€ SP                  SV 4      # r6   )rº   )r‡   rT   r   s   &€€r   Ú<lambda>Ú(FanoutTransport._drain.<locals>.<lambda>ý   s   ø€ ÐSW×ScÑScÐdhÐjtÔSur   c              3  óœ   <"  € T FA  w  rSP                  SS4      '       * ;'       g    SP                  P                  V4      x € KC  	  R # 5ir6   )rº   r:   r    )r¨   ÚframeÚ_sizer‡   rT   r   s   &  €€€r   r©   Ú)FanoutTransport._drain.<locals>.<genexpr>  sE   øé € ð 8Ù16¡ ð "&×!1Ñ!1°$¸
Ó!CÔC×bÐbÀtÇ~Á~×G[ÑG[Ð\aÓGbÔbÛ16ùs
   ƒ$A¨$Az!fanout write failed; pruning peer©Úexc_info)rl   r‚   r…   r†   rŸ   r‡   Úlistr—   r„   Úgetattrr:   Úagent.async_utilsrÁ   rº   ÚresultÚallrE   rP   rQ   )r   rT   ÚbatchÚwrite_currentÚ
write_manyÚlooprÁ   rÆ   rÇ   ÚframesÚsendÚfutureÚokr‡   s   ff           @r   Ú_drainÚFanoutTransport._drainÝ   só  ú€ ØØ——“ð —|—|�|Ø#(�D”LØŸ=Ÿ=˜=ØŸ™ TÔ*Ø÷ ‘ð "Ÿ_™_�
ô
 ˜TŸ\™\Ó*�Ø—‘×"Ñ"Ô$Ø%&�Ô"÷ ð ô !(¨¯©Ð8UÐW[Ó \�Ø*×_Ð_¬g°d·n±nÐFXÐZ^Ó._�
Ü˜tŸ~™~¨w¸Ó=�ØÒ)¨dÒ.>õ KÙ8=Ô>¹©¨›e¹�FÑ>Ø$Ò0Ù,¨VÀz×5uÓv™Ø×)Ñ)¨$°
×;Ò;Ù)¨&Ó1™â Ù5°dÓA�FØ tÐ+×?Ð?°·±³‘Bç›ö 8Ù16ó8ŸŸšö 8Ù16ó8ó 8‘B÷
 ’2Ø—Z—Z“ZØ—‘¨*Ô4Ø ÷  ’Zð $)�D”LØ—L‘L Ô&÷	  ñ
 ÷c —�üó8 ?øô ô Ü—‘Ð@È4�ÔPØ’ðú÷  –Zñ
 úsy   ™+HÁHÁ!AHÂ,H5 ÃAH5 ÄH/Ä0H5 Å	H5 ÅH5 Å+H5 Å=
H5 ÆH5 Æ!H5 ÇIÇ9IÈH,	È/H5 È5$IÉIÉI0	c               ó    € V ^8„  d   QhRRRR/# )r   r:   r   r   r%   r   )r   s   "r   r   r�     s   € ÷ dñ d°ð d¸tñ dr   c                	óª   €  \        VR R4      pT;'       g    VP                  ! 4        R#   \         d    \        P	                  RRR7        R# i ; i)ÚabortNz8fanout overflow close failed; membership already droppedTrÉ   )rÌ   r(   rE   rP   rQ   )r   r:   rÜ   s   && r   Ú_signal_overflow_detachÚ'FanoutTransport._signal_overflow_detach  sN   € ð	dÜ˜I w°Ó5ˆEØ×%Ð%�i—o‘oÐ%Ö(øÜô 	dÜ�L‰LÐSÐ^bˆL×cð	dús   ‚, ˜, ¬"AÁAÚoverflowc               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   rß   z,Callable[[Transport], Optional[dict]] | Noner   r   r   )r   s   "r   r   r�     s#   € ÷ )ñ )˜ð )Ð,Xð )Ðdhñ )r   c          
     ó–  € \        VR\        4      p\        VP                  RRR7      4      p\        P
                  ! V4      p. pV P                  ;_uu_ 4        \        V P                  4       EF×  pVP                  '       g   K  \        VP                  4      V P                  8¼  g#   VP                  V,           V P                  8”  dö   \        P                  R4       V P                  V4       Ve   V! VP                   4      MRpVf   VP#                  VP                   4       M”VP                  P#                  V^ 34       WpP                  9  d   V P                  P#                  V4       VP$                  '       g;   RVn        \&        P(                  ! V P*                  V3RRR	7      P-                  4        EKS  VP                  P#                  WT34       V;P                  V,          un        VP$                  '       d   EK�  RVn        \&        P(                  ! V P*                  V3RRR	7      P-                  4        EKÚ  	  \.        ;QJ d&    R
 V P                   4       F  '       g   K   RM	  RM! R
 V P                   4       4      p	RRR4       V F  p
V P1                  V
4       K  	  X	#   + '       g   i     L,; i)a�  Fan *obj* out. A peer whose bounded backlog is full loses its subscription; *overflow*
(called with its transport, under the membership lock) may return one final frame that
replaces the dropped backlog, so a socket that is still healthy learns it must resume
rather than silently continuing with partial history. Without such a notice the peer's
transport is closed so the client notices, reconnects and replays.Úfanoutzutf-8Úsurrogatepass)Úerrorsz.fanout subscriber backlog full; detaching peerNTz
tui-fanout)ÚtargetÚargsÚnameÚdaemonc              3  ó8   "  € T F  qP                   x € K  	  R # 5ir6   )r†   )r¨   rT   s   & r   r©   Ú(FanoutTransport.write.<locals>.<genexpr>B  s   é € ÐB±k¨dŸMžM³kùs   ‚F)rc   rP   ÚlenÚencoder]   Úloadsrl   rË   r‘   r†   r‚   Ú_MAX_PENDING_FRAMESr„   Ú_MAX_PENDING_BYTESÚwarningrŸ   r:   r˜   r…   r�   ÚThreadrØ   Ústartr«   rÝ   )r   r   rß   ÚencodedÚsizerÆ   Ú
overflowedrT   ÚnoticeÚ	remainingr:   s   &&$        r   r    ÚFanoutTransport.write  sõ  € ô " # x´Ó8ˆÜ�7—>‘> '°/�>ÓBÓCˆÜ—
’
˜7Ó#ˆØ&(ˆ
Ø�Z�Z‹ZÜ˜TŸ[™[×)�Ø—}—}�}ÙÜ˜Ÿ™Ó%¨×)AÑ)AÔAØ×-Ñ-°Õ4°t×7NÑ7NÔNÜ—N‘NÐ#SÔTØ—L‘L Ô&Ø9AÒ9M™X d§n¡nÔ5ÐSW�FØ’~Ø"×)Ñ)¨$¯.©.Õ9àŸ™×+Ñ+¨V°Q¨KÔ8Ø§{¡{Ô2Ø ŸK™K×.Ñ.¨tÔ4Ø#Ÿ|Ÿ|˜|Ø+/˜DœLÜ%×,Ò,°D·K±KÀtÀgØ2>ÀtôMßMRÉUÌWÚØ—‘×#Ñ# U MÔ2Ø×"Ò" dÕ*Õ"Ø—|—|“|Ø#'�D”LÜ×$Ò$¨D¯K©K¸t¸gØ*6¸tôEßEJÁUÇWñ1 *÷2 ›ÑB°d·k²kÓBŸŸšÑB°d·k²kÓBÓBˆI÷5 ó6 $ˆIØ×(Ñ(¨Ö3ñ $àÐ÷; �Zús'   ÁD+J8ÆBJ8ÈA	J8ÉJ8É5J8Ê8K	c               ó   € V ^8„  d   QhRR/# r$   r   )r   s   "r   r   r�   G  s   € ÷ #ñ #�tñ #r   c                óÂ   € V P                   ;_uu_ 4        \        V P                  4       F  pV P                  V4       K  	  RRR4       R#   + '       g   i     R# ; i)z@Detach without closing sockets owned by the connection handlers.N)rl   rË   r‘   rŸ   rž   s   & r   r(   ÚFanoutTransport.closeG  s6   € à�Z�Z‹ZÜ˜TŸ[™[Ö)�Ø—‘˜TÖ"ñ *÷ �Z�ZŠZús   •.AÁA	)rl   r‘   i  @ )r*   r+   r,   r-   r.   rî   rï   rm   r’   rŸ   r£   r¬   rŒ   r¶   rº   rØ   rÝ   r    r(   r/   r   r   r   rŠ   rŠ   �   sl   † ñ	ð  ÐØ(Ðõ#õõ$%õõ^õMðH¸d÷ Hõ1õ
3õjdð)Ð[_÷ )÷V#ñ #r   rŠ   c                  óB   € ] tR tRtRtR	tR R ltR R ltR R ltR	t	R
# )ÚTeeTransportiN  a'  Mirrors writes to one primary plus N best-effort secondaries. The primary's return value (and
exceptions) determine the result; secondaries swallow failures so a wedged sidecar never stalls the
main IO path. Used by the PTY child: every emit lands on stdio (Ink) AND a back-WS for the dashboard.c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úprimaryr   Úsecondariesr   r%   r   )r   s   "r   r   ÚTeeTransport.__annotate__U  s!   € ÷ (ñ ( 	ð (¸ð (Àtñ (r   c                	ó   € Wn         W n        R # r6   ©Ú_primaryÚ_secondaries)r   rÿ   r   s   &&*r   rm   ÚTeeTransport.__init__U  s   € ØŒØ'Ör   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r  Y  s   € ÷ ñ ˜ð  $ñ r   c                	ó  € V P                   P                  V4      pV P                   F?  p\        P                  ! \
        4      ;_uu_ 4        VP                  V4       R R R 4       KA  	  V#   + '       g   i     KV  ; ir6   )r  r    r  Ú
contextlibÚsuppressrE   )r   r   r×   Úsecs   &&  r   r    ÚTeeTransport.writeY  s]   € à�]‰]× Ñ  Ó%ˆØ×$Ô$ˆCÜ×$Ò$¤Y×/Õ/Ø—	‘	˜#”÷ 0Ñ/ñ %ð ˆ	÷ 0×/Ð/ús   ÁA-Á-A>c               ó   € V ^8„  d   QhRR/# r$   r   )r   s   "r   r   r  a  s   € ÷  ñ  �tñ  r   c           
     	óÎ  €  V P                   P                  4        V P                   F>  p\        P                  ! \
        4      ;_uu_ 4        VP                  4        R R R 4       K@  	  R #   + '       g   i     KU  ; i  T P                   FR  p\        P                  ! \
        4      ;_uu_ 4        TP                  4        R R R 4       K@    + '       g   i     KQ  ; i	  i ; ir6   )r  r(   r  r	  r
  rE   )r   r  s   & r   r(   ÚTeeTransport.closea  s�   € ð	 Ø�M‰M×ÑÔ!à×(Ô(�Ü×(Ò(¬×3Õ3Ø—I‘I”K÷ 4Ñ3ó )ß3×3Ð3ûð ×(Ô(�Ü×(Ò(¬×3Õ3Ø—I‘I”K÷ 4×3×3Ò3úò )ús/   ‚B  ÁA,Á,A=Â 2C$Â2CÃ
C$ÃCÃC$r  Nr|   r   r   r   rý   rý   N  s#   † ñmð -€Iõ(õ÷ ñ  r   rý   éÿÿÿÿ>   Ú1ÚonÚyesÚtrue)2Ú__conditional_annotations__r.   Ú
__future__r   Úcollectionsr   Údataclassesr   r   r	  ÚcontextvarsrN   r]   ÚloggingÚosr�   Útypingr   r   r   r	   r
   Ú	frozensetÚEPIPEÚ
ECONNRESETÚEBADFÚ	ESHUTDOWNrÌ   rO   Ú	getLoggerr*   rP   Úenvironr7   ÚstripÚlowerrt   r   Ú
ContextVarr2   rˆ   r8   r=   rB   rR   rc   re   r€   rŠ   rý   )r  s   @r   Ú<module>r'     s_  øðôõ #å ß (Û Û Û Û Û Û 	Û ß GÕ Gñ Ø	‡K�K�×!Ñ! 5§;¡;°·±ÙˆE�? BÓ'©°¸ÈÓ)Kðð €Dõ	ó 
Ð ð
 
×	Ò	˜8Ó	$€ð
 —*‘*—.‘.Ð!>ÀÓC×IÐIÀr×PÑPÓR×XÑXÓZÐ^xÑx€àô=�ó =ó ð=ð CN×BXÒBXØ¨ôCÐ Ð?ó õ
$õ-õ
$õ?õ"8÷ ñ  ñF ˆeÔ÷ð ó ð÷|#ñ |#÷~ ó  r   