ó
    F\h×‚  ã                   ó  • S r SrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSK	Jr  SSK	Jr  SSK	Jr  SS	K	Jr  SS
K	Jr  SSK	Jr  SSK	Jr  SSKJr  S r " S S\R*                  \R,                  5      r " S S\\R0                  5      r " S S\\R4                  5      r " S S\5      r " S S\\R:                  5      r " S S\\\R>                  5      r  " S S\\\R>                  5      r! " S S\
RD                  5      r#g)z¦Event loop using a proactor and related classes.

A proactor is a "notify-on-completion" multiplexer.  Currently a
proactor is only implemented on Windows with IOCP.
)ÚBaseProactorEventLoopé    Né   )Úbase_events)Ú	constants)Úfutures)Ú
exceptions)Ú	protocols)Ússlproto)Ú
transports)Útrsock)Úloggerc                 óÔ  • [         R                  " U5      U R                  S'    UR                  5       U R                  S'   SU R                  ;  a   UR                  5       U R                  S'   g g ! [        R
                   a8    U R                  R                  5       (       a  [        R                  " SUSS9   N{f = f! [        R
                   a    S U R                  S'    g f = f)NÚsocketÚsocknamezgetsockname() failed on %rT©Úexc_infoÚpeername)r   ÚTransportSocketÚ_extraÚgetsocknamer   ÚerrorÚ_loopÚ	get_debugr   ÚwarningÚgetpeername)Ú	transportÚsocks     Ú./usr/lib/python3.13/asyncio/proactor_events.pyÚ_set_socket_extrar      sÒ   € Ü!'×!7Ò!7¸Ó!=€I×Ñ�XÑðCØ'+×'7Ñ'7Ó'9ˆ	×Ñ˜Ñ$ð ˜×)Ñ)Ó)ð	0Ø+/×+;Ñ+;Ó+=ˆI×Ñ˜ZÒ(ð *øô �<‰<ó CØ�?‰?×$Ñ$×&Ñ&Ü�NŠNØ,¨d¸TòCùðCûô �|‰|ó 	0à+/ˆI×Ñ˜ZÓ(ð	0ús$   ¥A2 ÁC Á2A	B>Â=B>Ã#C'Ã&C'c                   ó”   ^ • \ rS rSrSr  SU 4S jjrS rS rS rS r	S r
S	 r\R                  4S
 jrSS jrS rS rS rSrU =r$ )Ú_ProactorBasePipeTransporté.   z*Base class for pipe and socket transports.c                 óþ  >• [         TU ]  XQ5        U R                  U5        X l        U R	                  U5        X`l        S U l        S U l        S U l        SU l	        SU l
        SU l        SU l        SU l        U R
                  b  U R
                  R                  U 5        U R                  R!                  U R"                  R$                  U 5        Ub,  U R                  R!                  [&        R(                  US 5        g g )Nr   F)ÚsuperÚ__init__Ú
_set_extraÚ_sockÚset_protocolÚ_serverÚ_bufferÚ	_read_futÚ
_write_futÚ_pending_writeÚ
_conn_lostÚ_closingÚ_called_connection_lostÚ_eof_writtenÚ_attachr   Ú	call_soonÚ	_protocolÚconnection_mader   Ú_set_result_unless_cancelled©ÚselfÚloopr   ÚprotocolÚwaiterÚextraÚserverÚ	__class__s          €r   r%   Ú#_ProactorBasePipeTransport.__init__2   sÓ   ø€ ä‰Ñ˜Ô%Ø�‰˜ÔØŒ
Ø×Ñ˜(Ô#ØŒØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒØ',ˆÔ$Ø!ˆÔØ�<‰<Ñ#Ø�L‰L× Ñ  Ô&Ø�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBØÑà�J‰J× Ñ ¤×!EÑ!EØ!'¨õ/ð ó    c                 óÈ  • U R                   R                  /nU R                  c  UR                  S5        O"U R                  (       a  UR                  S5        U R                  b,  UR                  SU R                  R                  5        35        U R                  b  UR                  SU R                  < 35        U R                  b  UR                  SU R                  < 35        U R                  (       a'  UR                  S[        U R                  5       35        U R                  (       a  UR                  S5        SR                  S	R                  U5      5      $ )
NÚclosedÚclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>Ú )r>   Ú__name__r'   Úappendr/   Úfilenor+   r,   r*   Úlenr1   ÚformatÚjoin)r8   Úinfos     r   Ú__repr__Ú#_ProactorBasePipeTransport.__repr__I   sü   € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÑØ�K‰K˜Õ!Ø�]�]Ø�K‰K˜	Ô"Ø�:‰:Ñ!Ø�K‰K˜#˜dŸj™j×/Ñ/Ó1Ð2Ð3Ô4Ø�>‰>Ñ%Ø�K‰K˜% §¡Ñ1Ð2Ô3Ø�?‰?Ñ&Ø�K‰K˜& §¡Ñ 3Ð4Ô5Ø�<�<Ø�K‰K˜.¬¨T¯\©\Ó):Ð(;Ð<Ô=Ø××Ø�K‰K˜Ô&Ø�}‰}˜SŸX™X d›^Ó,Ð,r@   c                 ó    • XR                   S'   g )NÚpipe)r   ©r8   r   s     r   r&   Ú%_ProactorBasePipeTransport._set_extra[   s   € Ø"�‰�FÒr@   c                 ó   • Xl         g ©N©r4   )r8   r:   s     r   r(   Ú'_ProactorBasePipeTransport.set_protocol^   s   € Ø!�r@   c                 ó   • U R                   $ rS   rT   ©r8   s    r   Úget_protocolÚ'_ProactorBasePipeTransport.get_protocola   s   € Ø�~‰~Ðr@   c                 ó   • U R                   $ rS   )r/   rW   s    r   Ú
is_closingÚ%_ProactorBasePipeTransport.is_closingd   s   € Ø�}‰}Ðr@   c                 óF  • U R                   (       a  g SU l         U =R                  S-  sl        U R                  (       d3  U R                  c&  U R                  R                  U R                  S 5        U R                  b"  U R                  R                  5         S U l        g g )NTr   )	r/   r.   r*   r,   r   r3   Ú_call_connection_lostr+   ÚcancelrW   s    r   ÚcloseÚ _ProactorBasePipeTransport.closeg   sq   € Ø�=�=ØØˆŒØ�Š˜1Ñ�Ø�|�| §¡Ñ 7Ø�J‰J× Ñ  ×!;Ñ!;¸TÔBØ�>‰>Ñ%Ø�N‰N×!Ñ!Ô#Ø!ˆD�Nð &r@   c                 ót   • U R                   b+  U" SU < 3[        U S9  U R                   R                  5         g g )Nzunclosed transport )Úsource)r'   ÚResourceWarningr`   )r8   Ú_warns     r   Ú__del__Ú"_ProactorBasePipeTransport.__del__r   s5   € Ø�:‰:Ñ!ÙÐ'¨¡xÐ0´/È$ÒOØ�J‰J×ÑÕð "r@   c                 ó>  •  [        U[        5      (       a6  U R                  R                  5       (       a  [        R
                  " SXSS9  O*U R                  R                  UUU U R                  S.5        U R                  U5        g ! U R                  U5        f = f)Nz%r: %sTr   )ÚmessageÚ	exceptionr   r:   )	Ú
isinstanceÚOSErrorr   r   r   ÚdebugÚcall_exception_handlerr4   Ú_force_close)r8   Úexcri   s      r   Ú_fatal_errorÚ'_ProactorBasePipeTransport._fatal_errorw   s~   € ð	#Ü˜#œw×'Ñ'Ø—:‘:×'Ñ'×)Ñ)Ü—L’L ¨4À4ÒHøà—
‘
×1Ñ1Ø&Ø!$Ø!%Ø $§¡ñ	3ô ð ×Ñ˜cÕ"øˆD×Ñ˜cÕ"ús   ‚A5B	 Â	Bc                 ó~  • U R                   bY  U R                   R                  5       (       d:  Uc  U R                   R                  S 5        OU R                   R                  U5        U R                  (       a  U R
                  (       a  g SU l        U =R                  S-  sl        U R                  (       a!  U R                  R                  5         S U l        U R                  (       a!  U R                  R                  5         S U l	        SU l
        S U l        U R                  R                  U R                  U5        g )NTr   r   )Ú_empty_waiterÚdoneÚ
set_resultÚset_exceptionr/   r0   r.   r,   r_   r+   r-   r*   r   r3   r^   )r8   rp   s     r   ro   Ú'_ProactorBasePipeTransport._force_close†   sÛ   € Ø×ÑÑ)°$×2DÑ2D×2IÑ2I×2KÑ2KØ‰{Ø×"Ñ"×-Ñ-¨dÕ3à×"Ñ"×0Ñ0°Ô5Ø�=�=˜T×9×9ØØˆŒØ�Š˜1Ñ�Ø�?�?Ø�O‰O×"Ñ"Ô$Ø"ˆDŒOØ�>�>Ø�N‰N×!Ñ!Ô#Ø!ˆDŒNØˆÔØˆŒØ�
‰
×Ñ˜T×7Ñ7¸Õ=r@   c                 ó.  • U R                   (       a  g  U R                  R                  U5        [        U R                  S5      (       aG  U R                  R                  5       S:w  a)  U R                  R                  [        R                  5        U R                  R                  5         S U l        U R                  nUb  UR                  U 5        S U l
        SU l         g ! [        U R                  S5      (       aG  U R                  R                  5       S:w  a)  U R                  R                  [        R                  5        U R                  R                  5         S U l        U R                  nUb  UR                  U 5        S U l
        SU l         f = f)NÚshutdownéÿÿÿÿT)r0   r4   Úconnection_lostÚhasattrr'   rG   rz   r   Ú	SHUT_RDWRr`   r)   Ú_detach)r8   rp   r=   s      r   r^   Ú0_ProactorBasePipeTransport._call_connection_lostš   s'  € Ø×'×'Øð	0Ø�N‰N×*Ñ*¨3Ô/ô �t—z‘z :×.Ñ.°4·:±:×3DÑ3DÓ3FÈ"Ó3LØ—
‘
×#Ñ#¤F×$4Ñ$4Ô5Ø�J‰J×ÑÔØˆDŒJØ—\‘\ˆFØÑ!Ø—‘˜tÔ$Ø#�”Ø+/ˆDÕ(øô �t—z‘z :×.Ñ.°4·:±:×3DÑ3DÓ3FÈ"Ó3LØ—
‘
×#Ñ#¤F×$4Ñ$4Ô5Ø�J‰J×ÑÔØˆDŒJØ—\‘\ˆFØÑ!Ø—‘˜tÔ$Ø#�”Ø+/ˆDÕ(ús   ”C! Ã!B3Fc                 óh   • U R                   nU R                  b  U[        U R                  5      -  nU$ rS   )r-   r*   rH   )r8   Úsizes     r   Úget_write_buffer_sizeÚ0_ProactorBasePipeTransport.get_write_buffer_size®   s/   € Ø×"Ñ"ˆØ�<‰<Ñ#Ø”C˜Ÿ™Ó%Ñ%ˆDØˆr@   )r*   r0   r/   r.   r1   r-   r4   r+   r)   r'   r,   ©NNN)zFatal error on pipe transport)rE   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r%   rL   r&   r(   rX   r[   r`   ÚwarningsÚwarnrf   rq   ro   r^   rƒ   Ú__static_attributes__Ú__classcell__©r>   s   @r   r!   r!   .   sV   ø† á4à48Ø$(÷/ò.-ò$#ò"òòò	"ð %ŸM™Mô ô
#ò>ò(0÷(ð r@   r!   c                   ó\   ^ • \ rS rSrSr  SU 4S jjrS rS rS rS r	S r
SS	 jrS
rU =r$ )Ú_ProactorReadPipeTransportéµ   zTransport for read pipes.c                 ó¼   >• SU l         SU l        [        TU ]  XX4XV5        [	        U5      U l        U R                  R                  U R                  5        SU l        g )Nr{   TF)	Ú_pending_data_lengthÚ_pausedr$   r%   Ú	bytearrayÚ_datar   r3   Ú_loop_reading)	r8   r9   r   r:   r;   r<   r=   Úbuffer_sizer>   s	           €r   r%   Ú#_ProactorReadPipeTransport.__init__¹   sN   ø€ à$&ˆÔ!ØˆŒÜ‰Ñ˜ X°uÔEä˜{Ó+ˆŒ
Ø�
‰
×Ñ˜T×/Ñ/Ô0Øˆ�r@   c                 óT   • U R                   (       + =(       a    U R                  (       + $ rS   )r”   r/   rW   s    r   Ú
is_readingÚ%_ProactorReadPipeTransport.is_readingÃ   s   € Ø—<‘<Ô×5¨¯©Ô$5Ð5r@   c                 óÆ   • U R                   (       d  U R                  (       a  g SU l        U R                  R                  5       (       a  [        R
                  " SU 5        g g )NTz%r pauses reading)r/   r”   r   r   r   rm   rW   s    r   Úpause_readingÚ(_ProactorReadPipeTransport.pause_readingÆ   sB   € Ø�=�=˜DŸLŸLØØˆŒð �:‰:×Ñ×!Ñ!Ü�LŠLÐ,¨dÕ3ð "r@   c                 óÆ  • U R                   (       d  U R                  (       d  g SU l        U R                  c&  U R                  R	                  U R
                  S 5        U R                  nSU l        US:”  a4  U R                  R	                  U R                  U R                  S U U5        U R                  R                  5       (       a  [        R                  " SU 5        g g )NFr{   z%r resumes reading)r/   r”   r+   r   r3   r—   r“   Ú_data_receivedr–   r   r   rm   )r8   Úlengths     r   Úresume_readingÚ)_ProactorReadPipeTransport.resume_readingÙ   s§   € Ø�=�= §§ØàˆŒØ�>‰>Ñ!Ø�J‰J× Ñ  ×!3Ñ!3°TÔ:à×*Ñ*ˆØ$&ˆÔ!Ø�B‹;ð �J‰J× Ñ  ×!4Ñ!4°d·j±jÀÀ&Ð6IÈ6ÔRà�:‰:×Ñ×!Ñ!Ü�LŠLÐ-¨tÕ4ð "r@   c                 óH  • U R                   R                  5       (       a  [        R                  " SU 5         U R                  R                  5       nU(       d  U R                  5         g g ! [        [        4 a    e [         a  nU R                  US5         S nAg S nAff = f)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)r   r   r   rm   r4   Úeof_receivedÚ
SystemExitÚKeyboardInterruptÚBaseExceptionrq   r`   )r8   Ú	keep_openrp   s      r   Ú_eof_receivedÚ(_ProactorReadPipeTransport._eof_receivedë   s‰   € Ø�:‰:×Ñ×!Ñ!Ü�LŠLÐ*¨DÔ1ð	ØŸ™×3Ñ3Ó5ˆIö Ø�J‰J�Lð øô Ô-Ð.ó 	ØÜó 	Ø×ÑØÐHôJäûð	ús   ¸A+ Á+B!ÂBÂB!c                 óÆ  • U R                   (       a  U R                  S:X  d   eX l        g US:X  a  U R                  5         g [        U R                  [
        R                  5      (       a#   [
        R                  " U R                  U5        g U R                  R                  U5        g ! [        [        4 a    e [         a  nU R                  US5         S nAg S nAff = f)Nr{   r   z3Fatal error: protocol.buffer_updated() call failed.)r”   r“   r«   rk   r4   r	   ÚBufferedProtocolÚ_feed_data_to_buffered_protor§   r¨   r©   rq   Údata_received)r8   Údatar¢   rp   s       r   r¡   Ú)_ProactorReadPipeTransport._data_receivedû   s¿   € Ø�<�<ð ×,Ñ,°Ó2Ð2Ð2Ø(.Ô%Øà�Q‹;Ø×ÑÔ Øä�d—n‘n¤i×&@Ñ&@×AÑAðÜ×6Ò6°t·~±~ÀtÕLð �N‰N×(Ñ(¨Õ.øô Ô 1Ð2ó ØÜ ó Ø×!Ñ! #ð#1ô2ô ûð	ús   Á,!B* Â*C ÃCÃC c                 óü  • SnS n Ub­  U R                   UL d   U R                   c  U R                  (       d   eS U l         UR                  5       (       aR  UR                  5       nUS:X  a   US:”  a  U R	                  X25        g g [        [        U R                  5      S U 5      nOUR                  5         U R                  (       a   US:”  a  U R	                  X25        g g U R                  (       d?  U R                  R                  R                  U R                  U R                  5      U l         U R                  (       d%  U R                   R                  U R                  5        US:”  a  U R	                  X25        g g ! [          af  nU R                  (       d  U R#                  US5         S nANKU R                  R%                  5       (       a  [&        R(                  " SSS9   S nAN„S nAf[*         a  nU R-                  U5         S nAN§S nAf[.         a  nU R#                  US5         S nANËS nAf[0        R2                   a    U R                  (       d  e  Nöf = f! US:”  a  U R	                  X25        f f = f)Nr{   r   z"Fatal read error on pipe transportz*Read error on pipe transport while closingTr   )r+   r/   ru   Úresultr¡   ÚbytesÚ
memoryviewr–   r_   r”   r   Ú	_proactorÚ	recv_intor'   Úadd_done_callbackr—   ÚConnectionAbortedErrorrq   r   r   rm   ÚConnectionResetErrorro   rl   r   ÚCancelledError)r8   Úfutr¢   r±   rp   s        r   r—   Ú(_ProactorReadPipeTransport._loop_reading  sÿ  € ØˆØˆð.	2Ø‰Ø—~‘~¨Ò,°·±Ñ1GØ15··ð@ð @à!%�”Ø—8‘8—:‘:à ŸZ™Z›\�FØ “{àðF ˜‹{Ø×#Ñ# DÕ1ð ôA !¤¨D¯J©JÓ!7¸¸Ð!@ÓA‘Dð —J‘J”Là�}�}àð2 ˜‹{Ø×#Ñ# DÕ1ð ð) —<—<à!%§¡×!5Ñ!5×!?Ñ!?ÀÇ
Á
ÈDÏJÉJÓ!W�”ð —<—<Ø—‘×0Ñ0°×1CÑ1CÔDà˜‹{Ø×#Ñ# DÕ1ð øô# &ó 	,Ø—=—=Ø×!Ñ! #Ð'K×LÑLØ—‘×%Ñ%×'Ñ'Ü—’ÐIØ&*ò,ÿøä#ó 	#Ø×Ñ˜c×"Ñ"ûÜó 	IØ×Ñ˜cÐ#G×HÑHûÜ×(Ñ(ó 	Ø—=—=Øñ !ð	ûð ˜‹{Ø×#Ñ# DÕ1ð úsz   †A$F  ÂAF  Ã!AF  Ä16I! Æ 
IÆ
#G+Æ-I! Æ24G+Ç&I! Ç+IÇ8HÈ	I! ÈIÈH2È-I! È2)IÉI! ÉIÉI! É!I;)r–   r”   r“   r+   )NNNi   rS   )rE   r†   r‡   rˆ   r‰   r%   r›   rž   r£   r«   r¡   r—   rŒ   r�   rŽ   s   @r   r�   r�   µ   s4   ø† á#à48Ø6;÷ò6ò4ò&5ò$ò /÷212ò 12r@   r�   c                   ó^   ^ • \ rS rSrSrSrU 4S jrS rSS jrS r	S r
S	 rS
 rS rSrU =r$ )Ú_ProactorBaseWritePipeTransportiH  zTransport for write pipes.Tc                 ó4   >• [         TU ]  " U0 UD6  S U l        g rS   )r$   r%   rt   ©r8   ÚargsÚkwr>   s      €r   r%   Ú(_ProactorBaseWritePipeTransport.__init__N  s   ø€ Ü‰Ò˜$Ð% "Ò%Ø!ˆÕr@   c                 óØ  • [        U[        [        [        45      (       d!  [	        S[        U5      R                   35      eU R                  (       a  [        S5      eU R                  b  [        S5      eU(       d  g U R                  (       aJ  U R                  [        R                  :¼  a  [        R                  " S5        U =R                  S-  sl
        g U R                  c(  U R                   b   eU R#                  [        U5      S9  g U R                   (       d!  [        U5      U l        U R%                  5         g U R                   R'                  U5        U R%                  5         g )Nz/data argument must be a bytes-like object, not zwrite_eof() already calledz(unable to write; sendfile is in progresszsocket.send() raised exception.r   )r±   )rk   rµ   r•   r¶   Ú	TypeErrorÚtyperE   r1   ÚRuntimeErrorrt   r.   r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   r   r,   r*   Ú_loop_writingÚ_maybe_pause_protocolÚextend)r8   r±   s     r   ÚwriteÚ%_ProactorBaseWritePipeTransport.writeR  s  € Ü˜$¤¬	´:Ð >×?Ñ?ÜðÜ˜D“z×*Ñ*Ð+ð-ó.ð .ð ××ÜÐ;Ó<Ð<Ø×ÑÑ)ÜÐIÓJÐJæØà�?�?Ø�‰¤)×"MÑ"MÓMÜ—’Ð@ÔAØ�OŠO˜qÑ �OØð �?‰?Ñ"Ø—<‘<Ñ'Ð'Ð'à×Ñ¤E¨$£KÐÒ0Ø——ä$ T›?ˆDŒLØ×&Ñ&Õ(ð �L‰L×Ñ Ô%Ø×&Ñ&Õ(r@   c                 óš  •  Ub  U R                   c  U R                  (       a  g XR                   L d   eS U l         SU l        U(       a  UR                  5         Uc  U R                  nS U l        U(       d‚  U R                  (       a&  U R
                  R                  U R                  S 5        U R                  (       a)  U R                  R                  [        R                  5        U R                  5         OÑU R
                  R                  R                  U R                  U5      U l         U R                   R!                  5       (       dX  U R                  S:X  d   e[#        U5      U l        U R                   R%                  U R&                  5        U R)                  5         O%U R                   R%                  U R&                  5        U R*                  b*  U R                   c  U R*                  R-                  S 5        g g g ! [.         a  nU R1                  U5         S nAg S nAf[2         a  nU R5                  US5         S nAg S nAff = f)Nr   z#Fatal write error on pipe transport)r,   r/   r-   r´   r*   r   r3   r^   r1   r'   rz   r   ÚSHUT_WRÚ_maybe_resume_protocolr·   Úsendru   rH   r¹   rË   rÌ   rt   rv   r»   ro   rl   rq   )r8   Úfr±   rp   s       r   rË   Ú-_ProactorBaseWritePipeTransport._loop_writingx  sµ  € ð&	JØ‰} §¡Ñ!8¸T¿]¿]ð ØŸ™Ò'Ð'Ð'Ø"ˆDŒOØ"#ˆDÔÞØ—‘”
Ø‰|Ø—|‘|�Ø#�”ÞØ—=—=Ø—J‘J×(Ñ(¨×)CÑ)CÀTÔJØ×$×$Ø—J‘J×'Ñ'¬¯©Ô7ð ×+Ñ+Õ-à"&§*¡*×"6Ñ"6×";Ñ";¸D¿J¹JÈÓ"M�”Ø—‘×+Ñ+×-Ñ-Ø×.Ñ.°!Ó3Ð3Ð3Ü*-¨d«)�DÔ'Ø—O‘O×5Ñ5°d×6HÑ6HÔIØ×.Ñ.Õ0à—O‘O×5Ñ5°d×6HÑ6HÔIØ×!Ñ!Ñ-°$·/±/Ñ2IØ×"Ñ"×-Ñ-¨dÕ3ð 3JÐ-øä#ó 	#Ø×Ñ˜c×"Ñ"ûÜó 	JØ×Ñ˜cÐ#H×IÑIûð	Jús)   ‚!H ¤GH È
I
ÈH!È!I
È.IÉI
c                 ó   • g©NT© rW   s    r   Úcan_write_eofÚ-_ProactorBaseWritePipeTransport.can_write_eof¡  ó   € Ør@   c                 ó$   • U R                  5         g rS   )r`   rW   s    r   Ú	write_eofÚ)_ProactorBaseWritePipeTransport.write_eof¤  s   € Ø�
‰
�r@   c                 ó&   • U R                  S 5        g rS   ©ro   rW   s    r   ÚabortÚ%_ProactorBaseWritePipeTransport.abort§  ó   € Ø×Ñ˜$Õr@   c                 óØ   • U R                   b  [        S5      eU R                  R                  5       U l         U R                  c  U R                   R                  S 5        U R                   $ )NzEmpty waiter is already set)rt   rÉ   r   Úcreate_futurer,   rv   rW   s    r   Ú_make_empty_waiterÚ2_ProactorBaseWritePipeTransport._make_empty_waiterª  sY   € Ø×ÑÑ)ÜÐ<Ó=Ð=Ø!ŸZ™Z×5Ñ5Ó7ˆÔØ�?‰?Ñ"Ø×Ñ×)Ñ)¨$Ô/Ø×!Ñ!Ð!r@   c                 ó   • S U l         g rS   )rt   rW   s    r   Ú_reset_empty_waiterÚ3_ProactorBaseWritePipeTransport._reset_empty_waiter²  s
   € Ø!ˆÕr@   )r*   rt   r-   r,   ©NN)rE   r†   r‡   rˆ   r‰   Ú_start_tls_compatibler%   rÎ   rË   rÙ   rÝ   rá   ræ   ré   rŒ   r�   rŽ   s   @r   rÀ   rÀ   H  s<   ø† á$à Ðõ"ò$)ôL'JòRòò ò"÷"ð "r@   rÀ   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú_ProactorWritePipeTransporti¶  c                 óÚ   >• [         TU ]  " U0 UD6  U R                  R                  R	                  U R
                  S5      U l        U R                  R                  U R                  5        g )Né   )	r$   r%   r   r·   Úrecvr'   r+   r¹   Ú_pipe_closedrÂ   s      €r   r%   Ú$_ProactorWritePipeTransport.__init__·  sO   ø€ Ü‰Ò˜$Ð% "Ò%ØŸ™×-Ñ-×2Ñ2°4·:±:¸rÓBˆŒØ�‰×(Ñ(¨×):Ñ):Õ;r@   c                 óZ  • UR                  5       (       a  g UR                  5       S:X  d   eU R                  (       a  U R                  b   eg XR                  L d   XR                  45       eS U l        U R                  b  U R                  [        5       5        g U R                  5         g )Nr@   )Ú	cancelledr´   r/   r+   r,   ro   ÚBrokenPipeErrorr`   )r8   r½   s     r   rò   Ú(_ProactorWritePipeTransport._pipe_closed¼  s…   € Ø�=‰=�?‰?àØ�z‰z‹|˜sÓ"Ð"Ð"Ø�=�=Ø—>‘>Ñ)Ð)Ð)ØØ—n‘nÒ$Ð; s¯N©NÐ&;Ó;Ð$ØˆŒØ�?‰?Ñ&Ø×ÑœoÓ/Õ0à�J‰J�Lr@   )r+   )rE   r†   r‡   rˆ   r%   rò   rŒ   r�   rŽ   s   @r   rî   rî   ¶  s   ø† õ<÷
ð r@   rî   c                   ód   ^ • \ rS rSrSr  SU 4S jjrS rS rS rSS jr	SS jr
SS	 jrS
rU =r$ )Ú_ProactorDatagramTransportiÌ  i   c                 óÊ   >• X@l         S U l        SU l        [        TU ]  XX5US9  [
        R                  " 5       U l        U R                  R                  U R                  5        g )Nr   )r;   r<   )Ú_addressrt   Ú_buffer_sizer$   r%   ÚcollectionsÚdequer*   r   r3   r—   )r8   r9   r   r:   Úaddressr;   r<   r>   s          €r   r%   Ú#_ProactorDatagramTransport.__init__Ï  sX   ø€ àŒØ!ˆÔØˆÔô 	‰Ñ˜ XÀEÐÑJô #×(Ò(Ó*ˆŒØ�
‰
×Ñ˜T×/Ñ/Õ0r@   c                 ó   • [        X5        g rS   ©r   rP   s     r   r&   Ú%_ProactorDatagramTransport._set_extraÜ  ó
   € Ü˜$Õ%r@   c                 ó   • U R                   $ rS   )rü   rW   s    r   rƒ   Ú0_ProactorDatagramTransport.get_write_buffer_sizeß  s   € Ø× Ñ Ð r@   c                 ó&   • U R                  S 5        g rS   rà   rW   s    r   rá   Ú _ProactorDatagramTransport.abortâ  rã   r@   c                 óœ  • [        U[        [        [        45      (       d  [	        S[        U5      5      eU R                  b*  US U R                  4;  a  [        SU R                   35      eU R                  (       a[  U R                  (       aJ  U R                  [        R                  :¼  a  [        R                  " S5        U =R                  S-  sl        g U R                  R                  [        U5      U45        U =R                  [!        U5      S-   -  sl        U R"                  c  U R%                  5         U R'                  5         g )Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r   é   )rk   rµ   r•   r¶   rÇ   rÈ   rû   Ú
ValueErrorr.   r   rÊ   r   r   r*   rF   rü   rH   r,   rË   rÌ   )r8   r±   Úaddrs      r   ÚsendtoÚ!_ProactorDatagramTransport.sendtoå  sÿ   € Ü˜$¤¬	´:Ð >×?Ñ?ÜÐJÜ  ›Jó(ð (ð �=‰=Ñ$¨°d¸D¿M¹MÐ5JÓ)JÜØ3°D·M±M°?ÐCóEð Eð �?�?˜tŸ}Ÿ}Ø�‰¤)×"MÑ"MÓMÜ—’ÐBÔCØ�OŠO˜qÑ �OØð 	�‰×ÑœU 4›[¨$Ð/Ô0Ø×ÒœS ›Y¨™]Ñ*Õà�?‰?Ñ"à×ÑÔ ð 	×"Ñ"Õ$r@   c                 óÔ  •  U R                   (       a  g XR                  L d   eS U l        U(       a  UR                  5         U R                  (       a"  U R                   (       aI  U R                  (       a8  U R
                  (       a&  U R                  R                  U R                  S 5        g U R                  R                  5       u  p#U =R                  [        U5      -  sl
        U R                  b6  U R                  R                  R                  U R                  U5      U l        O4U R                  R                  R                  U R                  UUS9U l        U R                  R!                  U R"                  5        U R%                  5         g ! [&         a%  nU R(                  R+                  U5         S nAg S nAf[,         a  nU R/                  US5         S nAg S nAff = f)N)r  z'Fatal write error on datagram transport)r.   r,   r´   r*   rû   r/   r   r3   r^   Úpopleftrü   rH   r·   rÓ   r'   r  r¹   rË   rÒ   rl   r4   Úerror_receivedÚ	Exceptionrq   )r8   r½   r±   r  rp   s        r   rË   Ú(_ProactorDatagramTransport._loop_writingÿ  s`  € ð	*Ø��ØàŸ/™/Ò)Ð)Ð)Ø"ˆDŒOÞà—
‘
”à—<—< D§O§O¸¿¿à—=—=Ø—J‘J×(Ñ(¨×)CÑ)CÀTÔJØàŸ™×-Ñ-Ó/‰JˆDØ×Ò¤ T£Ñ*ÕØ�}‰}Ñ(Ø"&§*¡*×"6Ñ"6×";Ñ";¸D¿J¹JØ<@ó#B�•ð #'§*¡*×"6Ñ"6×"=Ñ"=¸d¿j¹jØ>BØCGð #>ð #I�”ð �O‰O×-Ñ-¨d×.@Ñ.@ÔAØ×'Ñ'Õ)øô ó 	/Ø�N‰N×)Ñ)¨#×.Ñ.ûÜó 	NØ×Ñ˜cÐ#L×MÑMûð	Nús0   ‚F ”BF Â-B1F Æ
G'ÆF>Æ>G'ÇG"Ç"G'c                 óî  • S n U R                   (       a&   U(       a  U R                  R                  UW5        g g U R                  UL d   U R                  c  U R                  (       d   eS U l        Ubg  UR                  5       nU R                  (       a(  S n U(       a  U R                  R                  UW5        g g U R                  b  X@R                  p2OUu  p#U R                   (       a&   U(       a  U R                  R                  UW5        g g U R                  b@  U R                  R                  R                  U R                  U R                  5      U l        O?U R                  R                  R                  U R                  U R                  5      U l        U R                  b%  U R                  R                  U R                  5        U(       a  U R                  R                  UW5        g g ! [         a%  nU R                  R!                  U5         S nANOS nAf["        R$                   a    U R                  (       d  e  Nzf = f! U(       a  U R                  R                  UW5        f f = frS   )r.   r4   Údatagram_receivedr+   r/   r´   rû   r   r·   rñ   r'   Úmax_sizeÚrecvfromr¹   r—   rl   r  r   r¼   )r8   r½   r±   r  Úresrp   s         r   r—   Ú(_ProactorDatagramTransport._loop_reading!  sí  € Øˆð'	=Ø��ØöH Ø—‘×0Ñ0°°tÕ<ð ðE —>‘> SÒ(¨T¯^©^Ñ-CØ-1¯]¯]ð<ð <ð "ˆDŒNØ‰Ø—j‘j“l�à—=—=à�DØö0 Ø—‘×0Ñ0°°tÕ<ð ð- —=‘=Ñ,Ø!$§m¡m™$à!$‘J�Dà��Øö  Ø—‘×0Ñ0°°tÕ<ð ð �}‰}Ñ(Ø!%§¡×!5Ñ!5×!:Ñ!:¸4¿:¹:Ø;?¿=¹=ó"J�•ð "&§¡×!5Ñ!5×!>Ñ!>¸t¿z¹zØ?C¿}¹}ó"N�”ð �~‰~Ñ)Ø—‘×0Ñ0°×1CÑ1CÔDæØ—‘×0Ñ0°°tÕ<ð øô ó 	/Ø�N‰N×)Ñ)¨#×.Ñ.ûÜ×(Ñ(ó 	Ø—=—=Øñ !ð	ûö Ø—‘×0Ñ0°°tÕ<ð úsN   „G5 »AG5 Â=/G5 ÄBG5 Æ2I Ç5
IÇ?HÈI È)IÉI É
IÉI É&I4)rû   r*   rü   rt   r+   r,   r…   rS   )rE   r†   r‡   rˆ   r  r%   r&   rƒ   rá   r  rË   r—   rŒ   r�   rŽ   s   @r   rù   rù   Ì  s7   ø† à€HØ59Ø$(÷1ò&ò!ò ô%ô4 *÷D)=ò )=r@   rù   c                   ó$   • \ rS rSrSrS rS rSrg)Ú_ProactorDuplexPipeTransportiM  zTransport for duplex pipes.c                 ó   • g)NFrØ   rW   s    r   rÙ   Ú*_ProactorDuplexPipeTransport.can_write_eofR  s   € Ør@   c                 ó   • [         erS   )ÚNotImplementedErrorrW   s    r   rÝ   Ú&_ProactorDuplexPipeTransport.write_eofU  s   € Ü!Ð!r@   rØ   N)rE   r†   r‡   rˆ   r‰   rÙ   rÝ   rŒ   rØ   r@   r   r  r  M  s   † ñ &òõ"r@   r  c                   ór   ^ • \ rS rSrSr\R                  R                  r  SU 4S jjr	S r
S rS rSrU =r$ )	Ú_ProactorSocketTransportiY  z Transport for connected sockets.c                 óT   >• [         TU ]  XX4XV5        [        R                  " U5        g rS   )r$   r%   r   Ú_set_nodelayr7   s          €r   r%   Ú!_ProactorSocketTransport.__init__`  s"   ø€ ä‰Ñ˜ X°uÔEÜ× Ò  Õ&r@   c                 ó   • [        X5        g rS   r  rP   s     r   r&   Ú#_ProactorSocketTransport._set_extrae  r  r@   c                 ó   • gr×   rØ   rW   s    r   rÙ   Ú&_ProactorSocketTransport.can_write_eofh  rÛ   r@   c                 óÆ   • U R                   (       d  U R                  (       a  g SU l        U R                  c*  U R                  R	                  [
        R                  5        g g r×   )r/   r1   r,   r'   rz   r   rÑ   rW   s    r   rÝ   Ú"_ProactorSocketTransport.write_eofk  sA   € Ø�=�=˜D×-×-ØØ ˆÔØ�?‰?Ñ"Ø�J‰J×Ñ¤§¡Õ/ð #r@   )r1   r…   )rE   r†   r‡   rˆ   r‰   r   Ú_SendfileModeÚ
TRY_NATIVEÚ_sendfile_compatibler%   r&   rÙ   rÝ   rŒ   r�   rŽ   s   @r   r"  r"  Y  s9   ø† ñ +à$×2Ñ2×=Ñ=Ðà48Ø$(÷'ò
&ò÷0ð 0r@   r"  c                   ó  ^ • \ rS rSrU 4S jr  S S jr S!SSSSSSS.S jjr S S jr  S"S	 jr  S"S
 jr	  S"S jr
U 4S jrS rS rS rS#S jrS rS rS rS rS rS rS rS rS!S jrS r   S$S jrS rS rS rSrU =r$ )%r   is  c                 ó¢  >• [         TU ]  5         [        R                  " SUR                  R
                  5        Xl        Xl        S U l        0 U l	        UR                  U 5        U R                  5         [        R                  " 5       [        R                  " 5       L a/  [        R                   " U R"                  R%                  5       5        g g )NzUsing proactor: %s)r$   r%   r   rm   r>   rE   r·   Ú	_selectorÚ_self_reading_futureÚ_accept_futuresÚset_loopÚ_make_self_pipeÚ	threadingÚcurrent_threadÚmain_threadÚsignalÚset_wakeup_fdÚ_csockrG   )r8   Úproactorr>   s     €r   r%   ÚBaseProactorEventLoop.__init__u  s˜   ø€ Ü‰ÑÔÜ�ŠÐ)¨8×+=Ñ+=×+FÑ+FÔGØ!ŒØ!ŒØ$(ˆÔ!Ø!ˆÔØ×Ñ˜$ÔØ×ÑÔÜ×#Ò#Ó%¬×)>Ò)>Ó)@Ò@ä× Ò  §¡×!3Ñ!3Ó!5Õ6ð Ar@   Nc                 ó   • [        XX#XE5      $ rS   )r"  )r8   r   r:   r;   r<   r=   s         r   Ú_make_socket_transportÚ,BaseProactorEventLoop._make_socket_transport‚  s   € ä'¨°HØ(-ó7ð 	7r@   F)Úserver_sideÚserver_hostnamer<   r=   Ússl_handshake_timeoutÚssl_shutdown_timeoutc                ó`   • [         R                  " XX4XVU	U
S9n[        XUXxS9  UR                  $ )N)rC  rD  ©r<   r=   )r
   ÚSSLProtocolr"  Ú_app_transport)r8   Úrawsockr:   Ú
sslcontextr;   rA  rB  r<   r=   rC  rD  Ússl_protocols               r   Ú_make_ssl_transportÚ)BaseProactorEventLoop._make_ssl_transport‡  s?   € ô  ×+Ò+Ø 
ØØ&;Ø%9ñ	;ˆô
 	! °Ø',ò	=à×*Ñ*Ð*r@   c                 ó   • [        XX#XE5      $ rS   )rù   )r8   r   r:   rÿ   r;   r<   s         r   Ú_make_datagram_transportÚ.BaseProactorEventLoop._make_datagram_transport–  s   € ä)¨$°hØ*0ó9ð 	9r@   c                 ó   • [        U XX45      $ rS   )r  ©r8   r   r:   r;   r<   s        r   Ú_make_duplex_pipe_transportÚ1BaseProactorEventLoop._make_duplex_pipe_transport›  s   € ä+¨DØ,0¸FóKð 	Kr@   c                 ó   • [        XX#U5      $ rS   )r�   rR  s        r   Ú_make_read_pipe_transportÚ/BaseProactorEventLoop._make_read_pipe_transport   s   € ä)¨$°hÈÓNÐNr@   c                 ó   • [        U XX45      $ rS   )rî   rR  s        r   Ú_make_write_pipe_transportÚ0BaseProactorEventLoop._make_write_pipe_transport¤  s   € ô +¨4Ø+/¸6óJð 	Jr@   c                 ó   >• U R                  5       (       a  [        S5      eU R                  5       (       a  g [        R                  " 5       [        R
                  " 5       L a  [        R                  " S5        U R                  5         U R                  5         U R                  R                  5         S U l
        S U l        [        TU ]-  5         g )Nz!Cannot close a running event loopr{   )Ú
is_runningrÉ   Ú	is_closedr6  r7  r8  r9  r:  Ú_stop_accept_futuresÚ_close_self_piper·   r`   r1  r$   )r8   r>   s    €r   r`   ÚBaseProactorEventLoop.closeª  s—   ø€ Ø�?‰?×ÑÜÐBÓCÐCØ�>‰>×ÑØä×#Ò#Ó%¬×)>Ò)>Ó)@Ò@Ü× Ò  Ô$ð 	×!Ñ!Ô#Ø×ÑÔØ�‰×ÑÔØˆŒØˆŒô 	‰‰�r@   c              ƒ   óT   #   • U R                   R                  X5      I S h  v•N $  N7frS   )r·   rñ   )r8   r   Úns      r   Ú	sock_recvÚBaseProactorEventLoop.sock_recv¾  s    é € Ø—^‘^×(Ñ(¨Ó1×1Ð1Ñ1ùó   ‚(¡&¢(c              ƒ   óT   #   • U R                   R                  X5      I S h  v•N $  N7frS   )r·   r¸   )r8   r   Úbufs      r   Úsock_recv_intoÚ$BaseProactorEventLoop.sock_recv_intoÁ  s    é € Ø—^‘^×-Ñ-¨dÓ8×8Ð8Ñ8ùre  c              ƒ   óT   #   • U R                   R                  X5      I S h  v•N $  N7frS   )r·   r  )r8   r   Úbufsizes      r   Úsock_recvfromÚ#BaseProactorEventLoop.sock_recvfromÄ  s    é € Ø—^‘^×,Ñ,¨TÓ;×;Ð;Ñ;ùre  c              ƒ   óz   #   • U(       d  [        U5      nU R                  R                  XU5      I S h  v•N $  N7frS   )rH   r·   Úrecvfrom_into)r8   r   rg  Únbytess       r   Úsock_recvfrom_intoÚ(BaseProactorEventLoop.sock_recvfrom_intoÇ  s.   é € ÞÜ˜“XˆFà—^‘^×1Ñ1°$¸VÓD×DÐDÑDùs   ‚2;´9µ;c              ƒ   óT   #   • U R                   R                  X5      I S h  v•N $  N7frS   )r·   rÓ   )r8   r   r±   s      r   Úsock_sendallÚ"BaseProactorEventLoop.sock_sendallÍ  s    é € Ø—^‘^×(Ñ(¨Ó4×4Ð4Ñ4ùre  c              ƒ   óX   #   • U R                   R                  XSU5      I S h  v•N $  N7f)Nr   )r·   r  )r8   r   r±   rÿ   s       r   Úsock_sendtoÚ!BaseProactorEventLoop.sock_sendtoÐ  s$   é € Ø—^‘^×*Ñ*¨4°q¸'ÓB×BÐBÑBùs   ‚!*£(¤*c              ƒ   ó´   #   • U R                   (       a  UR                  5       S:w  a  [        S5      eU R                  R	                  X5      I S h  v•N $  N7f)Nr   zthe socket must be non-blocking)Ú_debugÚ
gettimeoutr  r·   Úconnect)r8   r   rÿ   s      r   Úsock_connectÚ"BaseProactorEventLoop.sock_connectÓ  sA   é € Ø�;�;˜4Ÿ?™?Ó,°Ó1ÜÐ>Ó?Ð?Ø—^‘^×+Ñ+¨DÓ:×:Ð:Ñ:ùs   ‚AAÁAÁAc              ƒ   óT   #   • U R                   R                  U5      I S h  v•N $  N7frS   )r·   ÚacceptrP   s     r   Úsock_acceptÚ!BaseProactorEventLoop.sock_acceptØ  s    é € Ø—^‘^×*Ñ*¨4Ó0×0Ð0Ñ0ùre  c              ƒ   ó¦  #   •  UR                  5       n [        R                  " U5      R                  nU(       a  UOUnU(       d  g[        US5      nU(       a  [        X4-   U5      OUn	[        X75      nSn
  [        X“-
  U5      nUS::  a  U
U
S:”  a  UR                  U5        $ $ U R                  R                  XX85      I S h  v•N   X8-  nX¨-  n
M\  ! [        [        R                  4 a  n[        R
                  " S5      eS nAff = f! [         a    [        R
                  " S5      ef = f Nj! U
S:”  a  UR                  U5        f f = f7f)Nznot a regular filer   l   ÿÿ )rG   ÚAttributeErrorÚioÚUnsupportedOperationr   ÚSendfileNotAvailableErrorÚosÚfstatÚst_sizerl   ÚminÚseekr·   Úsendfile)r8   r   ÚfileÚoffsetÚcountrG   ÚerrÚfsizeÚ	blocksizeÚend_posÚ
total_sents              r   Ú_sock_sendfile_nativeÚ+BaseProactorEventLoop._sock_sendfile_nativeÛ  sP  é € ð	MØ—[‘[“]ˆFð	MÜ—H’H˜VÓ$×,Ñ,ˆEö #‘E¨ˆ	ÞØä˜	 ;Ó/ˆ	Þ05”#�f‘n eÔ,¸5ˆÜ�VÓ#ˆØˆ
ð
	"ØÜ Ñ 0°)Ó<�	Ø “>Ø%ð
 ˜A‹~Ø—	‘	˜&Õ!ð ð	 —n‘n×-Ñ-¨d¸&ÓL×LÐLØÑ#�ØÑ'�
ñ øô ¤× 7Ñ 7Ð8ó 	MÜ×6Ò6Ð7KÓLÐLûð	Mûô ó 	MÜ×6Ò6Ð7KÓLÐLð	Múñ Møð ˜A‹~Ø—	‘	˜&Õ!ð üsi   ‚E„C • D µAEÁ9D4 ÂEÂ(D4 ÃD2ÃD4 ÃDÃ0DÄDÄEÄ!D/Ä/EÄ2D4 Ä4EÅEc              ƒ   óv  #   • UR                  5       nUR                  5         UR                  5       I S h  v•N    U R                  UR                  X#USS9I S h  v•N UR                  5         U(       a  UR                  5         $ $  NQ N.! UR                  5         U(       a  UR                  5         f f = f7f)NF)Úfallback)r›   rž   ræ   Úsock_sendfiler'   ré   r£   )r8   ÚtransprŽ  r�  r�  r£   s         r   Ú_sendfile_nativeÚ&BaseProactorEventLoop._sendfile_nativeø  sª   é € Ø×*Ñ*Ó,ˆØ×ÑÔØ×'Ñ'Ó)×)Ð)ð	(Ø×+Ñ+¨F¯L©L¸$ÈØ5:ð ,ð <÷ <ð ×&Ñ&Ô(ÞØ×%Ñ%Õ'ð ñ 	*ñ<øð ×&Ñ&Ô(ÞØ×%Ñ%Õ'ð üs8   ‚4B9¶B·B9¼B ÁB
ÁB Á*B9Â
B Â*B6Â6B9c                 ó  • U R                   b!  U R                   R                  5         S U l         U R                  R                  5         S U l        U R                  R                  5         S U l        U =R
                  S-  sl        g )Nr   )r2  r_   Ú_ssockr`   r;  Ú_internal_fdsrW   s    r   r_  Ú&BaseProactorEventLoop._close_self_pipe  sg   € Ø×$Ñ$Ñ0Ø×%Ñ%×,Ñ,Ô.Ø(,ˆDÔ%Ø�‰×ÑÔØˆŒØ�‰×ÑÔØˆŒØ×Ò˜aÑÖr@   c                 óÞ   • [         R                  " 5       u  U l        U l        U R                  R	                  S5        U R                  R	                  S5        U =R
                  S-  sl        g )NFr   )r   Ú
socketpairrŸ  r;  Úsetblockingr   rW   s    r   r5  Ú%BaseProactorEventLoop._make_self_pipe  sN   € ä#)×#4Ò#4Ó#6Ñ ˆŒ�T”[Ø�‰×Ñ Ô&Ø�‰×Ñ Ô&Ø×Ò˜aÑÖr@   c                 ó|  •  Ub  UR                  5         U R                  ULa  g U R                  R                  U R                  S5      nXl        UR                  U R                  5        g ! [        R                   a     g [        [        4 a    e [         a  nU R                  SUU S.5         S nAg S nAff = f)Ni   z.Error on reading from the event loop self pipe)ri   rj   r9   )r´   r2  r·   rñ   rŸ  r¹   Ú_loop_self_readingr   r¼   r§   r¨   r©   rn   )r8   rÔ   rp   s      r   r§  Ú(BaseProactorEventLoop._loop_self_reading  s³   € ð	9Ø‰}Ø—‘”
Ø×(Ñ(°Ò1ð Ø—‘×#Ñ# D§K¡K°Ó6ˆAð )*Ô%Ø×Ñ × 7Ñ 7Õ8øô ×(Ñ(ó 	áÜÔ-Ð.ó 	ØÜó 	Ø×'Ñ'ØKØ Øñ)÷ ñ ûð	ús"   ‚"A- ¥&A- Á-B;ÂB;ÂB6Â6B;c                 ó¸   • U R                   nUc  g  UR                  S5        g ! [         a+    U R                  (       a  [        R
                  " SSS9   g  g f = f)Nó    z3Fail to write a null byte into the self-pipe socketTr   )r;  rÓ   rl   rz  r   rm   )r8   Úcsocks     r   Ú_write_to_selfÚ$BaseProactorEventLoop._write_to_self1  sU   € ð —‘ˆØ‰=Øð	,Ø�J‰J�uÕøÜó 	,Ø�{�{Ü—’ð 0à&*ô,ñ ð	,ús   ’$ ¤0AÁAc           	      óT   ^ ^^^^^^^• SUUU UUUUU4S jjmT R                  T5        g )Nc                 ó   >•  U bp  U R                  5       u  pTR                  (       a  [        R                  " STX!5        T" 5       nTb  TR	                  XTSSU0TT
TS9  OTR                  XSU0TS9  TR                  5       (       a  g TR                  R                  T	5      n U TR                  T	R                  5       '   U R                  T5        g ! [         aˆ  nT	R                  5       S:w  a>  TR                  SU[        R                  " T	5      S.5        T	R!                  5          S nAg TR                  (       a  [        R                  " S	T	SS
9   S nAg  S nAg S nAf["        R$                   a    T	R!                  5          g f = f)Nz#%r got a new connection from %r: %rTr   )rA  r<   r=   rC  rD  rF  r{   zAccept failed on a socket)ri   rj   r   zAccept failed on socket %rr   )r´   rz  r   rm   rL  r?  r]  r·   r€  r3  rG   r¹   rl   rn   r   r   r`   r   r¼   )rÔ   Úconnr  r:   rp   r9   Úprotocol_factoryr8   r=   r   rC  rD  rJ  s        €€€€€€€€r   r9   Ú2BaseProactorEventLoop._start_serving.<locals>.loopH  sj  ø€ ð#*Ø‘=Ø!"§¡£‘J�DØ—{—{ÜŸšÐ%JØ%+¨Tô9á/Ó1�HØ!Ñ-Ø×0Ñ0Ø ¨JÀDØ#-¨tÐ"4¸VØ2GØ1Eð	 1ò Gð ×3Ñ3Ø Ø#-¨tÐ"4¸Vð 4ñ Eð —>‘>×#Ñ#ØØ—N‘N×)Ñ)¨$Ó/�ð 78�×$Ñ$ T§[¡[£]Ñ3Ø×#Ñ# DÕ)øô ó 
6Ø—;‘;“= BÓ&Ø×/Ñ/Ø#>Ø%(Ü"(×"8Ò"8¸Ó">ñ1ô ð
 —J‘J—L‘LØ—[—[Ü—L’LÐ!=Ø!%°÷6ô !ûô ×,Ñ,ó Ø—
‘
–ðús+   ƒBC ÂC Ã
FÃ AE#Ä2'E#Å#'FÆFrS   )r3   )	r8   r±  r   rJ  r=   ÚbacklogrC  rD  r9   s	   ````` ``@r   Ú_start_servingÚ$BaseProactorEventLoop._start_servingC  s   ÿ€ ÷
$	*ö $	*ðL 	�‰�tÕr@   c                 ó   • g rS   rØ   )r8   Ú
event_lists     r   Ú_process_eventsÚ%BaseProactorEventLoop._process_eventsp  s   € àr@   c                 óš   • U R                   R                  5        H  nUR                  5         M     U R                   R                  5         g rS   )r3  Úvaluesr_   Úclear)r8   Úfutures     r   r^  Ú*BaseProactorEventLoop._stop_accept_futurest  s6   € Ø×*Ñ*×1Ñ1Ö3ˆFØ�M‰MŽOñ 4à×Ñ×"Ñ"Õ$r@   c                 óÜ   • U R                   R                  UR                  5       S 5      nU(       a  UR                  5         U R                  R                  U5        UR                  5         g rS   )r3  ÚpoprG   r_   r·   Ú_stop_servingr`   )r8   r   r½  s      r   rÁ  Ú#BaseProactorEventLoop._stop_servingy  sG   € Ø×%Ñ%×)Ñ)¨$¯+©+«-¸Ó>ˆÞØ�M‰MŒOØ�‰×$Ñ$ TÔ*Ø�
‰
�r@   )r3  r;  r·   r1  r2  rŸ  r…   rS   rë   )r   )NNéd   NN) rE   r†   r‡   rˆ   r%   r?  rL  rO  rS  rV  rY  r`   rc  rh  rl  rq  rt  rw  r}  r�  r–  rœ  r_  r5  r§  r¬  r´  r¸  r^  rÁ  rŒ   r�   rŽ   s   @r   r   r   s  sä   ø† õ7ð =AØ26ô7ð 9=ð+à °$Ø˜tØ"&Ø!%ö+ð  CGô9ð
 BFØ*.ôKð
 @DØ(,ôOð AEØ)-ôJõò(2ò9ò<ôEò5òCò;ò
1ò"ò:
(ò ò ô9ò8,ð& >AØ-1Ø,0ô+òZò%÷
ð r@   r   )$r‰   Ú__all__r…  rˆ  r   rŠ   r9  r6  rý   Ú r   r   r   r   r	   r
   r   r   Úlogr   r   Ú_FlowControlMixinÚBaseTransportr!   ÚReadTransportr�   ÚWriteTransportrÀ   rî   ÚDatagramTransportrù   Ú	Transportr  r"  ÚBaseEventLoopr   rØ   r@   r   Ú<module>rÎ     s  ðñð #€ã 	Û 	Û Û Û Û Û å Ý Ý Ý Ý Ý Ý Ý Ý ò0ô$D ×!=Ñ!=Ø!+×!9Ñ!9ôDôNP2Ð!;Ø!+×!9Ñ!9ôP2ôfk"Ð&@Ø&0×&?Ñ&?ôk"ô\Ð"Aô ô,~=Ð!;Ø!+×!=Ñ!=ô~=ôB	"Ð#=Ø#BØ#-×#7Ñ#7ô	"ô0Ð9Ø>Ø)×3Ñ3ô0ô4K˜K×5Ñ5õ Kr@   