§
    (¶Õis{  ã                   ó  — g d ¢Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddl
mZmZ ddlmZ ej        Z	 ddlZddlmZmZmZmZ n# e$ r ej        dk    r‚ dZY nw xY wd	Zd
Z ej        ¦   «         ZdZdgZ eed¦  «        rdZedgz  Zej        dk    rdZedgz  Zefd„Z d„ Z!d„ Z"d„ Z#d„ Z$ G d„ d¦  «        Z%er G d„ de%¦  «        Z& G d„ de%¦  «        Z' G d„ de(¦  «        Z)d<d„Z*ej        dk    rd=d„Z+nd=d„Z+ G d„ d e(¦  «        Z,d!„ Z-ej        dk    r G d"„ d#e(¦  «        Z.d$„ Z/d%Z0d&Z1d'Z2d(Z3d)„ Z4d*„ Z5 G d+„ d,e(¦  «        Z6d-„ Z7d.„ Z8 G d/„ d0e)¦  «        Z9d1„ Z:ej        dk    rd2„ Z;ej<        ej=        hZ>d>d3„Z?n#ddl@Z@ ee@d4¦  «        re@jA        ZBne@jC        ZBd>d5„Z?ej        dk    r0d6„ ZDd7„ ZE ejF        e'eD¦  «         d8„ ZGd9„ ZH ejF        e&eG¦  «         dS d:„ ZDd;„ ZE ejF        e'eD¦  «         dS )?)Ú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                 ó.   — t          j        ¦   «         | z   S ©N©ÚtimeÚ	monotonic)Útimeouts    ú1/usr/lib/python3.11/multiprocessing/connection.pyÚ_init_timeoutr   ;   s   € ÝŒ>ÑÔ˜gÑ%Ð%ó    c                 ó0   — t          j        ¦   «         | k    S r   r   )Úts    r   Ú_check_timeoutr   >   s   € ÝŒ>ÑÔ˜aÒÐr   c                 ó  — | dk    rdS | dk    r't          j        dt          j        ¦   «         ¬¦  «        S | dk    r>t          j        dt	          j        ¦   «         t          t          ¦  «        fz  d¬¦  «        S t          d	¦  «        ‚)
z?
    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/   E   s™   € ð �ÒÐØÐØ	�9Ò	Ð	ÝŒ kµtÔ7HÑ7JÔ7JÐKÑKÔKÐKØ	�9Ò	Ð	ÝŒÐ&<Ý "¤	¡¤­Tµ-Ñ-@Ô-@ÐAñ'BØGIðKñ Kô Kð 	Kõ Ð.Ñ/Ô/Ð/r   c                 óØ   — t           j        dk    r| dk    rt          d| z  ¦  «        ‚t           j        dk    r-| dk    r)t          t          | ¦  «        st          d| z  ¦  «        ‚dS dS dS )zD
    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   S   s‡   € õ „|�wÒÐ 6¨YÒ#6Ð#6ÝÐ7¸&Ñ@ÑAÔAÐAå
„|�wÒÐ 6¨YÒ#6Ð#6å•v˜vÑ&Ô&ð 	FÝÐ;¸fÑDÑEÔEÐEð ÐÐ#6Ð#6ð	Fð 	Fr   c                 ó  — t          | ¦  «        t          k    rdS t          | ¦  «        t          u r|                      d¦  «        rdS t          | ¦  «        t          u st	          j        | ¦  «        rdS t          d| z  ¦  «        ‚)z]
    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=   _   s}   € õ ˆG�}„}�ÒÐØˆyÝ	ˆg‰Œ�#Ð	Ð	 '×"4Ò"4°VÑ"<Ô"<Ð	ØˆyÝ	ˆg‰Œ�#Ð	Ð	¥Ô!BÀ7Ñ!KÔ!KÐ	ØˆyåÐ:¸WÑDÑEÔEÐEr   c                   ó¾   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d	„ ¦   «         Ze
d
„ ¦   «         Ze
d„ ¦   «         Zd„ Zd„ Zdd„Zd„ Zdd„Zdd„Zd„ Zdd„Zd„ Zd„ ZdS )Ú_ConnectionBaseNTc                 ó¨   — |                      ¦   «         }|dk     rt          d¦  «        ‚|s|st          d¦  «        ‚|| _        || _        || _        d S )Nr   zinvalid handlez6at least one of `readable` and `writable` must be True)Ú	__index__r,   Ú_handleÚ	_readableÚ	_writable)ÚselfÚhandleÚreadableÚwritables       r   Ú__init__z_ConnectionBase.__init__u   sm   € Ø×!Ò!Ñ#Ô#ˆØ�AŠ:ˆ:ÝÐ-Ñ.Ô.Ð.Øð 	J ð 	JÝØHñJô Jð JàˆŒØ!ˆŒØ!ˆŒˆˆr   c                 ó@   — | j         �|                      ¦   «          d S d S r   ©rB   Ú_close©rE   s    r   Ú__del__z_ConnectionBase.__del__‚   s#   € ØŒ<Ð#Ø�KŠK‰MŒMˆMˆMˆMð $Ð#r   c                 ó2   — | j         €t          d¦  «        ‚d S )Nzhandle is closed)rB   ÚOSErrorrM   s    r   Ú_check_closedz_ConnectionBase._check_closed†   s!   € ØŒ<ÐÝÐ,Ñ-Ô-Ð-ð  Ðr   c                 ó2   — | j         st          d¦  «        ‚d S )Nzconnection is write-only)rC   rP   rM   s    r   Ú_check_readablez_ConnectionBase._check_readableŠ   s%   € ØŒ~ð 	6ÝÐ4Ñ5Ô5Ð5ð	6ð 	6r   c                 ó2   — | j         st          d¦  «        ‚d S )Nzconnection is read-only)rD   rP   rM   s    r   Ú_check_writablez_ConnectionBase._check_writableŽ   s%   € ØŒ~ð 	5ÝÐ3Ñ4Ô4Ð4ð	5ð 	5r   c                 óf   — | j         rd| _        n|                      ¦   «          t          d¦  «        ‚)NFzbad message length)rD   rC   ÚcloserP   rM   s    r   Ú_bad_message_lengthz#_ConnectionBase._bad_message_length’   s1   € ØŒ>ð 	Ø"ˆDŒNˆNà�JŠJ‰LŒLˆLÝÐ*Ñ+Ô+Ð+r   c                 ó   — | j         du S )z True if the connection is closedN©rB   rM   s    r   Úclosedz_ConnectionBase.closed™   s   € ð Œ|˜tÐ#Ð#r   c                 ó   — | j         S )z"True if the connection is readable)rC   rM   s    r   rG   z_ConnectionBase.readablež   ó   € ð Œ~Ðr   c                 ó   — | j         S )z"True if the connection is writable)rD   rM   s    r   rH   z_ConnectionBase.writable£   r]   r   c                 ó8   — |                       ¦   «          | j        S )z+File descriptor or handle of the connection)rQ   rB   rM   s    r   Úfilenoz_ConnectionBase.fileno¨   s   € à×ÒÑÔÐØŒ|Ðr   c                 óh   — | j         �*	 |                      ¦   «          d| _         dS # d| _         w xY wdS )zClose the connectionNrK   rM   s    r   rW   z_ConnectionBase.close­   sB   € àŒ<Ð#ð$Ø—’‘”�à#�”��ø˜t�”Ð#Ð#Ð#Ð#ð	 $Ð#s   ‰& ¦	/r   c                 óÀ  — |                       ¦   «          |                      ¦   «          t          |¦  «        }|j        dk    r|                     d¦  «        }|j        }|dk     rt          d¦  «        ‚||k     rt          d¦  «        ‚|€||z
  }n-|dk     rt          d¦  «        ‚||z   |k    rt          d¦  «        ‚|                      ||||z   …         ¦  «         dS )	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)rQ   rU   Ú
memoryviewÚitemsizeÚcastÚnbytesr,   Ú_send_bytes)rE   ÚbufÚoffsetÚsizeÚmÚns         r   Ú
send_bytesz_ConnectionBase.send_bytesµ   sð   € à×ÒÑÔÐØ×ÒÑÔÐÝ�s‰OŒOˆØŒ:˜Š>ˆ>Ø—’�s‘”ˆAØŒHˆØ�AŠ:ˆ:ÝÐ1Ñ2Ô2Ð2ØˆvŠ:ˆ:ÝÐ5Ñ6Ô6Ð6Øˆ<Ø�v‘:ˆDˆDØ�AŠXˆXÝÐ/Ñ0Ô0Ð0Ø�d‰]˜QÒÐÝÐ<Ñ=Ô=Ð=Ø×Ò˜˜6 &¨4¡-Ð/Ô0Ñ1Ô1Ð1Ð1Ð1r   c                 ó°   — |                       ¦   «          |                      ¦   «          |                      t                               |¦  «        ¦  «         dS )zSend a (picklable) objectN)rQ   rU   rh   Ú_ForkingPicklerÚdumps©rE   Úobjs     r   Úsendz_ConnectionBase.sendÉ   sN   € à×ÒÑÔÐØ×ÒÑÔÐØ×Ò�×.Ò.¨sÑ3Ô3Ñ4Ô4Ð4Ð4Ð4r   c                 óþ   — |                       ¦   «          |                      ¦   «          |�|dk     rt          d¦  «        ‚|                      |¦  «        }|€|                      ¦   «          |                     ¦   «         S )z7
        Receive bytes data as a bytes object.
        Nr   znegative maxlength)rQ   rS   r,   Ú_recv_bytesrX   Úgetvalue)rE   Ú	maxlengthri   s      r   Ú
recv_bytesz_ConnectionBase.recv_bytesÏ   s}   € ð 	×ÒÑÔÐØ×ÒÑÔÐØÐ  Y°¢] ]ÝÐ1Ñ2Ô2Ð2Ø×Ò˜yÑ)Ô)ˆØˆ;Ø×$Ò$Ñ&Ô&Ð&Ø�|Š|‰~Œ~Ðr   c                 óH  — |                       ¦   «          |                      ¦   «          t          |¦  «        5 }|j        }|t	          |¦  «        z  }|dk     rt          d¦  «        ‚||k    rt          d¦  «        ‚|                      ¦   «         }|                     ¦   «         }|||z   k     r!t          | 	                    ¦   «         ¦  «        ‚| 
                    d¦  «         |                     |||z  ||z   |z  …         ¦  «         |cddd¦  «         S # 1 swxY w Y   dS )zq
        Receive bytes data into a writeable bytes-like object.
        Return the number of bytes read.
        r   znegative offsetzoffset too largeN)rQ   rS   rd   re   Úlenr,   rv   Útellr
   rw   ÚseekÚreadinto)rE   ri   rj   rl   re   ÚbytesizeÚresultrk   s           r   Úrecv_bytes_intoz_ConnectionBase.recv_bytes_intoÜ   sj  € ð
 	×ÒÑÔÐØ×ÒÑÔÐÝ˜‰_Œ_ð 	 à”zˆHØ¥# a¡&¤&Ñ(ˆHØ˜ŠzˆzÝ Ð!2Ñ3Ô3Ð3Ø˜(Ò"Ð"Ý Ð!3Ñ4Ô4Ð4Ø×%Ò%Ñ'Ô'ˆFØ—;’;‘=”=ˆDØ˜& 4™-Ò'Ð'Ý$ V§_¢_Ñ%6Ô%6Ñ7Ô7Ð7à�KŠK˜‰NŒNˆNØ�OŠO˜A˜f¨Ñ0Ø%¨™}°Ñ9ð:ô ;ñ <ô <ð <àð!	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¸CDÄDÄDc                 óÒ   — |                       ¦   «          |                      ¦   «          |                      ¦   «         }t                               |                     ¦   «         ¦  «        S )zReceive a (picklable) object)rQ   rS   rv   rp   ÚloadsÚ	getbuffer)rE   ri   s     r   Úrecvz_ConnectionBase.recvõ   sS   € à×ÒÑÔÐØ×ÒÑÔÐØ×ÒÑ Ô ˆÝ×$Ò$ S§]¢]¡_¤_Ñ5Ô5Ð5r   ç        c                 ó|   — |                       ¦   «          |                      ¦   «          |                      |¦  «        S )z/Whether there is any input available to be read)rQ   rS   Ú_poll©rE   r   s     r   Úpollz_ConnectionBase.pollü   s8   € à×ÒÑÔÐØ×ÒÑÔÐØ�zŠz˜'Ñ"Ô"Ð"r   c                 ó   — | S r   © rM   s    r   Ú	__enter__z_ConnectionBase.__enter__  ó   € Øˆr   c                 ó.   — |                       ¦   «          d S r   ©rW   ©rE   Úexc_typeÚ	exc_valueÚexc_tbs       r   Ú__exit__z_ConnectionBase.__exit__  ó   € Ø�
Š
‰Œˆˆˆr   )TT)r   Nr   )r   )r†   )Ú__name__Ú
__module__Ú__qualname__rB   rI   rN   rQ   rS   rU   rX   Úpropertyr[   rG   rH   r`   rW   rn   rt   ry   r�   r…   rŠ   r�   r•   rŒ   r   r   r?   r?   r   ss  € € € € € Ø€Gð	"ð 	"ð 	"ð 	"ðð ð ð.ð .ð .ð6ð 6ð 6ð5ð 5ð 5ð,ð ,ð ,ð ð$ð $ñ „Xð$ð ðð ñ „Xðð ðð ñ „Xððð ð ð
$ð $ð $ð2ð 2ð 2ð 2ð(5ð 5ð 5ðð ð ð ðð ð ð ð26ð 6ð 6ð#ð #ð #ð #ðð ð ðð ð ð ð r   r?   c                   óD   — e Zd ZdZdZej        fd„Zd„ Zd	d„Z	d„ Z
d„ ZdS )
ÚPipeConnectionzª
        Connection class based on a Windows named pipe.
        Overlapped I/O is used, so the handles must have been created
        with FILE_FLAG_OVERLAPPED.
        Fc                 ó&   —  || j         ¦  «         d S r   rZ   )rE   Ú_CloseHandles     r   rL   zPipeConnection._close  s   € ØˆL˜œÑ&Ô&Ð&Ð&Ð&r   c                 óž  — t          j        | j        |d¬¦  «        \  }}	 |t           j        k    r.t          j        |j        gdt          ¦  «        }|t          k    sJ ‚n#  |                     ¦   «          ‚ xY w| 	                    d¦  «        \  }}n# | 	                    d¦  «        \  }}w xY w|dk    sJ ‚|t          |¦  «        k    sJ ‚d S )NT©Ú
overlappedFr   )Ú_winapiÚ	WriteFilerB   ÚERROR_IO_PENDINGÚWaitForMultipleObjectsÚeventr   r   ÚcancelÚGetOverlappedResultr{   )rE   ri   ÚovÚerrÚwaitresÚnwrittens         r   rh   zPipeConnection._send_bytes  sà   € ÝÔ'¨¬°cÀdÐKÑKÔK‰GˆB�ð	=Ø�'Ô2Ò2Ð2Ý%Ô<Øœ˜
 E­8ñ5ô 5�Gà"¥mÒ3Ð3Ð3Ð3øøðØ—	’	‘”�Øøøøà "× 6Ò 6°tÑ <Ô <‘�˜#˜#ø × 6Ò 6°tÑ <Ô <‘�˜#Ð<Ð<Ð<Ð<Ø˜!’8�8�8�8Ø�s 3™xœxÒ'Ð'Ð'Ð'Ð'Ð's   ¡>A  ÁB Á A7Á7B ÂB-Nc                 óú  — | j         rd| _         t          j        ¦   «         S |€dnt          |d¦  «        }	 t	          j        | j        |d¬¦  «        \  }}	 |t          j        k    r.t	          j        |j	        gdt          ¦  «        }|t          k    sJ ‚n#  |                     ¦   «          ‚ xY w|                     d¦  «        \  }}|dk    r<t          j        ¦   «         }|                     |                     ¦   «         ¦  «         |S |t          j        k    r|                      ||¦  «        S n�# |                     d¦  «        \  }}|dk    r@t          j        ¦   «         }|                     |                     ¦   «         ¦  «         |c cY S |t          j        k    r|                      ||¦  «        c cY S w xY wn/# t$          $ r"}|j        t          j        k    rt*          ‚‚ d }~ww xY wt-          d¦  «        ‚)NFé€   Tr    r   z.shouldn't get here; expected KeyboardInterrupt)Ú_got_empty_messageÚioÚBytesIOÚminr¢   ÚReadFilerB   r¤   r¥   r¦   r   r   r§   r¨   Úwriter„   ÚERROR_MORE_DATAÚ_get_more_datarP   ÚwinerrorÚERROR_BROKEN_PIPEÚEOFErrorÚRuntimeError)	rE   ÚmaxsizeÚbsizer©   rª   r«   ÚnreadÚfÚes	            r   rv   zPipeConnection._recv_bytes%  s  € ØÔ&ð Ø*/�Ô'Ý”z‘|”|Ð#à&˜˜˜µC¸ÀÑ4EÔ4E�ðÝ%Ô.¨t¬|¸UØ;?ðAñ Aô A‘G�B˜ðDØ¥'Ô":Ò:Ð:Ý&-Ô&DØ!#¤ 
¨Eµ8ñ'=ô '=˜Gà#*­mÒ#;Ð#;Ð#;Ð#;øøðØŸ	š	™œ˜Øøøøà%'×%;Ò%;¸DÑ%AÔ%A™
˜˜sØ !š8˜8Ý "¤
¡¤˜AØŸGšG B§L¢L¡N¤NÑ3Ô3Ð3Ø#$˜HØ ¥GÔ$;Ò;Ð;Ø#'×#6Ò#6°r¸7Ñ#CÔ#CÐCð <øð &(×%;Ò%;¸DÑ%AÔ%A™
˜˜sØ !š8˜8Ý "¤
¡¤˜AØŸGšG B§L¢L¡N¤NÑ3Ô3Ð3Ø#$˜H˜H˜H˜H˜HØ ¥GÔ$;Ò;Ð;Ø#'×#6Ò#6°r¸7Ñ#CÔ#CÐCÐCÐCÐCÐCÐCÐCÐCÐCð <øåð ð ð Ø”z¥WÔ%>Ò>Ð>Ý&˜àøøøøð	øøøõ
 ÐOÑPÔPÐPsg   ·F? Á>B ÂD1 ÂB-Â-D1 Â0AF? Ä
%F? Ä0F? Ä1AF;ÆF? Æ(F;Æ8F? Æ:F;Æ;F? Æ?
G+Ç	G&Ç&G+c                 ó–   — | j         s#t          j        | j        ¦  «        d         dk    rdS t	          t          | g|¦  «        ¦  «        S )Nr   T)r¯   r¢   ÚPeekNamedPiperB   Úboolr   r‰   s     r   rˆ   zPipeConnection._pollE  sI   € ØÔ'ð ÝÔ-¨d¬lÑ;Ô;¸AÔ>À!ÒCÐCØ�tÝ�˜d˜V WÑ-Ô-Ñ.Ô.Ð.r   c                 ó   — |                      ¦   «         }t          j        ¦   «         }|                     |¦  «         t	          j        | j        ¦  «        d         }|dk    sJ ‚|�*t          |¦  «        |z   |k    r|                      ¦   «          t	          j	        | j        |d¬¦  «        \  }}| 
                    d¦  «        \  }}|dk    sJ ‚||k    sJ ‚|                     |                      ¦   «         ¦  «         |S )Nr   r   Tr    )r„   r°   r±   r´   r¢   rÁ   rB   r{   rX   r³   r¨   )rE   r©   r»   ri   r¾   Úleftrª   Úrbytess           r   r¶   zPipeConnection._get_more_dataK  sæ   € Ø—,’,‘.”.ˆCÝ”
‘”ˆAØ�GŠG�C‰LŒLˆLÝÔ(¨¬Ñ6Ô6°qÔ9ˆDØ˜!’8�8�8�8ØÐ"¥s¨3¡x¤x°$¡¸Ò'@Ð'@Ø×(Ò(Ñ*Ô*Ð*ÝÔ& t¤|°TÀdÐKÑKÔK‰GˆB�Ø×0Ò0°Ñ6Ô6‰KˆF�CØ˜!’8�8�8�8Ø˜T’>�>�>�>Ø�GŠG�B—L’L‘N”NÑ#Ô#Ð#ØˆHr   r   )r—   r˜   r™   Ú__doc__r¯   r¢   ÚCloseHandlerL   rh   rv   rˆ   r¶   rŒ   r   r   rœ   rœ     s†   € € € € € ð	ð 	ð
 #Ðà&-Ô&9ð 	'ð 	'ð 	'ð 	'ð	(ð 	(ð 	(ð	Qð 	Qð 	Qð 	Qð@	/ð 	/ð 	/ð	ð 	ð 	ð 	ð 	r   rœ   c                   ó    — e Zd ZdZerej        fd„Zej        Z	ej
        Znej        fd„Zej        Z	ej        Ze	fd„Zefd„Zd„ Zd
d„Zd	„ ZdS )Ú
Connectionzo
    Connection class based on an arbitrary file descriptor (Unix only), or
    a socket handle (Windows).
    c                 ó&   —  || j         ¦  «         d S r   rZ   ©rE   rL   s     r   rL   zConnection._closeb  ó   € ØˆF�4”<Ñ Ô Ð Ð Ð r   c                 ó&   —  || j         ¦  «         d S r   rZ   rË   s     r   rL   zConnection._closeg  rÌ   r   c                 ót   — t          |¦  «        }	  || j        |¦  «        }||z  }|dk    rd S ||d …         }Œ))NTr   )r{   rB   )rE   ri   r´   Ú	remainingrm   s        r   Ú_sendzConnection._sendl  sN   € Ý˜‘H”Hˆ	ð	Ø��d”l CÑ(Ô(ˆAØ˜‰NˆIØ˜AŠ~ˆ~Ø�Ø�a�b�b”'ˆCð	r   c                 ó  — t          j        ¦   «         }| j        }|}|dk    r] |||¦  «        }t          |¦  «        }|dk    r||k    rt          ‚t          d¦  «        ‚|                     |¦  «         ||z  }|dk    °]|S )Nr   zgot end of file during message)r°   r±   rB   r{   r¹   rP   r´   )rE   rk   Úreadri   rF   rÏ   Úchunkrm   s           r   Ú_recvzConnection._recvu  s“   € ÝŒj‰lŒlˆØ”ˆØˆ	Ø˜!ŠmˆmØ�D˜ Ñ+Ô+ˆEÝ�E‘
”
ˆAØ�AŠvˆvØ Ò$Ð$Ý"�Nå!Ð"BÑCÔCÐCØ�IŠI�eÑÔÐØ˜‰NˆIð ˜!Šmˆmð ˆ
r   c                 óÄ  — t          |¦  «        }|dk    rkt          j        dd¦  «        }t          j        d|¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         d S t          j        d|¦  «        }|dk    r,|                      |¦  «         |                      |¦  «         d S |                      ||z   ¦  «         d S )Niÿÿÿú!iéÿÿÿÿú!Qi @  )r{   ÚstructÚpackrÐ   )rE   ri   rm   Ú
pre_headerÚheaders        r   rh   zConnection._send_bytes…  sÐ   € Ý�‰HŒHˆØˆzŠ>ˆ>Ýœ T¨2Ñ.Ô.ˆJÝ”[  qÑ)Ô)ˆFØ�JŠJ�zÑ"Ô"Ð"Ø�JŠJ�vÑÔÐØ�JŠJ�s‰OŒOˆOˆOˆOõ ”[  qÑ)Ô)ˆFØ�5Šyˆyð —
’
˜6Ñ"Ô"Ð"Ø—
’
˜3‘”���ð —
’
˜6 C™<Ñ(Ô(Ð(Ð(Ð(r   Nc                 óD  — |                       d¦  «        }t          j        d|                     ¦   «         ¦  «        \  }|dk    r>|                       d¦  «        }t          j        d|                     ¦   «         ¦  «        \  }|�||k    rd S |                       |¦  «        S )Né   rÖ   r×   é   rØ   )rÔ   rÙ   Úunpackrw   )rE   r»   ri   rk   s       r   rv   zConnection._recv_bytesœ  s„   € Ø�jŠj˜‰mŒmˆÝ”˜d C§L¢L¡N¤NÑ3Ô3‰ˆØ�2Š:ˆ:Ø—*’*˜Q‘-”-ˆCÝ”M $¨¯ª©¬Ñ7Ô7‰EˆDØÐ 4¨'¢> >Ø�4Ø�zŠz˜$ÑÔÐr   c                 óB   — t          | g|¦  «        }t          |¦  «        S r   )r   rÂ   )rE   r   Úrs      r   rˆ   zConnection._poll¦  s   € Ý�$�˜Ñ!Ô!ˆÝ�A‰wŒwˆr   r   )r—   r˜   r™   rÆ   r¢   Ú_multiprocessingÚclosesocketrL   rt   Ú_writer…   Ú_readr(   rW   r´   rÒ   rÐ   rÔ   rh   rv   rˆ   rŒ   r   r   rÉ   rÉ   [  sÝ   € € € € € ðð ð
 ð 	Ø 0Ô <ð 	!ð 	!ð 	!ð 	!à!Ô&ˆØ Ô%ˆˆà "¤ð 	!ð 	!ð 	!ð 	!à”ˆØ”ˆà%ð ð ð ð ð  %ð ð ð ð ð )ð )ð )ð. ð  ð  ð  ðð ð ð ð r   rÉ   c                   ó^   — e Zd ZdZdd„Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	d	„ Z
d
„ ZdS )r   z•
    Returns a listener object.

    This is a wrapper for a bound socket which is 'listening' for
    connections, or for a Windows named pipe.
    Nr   c                 ó8  — |p|rt          |¦  «        pt          }|pt          |¦  «        }t          |¦  «         |dk    rt	          ||¦  «        | _        nt          |||¦  «        | _        |�$t          |t          ¦  «        st          d¦  «        ‚|| _
        d S )Nr   úauthkey should be a byte string)r=   Údefault_familyr/   r5   ÚPipeListenerÚ	_listenerÚSocketListenerÚ
isinstanceÚbytesÚ	TypeErrorÚ_authkey)rE   r<   r.   ÚbacklogÚauthkeys        r   rI   zListener.__init__¶  s§   € Øð #˜GÐ=­°WÑ(=Ô(=ð #Ý"ð 	àÐ6Õ.¨vÑ6Ô6ˆå˜Ñ Ô Ð Ø�YÒÐÝ)¨'°7Ñ;Ô;ˆDŒNˆNå+¨G°V¸WÑEÔEˆDŒNàÐ¥z°'½5Ñ'AÔ'AÐÝÐ=Ñ>Ô>Ð>àˆŒˆˆr   c                 óÆ   — | j         €t          d¦  «        ‚| j                              ¦   «         }| j        r*t	          || j        ¦  «         t          || j        ¦  «         |S )zz
        Accept a connection on the bound socket or named pipe of `self`.

        Returns a `Connection` object.
        Nzlistener is closed)rì   rP   Úacceptrñ   Údeliver_challengeÚanswer_challenge)rE   Úcs     r   rõ   zListener.acceptÆ  sa   € ð Œ>Ð!ÝÐ.Ñ/Ô/Ð/ØŒN×!Ò!Ñ#Ô#ˆØŒ=ð 	/Ý˜a ¤Ñ/Ô/Ð/Ý˜Q ¤Ñ.Ô.Ð.Øˆr   c                 óR   — | j         }|�d| _         |                     ¦   «          dS dS )zA
        Close the bound socket or named pipe of `self`.
        N)rì   rW   )rE   Úlisteners     r   rW   zListener.closeÔ  s6   € ð ”>ˆØÐØ!ˆDŒNØ�NŠNÑÔÐÐÐð  Ðr   c                 ó   — | j         j        S r   )rì   Ú_addressrM   s    r   r<   zListener.addressÝ  s   € àŒ~Ô&Ð&r   c                 ó   — | j         j        S r   )rì   Ú_last_acceptedrM   s    r   Úlast_acceptedzListener.last_acceptedá  s   € àŒ~Ô,Ð,r   c                 ó   — | S r   rŒ   rM   s    r   r�   zListener.__enter__å  rŽ   r   c                 ó.   — |                       ¦   «          d S r   r�   r‘   s       r   r•   zListener.__exit__è  r–   r   )NNr   N)r—   r˜   r™   rÆ   rI   rõ   rW   rš   r<   rÿ   r�   r•   rŒ   r   r   r   r   ¯  s¤   € € € € € ðð ð ð  ð  ð  ð ð ð ðð ð ð ð'ð 'ñ „Xð'ð ð-ð -ñ „Xð-ðð ð ðð ð ð ð r   r   c                 ó   — |pt          | ¦  «        }t          |¦  «         |dk    rt          | ¦  «        }nt          | ¦  «        }|�$t	          |t
          ¦  «        st          d¦  «        ‚|� t          ||¦  «         t          ||¦  «         |S )z=
    Returns a connection to the address of a `Listener`
    r   Nré   )	r=   r5   Ú
PipeClientÚSocketClientrî   rï   rð   r÷   rö   )r<   r.   ró   rø   s       r   r   r   ì  sš   € ð Ð,•| GÑ,Ô,€FÝ�VÑÔÐØ�ÒÐÝ�wÑÔˆˆå˜Ñ!Ô!ˆàÐ¥:¨gµuÑ#=Ô#=ÐÝÐ9Ñ:Ô:Ð:àÐÝ˜˜GÑ$Ô$Ð$Ý˜!˜WÑ%Ô%Ð%à€Hr   Tc                 ó„  — | rƒt          j        ¦   «         \  }}|                     d¦  «         |                     d¦  «         t          |                     ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }n8t          j        ¦   «         \  }}t          |d¬¦  «        }t          |d¬¦  «        }||fS )úL
        Returns pair of connection objects at either end of a pipe
        TF©rH   ©rG   )r4   Ú
socketpairÚsetblockingrÉ   Údetachr(   Úpipe)ÚduplexÚs1Ús2Úc1Úc2Úfd1Úfd2s          r   r   r     sª   € ð ð 		1ÝÔ&Ñ(Ô(‰FˆB�Ø�NŠN˜4Ñ Ô Ð Ø�NŠN˜4Ñ Ô Ð Ý˜BŸIšI™KœKÑ(Ô(ˆBÝ˜BŸIšI™KœKÑ(Ô(ˆBˆBå”w‘y”y‰HˆC�Ý˜C¨%Ð0Ñ0Ô0ˆBÝ˜C¨%Ð0Ñ0Ô0ˆBà�2ˆvˆr   c           
      ó&  — t          d¦  «        }| r4t          j        }t          j        t          j        z  }t
          t
          }}n!t          j        }t          j        }dt
          }}t          j        ||t          j        z  t          j	        z  t          j
        t          j        z  t          j        z  d||t          j        t          j        ¦  «        }t          j        ||dt          j        t          j        t          j        t          j        ¦  «        }t          j        |t          j        dd¦  «         t          j        |d¬¦  «        }|                     d¦  «        \  }	}
|
dk    sJ ‚t)          || ¬¦  «        }t)          || ¬¦  «        }||fS )	r  r   r   r   NTr    r  r  )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     sb  € õ $ IÑ.Ô.ˆØð 	(ÝÔ1ˆHÝÔ)­GÔ,AÑAˆFÝ$¥g�FˆFˆFåÔ2ˆHÝÔ*ˆFØ¥�FˆFåÔ$Ø�X¥Ô <Ñ<ÝÔ1ñ2åÔ%­Ô(EÑEÝÔñàˆv�v�wÔ;åŒLñô ˆõ ÔØ�V˜Q¥¤­gÔ.CÝÔ(­'¬,ñô ˆõ 	Ô'Ø•Ô-¨t°Tñ	ô 	ð 	õ Ô-¨b¸TÐBÑBÔBˆ
Ø×/Ò/°Ñ5Ô5‰ˆˆ3Ø�aŠxˆxˆxˆxå˜B¨Ð0Ñ0Ô0ˆÝ˜B¨Ð0Ñ0Ô0ˆà�2ˆvˆr   c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )rí   zO
    Representation of a socket which is bound to an address and listening
    r   c                 ó¼  — t          j         t          t           |¦  «        ¦  «        | _        	 t          j        dk    r0| j                             t           j        t           j        d¦  «         | j                             d¦  «         | j         	                    |¦  «         | j         
                    |¦  «         | j                             ¦   «         | _        n(# t          $ r | j                             ¦   «          ‚ w xY w|| _        d | _        |dk    r>t#          j        |¦  «        s*t#          j        | t          j        |fd¬¦  «        | _        d S d | _        d S )NÚposixr   Tr   r   ©ÚargsÚexitpriority)r4   ÚgetattrÚ_socketr(   ÚnameÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRr
  ÚbindÚlistenÚgetsocknamerü   rP   rW   Ú_familyrþ   r   r;   ÚFinalizeÚunlinkÚ_unlink)rE   r<   r.   rò   s       r   rI   zSocketListener.__init__F  sF  € Ý”}¥W­V°VÑ%<Ô%<Ñ=Ô=ˆŒð	åŒw˜'Ò!Ð!Ø”×'Ò'­Ô(9Ý(.Ô(;¸Qñ@ô @ð @àŒL×$Ò$ TÑ*Ô*Ð*ØŒL×Ò˜gÑ&Ô&Ð&ØŒL×Ò Ñ(Ô(Ð(Ø œL×4Ò4Ñ6Ô6ˆDŒMˆMøÝð 	ð 	ð 	ØŒL×ÒÑ Ô Ð Øð	øøøð ˆŒØ"ˆÔà�YÒÐ¥tÔ'HÈÑ'QÔ'QÐåœ=Ø•b”i w j¸qðñ ô ˆDŒLˆLˆLð  ˆDŒLˆLˆLs   ®B,C Ã%D c                 ó°   — | j                              ¦   «         \  }| _        |                     d¦  «         t	          |                     ¦   «         ¦  «        S )NT)r4  rõ   rþ   r
  rÉ   r  ©rE   Úss     r   rõ   zSocketListener.accept_  sE   € Ø!%¤×!4Ò!4Ñ!6Ô!6Ñˆˆ4ÔØ	�Š�dÑÔÐÝ˜!Ÿ(š(™*œ*Ñ%Ô%Ð%r   c                 ó²   — 	 | j                              ¦   «          | j        }|�d | _         |¦   «          d S d S # | j        }|�d | _         |¦   «          w w xY wr   )r4  rW   r?  )rE   r>  s     r   rW   zSocketListener.closed  sr   € ð	ØŒL×ÒÑ Ô Ð à”\ˆFØÐ!Ø#�”Ø�‘”���ð "Ð!øð ”\ˆFØÐ!Ø#�”Ø�‘”��ð "øøøs	   ‚9 ¹AN)r   )r—   r˜   r™   rÆ   rI   rõ   rW   rŒ   r   r   rí   rí   B  sP   € € € € € ðð ð ð  ð  ð  ð2&ð &ð &ð
ð ð ð ð r   rí   c                 ó8  — t          | ¦  «        }t          j        t          t          |¦  «        ¦  «        5 }|                     d¦  «         |                     | ¦  «         t          |                     ¦   «         ¦  «        cddd¦  «         S # 1 swxY w Y   dS )zO
    Return a connection object connected to the socket given by `address`
    TN)r=   r4   r3  r
  ÚconnectrÉ   r  )r<   r.   rB  s      r   r  r  n  sÃ   € õ ˜'Ñ"Ô"€FÝ	Œ�¥¨Ñ/Ô/Ñ	1Ô	1ð &°QØ	�Š�dÑÔÐØ	�	Š	�'ÑÔÐÝ˜!Ÿ(š(™*œ*Ñ%Ô%ð&ð &ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s   ·ABÂBÂBc                   ó>   — e Zd ZdZdd„Zd	d„Zd„ Zed„ ¦   «         ZdS )
rë   z0
        Representation of a named pipe
        Nc                 óô   — || _         |                      d¬¦  «        g| _        d | _        t	          j        d| j         ¦  «         t	          j        | t          j        | j        | j         fd¬¦  «        | _	        d S )NT)Úfirstz listener created with address=%rr   r0  )
rü   Ú_new_handleÚ_handle_queuerþ   r   Ú	sub_debugr=  rë   Ú_finalize_pipe_listenerrW   )rE   r<   rò   s      r   rI   zPipeListener.__init__‚  su   € Ø#ˆDŒMØ"&×"2Ò"2¸Ð"2Ñ">Ô">Ð!?ˆDÔà"&ˆDÔÝŒNÐ=¸t¼}ÑMÔMÐMÝœØ•lÔ:ØÔ(¨$¬-Ð8Àqðñ ô ˆDŒJˆJˆJr   Fc           
      ó.  — t           j        t           j        z  }|r|t           j        z  }t          j        | j        |t           j        t           j        z  t           j        z  t           j	        t          t          t           j        t           j        ¦  «        S r   )r¢   r  r  r  r  rü   r  r  r  ÚPIPE_UNLIMITED_INSTANCESr  r   r!  )rE   rH  Úflagss      r   rI  zPipeListener._new_handle�  sp   € ÝÔ.µÔ1MÑMˆEØð ?Ø�Ô>Ñ>�ÝÔ*Ø”˜uÝÔ)­GÔ,IÑIÝÔ!ñ"åÔ0µ'½7ÝÔ,­g¬lñô ð r   c                 ód  — | j                              |                      ¦   «         ¦  «         | j                              d¦  «        }	 t	          j        |d¬¦  «        }	 t	          j        |j        gdt          ¦  «        }n.#  | 	                    ¦   «          t	          j
        |¦  «         ‚ xY w	 |                     d¦  «        \  }}|dk    sJ ‚nR# |                     d¦  «        \  }}|dk    sJ ‚w xY w# t          $ r }|j        t          j        k    r‚ Y d }~nd }~ww xY wt          |¦  «        S )Nr   Tr    F)rJ  ÚappendrI  Úpopr¢   r%  r¥   r¦   r   r§   rÇ   r¨   rP   r·   ÚERROR_NO_DATArœ   )rE   rF   r©   Úresr,  rª   r¿   s          r   rõ   zPipeListener.accept™  sT  € ØÔ×%Ò% d×&6Ò&6Ñ&8Ô&8Ñ9Ô9Ð9ØÔ'×+Ò+¨AÑ.Ô.ˆFð$ÝÔ-¨fÀÐFÑFÔF�ð	$Ý!Ô8Øœ˜
 E­8ñ5ô 5�C�CøðØ—I’I‘K”K�KÝÔ'¨Ñ/Ô/Ð/Øøøøð ð  ×3Ò3°DÑ9Ô9‘F�A�sØ !š8˜8˜8˜8˜8øð  ×3Ò3°DÑ9Ô9‘F�A�sØ !š8˜8˜8˜8˜8˜8˜8˜8øõ ð ð ð Ø”:¥Ô!6Ò6Ð6Øð 7Ð6Ð6Ð6Ð6øøøøðøøøõ  " &Ñ)Ô)Ð)s6   ÁC6 Á!B Â C Â+B,Â,C Ã"C3Ã6
D Ä DÄD c                 ób   — t          j        d|¦  «         | D ]}t          j        |¦  «         Œd S )Nz closing listener with address=%r)r   rK  r¢   rÇ   )Úqueuer<   rF   s      r   rL  z$PipeListener._finalize_pipe_listener°  sB   € åŒNÐ=¸wÑGÔGÐGØð ,ð ,�ÝÔ# FÑ+Ô+Ð+Ð+ð,ð ,r   r   )F)	r—   r˜   r™   rÆ   rI   rI  rõ   ÚstaticmethodrL  rŒ   r   r   rë   rë   ~  sp   € € € € € ð	ð 	ð		ð 		ð 		ð 		ð
	ð 
	ð 
	ð 
	ð	*ð 	*ð 	*ð. 
ð	,ð 	,ñ 
Œð	,ð 	,ð 	,r   rë   c           	      óî  — t          ¦   «         }	 	 t          j        | d¦  «         t          j        | t          j        t          j        z  dt          j        t          j        t          j        t          j        ¦  «        }nG# t          $ r9}|j
        t          j        t          j        fvst          |¦  «        r‚ Y d}~nd}~ww xY wŒ·t          j        |t          j        dd¦  «         t!          |¦  «        S )zU
        Return a connection object connected to the pipe given by `address`
        r   éè  r   N)r   r¢   ÚWaitNamedPiper"  r  r  r!  r#  r  rP   r·   ÚERROR_SEM_TIMEOUTÚERROR_PIPE_BUSYr   r$  r  rœ   )r<   r   Úhr¿   s       r   r  r  ¶  s  € õ ‰OŒOˆð	ðÝÔ% g¨tÑ4Ô4Ð4ÝÔ&Ø�WÔ1µGÔ4IÑIØ•w”|¥WÔ%:ÝÔ0µ'´,ñô �ð øõ ð ð ð Ø”:¥gÔ&?Ý&-Ô&=ð&?ð ?ð ?ÝBPÐQRÑBSÔBSð?àð?ð ?ð ?ð ?ð ?øøøøðøøøð	õ" 	Ô'Ø�wÔ,¨d°Dñ	ô 	ð 	õ ˜aÑ Ô Ð s   ‘A.B  Â 
CÂ
/B>Â>Cé   s   #CHALLENGE#s	   #WELCOME#s	   #FAILURE#c                 ó  — dd l }t          |t          ¦  «        s/t          d                     t          |¦  «        ¦  «        ¦  «        ‚t          j        t          ¦  «        }|  	                    t          |z   ¦  «         |                     ||d¦  «                             ¦   «         }|                      d¦  «        }||k    r|  	                    t          ¦  «         d S |  	                    t          ¦  «         t!          d¦  «        ‚)Nr   ú Authkey must be bytes, not {0!s}Úmd5é   zdigest received was wrong)Úhmacrî   rï   r,   Úformatr7   r(   ÚurandomÚMESSAGE_LENGTHrn   Ú	CHALLENGEÚnewÚdigestry   ÚWELCOMEÚFAILUREr	   ©Ú
connectionró   rc  Úmessageri  Úresponses         r   rö   rö   Û  sî   € Ø€K€K€KÝ�g�uÑ%Ô%ð FÝØ.×5Ò5µd¸7±m´mÑDÔDñFô Fð 	FåŒj�Ñ(Ô(€GØ×Ò�) gÑ-Ñ.Ô.Ð.Ø�XŠX�g˜w¨Ñ.Ô.×5Ò5Ñ7Ô7€FØ×$Ò$ SÑ)Ô)€HØ�6ÒÐØ×Ò�gÑ&Ô&Ð&Ð&Ð&à×Ò�gÑ&Ô&Ð&Ý!Ð"=Ñ>Ô>Ð>r   c                 ó6  — dd l }t          |t          ¦  «        s/t          d                     t          |¦  «        ¦  «        ¦  «        ‚|                      d¦  «        }|d t          t          ¦  «        …         t          k    sJ d|z  ¦   «         ‚|t          t          ¦  «        d …         }| 	                    ||d¦  «         
                    ¦   «         }|                      |¦  «         |                      d¦  «        }|t          k    rt          d¦  «        ‚d S )Nr   r`  rb  zmessage = %rra  zdigest sent was rejected)rc  rî   rï   r,   rd  r7   ry   r{   rg  rh  ri  rn   rj  r	   rl  s         r   r÷   r÷   ê  s  € Ø€K€K€KÝ�g�uÑ%Ô%ð FÝØ.×5Ò5µd¸7±m´mÑDÔDñFô Fð 	Fà×#Ò# CÑ(Ô(€GØ�?•C�	‘N”N�?Ô#¥yÒ0Ð0Ð0°.À7Ñ2JÑ0Ô0Ð0Ø•c�)‘n”n�o�oÔ&€GØ�XŠX�g˜w¨Ñ.Ô.×5Ò5Ñ7Ô7€FØ×Ò˜&Ñ!Ô!Ð!Ø×$Ò$ SÑ)Ô)€HØ•7ÒÐÝ!Ð"<Ñ=Ô=Ð=ð Ðr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚConnectionWrapperc                 ó|   — || _         || _        || _        dD ]#}t          ||¦  «        }t	          | ||¦  «         Œ$d S )N)r`   rW   rŠ   ry   rn   )Ú_connÚ_dumpsÚ_loadsr3  Úsetattr)rE   Úconnrq   rƒ   Úattrrs   s         r   rI   zConnectionWrapper.__init__ý  sT   € ØˆŒ
ØˆŒØˆŒØKð 	%ð 	%ˆDÝ˜$ Ñ%Ô%ˆCÝ�D˜$ Ñ$Ô$Ð$Ð$ð	%ð 	%r   c                 ód   — |                       |¦  «        }| j                             |¦  «         d S r   )ru  rt  rn   )rE   rs   rB  s      r   rt   zConnectionWrapper.send  s/   € Ø�KŠK˜ÑÔˆØŒ
×Ò˜aÑ Ô Ð Ð Ð r   c                 ó^   — | j                              ¦   «         }|                      |¦  «        S r   )rt  ry   rv  rA  s     r   r…   zConnectionWrapper.recv  s%   € ØŒJ×!Ò!Ñ#Ô#ˆØ�{Š{˜1‰~Œ~Ðr   N)r—   r˜   r™   rI   rt   r…   rŒ   r   r   rr  rr  ü  sA   € € € € € ð%ð %ð %ð!ð !ð !ðð ð ð ð r   rr  c                 óf   — t                                | fd d d d¦  «                             d¦  «        S )Nr   úutf-8)Ú	xmlrpclibrq   Úencode)rs   s    r   Ú
_xml_dumpsr€    s,   € Ý�?Š?˜C˜6 4¨¨t°QÑ7Ô7×>Ò>¸wÑGÔGÐGr   c                 ój   — t                                |                      d¦  «        ¦  «        \  \  }}|S )Nr}  )r~  rƒ   Údecode)rB  rs   Úmethods      r   Ú
_xml_loadsr„    s*   € Ý—_’_ Q§X¢X¨gÑ%6Ô%6Ñ7Ô7�N�F€SˆFØ€Jr   c                   ó   — e Zd Zd„ ZdS )ÚXmlListenerc                 óx   — dd l ma t                               | ¦  «        }t          |t          t          ¦  «        S ©Nr   )Úxmlrpc.clientÚclientr~  r   rõ   rr  r€  r„  rr   s     r   rõ   zXmlListener.accept  s7   € à)Ð)Ð)Ð)Ð)Ð)Ý�oŠo˜dÑ#Ô#ˆÝ  ¥jµ*Ñ=Ô=Ð=r   N)r—   r˜   r™   rõ   rŒ   r   r   r†  r†    s#   € € € € € ð>ð >ð >ð >ð >r   r†  c                  óX   — dd l ma t          t	          | i |¤Žt
          t          ¦  «        S rˆ  )r‰  rŠ  r~  rr  r   r€  r„  )r1  Úkwdss     r   Ú	XmlClientr�    s3   € à%Ð%Ð%Ð%Ð%Ð%Ý�V TÐ2¨TÐ2Ð2µJÅ
ÑKÔKÐKr   c                 óº  — t          | ¦  «        }g }|rÇt          j        |d|¦  «        }|t          k    rn¥t          |cxk    rt          t          |¦  «        z   k     rn n|t          z  }nDt          |cxk    rt          t          |¦  «        z   k     rn n|t          z  }nt          d¦  «        ‚|                     ||         ¦  «         ||dz   d …         }d}|°Ç|S )NFzShould not get herer   r   )	Úlistr¢   r¥   r   r   r{   r   rº   rQ  )Úhandlesr   ÚLÚreadyrT  s        r   Ú_exhaustive_waitr“  $  sþ   € õ �‰MŒMˆØˆØð 	ÝÔ0°°E¸7ÑCÔCˆCØ•lÒ"Ð"ØÝ #Ð>Ð>Ò>Ð>­½¸A¹¼Ñ(>Ò>Ð>Ð>Ð>Ð>Ø•}Ñ$��Ý! SÐDÐDÒDÐDÕ+;½cÀ!¹f¼fÑ+DÒDÐDÐDÐDÐDØÕ'Ñ'��å"Ð#8Ñ9Ô9Ð9Ø�LŠL˜˜3œÑ Ô Ð Ø�#�a‘%�&�&”	ˆAØˆGð ð 	ð ˆr   c                 ó¬  ‡
‡— |€t           }n|dk     rd}nt          |dz  dz   ¦  «        }t          | ¦  «        } i Šg }t          ¦   «         Š
t          ¦   «         }	 | D �]B}	 t	          |d¦  «        }	 t          j         |¦   «         dd¦  «        \  }}n*# t          $ r}d|j        }}|t          vr‚ Y d}~nd}~ww xY w|t
          j
        k    r |                     |¦  «         |‰|j        <   Œ‘|rpt          j        ¦   «         dd…         dk    rQ	 |                     d	¦  «        \  }	}n# t          $ r}|j        }Y d}~nd}~ww xY w|st!          |d
¦  «        rd|_        ‰
                     |¦  «         d}�Œ# t&          $ r |‰|                     ¦   «         <   Y �Œ@w xY wt+          ‰                     ¦   «         |¦  «        }|D ]}|                     ¦   «          Œ|D ]“}	 |                     d¦  «        \  }	}n(# t          $ r}|j        }|t          vr‚ Y d}~nd}~ww xY w|t
          j        k    r?‰|j                 }‰
                     |¦  «         |dk    rt!          |d
¦  «        rd|_        Œ”n´# |D ]}|                     ¦   «          Œ|D ]“}	 |                     d¦  «        \  }	}n(# t          $ r}|j        }|t          vr‚ Y d}~nd}~ww xY w|t
          j        k    r?‰|j                 }‰
                     |¦  «         |dk    rt!          |d
¦  «        rd|_        Œ”w xY w‰
                     ˆfd„|D ¦   «         ¦  «         ˆ
fd„| D ¦   «         S )ú—
        Wait till an object in object_list is ready/readable.

        Returns list of those objects in object_list which are ready/readable.
        Nr   rY  g      à?r`   Té   )é   r–  Fr¯   c              3   ó(   •K  — | ]}‰|         V — Œd S r   rŒ   )Ú.0r]  Úwaithandle_to_objs     €r   ú	<genexpr>zwait.<locals>.<genexpr>…  s)   øè è € ÐIÐI°aÐ.¨qÔ1ÐIÐIÐIÐIÐIÐIr   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rŒ   rŒ   )r™  ÚoÚready_objectss     €r   ú
<listcomp>zwait.<locals>.<listcomp>†  s#   ø€ Ð=Ð=Ð=�a¨!¨}Ð*<Ð*<�Ð*<Ð*<Ð*<r   )r   Úintr�  Úsetr3  r¢   r³   rP   r·   Ú_ready_errorsr¤   rQ  r¦   r1   Úgetwindowsversionr¨   r3   r¯   ÚaddÚAttributeErrorrA   r“  Úkeysr§   ÚERROR_OPERATION_ABORTEDÚupdate)Úobject_listr   Úov_listÚready_handlesr�  r`   r©   rª   r¿   r,  rž  rš  s             @@r   r   r   :  sX  øø€ ð ˆ?ÝˆGˆGØ�qŠ[ˆ[ØˆGˆGå˜' D™.¨3Ñ.Ñ/Ô/ˆGå˜;Ñ'Ô'ˆØÐØˆÝ™œˆÝ™œˆð6	8Ø ð $ñ $�ð$Ý$ Q¨Ñ1Ô1�Fð
"Ý")Ô"2°6°6±8´8¸QÀÑ"EÔ"E™˜˜C˜CøÝ"ð "ð "ð "Ø"&¨¬
˜C˜Ø¥mÐ3Ð3Ø!ð 4Ð3Ð3Ð3Ð3øøøøð"øøøð �gÔ6Ò6Ð6ØŸš rÑ*Ô*Ð*Ø67Ð)¨"¬(Ñ3Ð3ð
 ð <¥#Ô"7Ñ"9Ô"9¸"¸1¸"Ô"=ÀÒ"GÐ"Gð1Ø)+×)?Ò)?ÀÑ)FÔ)F¡  3 3øÝ#*ð 1ð 1ð 1Ø&'¤j      øøøøð1øøøà#&ð <­7°1Ð6JÑ+KÔ+Kð <Ø7; Ô 4Ø%×)Ò)¨!Ñ,Ô,Ð,Ø"#˜™øõ7 &ð 9ð 9ð 9Ø78Ð% a§k¢k¡m¤mÑ4Ð4Ñ4ð9øøøõ: -Ð->×-CÒ-CÑ-EÔ-EÀwÑOÔOˆMð ð ð �Ø—	’	‘”��ð ð 8ð 8�ðØ×3Ò3°DÑ9Ô9‘F�A�s�søÝð ð ð Øœ*�CØ¥-Ð/Ð/Øð 0Ð/Ð/Ð/Ð/øøøøðøøøð �'Ô9Ò9Ð9Ø)¨"¬(Ô3�AØ!×%Ò% aÑ(Ô(Ð(Ø˜a’x�xõ # 1Ð&:Ñ;Ô;ð 8Ø37˜AÔ0øð8øð	 ð ð �Ø—	’	‘”��ð ð 8ð 8�ðØ×3Ò3°DÑ9Ô9‘F�A�s�søÝð ð ð Øœ*�CØ¥-Ð/Ð/Øð 0Ð/Ð/Ð/Ð/øøøøðøøøð �'Ô9Ò9Ð9Ø)¨"¬(Ô3�AØ!×%Ò% aÑ(Ô(Ð(Ø˜a’x�xõ # 1Ð&:Ñ;Ô;ð 8Ø37˜AÔ0øð8øøøð  	×ÒÐIÐIÐIÐI¸=ÐIÑIÔIÑIÔIÐIØ=Ð=Ð=Ð=˜;Ð=Ñ=Ô=Ð=sÂ   ÁI3 Á!E9Á2!BÂI3 Â
B;ÂB6Â1I3 Â6B;Â;AI3 ÄD)Ä(I3 Ä)
EÄ3D?Ä:I3 Ä?EÅ5I3 Å9!FÆI3 ÆFÆ%I3 Ç!G:Ç:
HÈHÈHÉ3L$ÊJ+Ê*L$Ê+
K	Ê5K	ËL$ËK	ËAL$ÚPollSelectorc                 ón  — t          ¦   «         5 }| D ]"}|                     |t          j        ¦  «         Œ#|�t	          j        ¦   «         |z   }	 |                     |¦  «        }|rd„ |D ¦   «         cddd¦  «         S |�*|t	          j        ¦   «         z
  }|dk     r|cddd¦  «         S Œ\# 1 swxY w Y   dS )r•  NTc                 ó"   — g | ]\  }}|j         ‘ŒS rŒ   )Úfileobj)r™  ÚkeyÚeventss      r   rŸ  zwait.<locals>.<listcomp>¤  s   € ÐCÐCÐC©M¨S°&˜CœKÐCÐCÐCr   r   )Ú_WaitSelectorÚregisterÚ	selectorsÚ
EVENT_READr   r   Úselect)r©  r   Úselectorrs   Údeadliner’  s         r   r   r   ”  s4  € õ ‰_Œ_ð 	) Ø"ð =ð =�Ø×!Ò! #¥yÔ';Ñ<Ô<Ð<Ð<àÐ"Ýœ>Ñ+Ô+¨gÑ5�ð)Ø Ÿš¨Ñ0Ô0�Øð )ØCÐC¸UÐCÑCÔCð	)ð 	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð Ð*Ø"*­T¬^Ñ-=Ô-=Ñ"=˜Ø" Qš;˜;Ø#(ð	)ð 	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð)ð	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   �A!B*Á=B*Â)B*Â*B.Â1B.c                 ó  — |                       ¦   «         }t          j        |t          j        t          j        ¦  «        5 }ddlm} |                     |¦  «        }t          || j	        | j
        ffcd d d ¦  «         S # 1 swxY w Y   d S )Nr   )Úresource_sharer)r`   r4   Úfromfdr   ÚSOCK_STREAMr$   rº  Ú	DupSocketÚrebuild_connectionrG   rH   )rx  rF   rB  rº  Údss        r   Úreduce_connectionrÀ  °  sÔ   € Ø—’‘”ˆÝŒ]˜6¥6¤>µ6Ô3EÑFÔFð 	JÈ!Ø)Ð)Ð)Ð)Ð)Ð)Ø ×*Ò*¨1Ñ-Ô-ˆBÝ%¨¨D¬M¸4¼=Ð'IÐIð	Jð 	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jð 	Jð 	Js   ¿1A=Á=BÂBc                 óp   — |                       ¦   «         }t          |                      ¦   «         ||¦  «        S r   ©r  rÉ   )r¿  rG   rH   Úsocks       r   r¾  r¾  ¶  s)   € Ø�yŠy‰{Œ{ˆÝ˜$Ÿ+š+™-œ-¨°8Ñ<Ô<Ð<r   c                 óÒ   — | j         rt          j        nd| j        rt          j        ndz  }t          j        |                      ¦   «         |¦  «        }t          || j         | j        ffS rˆ  )	rG   r¢   ÚFILE_GENERIC_READrH   ÚFILE_GENERIC_WRITEr   Ú	DupHandler`   Úrebuild_pipe_connection)rx  r'  Údhs      r   Úreduce_pipe_connectionrÊ  »  s^   € Ø04´ÐD•7Ô,Ð,À1Ø15´ÐE•7Ô-Ð-ÀAñGˆåÔ  §¢¡¤°Ñ7Ô7ˆÝ&¨¨T¬]¸D¼MÐ(JÐJÐJr   c                 óL   — |                       ¦   «         }t          |||¦  «        S r   )r  rœ   )rÉ  rG   rH   rF   s       r   rÈ  rÈ  À  s!   € Ø—’‘”ˆÝ˜f h°Ñ9Ô9Ð9r   c                 óz   — t          j        |                      ¦   «         ¦  «        }t          || j        | j        ffS r   )r   ÚDupFdr`   r¾  rG   rH   )rx  Údfs     r   rÀ  rÀ  Æ  s/   € ÝŒ_˜TŸ[š[™]œ]Ñ+Ô+ˆÝ! B¨¬°t´}Ð#EÐEÐEr   c                 óL   — |                       ¦   «         }t          |||¦  «        S r   rÂ  )rÎ  rG   rH   Úfds       r   r¾  r¾  É  s!   € Ø�YŠY‰[Œ[ˆÝ˜"˜h¨Ñ1Ô1Ð1r   )NN)Tr   )IÚ__all__r°   r(   r1   r4   rÙ   r   r%   Ú	itertoolsrã   r$   r   r	   r
   Úcontextr   ÚForkingPicklerrp   r¢   r   r   r   r   ÚImportErrorr2   r  ÚCONNECTION_TIMEOUTÚcountr+   rê   Úfamiliesr3   r   r   r/   r5   r=   r?   rœ   rÉ   Úobjectr   r   r   rí   r  rë   r  rf  rg  rj  rk  rö   r÷   rr  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Ð
2Ð
2€à 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð à Ð Ð Ð à Ð Ð Ð Ð Ð à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð ØÔ*€ðØ€N€N€NØOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOøØð ð ð Ø
„|�wÒÐØØ€G€G€Gðøøøð €àÐ à�	”Ñ!Ô!€à€Øˆ;€à
€7ˆ6�9ÑÔð Ø€NØ��Ñ€Hà„<�7ÒÐØ€NØ��Ñ€Hð -ð &ð &ð &ð &ð ð  ð  ð0ð 0ð 0ð
Fð 
Fð 
FðFð Fð Fð&Tð Tð Tð Tð Tñ Tô Tð Tðn ð OðMð Mð Mð Mð M˜ñ Mô Mð Mð`Mð Mð Mð Mð M�ñ Mô Mð Mðh:ð :ð :ð :ð :ˆvñ :ô :ð :ðzð ð ð ð* „<�7ÒÐðð ð ð ð ð&&ð &ð &ð &ðX)ð )ð )ð )ð )�Vñ )ô )ð )ðX&ð &ð &ð „<�7ÒÐð6,ð 6,ð 6,ð 6,ð 6,�vñ 6,ô 6,ð 6,ðp!ð !ð !ð> €à€	Ø
€Ø
€ð?ð ?ð ?ð>ð >ð >ð$ð ð ð ð ˜ñ ô ð ðHð Hð Hðð ð ð>ð >ð >ð >ð >�(ñ >ô >ð >ðLð Lð Lð „<�7ÒÐðð ð ð( Ô.°Ô0MÐN€MðL>ð L>ð L>ð L>ð L>ð` ÐÐÐð
 €wˆy˜.Ñ)Ô)ð 1Ø!Ô.ˆˆà!Ô0ˆð)ð )ð )ð )ð6 „<�7ÒÐðJð Jð Jð=ð =ð =ð €IÔ�zÐ#4Ñ5Ô5Ð5ðKð Kð Kð
:ð :ð :ð €IÔ�~Ð'=Ñ>Ô>Ð>Ð>Ð>ðFð Fð Fð2ð 2ð 2ð €IÔ�zÐ#4Ñ5Ô5Ð5Ð5Ð5s   ÁA ÁA,Á+A,