ó
    F\hà£  ã                   óê  • / S Qr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSK
JrJr  SSKJr  \R                   r SSKrSSKrSSKJrJrJrJr  S	rS
r\	R8                  " 5       rSrS/r\ " \S5      (       a  Sr\S/-  r\R2                  S:X  a  Sr\S/-  r\4S jr!S r"S r#S r$S r% " S S5      r&\(       a   " S S\&5      r' " S S\&5      r( " S S\)5      r*SCS jr+\R2                  S:w  a  SDS jr,OSDS jr, " S S\)5      r-S  r.\R2                  S:X  a   " S! S"\)5      r/S# r0S$r1S%r2S&r3S'r4\5" 1 S(k5      r6\7" S) \6 5       5      r8S*r9S+r:\9\:4r;S, r<S- r=S. r>SES/\?4S0 jjr@S/\?4S1 jrA " S2 S3\)5      rBS4 rCS5 rD " S6 S7\*5      rES8 rF\R2                  S:X  a!  S9 rG\R�                  \R’                  1rJSFS: jrKO0SSKLrL\ " \LS;5      (       a  \LRš                  rNO\LRž                  rNSFS< jrK\R2                  S:X  a3  S= rPS> rQ\R¤                  " \(\P5        S? rSS@ rT\R¤                  " \'\S5        gSA rPSB rQ\R¤                  " \(\P5        g! \ a    \R2                  S:X  a  e Sr GNf = f)G)ÚClientÚListenerÚPipeÚwaité    Né   )Úutil)ÚAuthenticationErrorÚBufferTooShort)Ú	reduction)ÚWAIT_OBJECT_0ÚWAIT_ABANDONED_0ÚWAIT_TIMEOUTÚINFINITEÚwin32i    g      4@ÚAF_INETÚAF_UNIXÚAF_PIPEc                 ó2   • [         R                  " 5       U -   $ ©N©ÚtimeÚ	monotonic)Útimeouts    Ú1/usr/lib/python3.13/multiprocessing/connection.pyÚ_init_timeoutr   <   s   € Ü�>Š>Ó˜gÑ%Ð%ó    c                 ó2   • [         R                  " 5       U :„  $ r   r   )Úts    r   Ú_check_timeoutr   ?   s   € Ü�>Š>Ó˜aÑÐr   c                 ó  • U S:X  a  gU S:X  a(  [         R                  " S[        R                  " 5       S9$ U S:X  a:  [         R                  " S[        R
                  " 5       [        [        5      4-  SS9$ [        S	5      e)
z7
Return an arbitrary free address for the given family
r   )Ú	localhostr   r   z	listener-)ÚprefixÚdirr   z\\.\pipe\pyc-%d-%d-Ú zunrecognized family)	ÚtempfileÚmktempr   Úget_temp_dirÚosÚgetpidÚnextÚ_mmap_counterÚ
ValueError©Úfamilys    r   Úarbitrary_addressr/   F   sy   € ð �ÓØØ	�9Ó	Ü�Š k´t×7HÒ7HÓ7JÑKÐKØ	�9Ó	Ü�ŠÐ&<Ü "§	¢	£¬T´-Ó-@ÐAñ'BØGIñKð 	Kô Ð.Ó/Ð/r   c                 óÒ   • [         R                  S:w  a  U S:X  a  [        SU -  5      e[         R                  S:X  a+  U S:X  a$  [        [        U 5      (       d  [        SU -  5      eggg)z<
Checks if the family is valid for the current environment.
r   r   zFamily %s is not recognized.r   N)ÚsysÚplatformr,   ÚhasattrÚsocketr-   s    r   Ú_validate_familyr5   T   sf   € ô ‡|�|�wÓ 6¨YÓ#6ÜÐ7¸&Ñ@ÓAÐAä
‡|�|�wÓ 6¨YÓ#6ä”v˜v×&Ñ&ÜÐ;¸fÑDÓEÐEð 'ð $7Ðr   c                 óô   • [        U 5      [        :X  a  g[        U 5      [        L a  U R                  S5      (       a  g[        U 5      [        L d  [        R
                  " U 5      (       a  g[        SU -  5      e)zQ
Return the types of the address

This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE'
r   z\\r   r   zaddress type of %r unrecognized)ÚtypeÚtupleÚstrÚ
startswithr   Úis_abstract_socket_namespacer,   )Úaddresss    r   Úaddress_typer=   `   sb   € ô ˆGƒ}œÓØÜ	ˆg‹œ#Ò	 '×"4Ñ"4°V×"<Ñ"<ØÜ	ˆg‹œ#Ò	¤×!BÒ!BÀ7×!KÑ!KØäÐ:¸WÑDÓEÐEr   c                   ó¼   • \ rS rSrSrSS jrS rS rS rS r	S r
\S	 5       r\S
 5       r\S 5       rS rS rSS jrS rSS jrSS jrS rSS jrS rS rSrg)Ú_ConnectionBaseés   Nc                 óœ   • UR                  5       nUS:  a  [        S5      eU(       d  U(       d  [        S5      eXl        X l        X0l        g )Nr   zinvalid handlez6at least one of `readable` and `writable` must be True)Ú	__index__r,   Ú_handleÚ	_readableÚ	_writable)ÚselfÚhandleÚreadableÚwritables       r   Ú__init__Ú_ConnectionBase.__init__v   sI   € Ø×!Ñ!Ó#ˆØ�A‹:ÜÐ-Ó.Ð.Þ¦ÜØHóJð JàŒØ!ŒØ!�r   c                 ó@   • U R                   b  U R                  5         g g r   ©rC   Ú_close©rF   s    r   Ú__del__Ú_ConnectionBase.__del__ƒ   s   € Ø�<‰<Ñ#Ø�K‰K�Mð $r   c                 ó4   • U R                   c  [        S5      eg )Núhandle is closed)rC   ÚOSErrorrO   s    r   Ú_check_closedÚ_ConnectionBase._check_closed‡   s   € Ø�<‰<ÑÜÐ,Ó-Ð-ð  r   c                 ó<   • U R                   (       d  [        S5      eg )Nzconnection is write-only)rD   rT   rO   s    r   Ú_check_readableÚ_ConnectionBase._check_readable‹   s   € Ø�~�~ÜÐ4Ó5Ð5ð r   c                 ó<   • U R                   (       d  [        S5      eg )Nzconnection is read-only)rE   rT   rO   s    r   Ú_check_writableÚ_ConnectionBase._check_writable�   s   € Ø�~�~ÜÐ3Ó4Ð4ð r   c                 ój   • U R                   (       a  SU l        OU R                  5         [        S5      e)NFzbad message length)rE   rD   ÚcloserT   rO   s    r   Ú_bad_message_lengthÚ#_ConnectionBase._bad_message_length“   s%   € Ø�>�>Ø"ˆD�Nà�J‰JŒLÜÐ*Ó+Ð+r   c                 ó   • U R                   SL $ )z True if the connection is closedN©rC   rO   s    r   ÚclosedÚ_ConnectionBase.closedš   s   € ð �|‰|˜tÐ#Ð#r   c                 ó   • U R                   $ )z"True if the connection is readable)rD   rO   s    r   rH   Ú_ConnectionBase.readableŸ   ó   € ð �~‰~Ðr   c                 ó   • U R                   $ )z"True if the connection is writable)rE   rO   s    r   rI   Ú_ConnectionBase.writable¤   rg   r   c                 ó:   • U R                  5         U R                  $ )z+File descriptor or handle of the connection)rU   rC   rO   s    r   ÚfilenoÚ_ConnectionBase.fileno©   s   € à×ÑÔØ�|‰|Ðr   c                 óh   • U R                   b   U R                  5         SU l         gg! SU l         f = f)zClose the connectionNrM   rO   s    r   r^   Ú_ConnectionBase.close®   s1   € à�<‰<Ñ#ð$Ø—‘”à#�•ð	 $øð  $�•ús   �( ¨	1c                 óx  • U R                  5         U R                  5         [        U5      nUR                  S:”  a  UR	                  S5      nUR
                  nUS:  a  [        S5      eXR:  a  [        S5      eUc  XR-
  nO$US:  a  [        S5      eX#-   U:”  a  [        S5      eU R                  XBX#-    5        g)	z,Send the bytes data from a bytes-like objectr   ÚBr   zoffset is negativezbuffer length < offsetNzsize is negativezbuffer length < offset + size)rU   r[   Ú
memoryviewÚitemsizeÚcastÚnbytesr,   Ú_send_bytes)rF   ÚbufÚoffsetÚsizeÚmÚns         r   Ú
send_bytesÚ_ConnectionBase.send_bytes¶   s²   € à×ÑÔØ×ÑÔÜ�s‹OˆØ�:‰:˜‹>Ø—‘�s“ˆAØ�H‰HˆØ�A‹:ÜÐ1Ó2Ð2Ø‹:ÜÐ5Ó6Ð6Ø‰<Ø‘:‰DØ�A‹XÜÐ/Ó0Ð0Ø‰]˜QÓÜÐ<Ó=Ð=Ø×Ñ˜ &¡-Ð0Õ1r   c                 óŒ   • U R                  5         U R                  5         U R                  [        R	                  U5      5        g)zSend a (picklable) objectN)rU   r[   ru   Ú_ForkingPicklerÚdumps©rF   Úobjs     r   ÚsendÚ_ConnectionBase.sendÊ   s3   € à×ÑÔØ×ÑÔØ×Ñœ×.Ñ.¨sÓ3Õ4r   c                 óÒ   • U R                  5         U R                  5         Ub  US:  a  [        S5      eU R                  U5      nUc  U R	                  5         UR                  5       $ )z'
Receive bytes data as a bytes object.
r   znegative maxlength)rU   rX   r,   Ú_recv_bytesr_   Úgetvalue)rF   Ú	maxlengthrv   s      r   Ú
recv_bytesÚ_ConnectionBase.recv_bytesÐ   sa   € ð 	×ÑÔØ×ÑÔØÑ  Y°£]ÜÐ1Ó2Ð2Ø×Ñ˜yÓ)ˆØ‰;Ø×$Ñ$Ô&Ø�|‰|‹~Ðr   c                 óâ  • U R                  5         U R                  5         [        U5       nUR                  nU[	        U5      -  nUS:  a  [        S5      eX%:”  a  [        S5      eU R                  5       nUR                  5       nXRU-   :  a  [        UR                  5       5      eUR                  S5        UR                  X2U-  X'-   U-   5        UsSSS5        $ ! , (       d  f       g= f)zY
Receive bytes data into a writeable bytes-like object.
Return the number of bytes read.
r   znegative offsetzoffset too largeN)rU   rX   rq   rr   Úlenr,   r…   Útellr
   r†   ÚseekÚreadinto)rF   rv   rw   ry   rr   ÚbytesizeÚresultrx   s           r   Úrecv_bytes_intoÚ_ConnectionBase.recv_bytes_intoÝ   sÐ   € ð
 	×ÑÔØ×ÑÔÜ˜Œ_ à—z‘zˆHØ¤# a£&Ñ(ˆHØ˜‹zÜ Ð!2Ó3Ð3ØÓ"Ü Ð!3Ó4Ð4Ø×%Ñ%Ó'ˆFØ—;‘;“=ˆDØ 4™-Ó'Ü$ V§_¡_Ó%6Ó7Ð7à�K‰K˜ŒNØ�O‰O˜A¨Ñ0Ø%™}°Ñ9ð;ô <à÷! �_�_ús   ¬B*C Ã 
C.c                 ó¨   • U R                  5         U R                  5         U R                  5       n[        R	                  UR                  5       5      $ )zReceive a (picklable) object)rU   rX   r…   r~   ÚloadsÚ	getbuffer)rF   rv   s     r   ÚrecvÚ_ConnectionBase.recvö   s?   € à×ÑÔØ×ÑÔØ×ÑÓ ˆÜ×$Ñ$ S§]¡]£_Ó5Ð5r   c                 ód   • U R                  5         U R                  5         U R                  U5      $ )z/Whether there is any input available to be read)rU   rX   Ú_poll©rF   r   s     r   ÚpollÚ_ConnectionBase.pollý   s)   € à×ÑÔØ×ÑÔØ�z‰z˜'Ó"Ð"r   c                 ó   • U $ r   © rO   s    r   Ú	__enter__Ú_ConnectionBase.__enter__  ó   € Øˆr   c                 ó$   • U R                  5         g r   ©r^   ©rF   Úexc_typeÚ	exc_valueÚexc_tbs       r   Ú__exit__Ú_ConnectionBase.__exit__  ó   € Ø�
‰
�r   )rC   rD   rE   )TT)r   Nr   )r   )g        )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rC   rJ   rP   rU   rX   r[   r_   Úpropertyrc   rH   rI   rk   r^   r{   r‚   rˆ   r‘   r–   r›   rŸ   r¨   Ú__static_attributes__rž   r   r   r?   r?   s   s“   † Ø€Gô	"òò.ò6ò5ò,ð ñ$ó ð$ð ñó ðð ñó ðòò
$ô2ò(5ôôò26ô#òõr   r?   c                   ó\   • \ rS rSrSrSrSr\R                  4S jr	S r
SS jrS rS	 rS
rg)ÚPipeConnectioni  zŠ
Connection class based on a Windows named pipe.
Overlapped I/O is used, so the handles must have been created
with FILE_FLAG_OVERLAPPED.
FNc                 óf   • U R                   nUb  UR                  5         U" U R                  5        g r   )Ú_send_ovÚcancelrC   )rF   Ú_CloseHandleÚovs      r   rN   ÚPipeConnection._close  s%   € Ø—‘ˆBØ‰~à—	‘	”Ù˜Ÿ™Õ&r   c                 ó@  • U R                   b  [        S5      e[        R                  " U R                  USS9u  p#X l          U[        R
                  :X  a3  [        R                  " UR                  /S[        5      nU[        :X  d   eS U l         UR                  S5      u  pSU[        R                  :X  a  [        [        R                  S5      eUS:X  d   eU[!        U5      :X  d   eg !   UR                  5         e = f! S U l         UR                  S5      u  pSf = f)Nz/concurrent send_bytes() calls are not supportedT©Ú
overlappedFrS   r   )r´   r,   Ú_winapiÚ	WriteFilerC   ÚERROR_IO_PENDINGÚWaitForMultipleObjectsÚeventr   r   rµ   ÚGetOverlappedResultÚERROR_OPERATION_ABORTEDrT   ÚerrnoÚEPIPEr‹   )rF   rv   r·   ÚerrÚwaitresÚnwrittens         r   ru   ÚPipeConnection._send_bytes  s  € Ø�}‰}Ñ(ä ð "5ó 6ð 6ä×'Ò'¨¯©°cÀdÑK‰GˆBØŒMð
=Øœ'×2Ñ2Ó2Ü%×<Ò<ØŸ™˜
 E¬8ó5�Gà"¤mÓ3Ð3Ð3ð
 !%�”Ø "× 6Ñ 6°tÓ <‘�Ø”g×5Ñ5Ó5ô œeŸk™kÐ+=Ó>Ð>Ø˜!“8ˆO�8Øœs 3›xÓ'Ð'Ñ'øðØ—	‘	”Øûà $�”Ø "× 6Ñ 6°tÓ <‘�˜#ús   ÁAC+ Ã+C>Ã>D ÄDc                 óð  • U R                   (       a  SU l         [        R                  " 5       $ Uc  SO[        US5      n [        R
                  " U R                  USS9u  p4 U[        R                  :X  a3  [        R                  " UR                  /S[        5      nU[        :X  d   eUR                  S5      u  pdUS:X  a6  [        R                  " 5       nUR                  UR                  5       5        U$ U[        R                   :X  a  U R#                  X15      $  [-        S5      e!   UR                  5         e = f! UR                  S5      u  pdUS:X  a:  [        R                  " 5       nUR                  UR                  5       5        Us  s $ U[        R                   :X  a  U R#                  X15      s  s $ f = f! [$         a*  nUR&                  [        R(                  :X  a  [*        ee S nAff = f)NFé€   Trº   r   z.shouldn't get here; expected KeyboardInterrupt)Ú_got_empty_messageÚioÚBytesIOÚminr¼   ÚReadFilerC   r¾   r¿   rÀ   r   r   rµ   rÁ   Úwriter•   ÚERROR_MORE_DATAÚ_get_more_datarT   ÚwinerrorÚERROR_BROKEN_PIPEÚEOFErrorÚRuntimeError)	rF   ÚmaxsizeÚbsizer·   rÅ   rÆ   ÚnreadÚfÚes	            r   r…   ÚPipeConnection._recv_bytes6  sž  € Ø×&×&Ø*/�Ô'Ü—z’z“|Ð#à&™™´C¸ÀÓ4E�ðÜ%×.Ò.¨t¯|©|¸UØ;?ñA‘G�BðDØ¤'×":Ñ":Ó:Ü&-×&DÒ&DØ!#§¡ 
¨E´8ó'=˜Gà#*¬mÓ#;Ð;Ð#;ð
 &(×%;Ñ%;¸DÓ%A™
˜Ø !›8Ü "§
¢
£˜AØŸG™G B§L¡L£NÔ3Ø#$˜HØ ¤G×$;Ñ$;Ó;Ø#'×#6Ñ#6°rÓ#CÐCð <ô ÐOÓPÐPøð!ØŸ	™	œØûà%'×%;Ñ%;¸DÓ%A™
˜Ø !›8Ü "§
¢
£˜AØŸG™G B§L¡L£NÔ3Ø#$œHØ ¤G×$;Ñ$;Ó;Ø#'×#6Ñ#6°rÓ#CÔCð <ûäó Ø—z‘z¤W×%>Ñ%>Ó>Ü&˜àûð	ús]   Á "G Á#AD* Â*AG Ã9$G Ä*D=Ä=E  Å AF>ÆG Æ'F>Æ;G Æ=F>Æ>G Ç
G5Ç%G0Ç0G5c                 ó    • U R                   (       d'  [        R                  " U R                  5      S   S:w  a  g[	        [        U /U5      5      $ )Nr   T)rË   r¼   ÚPeekNamedPiperC   Úboolr   rš   s     r   r™   ÚPipeConnection._pollV  s>   € Ø×'×'Ü×-Ò-¨d¯l©lÓ;¸AÑ>À!ÓCØÜœ˜d˜V WÓ-Ó.Ð.r   c                 óØ  • UR                  5       n[        R                  " 5       nUR                  U5        [        R
                  " U R                  5      S   nUS:”  d   eUb"  [        U5      U-   U:”  a  U R                  5         [        R                  " U R                  USS9u  pUR                  S5      u  pvUS:X  d   eXu:X  d   eUR                  UR                  5       5        U$ )Nr   r   Trº   )r•   rÌ   rÍ   rÐ   r¼   rÞ   rC   r‹   r_   rÏ   rÁ   )rF   r·   r×   rv   rÚ   ÚleftrÅ   Úrbytess           r   rÒ   ÚPipeConnection._get_more_data\  sÀ   € Ø—,‘,“.ˆCÜ—
’
“ˆAØ�G‰G�CŒLÜ×(Ò(¨¯©Ó6°qÑ9ˆDØ˜!“8ˆO�8ØÑ"¤s¨3£x°$¡¸Ó'@Ø×(Ñ(Ô*Ü×&Ò& t§|¡|°TÀdÑK‰GˆBØ×0Ñ0°Ó6‰KˆFØ˜!“8ˆO�8Ø“>Ð!�>Ø�G‰G�B—L‘L“NÔ#ØˆHr   )rË   r´   r   )r«   r¬   r­   r®   Ú__doc__rË   r´   r¼   ÚCloseHandlerN   ru   r…   r™   rÒ   r°   rž   r   r   r²   r²     s8   † ñ	ð
 #ÐØˆà&-×&9Ñ&9ô 	'ò	(ô4	Qò@	/õ	r   r²   c                   óö   • \ rS rSrSr\(       a)  \R                  4S jr\R                  r
\R                  rO(\R                  4S jr\R                  r
\R                   r\
4S jr\4S jrS rSS	 jrS
 rSrg)Ú
Connectionil  zc
Connection class based on an arbitrary file descriptor (Unix only), or
a socket handle (Windows).
c                 ó(   • U" U R                   5        g r   rb   ©rF   rN   s     r   rN   ÚConnection._closes  ó   € Ù�4—<‘<Õ r   c                 ó(   • U" U R                   5        g r   rb   rê   s     r   rN   rë   x  rì   r   c                 ób   • [        U5      n U" U R                  U5      nX4-  nUS:X  a  g XS  nM$  ©Nr   )r‹   rC   )rF   rv   rÐ   Ú	remainingrz   s        r   Ú_sendÚConnection._send}  s=   € Ü˜“Hˆ	ØÙ�d—l‘l CÓ(ˆAØ‰NˆIØ˜A‹~ØØ�b�'ˆCñ r   c                 óð   • [         R                  " 5       nU R                  nUnUS:”  aL  U" XE5      n[        U5      nUS:X  a  XQ:X  a  [        e[        S5      eUR                  U5        XW-  nUS:”  a  ML  U$ )Nr   zgot end of file during message)rÌ   rÍ   rC   r‹   rÕ   rT   rÐ   )rF   rx   Úreadrv   rG   rð   Úchunkrz   s           r   Ú_recvÚConnection._recv†  sv   € Ü�jŠj‹lˆØ—‘ˆØˆ	Ø˜!‹mÙ˜Ó+ˆEÜ�E“
ˆAØ�A‹vØÓ$Ü"�Nä!Ð"BÓCÐCØ�I‰I�eÔØ‰NˆIð ˜!�mð ˆ
r   c                 ó�  • [        U5      nUS:”  ab  [        R                  " SS5      n[        R                  " SU5      nU R                  U5        U R                  U5        U R                  U5        g [        R                  " SU5      nUS:”  a#  U R                  U5        U R                  U5        g U R                  XA-   5        g )Niÿÿÿú!iéÿÿÿÿú!Qi @  )r‹   ÚstructÚpackrñ   )rF   rv   rz   Ú
pre_headerÚheaders        r   ru   ÚConnection._send_bytes–  s—   € Ü�‹HˆØˆz‹>ÜŸš T¨2Ó.ˆJÜ—[’[  qÓ)ˆFØ�J‰J�zÔ"Ø�J‰J�vÔØ�J‰J�s�Oô —[’[  qÓ)ˆFØ�5‹yð —
‘
˜6Ô"Ø—
‘
˜3•ð —
‘
˜6™<Õ(r   Nc                 ó"  • U R                  S5      n[        R                  " SUR                  5       5      u  nUS:X  a8  U R                  S5      n[        R                  " SUR                  5       5      u  nUb  X1:”  a  g U R                  U5      $ )Né   rù   rú   é   rû   )rö   rü   Úunpackr†   )rF   r×   rv   rx   s       r   r…   ÚConnection._recv_bytes­  so   € Ø�j‰j˜‹mˆÜ—’˜d C§L¡L£NÓ3‰ˆØ�2‹:Ø—*‘*˜Q“-ˆCÜ—M’M $¨¯©«Ó7‰EˆDØÑ 4£>ØØ�z‰z˜$ÓÐr   c                 ó2   • [        U /U5      n[        U5      $ r   )r   rß   )rF   r   Úrs      r   r™   ÚConnection._poll·  s   € Ü�$�˜Ó!ˆÜ�A‹wˆr   rž   r   )r«   r¬   r­   r®   rå   r¼   Ú_multiprocessingÚclosesocketrN   r‚   Ú_writer–   Ú_readr(   r^   rÐ   rô   rñ   rö   ru   r…   r™   r°   rž   r   r   rè   rè   l  so   † ñö
 Ø 0× <Ñ <ô 	!à!×&Ñ&ˆØ ×%Ñ%‰à "§¡ô 	!à—‘ˆØ—‘ˆà%ô ð  %ô ò )ô. õr   rè   c                   óZ   • \ rS rSrSrSS jrS rS r\S 5       r	\S 5       r
S	 rS
 rSrg)r   iÀ  z…
Returns a listener object.

This is a wrapper for a bound socket which is 'listening' for
connections, or for a Windows named pipe.
Nc                 ó8  • U=(       d!    U=(       a    [        U5      =(       d    [        nU=(       d    [        U5      n[        U5        US:X  a  [	        X5      U l        O[        XU5      U l        Ub   [        U[        5      (       d  [        S5      eX@l
        g )Nr   úauthkey should be a byte string)r=   Údefault_familyr/   r5   ÚPipeListenerÚ	_listenerÚSocketListenerÚ
isinstanceÚbytesÚ	TypeErrorÚ_authkey)rF   r<   r.   ÚbacklogÚauthkeys        r   rJ   ÚListener.__init__Ç  s€   € Ø÷ #˜G×=¬°WÓ(=÷ #Ü"ð 	à×6Ô.¨vÓ6ˆä˜Ô Ø�YÓÜ)¨'Ó;ˆD�Nä+¨G¸WÓEˆDŒNàÑ¤z°'¼5×'AÑ'AÜÐ=Ó>Ð>à�r   c                 óØ   • U R                   c  [        S5      eU R                   R                  5       nU R                  b*  [	        XR                  5        [        XR                  5        U$ )zb
Accept a connection on the bound socket or named pipe of `self`.

Returns a `Connection` object.
zlistener is closed)r  rT   Úacceptr  Údeliver_challengeÚanswer_challenge)rF   Úcs     r   r  ÚListener.accept×  sS   € ð �>‰>Ñ!ÜÐ.Ó/Ð/à�N‰N×!Ñ!Ó#ˆØ�=‰=Ñ$Ü˜a§¡Ô/Ü˜Q§¡Ô.Øˆr   c                 óR   • U R                   nUb  SU l         UR                  5         gg)z1
Close the bound socket or named pipe of `self`.
N)r  r^   )rF   Úlisteners     r   r^   ÚListener.closeæ  s)   € ð —>‘>ˆØÑØ!ˆDŒNØ�N‰NÕð  r   c                 ó.   • U R                   R                  $ r   )r  Ú_addressrO   s    r   r<   ÚListener.addressï  s   € à�~‰~×&Ñ&Ð&r   c                 ó.   • U R                   R                  $ r   )r  Ú_last_acceptedrO   s    r   Úlast_acceptedÚListener.last_acceptedó  s   € à�~‰~×,Ñ,Ð,r   c                 ó   • U $ r   rž   rO   s    r   rŸ   ÚListener.__enter__÷  r¡   r   c                 ó$   • U R                  5         g r   r£   r¤   s       r   r¨   ÚListener.__exit__ú  rª   r   )r  r  )NNr   N)r«   r¬   r­   r®   rå   rJ   r  r^   r¯   r<   r)  rŸ   r¨   r°   rž   r   r   r   r   À  sH   † ñô ò òð ñ'ó ð'ð ñ-ó ð-òõr   r   c                 óö   • U=(       d    [        U 5      n[        U5        US:X  a  [        U 5      nO[        U 5      nUb   [	        U[
        5      (       d  [        S5      eUb  [        X25        [        X25        U$ )z5
Returns a connection to the address of a `Listener`
r   r  )	r=   r5   Ú
PipeClientÚSocketClientr  r  r  r  r  )r<   r.   r  r  s       r   r   r   þ  sp   € ð ×,”| GÓ,€FÜ�VÔØ�ÓÜ�wÓ‰ä˜Ó!ˆàÑ¤:¨g´u×#=Ñ#=ÜÐ9Ó:Ð:àÑÜ˜Ô$Ü˜!Ô%à€Hr   c                 óH  • U (       an  [         R                  " 5       u  pUR                  S5        UR                  S5        [        UR	                  5       5      n[        UR	                  5       5      nX44$ [
        R                  " 5       u  pV[        USS9n[        USS9nX44$ )ú<
Returns pair of connection objects at either end of a pipe
TF©rI   ©rH   )r4   Ú
socketpairÚsetblockingrè   Údetachr(   Úpipe)ÚduplexÚs1Ús2Úc1Úc2Úfd1Úfd2s          r   r   r     s†   € ö Ü×&Ò&Ó(‰FˆBØ�N‰N˜4Ô Ø�N‰N˜4Ô Ü˜BŸI™I›KÓ(ˆBÜ˜BŸI™I›KÓ(ˆBð ˆvˆô	 —w’w“y‰HˆCÜ˜C¨%Ñ0ˆBÜ˜C¨%Ñ0ˆBàˆvˆr   c           
      ó~  • [        S5      nU (       a=  [        R                  n[        R                  [        R                  -  n[
        [
        pTO'[        R                  n[        R                  nS[
        pT[        R                  " X[        R                  -  [        R                  -  [        R                  [        R                  -  [        R                  -  SXE[        R                  [        R                  5      n[        R                  " XS[        R                  [        R                   [        R                  [        R                  5      n[        R"                  " U[        R                  SS5        [        R$                  " USS9nUR'                  S5      u  pšU
S:X  d   e[)        X`S9n[)        XpS9nX¼4$ )	r3  r   r   r   NTrº   r4  r5  )r/   r¼   ÚPIPE_ACCESS_DUPLEXÚGENERIC_READÚGENERIC_WRITEÚBUFSIZEÚPIPE_ACCESS_INBOUNDÚCreateNamedPipeÚFILE_FLAG_OVERLAPPEDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚPIPE_TYPE_MESSAGEÚPIPE_READMODE_MESSAGEÚ	PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ
CreateFileÚOPEN_EXISTINGÚSetNamedPipeHandleStateÚConnectNamedPiperÁ   r²   )r:  r<   ÚopenmodeÚaccessÚobsizeÚibsizeÚh1Úh2r»   Ú_rÅ   r=  r>  s                r   r   r   (  sW  € ô $ IÓ.ˆÞÜ×1Ñ1ˆHÜ×)Ñ)¬G×,AÑ,AÑAˆFÜ$¤g‘Fä×2Ñ2ˆHÜ×*Ñ*ˆFØ¤�Fä×$Ò$Ø¤× <Ñ <Ñ<Ü×1Ñ1ñ2ä×%Ñ%¬×(EÑ(EÑEÜ×Ññàˆvœw×;Ñ;ä�L‰Lóˆô ×ÒØ˜Q¤§¡¬g×.CÑ.CÜ×(Ñ(¬'¯,©,óˆô 	×'Ò'Ø”×-Ñ-¨t°Tô	ô ×-Ò-¨b¸TÑBˆ
Ø×/Ñ/°Ó5‰ˆØ�a‹xˆˆxä˜BÑ0ˆÜ˜BÑ0ˆàˆvˆr   c                   ó.   • \ rS rSrSrSS jrS rS rSrg)	r  iT  zG
Representation of a socket which is bound to an address and listening
c                 óæ  • [         R                   " [        [         U5      5      U l         [        R                  S:X  a9  U R                  R                  [         R                  [         R                  S5        U R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  5       U l        X l        S U l        US:X  aG  ["        R$                  " U5      (       d,  ["        R&                  " U [        R(                  U4SS9U l        g S U l        g ! [         a    U R                  R                  5         e f = f)NÚposixr   Tr   r   ©ÚargsÚexitpriority)r4   ÚgetattrÚ_socketr(   ÚnameÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRr7  ÚbindÚlistenÚgetsocknamer%  rT   r^   Ú_familyr(  r   r;   ÚFinalizeÚunlinkÚ_unlink)rF   r<   r.   r  s       r   rJ   ÚSocketListener.__init__X  s  € Ü—}’}¤W¬V°VÓ%<Ó=ˆŒð	ä�w‰w˜'Ó!Ø—‘×'Ñ'¬×(9Ñ(9Ü(.×(;Ñ(;¸Qô@à�L‰L×$Ñ$ TÔ*Ø�L‰L×Ñ˜gÔ&Ø�L‰L×Ñ Ô(Ø ŸL™L×4Ñ4Ó6ˆDŒMð ŒØ"ˆÔà�YÓ¤t×'HÒ'HÈ×'QÑ'QäŸ=š=Ø”b—i‘i w j¸qñˆD�Lð  ˆD�Løô ó 	Ø�L‰L×ÑÔ Øð	ús   «B=E
 Å
&E0c                 ó˜   • U R                   R                  5       u  ol        UR                  S5        [	        UR                  5       5      $ )NT)ra  r  r(  r7  rè   r8  ©rF   Úss     r   r  ÚSocketListener.acceptq  s7   € Ø!%§¡×!4Ñ!4Ó!6ÑˆÔØ	�‰�dÔÜ˜!Ÿ(™(›*Ó%Ð%r   c                 ó¼   •  U R                   R                  5         U R                  nUb  S U l        U" 5         g g ! U R                  nUb  S U l        U" 5         f f = fr   )ra  r^   rl  )rF   rk  s     r   r^   ÚSocketListener.closev  s[   € ð	Ø�L‰L×ÑÔ à—\‘\ˆFØÑ!Ø#�”Ù•ð "øð —\‘\ˆFØÑ!Ø#�”Ù•ð "ús	   ‚; » A)r%  ri  r(  ra  rl  N)r   )	r«   r¬   r­   r®   rå   rJ   r  r^   r°   rž   r   r   r  r  T  s   † ñô ò2&õ
r   r  c                 ó  • [        U 5      n[        R                  " [        [        U5      5       nUR                  S5        UR	                  U 5        [        UR                  5       5      sSSS5        $ ! , (       d  f       g= f)zG
Return a connection object connected to the socket given by `address`
TN)r=   r4   r`  r7  Úconnectrè   r8  )r<   r.   rp  s      r   r1  r1  €  sU   € ô ˜'Ó"€FÜ	�Šœ¤¨Ó/Ô	1°QØ	�‰�dÔØ	�	‰	�'ÔÜ˜!Ÿ(™(›*Ó%÷ 
2×	1×	1ús   °;A5Á5
Bc                   óB   • \ rS rSrSrS	S jrS
S jrS r\S 5       r	Sr
g)r  i�  z 
Representation of a named pipe
Nc                 ó
  • Xl         U R                  SS9/U l        S U l        [        R
                  " SU R                   5        [        R                  " U [        R                  U R                  U R                   4SS9U l	        g )NT)Úfirstz listener created with address=%rr   r]  )
r%  Ú_new_handleÚ_handle_queuer(  r   Ú	sub_debugrj  r  Ú_finalize_pipe_listenerr^   )rF   r<   r  s      r   rJ   ÚPipeListener.__init__”  sj   € Ø#ŒMØ"&×"2Ñ"2¸Ð"2Ð">Ð!?ˆDÔà"&ˆDÔÜ�NŠNÐ=¸t¿}¹}ÔMÜŸšØ”l×:Ñ:Ø×(Ñ(¨$¯-©-Ð8ÀqñˆD�Jr   c           
      óŠ  • [         R                  [         R                  -  nU(       a  U[         R                  -  n[         R                  " U R
                  U[         R                  [         R                  -  [         R                  -  [         R                  [        [        [         R                  [         R                  5      $ r   )r¼   rB  rH  rI  rG  r%  rJ  rK  rL  ÚPIPE_UNLIMITED_INSTANCESrE  rM  rN  )rF   rx  Úflagss      r   ry  ÚPipeListener._new_handleŸ  s…   € Ü×.Ñ.´×1MÑ1MÑMˆEÞØœ×>Ñ>Ñ>�Ü×*Ò*Ø—‘˜uÜ×)Ñ)¬G×,IÑ,IÑIÜ×!Ñ!ñ"ä×0Ñ0´'¼7Ü×,Ñ,¬g¯l©lóð r   c                 óZ  • U R                   R                  U R                  5       5        U R                   R                  S5      n [        R
                  " USS9n [        R                  " UR                  /S[        5      n UR                  S5      u  pEUS:X  d   e [        U5      $ !   UR                  5         [        R                  " U5        e = f! UR                  S5      u  pEUS:X  d   ef = f! [         a)  nUR                  [        R                  :w  a  e  S nAN…S nAff = f)Nr   Trº   F)rz  Úappendry  Úpopr¼   rR  r¿   rÀ   r   rµ   ræ   rÁ   rT   rÓ   ÚERROR_NO_DATAr²   )rF   rG   r·   ÚresrY  rÅ   rÛ   s          r   r  ÚPipeListener.accept«  s  € Ø×Ñ×%Ñ% d×&6Ñ&6Ó&8Ô9Ø×'Ñ'×+Ñ+¨AÓ.ˆFð$Ü×-Ò-¨fÀÑF�ð	$Ü!×8Ò8ØŸ™˜
 E¬8ó5‘Cð  ×3Ñ3°DÓ9‘F�AØ !›8�O™8Ü! &Ó)Ð)øðØ—I‘I”KÜ×'Ò'¨Ô/Øûà×3Ñ3°DÓ9‘F�AØ !›8�O™8ûô ó Ø—:‘:¤×!6Ñ!6Ó6Øô 7ûðús0   ÁC7 Á'B+ Â+)CÃC ÃC4Ã7
D*ÄD%Ä%D*c                 óp   • [         R                  " SU5        U  H  n[        R                  " U5        M     g )Nz closing listener with address=%r)r   r{  r¼   ræ   )Úqueuer<   rG   s      r   r|  Ú$PipeListener._finalize_pipe_listenerÂ  s)   € ä�NŠNÐ=¸wÔGÛ�Ü×#Ò# FÖ+ò  r   )r%  rz  r(  r^   r   )F)r«   r¬   r­   r®   rå   rJ   ry  r  Ústaticmethodr|  r°   rž   r   r   r  r  �  s*   † ñ	ô		ô
	ò	*ð. 
ñ	,ó 
ó	,r   r  c           	      óF  • [        5       n  [        R                  " U S5        [        R                  " U [        R                  [        R
                  -  S[        R                  [        R                  [        R                  [        R                  5      n [        R                  " U[        R                  SS5        [!        U5      $ ! [         aI  nUR                  [        R                  [        R                  4;  d  [        U5      (       a  e  SnAOSnAff = fGM  )zE
Return a connection object connected to the pipe given by `address`
éè  r   N)r   r¼   ÚWaitNamedPiperO  rC  rD  rN  rP  rH  rT   rÓ   ÚERROR_SEM_TIMEOUTÚERROR_PIPE_BUSYr   rQ  rK  r²   )r<   r   ÚhrÛ   s       r   r0  r0  È  sé   € ô ‹OˆØðÜ×%Ò% g¨tÔ4Ü×&Ò&ØœW×1Ñ1´G×4IÑ4IÑIØ”w—|‘|¤W×%:Ñ%:Ü×0Ñ0´'·,±,ó�ð ô 	×'Ò'ØŒw×,Ñ,¨d°Dô	ô ˜aÓ Ð øô ó Ø—:‘:¤g×&?Ñ&?Ü&-×&=Ñ&=ð&?ó ?ÜBPÐQR×BSÑBSØô CTûðúò s   �B
C
 Ã

DÃ?DÄDé(   s   #CHALLENGE#s	   #WELCOME#s	   #FAILURE#>   ó   md5ó   sha256ó   sha384ó   sha3_256ó   sha3_384c              #   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )r‹   )Ú.0rY  s     r   Ú	<genexpr>rš  F  s   é € Ð7Ò&6 ”c˜!—f�fÒ&6ùs   ‚é   é   c                 ó  • [        U 5      [        ;   a  SU 4$ U R                  S5      (       aI  U R                  SS[        S-   5      =nS:”  a)  U SU nU[
        ;   a  XS-   S nUR                  S5      U4$ [        S	U < 35      e)
zóReturns a digest name and the payload for a response hash.

If a legacy protocol is detected based on the message length
or contents the digest name returned will be empty to indicate
legacy mode where MD5 and no digest prefix should be sent.
r$   ó   {ó   }r   é   r   NÚasciizRunsupported message length, missing digest prefix, or unsupported digest: message=)r‹   Ú_LEGACY_LENGTHSr:   ÚfindÚ_MAX_DIGEST_LENÚ_ALLOWED_DIGESTSÚdecoder	   )ÚmessageÚcurlyÚdigestÚpayloads       r   Ú_get_digest_name_and_payloadr«  Q  sŸ   € ô ˆ7ƒ|”Ó&ð
 �7ˆ{ÐØ×Ñ˜4× Ñ Ø—,‘,˜t Q¬¸Ñ(9Ó:Ð	:ˆ¸aÓ?Ø˜˜5Ð!ˆØÔ%Ó%Ø A™g˜hÐ'ˆGØ—=‘= Ó)¨7Ð2Ð2Ü
ð/Ø&-¡Zð1ó2ð 2r   c                 ó  • SSK n[        U5      S   nU(       d!   UR                  XS5      R                  5       $ UR                  XU5      R                  5       nSUR                  S5      U4-  $ ! [         a    Sn NDf = f)ao  Create a MAC based on authkey and message

The MAC algorithm defaults to HMAC-MD5, unless MD5 is not available or
the message has a '{digest_name}' prefix. For legacy HMAC-MD5, the response
is the raw MAC, otherwise the response is prefixed with '{digest_name}',
e.g. b'{sha256}abcdefg...'

Note: The MAC protects the entire message including the digest_name prefix.
r   NÚmd5Úsha256ó   {%s}%sr¡  )Úhmacr«  Únewr©  r,   Úencode)r  r§  r°  Údigest_nameÚresponses        r   Ú_create_responserµ  k  s†   € ó Ü.¨wÓ7¸Ñ:€Kæð	#Ø—8‘8˜G¨eÓ4×;Ñ;Ó=Ð=ð �x‰x˜¨+Ó6×=Ñ=Ó?€HØ˜×*Ñ*¨7Ó3°XÐ>Ñ>Ð>øô ó 	#ð #ŠKð		#ús   ›A1 Á1B Á?B c           
      óz  • SSK n[        U5      u  pEU=(       d    Sn UR                  XU5      R                  5       n[        U5      [        U5      :w  a'  [        SU< S[        U5       S[        U5       35      eUR                  Xe5      (       d  [        S	5      eg! [         a    [        SU< S35      ef = f)
aH  Verify MAC challenge

If our message did not include a digest_name prefix, the client is allowed
to select a stronger digest_name from _ALLOWED_DIGESTS.

In case our message is prefixed, a client cannot downgrade to a weaker
algorithm, because the MAC is calculated over the entire message
including the '{digest_name}' prefix.
r   Nr­  zresponse_digest=z unsupportedz	expected z of length z got zdigest received was wrong)r°  r«  r±  r©  r,   r	   r‹   Úcompare_digest)r  r§  r´  r°  Úresponse_digestÚresponse_macÚexpecteds          r   Ú_verify_challenger»  ‡  sÒ   € ó Ü$@ÀÓ$JÑ!€OØ%×.¨€OðEØ—8‘8˜G¨oÓ>×EÑEÓGˆô ˆ8ƒ}œ˜LÓ)Ó)Ü!Ø˜OÑ.¨k¼#¸h»-¸ð IÜ˜<Ó(Ð)ð+ó,ð 	,ð ×Ñ˜x×6Ñ6Ü!Ð"=Ó>Ð>ð 7øô ó EÜ!Ð%5 _Ñ$6°lÐ"CÓDÐDðEús   ž B ÂB:r  c                 óÜ  • [        U[        5      (       d#  [        SR                  [	        U5      5      5      e[
        [        :”  d   S5       e[        R                  " [
        5      nSUR                  S5      U4-  nU R                  [        U-   5        U R                  S5      n [        XU5        U R                  [        5        g ! [         a    U R                  [         5        e f = f)Nú Authkey must be bytes, not {0!s}zprotocol constraintr¯  r¡  é   )r  r  r,   Úformatr7   ÚMESSAGE_LENGTHÚ_MD5ONLY_MESSAGE_LENGTHr(   Úurandomr²  r{   Ú
_CHALLENGErˆ   r»  Ú_WELCOMEr	   Ú_FAILURE)Ú
connectionr  r³  r§  r´  s        r   r  r     sÓ   € Ü�gœu×%Ñ%ÜØ.×5Ñ5´d¸7³mÓDóFð 	FäÔ3Ó3ÐJÐ5JÓJÐ3Ü�jŠjœÓ(€GØ˜;×-Ñ-¨gÓ6¸Ð@Ñ@€Gð ×Ñœ* wÑ.Ô/Ø×$Ñ$ SÓ)€Hð(Ü˜'¨HÔ5ð
 	×ÑœhÕ'øô	 ó Ø×ÑœhÔ'Øðús   Â(C
 Ã
!C+c                 óæ  • [        U[        5      (       d#  [        SR                  [	        U5      5      5      eU R                  S5      nUR                  [        5      (       d  [        SU< 35      eU[        [        5      S  n[        U5      [        :  a  [        S[        U5       S35      e[        X5      nU R                  U5        U R                  S5      nU[        :w  a  [        S5      eg )Nr½  r¾  z,Protocol error, expected challenge: message=zchallenge too short: z byteszdigest sent was rejected)r  r  r,   r¿  r7   rˆ   r:   rÃ  r	   r‹   rÁ  rµ  r{   rÄ  )rÆ  r  r§  r©  r´  s        r   r  r  µ  sâ   € Ü�gœu×%Ñ%ÜØ.×5Ñ5´d¸7³mÓDóFð 	Fà×#Ñ# CÓ(€GØ×Ñœj×)Ñ)Ü!Ø?°w±jÐAóCð 	Cà”cœ*“oÐ&Ð'€GÜ
ˆ7ƒ|Ô-Ó-Ü!Ð$9¼#¸g»,¸ÀvÐ"NÓOÐOÜ˜gÓ/€FØ×Ñ˜&Ô!Ø×$Ñ$ SÓ)€HØ”8ÓÜ!Ð"<Ó=Ð=ð r   c                   ó&   • \ rS rSrS rS rS rSrg)ÚConnectionWrapperiÊ  c                 óh   • Xl         X l        X0l        S H  n[        X5      n[	        XU5        M     g )N)rk   r^   r›   rˆ   r{   )Ú_connÚ_dumpsÚ_loadsr`  Úsetattr)rF   Úconnr   r”   Úattrr�   s         r   rJ   ÚConnectionWrapper.__init__Ë  s0   € ØŒ
ØŒØŒÛKˆDÜ˜$Ó%ˆCÜ�D Ö$ò Lr   c                 ó\   • U R                  U5      nU R                  R                  U5        g r   )rÌ  rË  r{   )rF   r�   rp  s      r   r‚   ÚConnectionWrapper.sendÒ  s"   € Ø�K‰K˜ÓˆØ�
‰
×Ñ˜aÕ r   c                 óX   • U R                   R                  5       nU R                  U5      $ r   )rË  rˆ   rÍ  ro  s     r   r–   ÚConnectionWrapper.recvÕ  s"   € Ø�J‰J×!Ñ!Ó#ˆØ�{‰{˜1‹~Ðr   )rË  rÌ  rÍ  N)r«   r¬   r­   r®   rJ   r‚   r–   r°   rž   r   r   rÉ  rÉ  Ê  s   † ò%ò!õr   rÉ  c                 óT   • [         R                  U 4S S S S5      R                  S5      $ )Nr   úutf-8)Ú	xmlrpclibr   r²  )r�   s    r   Ú
_xml_dumpsrÙ  Ù  s&   € Ü�?‰?˜C˜6 4¨¨t°QÓ7×>Ñ>¸wÓGÐGr   c                 óV   • [         R                  U R                  S5      5      u  u  pU$ )Nr×  )rØ  r”   r¦  )rp  r�   Úmethods      r   Ú
_xml_loadsrÜ  Ü  s"   € Ü—_‘_ Q§X¡X¨gÓ%6Ó7�N�F€SØ€Jr   c                   ó   • \ rS rSrS rSrg)ÚXmlListenerià  c                 ób   • SS K Jq  [        R	                  U 5      n[        U[        [        5      $ rï   )Úxmlrpc.clientÚclientrØ  r   r  rÉ  rÙ  rÜ  r€   s     r   r  ÚXmlListener.acceptá  s"   € å)Ü�o‰o˜dÓ#ˆÜ  ¤j´*Ó=Ð=r   rž   N)r«   r¬   r­   r®   r  r°   rž   r   r   rÞ  rÞ  à  s   † õ>r   rÞ  c                  óJ   • SS K Jq  [        [	        U 0 UD6[
        [        5      $ rï   )rà  rá  rØ  rÉ  r   rÙ  rÜ  )r^  Úkwdss     r   Ú	XmlClientrå  ç  s   € å%ÜœV TÐ2¨TÑ2´JÄ
ÓKÐKr   c                 óú  ^• [        U 5      m/ n[        T5      S:”  au   [        R                  " TSU5      nUR                  U4S jU 5       5        U(       a8  [        T5       VVs/ s H  u  pEXCS   U-  s=:”  a  U;  d  M  O  M  UPM!     snnmSnT(       aÉ  [        T5      S:”  a  TS S OTn[        R                  " USU5      nU[        :X  a   U$ [        Us=::  a  [        [        T5      -   :  a  O  O
U[        -  nO9[        Us=::  a  [        [        T5      -   :  a  O  O
U[        -  nO[        S5      eUR                  TU   5        TUS-   S  mSnT(       a  MÉ  U$ ! [         a    / s $ f = fs  snnf )Né<   Fc              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr   rž   )r™  ÚiÚLs     €r   rš  Ú#_exhaustive_wait.<locals>.<genexpr>þ  s   øé € Ð+¢s !˜˜1ž¢sùó   ƒr   zShould not get herer   )Úlistr‹   r¼   ÚBatchedWaitForMultipleObjectsÚTimeoutErrorÚextendÚ	enumerater¿   r   r   r   rÖ   rƒ  )Úhandlesr   Úreadyr†  ré  r‘  Úshort_Lrê  s          @r   Ú_exhaustive_waitrõ  ò  sc  ø€ ô �‹MˆØˆô ˆq‹6�B‹;ðÜ×;Ò;¸A¸uÀgÓN�ð �L‰LÔ+¡sÓ+Ô+ÞÜ#,¨Q¤<ÔM¢<™4˜1°1¸1±vÀ±zÕ3LÈÑ3L“QÑ3L•Q¡<ÒM�ØˆGÞÜ # A£¨£�a˜˜‘f°ˆGÜ×0Ò0°¸%ÀÓIˆCØ”lÓ"Øð ˆô  #Õ>¬¼¸A»Ñ(>Ö>Ø”}Ñ$‘Ü! SÕDÔ+;¼cÀ!»fÑ+DÖDØÔ'Ñ'‘ä"Ð#8Ó9Ð9Ø�L‰L˜˜3™Ô Ø�#�a‘%�&�	ˆAØˆG÷ ˆað ˆøô)  ó Ø’	ðüó Ns#   ŸE% Á'E7ÂE7ÂE7Å%E4Å3E4c                 óÖ  ^• Uc  [         nOUS:  a  SnO[        US-  S-   5      n[        U 5      n 0 m/ n[        5       n[        5       n U  HÏ  n [	        US5      n [
        R                  " U" 5       SS5      u  pxU[
        R                  :X  a"  UR                  U5        UTUR                  '   Mf  U(       aO  [        R                  " 5       SS S:¼  a3   UR                  S	5      u  p¨U(       d  [!        US
5      (       a  SUl        UR%                  U5        SnMÑ     [+        TR-                  5       U5      nU H  nUR/                  5         M     U Ho  n UR                  S5      u  p¨U[
        R0                  :w  d  M-  TUR                     nUR%                  U5        US:X  d  MU  [!        US
5      (       d  Mh  SUl        Mq     UR3                  U4S jU 5       5        U  Vs/ s H  oUU;   d  M
  UPM     sn$ ! [         a#  n	SU	R                  p‡U[        ;  a  e  Sn	A	GN¨Sn	A	ff = f! [         a  n	U	R                  n Sn	A	GN_Sn	A	ff = f! [&         a    UTUR)                  5       '    GM%  f = f! [         a"  n	U	R                  nU[        ;  a  e  Sn	A	GN1Sn	A	ff = f! U H  nUR/                  5         M     U Hž  n UR                  S5      u  p¨O.! [         a!  n	U	R                  nU[        ;  a  e  Sn	A	OSn	A	ff = fU[
        R0                  :w  d  M\  TUR                     nUR%                  U5        US:X  d  M„  [!        US
5      (       d  M—  SUl        M      f = fs  snf )ú
Wait till an object in object_list is ready/readable.

Returns list of those objects in object_list which are ready/readable.
Nr   r�  g      à?rk   Tr   )é   r   FrË   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr   rž   )r™  r‘  Úwaithandle_to_objs     €r   rš  Úwait.<locals>.<genexpr>_  s   øé € ÐIº=°aÐ.¨qÖ1º=ùrì  )r   Úintrí  Úsetr`  r¼   rÏ   rT   rÓ   Ú_ready_errorsr¾   rƒ  rÀ   r1   ÚgetwindowsversionrÁ   r3   rË   ÚaddÚAttributeErrorrB   rõ  Úkeysrµ   rÂ   Úupdate)Úobject_listr   Úov_listÚready_objectsÚready_handlesÚork   r·   rÅ   rÛ   rY  rú  s              @r   r   r     s,  ø€ ð ‰?Ü‰GØ�q‹[Ø‰Gä˜' D™.¨3Ñ.Ó/ˆGä˜;Ó'ˆØÐØˆÜ›ˆÜ›ˆð6	8Û �ð$Ü$ Q¨Ó1�Fð
"Ü")×"2Ò"2±6³8¸QÀÓ"E™˜ð
 œg×6Ñ6Ó6ØŸ™ rÔ*Ø67Ð)¨"¯(©(Ó3ö
 ¤#×"7Ò"7Ó"9¸"¸1Ð"=ÀÓ"Gð1Ø)+×)?Ñ)?ÀÓ)F¡ ö $'¬7°1Ð6J×+KÑ+KØ7; Ô 4Ø%×)Ñ)¨!Ô,Ø"#šñ= !ô@ -Ð->×-CÑ-CÓ-EÀwÓOˆMó �Ø—	‘	–ñ ó �ðØ×3Ñ3°DÓ9‘F�Að
 œ'×9Ñ9Õ9Ø)¨"¯(©(Ñ3�AØ!×%Ñ% aÔ(Ø˜a•xô # 1Ð&:×;Ó;Ø37˜AÖ0ñ ð  	×ÑÔI¹=ÓIÔIÙ&Ó=š;�a¨}Ñ*<—™;Ñ=Ð=øô_ #ó "Ø"&¨¯
©
˜CØ¤mÓ3Ø!õ 4ûð"ûô  $+ó 1Ø&'§j¡j¦ûð1ûô- &ó 9Ø78Ð% a§k¡k£mÕ4ð9ûôN ó ØŸ*™*�CØ¤-Ó/Øõ 0ûðûó �Ø—	‘	–ñ ó �ðØ×3Ñ3°DÓ9‘F�A�søÜó ØŸ*™*�CØ¤-Ó/Øô 0ûðúð œ'×9Ñ9Õ9Ø)¨"¯(©(Ñ3�AØ!×%Ñ% aÔ(Ø˜a•xô # 1Ð&:×;Ó;Ø37˜AÖ0ò üò" >sà   Á
J$ ÁIÁG<Á<AJ$ ÃH,Ã)AJ$ ÅI5Ç&	M&Ç3M&Ç<
H)ÈH$ÈJ$ È$H)È)J$ È,
IÈ6IÉJ$ ÉIÉJ$ ÉI2É-J$ É1I2É2J$ É5
J!É?JÊJ!Ê$M#ËKËM#Ë
L	Ë"K>	Ë9M#Ë>L	ÌM#Ì$M#ÍM#ÍM#ÚPollSelectorc                 ó°  • [        5        nU  H#  nUR                  U[        R                  5        M%     Ub  [        R
                  " 5       U-   n UR                  U5      nU(       a*  U VVs/ s H  u  pgUR                  PM     snnsSSS5        $ Ub)  W[        R
                  " 5       -
  nUS:  a  UsSSS5        $ Mp  s  snnf ! , (       d  f       g= f)r÷  Nr   )Ú_WaitSelectorÚregisterÚ	selectorsÚ
EVENT_READr   r   ÚselectÚfileobj)r  r   Úselectorr�   Údeadlineró  ÚkeyÚeventss           r   r   r   n  s´   € ô Œ_ Û"�Ø×!Ñ! #¤y×';Ñ';Ö<ñ #ð Ñ"ÜŸ>š>Ó+¨gÑ5�àØ Ÿ™¨Ó0�ÞÙ=BÔCºU©M¨S˜CŸKœK¹UÒC÷ ‰_ð Ñ*Ø"*¬T¯^ª^Ó-=Ñ"=˜Ø" Q›;Ø#(÷ ‰_ñ ùó D÷ �_ús$   ‹A#CÁ.CÂCÂ"CÂ?CÃ
Cc                 ó*  • U R                  5       n[        R                  " U[        R                  [        R                  5       nSSKJn  UR                  U5      n[        X@R                  U R                  44sS S S 5        $ ! , (       d  f       g = f)Nr   )Úresource_sharer)rk   r4   Úfromfdr   ÚSOCK_STREAMr$   r  Ú	DupSocketÚrebuild_connectionrH   rI   )rÏ  rG   rp  r  Údss        r   Úreduce_connectionr  Š  s^   € Ø—‘“ˆÜ�]Š]˜6¤6§>¡>´6×3EÑ3EÔFÈ!Ý)Ø ×*Ñ*¨1Ó-ˆBÜ%¨¯M©M¸4¿=¹=Ð'IÐI÷ G×F×Fús   Á5BÂ
Bc                 óV   • U R                  5       n[        UR                  5       X5      $ r   ©r8  rè   )r  rH   rI   Úsocks       r   r  r  �  s    € Ø�y‰y‹{ˆÜ˜$Ÿ+™+›-¨Ó<Ð<r   c                 ó  • U R                   (       a  [        R                  OSU R                  (       a  [        R                  OS-  n[
        R                  " U R                  5       U5      n[        X R                   U R                  44$ rï   )	rH   r¼   ÚFILE_GENERIC_READrI   ÚFILE_GENERIC_WRITEr   Ú	DupHandlerk   Úrebuild_pipe_connection)rÏ  rT  Údhs      r   Úreduce_pipe_connectionr&  •  s\   € Ø04··”7×,Ò,À1Ø15··”7×-Ò-ÀAñGˆä× Ò  §¡£°Ó7ˆÜ&¨¯]©]¸D¿M¹MÐ(JÐJÐJr   c                 ó:   • U R                  5       n[        X1U5      $ r   )r8  r²   )r%  rH   rI   rG   s       r   r$  r$  š  s   € Ø—‘“ˆÜ˜f°Ó9Ð9r   c                 ó†   • [         R                  " U R                  5       5      n[        XR                  U R
                  44$ r   )r   ÚDupFdrk   r  rH   rI   )rÏ  Údfs     r   r  r     s.   € Ü�_Š_˜TŸ[™[›]Ó+ˆÜ! B¯©°t·}±}Ð#EÐEÐEr   c                 ó:   • U R                  5       n[        X1U5      $ r   r  )r*  rH   rI   Úfds       r   r  r  £  s   € Ø�Y‰Y‹[ˆÜ˜"¨Ó1Ð1r   )NN)T)r®  r   )UÚ__all__rÃ   rÌ   r(   r1   r4   rü   r   r%   Ú	itertoolsr$   r   r	   r
   Úcontextr   ÚForkingPicklerr~   r	  r¼   r   r   r   r   ÚImportErrorr2   rE  ÚCONNECTION_TIMEOUTÚcountr+   r  Úfamiliesr3   r   r   r/   r5   r=   r?   r²   rè   Úobjectr   r   r   r  r1  r  r0  rÀ  rÃ  rÄ  rÅ  Ú	frozensetr¥  Úmaxr¤  rÁ  Ú_MD5_DIGEST_LENr¢  r«  rµ  r»  r  r  r  rÉ  rÙ  rÜ  rÞ  rå  rõ  rÔ   ÚERROR_NETNAME_DELETEDrþ  r   r  r	  r  ÚSelectSelectorr  r  r  r&  r$  rž   r   r   Ú<module>r;     së  ðò 3€ã Û 	Û 	Û 
Û Û Û Û Û õ ç 1Ý Ø×*Ñ*€ðÛÛßOÓOð €àÐ à—’Ó!€à€Øˆ;€á
ˆ6�9×ÑØ€NØ��Ñ€Hà‡<�<�7ÓØ€NØ��Ñ€Hð -ô &ò ò0ò
FòF÷&Tñ Tön ô]˜ô ]ô@M�ô Môh;ˆvô ;ô|ð* ‡<�<�7Óõô&&ôX)�Vô )òX&ð ‡<�<�7Óô6,�vô 6,òp!ð> €à€
Ø€Ø€ñr Ú@óBÐ áÑ7Ñ&6Ó7Ó7€ð Ð Ø€Ø*¨OÐ<€ò2ò4?ò8?ñ2(¨5õ (ð*>¨%ô >ô*˜ô òHòô>�(ô >òLð ‡<�<�7Óòð@ ×.Ñ.°×0MÑ0MÐN€MõL>ó` ñ
 ˆy˜.×)Ñ)Ø!×.Ñ.‰à!×0Ñ0ˆô)ð6 ‡<�<�7ÓòJò=ð ×Ò�zÐ#4Ô5òKò
:ð ×Ò�~Ð'=Õ>òFò2ð ×Ò�zÐ#4Õ5øðK$ ó Ø
‡|�|�wÓØØƒGðús   Á
I ÉI2É1I2