+
    lHàjÁ/  ã                  ó6  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHtH	t	 ^ RI
Ht ^ RIHtHt ^ RIHt ^ RIHtHt ^ RIHtHtHtHt  ! R	 R
]4      t]! RR7       ! R R4      4       t ! R R4      t]! RR7       ! R R4      4       tR R lt ! R R]4      tR# )a	  Peer-backed session transport for one hosted-room member task: implements
:class:`InternalSessionRPC` without canonical Bot Chat. The remote client must resolve a hidden
``Group: <room_id>`` session with ``source=bot_room`` and verify the scoped grant at admission.)ÚannotationsN)ÚCallableÚMappingÚSequence)Ú	dataclass)ÚAnyÚProtocol)ÚTaskIdentity)ÚHostedMemberDispatchÚPROTOCOL_VERSION)ÚROOM_SESSION_SOURCEÚHostedRoomBindingÚInternalSessionRPCÚroom_session_titlec                  óv   € ] tR t^tR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 lt
R R ltRtR# )ÚHostedRoomPeerClientzCAuthenticated client for a target gateway's narrow room-member API.c               ó    € V ^8„  d   QhRRRR/# )é   Úscoper   ÚreturnÚNone© )Úformats   "ÚK/home/ubuntu/.hermes/hermes-agent/tui_gateway/hosted_room_peer_transport.pyÚ__annotate__Ú!HostedRoomPeerClient.__annotate__   s   € ×8Ñ8 sÐ8¨tÑ8ó    c                	ó   € R # ©Nr   )Úselfr   s   &,r   Úbind_room_scopeÚ$HostedRoomPeerClient.bind_room_scope   s   € ±Sr   Úexpected_session_idNc               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r   Úroom_idÚstrÚprofileÚsourceÚgrantÚcreateÚboolr"   ú
str | Noner   úMapping[str, Any] | Noner   )r   s   "r   r   r      sI   € ÷ Yñ Y #ð Y°ð Y¸Sð YÈð YÐVZð YØ%/ðYØ;SñYr   c               	ó   € R # r   r   )r   r$   r&   r'   r(   r)   r"   s   &$$$$$$r   ÚprepareÚHostedRoomPeerClient.prepare   s   € ÙUXr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚdispatchúMapping[str, Any]r(   r%   r   r   )r   s   "r   r   r      s   € ×\Ñ\Ð$5Ð\¸cÐ\ÐFWÑ\r   c               	ó   € R # r   r   ©r   r1   r(   s   &$$r   r1   ÚHostedRoomPeerClient.dispatch   s   € ÑY\r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r   r$   r%   r&   Ú
session_idr(   r   úSequence[Mapping[str, Any]]r   )r   s   "r   r   r      s0   € ÷ 6ñ 6 #ð 6°ð 6Àð 6ÈSð 6Ø0ñ6r   c               	ó   € R # r   r   ©r   r$   r&   r7   r(   s   &$$$$r   ÚhistoryÚHostedRoomPeerClient.history   s   € Ù25r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r   r$   r%   r&   r7   r(   r   r2   r   )r   s   "r   r   r      s0   € ÷ +ñ + ð +¨sð +Àð +ÈCð +Ø%ñ+r   c               	ó   € R # r   r   r:   s   &$$$$r   ÚstatusÚHostedRoomPeerClient.status   s   € Ù'*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r1   r2   r(   r%   r   r,   r   )r   s   "r   r   r      s   € ×_Ñ_Ð 1Ð_¸#Ð_ÐBZÑ_r   c               	ó   € R # r   r   r4   s   &$$r   ÚstopÚHostedRoomPeerClient.stop   s   € Ñ\_r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Útask_idr%   Úexecution_generationÚintr(   r   r,   r   )r   s   "r   r   r       s)   € ÷ 8ñ 8 sð 8À#ð 8Ècð 8Ø2ñ8r   c               	ó   € R # r   r   )r   rF   rG   r(   s   &$$$r   Ústop_receiptÚ!HostedRoomPeerClient.stop_receipt    s   € Ù47r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r.   r1   r;   r?   rC   rJ   Ú__static_attributes__r   r   r   r   r      s1   † ÙMå8ðYØ26÷Yå\õ6õ+å_÷8ñ 8r   r   T)Úfrozenc                  óD   € ] tR t^$t$ RtR]R&   R]R&   R]R&   R]R&   RtR	# )
ÚRoomLinkCandidatez?One address/provider for the same authenticated target gateway.r%   ÚnameÚmodeÚtarget_install_idr   Úclientr   N)rL   rM   rN   rO   rP   Ú__annotations__rQ   r   r   r   rT   rT   $   s   ‡ áIà
ƒIØ
ƒIØÓØ × r   rT   c                  óš   € ] tR t^.tRtR^<R]P                  /R R llt]R R l4       t	R R	 lt
R
 R lt]! ]R4      w  tttttAR tRtR# )ÚFailoverHostedRoomPeerClientzETry alternate links without changing target or logical task identity.Úreprobe_interval_secondsÚclockc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Ú
candidateszSequence[RoomLinkCandidate]r\   Úfloatr]   zCallable[[], float]r   r   r   )r   s   "r   r   Ú)FailoverHostedRoomPeerClient.__annotate__1   s,   € ÷ 'ñ 'Ø5ð'ØTYð'à"ð'à8<ñ'r   c               	ó.  € V'       g   \        R 4      h\        V Uu0 uF  qDP                  kK  	  up4      ^8w  d   \        R4      hV^ 8:  d   \        R4      h\        V4      ^ VuV n        V n        V n        \        V4      V n        RV n	        R# u upi )z+at least one RoomLink candidate is requiredz0RoomLink candidates must target one installationz)reprobe_interval_seconds must be positiveg        N)
Ú
ValueErrorÚlenrW   Útupler_   Ú_activer]   r`   r\   Ú_last_primary_probe)r   r_   r\   r]   Ú	candidates   &&$$ r   Ú__init__Ú%FailoverHostedRoomPeerClient.__init__1   sŠ   € ÷ ÜÐJÓKÐKÜ¹ZÓH¹Z°	×+Ô+¹ZÑHÓIÈQÔNÜÐOÓPÐPØ# qÔ(ÜÐHÓIÐIÜ49¸*Ó4EÀqÈ%Ð1ˆŒ˜œ t¤zÜ(-Ð.FÓ(GˆÔ%Ø#&ˆÖ ùò Is   �Bc               ó   € V ^8„  d   QhRR/# )r   r   rT   r   )r   s   "r   r   ra   ?   s   € ÷ -ñ -Ð.ñ -r   c                	ó<   € V P                   V P                  ,          # r   )r_   rf   )r   s   &r   Úactive_linkÚ(FailoverHostedRoomPeerClient.active_link>   s   € à�‰˜tŸ|™|Õ,Ð,r   c               ó   € V ^8„  d   QhRR/# ©r   Úmethodr%   r   )r   s   "r   r   ra   B   s   € ÷ lñ l˜Cñ lr   c                ó`  a€ V P                  4       pV P                  .oV P                  ^ 8w  d6   W0P                  ,
          V P                  8¼  d   W0n        ^ V P                  .oSP	                  V3R l\        \        V P                  4      4       4       4       RpS F9  p \        V P                  V,          P                  V4      ! R/ VB pYPn        Tu # 	  Ve   Vh\        R4      h  \         d5   p\        TRR4      '       g   \        TRR4      '       g   h Tp Rp?Kˆ  Rp?ii ; i)zÄTry the active link (re-probing the primary after a cooldown), then the rest. Ambiguous
or non-retryable failures propagate: failing over after an ambiguous dispatch could run
the same task twice.c              3  ó8   <"  € T F  qS9  g   K  Vx € K  	  R # 5ir   r   )Ú.0ÚindexÚorders   & €r   Ú	<genexpr>Ú5FailoverHostedRoomPeerClient._call.<locals>.<genexpr>K   s   øé € ÐZÑ(C˜uÐTYÑGY—U’UÓ(Cùs   ƒ�
NÚ	ambiguousFÚ	retryablez#no RoomLink candidate was attemptedr   )r]   rf   rg   r\   ÚextendÚrangerd   r_   ÚgetattrrX   Ú	ExceptionÚRuntimeError)	r   rq   ÚkwargsÚnowÚ
last_errorru   ÚresultÚexcrv   s	   &&,     @r   Ú_callÚ"FailoverHostedRoomPeerClient._callB   s  ø€ ð �j‰j‹lˆØ—‘�ˆØ�<‰<˜1Ô ×'?Ñ'?Õ!?À4×C`ÑC`Ô!`Ø'*Ô$Ø˜Ÿ™Ð%ˆEØ�‰ÔZ¬¬c°$·/±/Ó.BÔ(CÓZÔZØˆ
ÛˆEðÜ  §¡°Õ!7×!>Ñ!>ÀÔGÑQÈ&ÑQ�ð !ŒLØŠMñ ð 'Ò2ˆjÐk¼ÐEjÓ8kÐkøô ô Ü˜3 ¨U×3Ò3¼7À3ÈÐUZ×;[Ò;[ØØ �
Ýûð	ús   Â$-C.Ã.D-Ã9)D(Ä(D-c               ó   € V ^8„  d   QhRR/# rp   r   )r   s   "r   r   ra   Y   s   € ÷ ñ ˜#ñ r   c                	ó"   a € V 3R  lpS Vn         V# )c                ó*   <€ V P                   ! S3/ VB # r   )r…   )r   r€   rq   s   &,€r   ÚcallÚ4FailoverHostedRoomPeerClient._delegate.<locals>.callZ   s   ø€ Ø—:’:˜fÑ/¨Ñ/Ð/r   )rL   )rq   rŠ   s   f r   Ú	_delegateÚ&FailoverHostedRoomPeerClient._delegateY   s   ø€ õ	0àˆŒØˆr   c                	ó�   € V P                    F5  p\        \        VP                  R R4      ;p4      '       g   K-  V! R/ VB  K7  	  R# )r    Nr   )r_   Úcallabler}   rX   )r   r€   rh   Úbinds   &,  r   r    Ú,FailoverHostedRoomPeerClient.bind_room_scopeb   s9   € ØŸœˆIÜ¤¨	×(8Ñ(8Ð:KÈTÓ RÐR˜×SÔSÙ‘�v”ó )r   )rf   rg   r_   r]   r\   N)r.   r1   r;   r?   rC   )rL   rM   rN   rO   rP   ÚtimeÚ	monotonicri   Úpropertyrm   r…   rŒ   Úmapr.   r1   r;   r?   rC   r    rQ   r   r   r   r[   r[   .   s_   † ÙOð'Ø\^ð'à%)§^¡^÷'ð ô-ó ð-õlõ.ñ 03°9Ð>rÓ/sÑ,€GˆX�w ¨Øör   r[   c                  óz   € ] tR t^ht$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   RtR]R&   RtR# )ÚPeerMemberRoutezCSecret-free target coordinates plus a separately stored room grant.r%   Úhome_install_idÚ	member_idrW   Útarget_profileÚcapability_digestÚcancellation_scope_idÚtrace_idr(   Ú Úexecution_policy_digestr   N)rL   rM   rN   rO   rP   rY   rŸ   rQ   r   r   r   r—   r—   h   s=   ‡ áMàÓØƒNØÓØÓØÓØÓØƒMØƒJØ#%Ð˜S×%r   r—   c               ó@   € V ^8„  d   QhRRRRRRRRRRR	R
RR
RRRRRR/
# )r   Úbindingr   Úrouter—   r$   r%   rF   rš   rG   rH   Úsource_event_seqÚpromptr�   r   r
   r   )r   s   "r   r   r   w   sl   € ÷ Yñ YØ!ðYØ*9ðYØDGðYØRUðYàðYà/2ðYàFIðYàSVðYð ðYð +ñYr   c        	   	     óž  € \         P                  ! / R\        bRVbRVP                  bRV P                  bRV P
                  bRVP                  bRVP                  bRVbR	VbR
VbRVbRVP                  bRVbR\        P                  ! VP                  R4      4      P                  4       bRVP                  bRVP                  bRVb4      # )zEBuild the fully fenced member dispatch shared by submit and recovery.Úprotocol_versionr$   r˜   Úauthority_gateway_idÚauthority_epochr™   rW   rš   rF   rG   r£   rœ   r¤   Úprompt_digestzutf-8r›   rŸ   r�   )r
   Úfrom_mappingr   r˜   Ú
gateway_idr¨   r™   rW   rœ   ÚhashlibÚsha256ÚencodeÚ	hexdigestr›   rŸ   ©	r¡   r¢   r$   rF   rš   rG   r£   r¤   r�   s	   $$$$$$$$$r   Úbuild_member_dispatchr±   w   sE  € ô
  ×,Ò,ð 	.XØÔ,ð	.XØ.7¸ð	.Xà˜5×0Ñ0ð	.Xà2HÈ'×J\ÑJ\ð	.Xð 	˜7×2Ñ2ð	.Xð 5@ÀÇÁð	.Xð 	˜U×4Ñ4ð		.Xð 7GÈð		.Xð
 	�7ð	.Xð
 3Ð4Hð	.Xð 	Ð,ð	.Xð /FÀu×GbÑGbð	.Xð 	�&ð	.Xð *¬7¯>ª>¸&¿-¹-ÈÓ:PÓ+Q×+[Ñ+[Ó+]ð	.Xð 	˜U×4Ñ4ð	.Xð 	" 5×#@Ñ#@ð	.Xð CMÈhð	.Xó 	Yð 	Yr   c                  óÎ   € ] tR t^ˆtRtRtR^RRRR/R R lltR	R/R
 R l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/R R lltR R ltR R ltR R ltR tR# )!ÚPeerHostedRoomTransportzGTranslate runtime session operations into recipient-validated peer RPC.Fr£   rF   NrG   c               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r   r¡   r   r¢   r—   rX   r   r£   rH   rF   r+   rG   z
int | Noner   r   r   )r   s   "r   r   Ú$PeerHostedRoomTransport.__annotate__�   sH   € ÷ 5ñ 5Ø+ð5Ø4Cð5à$ð5à8;ð5àJTð5ð )ð5ð 59ñ5r   c          
     	óÌ  € Wn         W n        W0n        \        V\        4      '       g   V^8  d   \        R4      h\        V4      V n        WPn        W`n	        RV n
        RV n        \        \        V P                  RR4      ;p4      '       dX   V! VP                  VP                  VP                   VP"                  VP$                  VP&                  VP(                  R7       R# R# )é   z+peer room source_event_seq must be positiveNr    )r$   r˜   r§   r¨   r™   rW   rš   )r¡   r¢   rX   Ú
isinstancer*   rc   rH   r£   rF   rG   Ú_session_idÚ	_dispatchr�   r}   r$   r˜   r«   r¨   r™   rW   rš   )r   r¡   r¢   rX   r£   rF   rG   Ú
bind_scopes   &$$$$$$ r   ri   Ú PeerHostedRoomTransport.__init__�   sÁ   € ð ŒØŒ
ØŒÜÐ&¬×-Ò-Ð1AÀAÔ1EÜÐJÓKÐKÜ #Ð$4Ó 5ˆÔØŒØ$8Ô!Ø'+ˆÔØ6:ˆŒÜ¤'¨$¯+©+Ð7HÈ$Ó"OÐO�J×PÒPÙØŸ™¸×9NÑ9NØ%,×%7Ñ%7È×I`ÑI`ØŸ/™/¸U×=TÑ=TØ$×3Ñ3÷	5ñ Qr   Útitlec               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r&   r%   r'   r½   r+   r   r   r   )r   s   "r   r   rµ   ¢   s/   € ÷ Wñ W°ð W¸Sð WÈð WÐ_cñ Wr   c               	óæ   € V\         8w  d   \        R 4      hWP                  P                  8w  d   \        R4      hVe2   V\	        V P
                  P                  4      8w  d   \        R4      hR# R# )z,peer room transport requires source=bot_roomz4peer room transport profile does not match its grantNz6peer room transport title does not match room identity)r   rc   r¢   rš   r   r¡   r$   )r   r&   r'   r½   s   &$$$r   Ú_validate_coordinatesÚ-PeerHostedRoomTransport._validate_coordinates¢   se   € ØÔ(Ô(ÜÐKÓLÐLØ—j‘j×/Ñ/Ô/ÜÐSÓTÐTØÒ Ô*<¸T¿\¹\×=QÑ=QÓ*RÔ!RÜÐUÓVÐVñ "SÑr   c               ó    € V ^8„  d   QhRRRR/# )r   Úextrar   r   zdict[str, Any]r   )r   s   "r   r   rµ   ª   s   € ÷ Uñ U˜sð U ~ñ Ur   c                ób   € RV P                   P                  RV P                  P                  /VC# )zERoom id + grant keyword arguments shared by every scoped client call.r$   r(   )r¡   r$   r¢   r(   )r   rÃ   s   &,r   Ú_scopedÚPeerHostedRoomTransport._scopedª   s*   € à˜4Ÿ<™<×/Ñ/°¸$¿*¹*×:JÑ:JÐTÈeÐTÐTr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r&   r%   r'   r)   r*   r½   r+   r   )r   s   "r   r   rµ   ®   s.   € ÷ kñ k 3ð k°ð k¸Tð kÈ*ñ kr   c               óŒ   € V P                  WVR7       V P                  P                  ! R/ V P                  ! RRVRVRV/VB B # )z7Validate coordinates, then the scoped ``prepare`` call.)r&   r'   r½   r&   r'   r)   r   )rÀ   rX   r.   rÅ   )r   r&   r'   r)   r½   rÃ   s   &$$$$,r   Ú_prepareÚ PeerHostedRoomTransport._prepare®   sJ   € à×"Ñ"¨7ÈÐ"ÔOØ�{‰{×"Ò"Ñj T§\¢\Ñ%i¸'Ð%iÈ&Ð%iÐY_Ð%iÐchÑ%iÑjÐjr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r&   r%   r½   r'   r   r,   r   )r   s   "r   r   rµ   ³   s/   € ÷ Xñ X¨ð X°Cð XÀð XÐIañ Xr   c               	ó*   € V P                  WR VR7      # )F©r&   r'   r)   r½   )rÉ   )r   r&   r½   r'   s   &$$$r   Úresolve_exactÚ%PeerHostedRoomTransport.resolve_exact³   s   € Ø�}‰} WÀEÐQVˆ}ÓWÐWr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r&   r%   r½   r'   r   r2   r   )r   s   "r   r   rµ   ¶   s)   € ÷ ñ  ð ¨Sð ¸#ð ÐBSñ r   c               	óÐ   € V P                  WR VR7      pVf   \        R4      h\        VP                  R4      ;'       g    VP                  R4      ;'       g    R4      V n        V# )TrÍ   z$peer did not create the room sessionr7   Úidrž   )rÉ   r   r%   Úgetr¹   )r   r&   r½   r'   Úsessions   &$$$ r   r)   ÚPeerHostedRoomTransport.create¶   s]   € Ø—-‘-¨ÀtÐSX�-ÓYˆØŠ?ÜÐEÓFÐFÜ˜wŸ{™{¨<Ó8×SÐS¸G¿K¹KÈÓ<M×SÐSÐQSÓTˆÔØˆr   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   r&   r%   r7   r'   r   r2   r   )r   s   "r   r   rµ   ½   s)   € ÷ ñ  ð °#ð ¸sð ÐGXñ r   c               	óX   € V P                  WR VR7      pVf   \        R4      hW n        V# )F)r&   r'   r)   r"   z peer room session is unavailable)rÉ   r   r¹   )r   r&   r7   r'   rÔ   s   &$$$ r   ÚresumeÚPeerHostedRoomTransport.resume½   s3   € Ø—-‘-¨ÀuÐbl�-ÓmˆØŠ?ÜÐAÓBÐBØ%ÔØˆr   r™   Úattachmentsc               ó@   € V ^8„  d   QhRRRRRRRRRRRR	R
RRRRRRR/
# )r   r&   r%   r7   r¤   r'   Útaskr	   rG   rH   Úon_terminalz#Callable[[Mapping[str, Any]], None]r™   r+   rÛ   z"Sequence[Mapping[str, Any]] | Noner   r2   r   )r   s   "r   r   rµ   Ä   sc   € ÷ ñ ØðØ+.ðØ8;ðØEHðØP\ðà!ðà0Sðð ðð 4Vðð 
ñ	r   c       	        	ó¶  € V	'       d   \        R 4      hVe&   W€P                  P                  8w  d   \        R4      hV P                  WR7       V P                  RV09  d   \        R4      h\        V P                  V P                  VP                  VP                  YV P                  TV P                  P                  ;'       g#    R\        P                  ! 4       P                   2R7	      p
W n        W n        V P                  P!                  V
P#                  4       V P                  P$                  R7      pVP'                  R4      R	9   d	   V! V4       V# )
z?attachments_unsupported_on_route: peer route cannot carry filesNz3peer room transport member does not match its grant©r&   r'   z*peer room session changed during admissionztrace-r°   ©r1   r(   r?   >   ÚfailedÚsettledÚ	cancelled)rc   r¢   r™   rÀ   r¹   r±   r¡   r$   rF   r£   r�   ÚuuidÚuuid4Úhexrº   rX   r1   Ú
as_mappingr(   rÓ   )r   r&   r7   r¤   r'   rÝ   rG   rÞ   r™   rÛ   r1   rƒ   s   &$$$$$$$$$  r   ÚsubmitÚPeerHostedRoomTransport.submitÄ   s  € ÷
 ÜÐ^Ó_Ð_àÒ  Y·*±*×2FÑ2FÔ%FÜÐRÓSÐSØ×"Ñ"¨7Ð"ÔBØ×Ñ D¨*Ð#5Ô5ÜÐIÓJÐJÜ(Ø—L‘L¨¯
©
¸D¿L¹LÐRV×R^ÑR^Ø"Ø!×2Ñ2¸6Ø—Z‘Z×(Ñ(×GÐG¨f´T·Z²Z³\×5EÑ5EÐ4FÐ,Gô	Iˆð
 "ŒØ%ÔØ—‘×%Ñ%¨x×/BÑ/BÓ/DÈDÏJÉJ×L\ÑL\Ð%Ó]ˆØ�:‰:�hÓÐ#EÔEÙ˜ÔØˆr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r&   r%   r7   r'   r   r8   r   )r   s   "r   r   rµ   Ý   s/   € ÷ [ñ [ #ð [°3ð [Àð [ÐHcñ [r   c          	     	ó~   € V P                  WR 7       V P                  P                  ! R/ V P                  WR7      B # ©rà   )r&   r7   r   )rÀ   rX   r;   rÅ   ©r   r&   r7   r'   s   &$$$r   r;   ÚPeerHostedRoomTransport.historyÝ   s6   € Ø×"Ñ"¨7Ð"ÔBØ�{‰{×"Ò"ÑZ T§\¡\¸' \Ó%YÑZÐZr   c               ó(   € V ^8„  d   QhRRRRRRRR/# r×   r   )r   s   "r   r   rµ   á   s/   € ÷ Zñ Z˜sð Z°ð Z¸Sð ZÐEVñ Zr   c          	     	ó~   € V P                  WR 7       V P                  P                  ! R/ V P                  WR7      B # rí   )rÀ   rX   r?   rÅ   rî   s   &$$$r   ÚinfoÚPeerHostedRoomTransport.infoá   s6   € Ø×"Ñ"¨7Ð"ÔBØ�{‰{×!Ò!ÑY D§L¡L¸ LÓ$XÑYÐYr   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r   r&   r%   r7   r'   Úexpected_task_idr   r,   r   )r   s   "r   r   rµ   å   s4   € ÷ $ñ $Øð$Ø+.ð$Ø8;ð$ØORð$à	!ñ$r   c               	óâ  € V P                  WR 7       V P                  pVeS   VP                  V8w  d   R# V P                  P	                  VP                  4       V P                  P                  R7      # V P                  V8w  g/   V P                  '       d   \        V P                  R4      '       g   R# V P                  P                  W@P                  V P                  P                  R7      # )rà   Nrá   rJ   )rF   rG   r(   )rÀ   rº   rF   rX   rC   rè   r¢   r(   rG   ÚhasattrrJ   )r   r&   r7   r'   rõ   r1   s   &$$$$ r   Ú	interruptÚ!PeerHostedRoomTransport.interruptå   sÁ   € ð 	×"Ñ"¨7Ð"ÔBØ—>‘>ˆØÒØ×ÑÐ#3Ô3ÙØ—;‘;×#Ñ#¨X×-@Ñ-@Ó-BÈ$Ï*É*×JZÑJZÐ#Ó[Ð[Ø�L‰LÐ,Ô,°D×4M×4MÐ4MÜ˜tŸ{™{¨N×;Ò;ÙØ�{‰{×'Ñ'Ø$×;TÑ;TØ—*‘*×"Ñ"ð (ó $ð 	$r   )rº   r¹   r¡   rX   rG   r¢   r£   rF   )rL   rM   rN   rO   rP   Úaccepts_attachmentsri   rÀ   rÅ   rÉ   rÎ   r)   rÙ   ré   r;   rò   rø   rQ   r   r   r   r³   r³   ˆ   s�   † ÙQàÐð5à>?ð5àW[ð5ð ,0÷5ð*WÐVZ÷ WõUðkÐW[÷ kõ
Xõõðð !%ðð Y]÷õ2[õZ÷$ñ $r   r³   )rP   Ú
__future__r   r¬   r’   rå   Úcollections.abcr   r   r   Údataclassesr   Útypingr   r   Úgateway.hosted_room_driverr	   Úgateway.hosted_room_peerr
   r   Útui_gateway.hosted_room_driverr   r   r   r   r   rT   r[   r—   r±   r³   r   r   r   Ú<module>r     sŸ   ðñcõ #ã Û Û ß 7Ñ 7Ý !ß  å 3ß K÷Tó Tô8˜8ô 8ñ  �$Ô÷!ð !ó ð!÷7ñ 7ñt �$Ô÷&ð &ó ð&õYô"k$Ð0ö k$r   