§
    “dîi‹~  ã                   ó  — 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
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$„ Z0d%Z1d&Z2d'Z3d(Z4d)„ Z5d*„ Z6 G d+„ d,e)¦  «        Z7d-„ Z8d.„ Z9 G d/„ d0e*¦  «        Z:d1„ Z;ej        dk    rd2„ Z<ej=        ej>        hZ?d>d3„Z@n#ddlAZA e eAd4¦  «        reAjB        ZCneAjD        ZCd>d5„Z@ej        dk    r0d6„ ZEd7„ ZF ejG        e(eE¦  «         d8„ ZHd9„ ZI ejG        e'eH¦  «         dS d:„ ZEd;„ ZF ejG        e(eE¦  «         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    úo/home/div/.local/share/uv/python/cpython-3.11.15-linux-aarch64-gnu/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/   F   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   T   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__v   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 )Nú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   rQ   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   rQ   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   ÚcloserQ   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)rR   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   rX   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)rR   rV   Ú
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)rR   rV   ri   Ú_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)rR   rT   r,   Ú_recv_bytesrY   Úgetvalue)rE   Ú	maxlengthrj   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)rR   rT   re   rf   Úlenr,   rw   Útellr
   rx   ÚseekÚreadinto)rE   rj   rk   rm   rf   ÚbytesizeÚresultrl   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)rR   rT   rw   rq   ÚloadsÚ	getbuffer)rE   rj   s     r   Úrecvz_ConnectionBase.recvö   sS   € à×ÒÑÔÐØ×ÒÑÔÐØ×ÒÑ Ô ˆÝ×$Ò$ S§]¢]¡_¤_Ñ5Ô5Ð5r   ç        c                 ó|   — |                       ¦   «          |                      ¦   «          |                      |¦  «        S )z/Whether there is any input available to be read)rR   rT   Ú_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   ©rX   ©rE   Úexc_typeÚ	exc_valueÚexc_tbs       r   Ú__exit__z_ConnectionBase.__exit__  ó   € Ø�
Š
‰Œˆˆˆr   )TT)r   Nr   )r   )r‡   )Ú__name__Ú
__module__Ú__qualname__rB   rI   rN   rR   rT   rV   rY   Úpropertyr\   rG   rH   ra   rX   ro   ru   rz   r‚   r†   r‹   rŽ   r–   r�   r   r   r?   r?   s   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                   óH   — e Zd 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.
        FNc                 ó`   — | j         }|�|                     ¦   «           || j        ¦  «         d S r   )Ú_send_ovÚcancelrB   )rE   Ú_CloseHandleÚovs      r   rL   zPipeConnection._close  s3   € Ø”ˆBØˆ~à—	’	‘”�ØˆL˜œÑ&Ô&Ð&Ð&Ð&r   c                 óH  — | j         �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¦  «        \  }}n$# d | _         |                     d¦  «        \  }}w xY w|t          j        k    rt          t          j        d¦  «        ‚|dk    sJ ‚|t!          |¦  «        k    sJ ‚d S )Nz/concurrent send_bytes() calls are not supportedT©Ú
overlappedFrP   r   )rŸ   r,   Ú_winapiÚ	WriteFilerB   ÚERROR_IO_PENDINGÚWaitForMultipleObjectsÚeventr   r   r    ÚGetOverlappedResultÚERROR_OPERATION_ABORTEDrQ   ÚerrnoÚEPIPEr|   )rE   rj   r¢   ÚerrÚwaitresÚnwrittens         r   ri   zPipeConnection._send_bytes  s:  € ØŒ}Ð(å ð "5ñ 6ô 6ð 6åÔ'¨¬°cÀdÐKÑKÔK‰GˆB�ØˆDŒMð
=Ø�'Ô2Ò2Ð2Ý%Ô<Øœ˜
 E­8ñ5ô 5�Gà"¥mÒ3Ð3Ð3Ð3øøðØ—	’	‘”�Øøøøà $�”Ø "× 6Ò 6°tÑ <Ô <‘�˜#˜#øð !%�”Ø "× 6Ò 6°tÑ <Ô <‘�˜#Ð<Ð<Ð<Ð<Ø•gÔ5Ò5Ð5õ �eœkÐ+=Ñ>Ô>Ð>Ø˜!’8�8�8�8Ø�s 3™xœxÒ'Ð'Ð'Ð'Ð'Ð's   ¾>A= Á<B7 Á=BÂB7 Â7!Cc                 óú  — | 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_datarQ   ÚwinerrorÚERROR_BROKEN_PIPEÚEOFErrorÚRuntimeError)	rE   ÚmaxsizeÚbsizer¢   r¯   r°   ÚnreadÚfÚes	            r   rw   zPipeConnection._recv_bytes6  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._pollV  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|   rY   r¸   r«   )rE   r¢   rÀ   rj   rÃ   Úleftr¯   Úrbytess           r   r»   zPipeConnection._get_more_data\  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Ÿ   r¦   ÚCloseHandlerL   ri   rw   r‰   r»   r�   r   r   r�   r�     s‹   € € € € € ð	ð 	ð
 #ÐØˆà&-Ô&9ð 	'ð 	'ð 	'ð 	'ð	(ð 	(ð 	(ð4	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   r[   ©rE   rL   s     r   rL   zConnection._closes  ó   € ØˆF�4”<Ñ Ô Ð Ð Ð r   c                 ó&   —  || j         ¦  «         d S r   r[   rÐ   s     r   rL   zConnection._closex  rÑ   r   c                 ót   — t          |¦  «        }	  || j        |¦  «        }||z  }|dk    rd S ||d …         }Œ))NTr   )r|   rB   )rE   rj   r¹   Ú	remainingrn   s        r   Ú_sendzConnection._send}  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¾   rQ   r¹   )rE   rl   Úreadrj   rF   rÔ   Úchunkrn   s           r   Ú_recvzConnection._recv†  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   rj   rn   Ú
pre_headerÚheaders        r   ri   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Þ   Úunpackrx   )rE   rÀ   rj   rl   s       r   rw   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   ru   Ú_writer†   Ú_readr(   rX   r¹   r×   rÕ   rÙ   ri   rw   r‰   r�   r   r   rÎ   rÎ   l  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        �*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ñ   rQ   Úacceptrö   Údeliver_challengeÚanswer_challenge)rE   Úcs     r   rú   zListener.accept×  s_   € ð Œ>Ð!ÝÐ.Ñ/Ô/Ð/àŒN×!Ò!Ñ#Ô#ˆØŒ=Ð$Ý˜a ¤Ñ/Ô/Ð/Ý˜Q ¤Ñ.Ô.Ð.Øˆr   c                 óR   — | j         }|�d| _         |                     ¦   «          dS dS )zA
        Close the bound socket or named pipe of `self`.
        N)rñ   rX   )rE   Úlisteners     r   rX   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ú   rX   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  rQ   rX   Ú_familyr  r   r;   ÚFinalizeÚunlinkÚ_unlink)rE   r<   r.   r÷   s       r   rI   zSocketListener.__init__X  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)r9  rú   r  r  rÎ   r  ©rE   Úss     r   rú   zSocketListener.acceptq  sE   € Ø!%¤×!4Ò!4Ñ!6Ô!6Ñˆˆ4ÔØ	�Š�dÑÔÐÝ˜!Ÿ(š(™*œ*Ñ%Ô%Ð%r   c                 ó²   — 	 | j                              ¦   «          | j        }|�d | _         |¦   «          d S d S # | j        }|�d | _         |¦   «          w w xY wr   )r9  rX   rD  )rE   rC  s     r   rX   zSocketListener.closev  sr   € ð	ØŒL×ÒÑ Ô Ð à”\ˆFØÐ!Ø#�”Ø�‘”���ð "Ð!øð ”\ˆFØÐ!Ø#�”Ø�‘”��ð "øøøs	   ‚9 ¹AN)r   )r˜   r™   rš   rË   rI   rú   rX   r�   r   r   rò   rò   T  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   r8  r  ÚconnectrÎ   r  )r<   r.   rG  s      r   r	  r	  €  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   r5  )
r  Ú_new_handleÚ_handle_queuer  r   Ú	sub_debugrB  rð   Ú_finalize_pipe_listenerrX   )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   rM  Úflagss      r   rN  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)rO  ÚappendrN  Úpopr¦   r*  r©   rª   r   r    rÌ   r«   rQ   r¼   ÚERROR_NO_DATAr�   )rE   rF   r¢   Úresr1  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   rP  r¦   rÌ   )Úqueuer<   rF   s      r   rQ  z$PipeListener._finalize_pipe_listenerÂ  sB   € åŒNÐ=¸wÑGÔGÐGØð ,ð ,�ÝÔ# FÑ+Ô+Ð+Ð+ð,ð ,r   r   )F)	r˜   r™   rš   rË   rI   rN  rú   ÚstaticmethodrQ  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   rQ   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_LENGTHro   Ú	CHALLENGEÚnewÚdigestrz   ÚWELCOMEÚFAILUREr	   ©Ú
connectionrø   rh  Úmessagern  Ú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   re  rg  zmessage = %rrf  zdigest sent was rejected)rh  ró   rô   r,   ri  r7   rz   r|   rl  rm  rn  ro   ro  r	   rq  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)ra   rX   r‹   rz   ro   )Ú_connÚ_dumpsÚ_loadsr8  Úsetattr)rE   Úconnrr   r„   Úattrrt   s         r   rI   zConnectionWrapper.__init__  sT   € ØˆŒ
ØˆŒØˆŒØKð 	%ð 	%ˆDÝ˜$ Ñ%Ô%ˆCÝ�D˜$ Ñ$Ô$Ð$Ð$ð	%ð 	%r   c                 ód   — |                       |¦  «        }| j                             |¦  «         d S r   )rz  ry  ro   )rE   rt   rG  s      r   ru   zConnectionWrapper.send  s/   € Ø�KŠK˜ÑÔˆØŒ
×Ò˜aÑ Ô Ð Ð Ð r   c                 ó^   — | j                              ¦   «         }|                      |¦  «        S r   )ry  rz   r{  rF  s     r   r†   zConnectionWrapper.recv  s%   € ØŒJ×!Ò!Ñ#Ô#ˆØ�{Š{˜1‰~Œ~Ðr   N)r˜   r™   rš   rI   ru   r†   r�   r   r   rw  rw    sA   € € € € € ð%ð %ð %ð!ð !ð !ðð ð ð ð r   rw  c                 óf   — t                                | fd d d d¦  «                             d¦  «        S )Nr   úutf-8)Ú	xmlrpclibrr   Úencode)rt   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)rG  rt   Ú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ú   rw  r…  r‰  rs   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ƒ  rw  r   r…  r‰  )r6  Ú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¿   rV  )Úhandlesr   ÚLÚreadyrY  s        r   Ú_exhaustive_waitr˜  6  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   r^  g      à?ra   Té   )é   r›  Fr´   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r�   )Ú.0rb  Ú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”  Úsetr8  r¦   r¸   rQ   r¼   Ú_ready_errorsr¨   rV  rª   r1   Úgetwindowsversionr«   r3   r´   ÚaddÚAttributeErrorrA   r˜  Úkeysr    r¬   Úupdate)Úobject_listr   Úov_listÚready_handlesr¢  ra   r¢   r¯   rÄ   r1  r£  rŸ  s             @@r   r   r   L  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   Úselectorrt   Ú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)ra   r4   Úfromfdr   ÚSOCK_STREAMr$   r¾  Ú	DupSocketÚrebuild_connectionrG   rH   )r}  rF   rG  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   Ú	DupHandlera   Úrebuild_pipe_connection)r}  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   ÚDupFdra   rÂ  rG   rH   )r}  Ú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   )JÚ__all__r­   rµ   r(   r1   r4   rÞ   r   r%   Ú	itertoolsrè   r$   r   r	   r
   Úcontextr   ÚForkingPicklerrq   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  rk  rl  ro  rp  rû   rü   rw  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 ð _ð]ð ]ð ]ð ]ð ]˜ñ ]ô ]ð ]ð@Mð Mð Mð Mð M�ñ Mô Mð Mðh;ð ;ð ;ð ;ð ;ˆvñ ;ô ;ð ;ð|ð ð ð ð* „<�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 ÁA0Á/A0