Ë
    òT•jš¼  ã                   ó   — d Z 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 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ  eej                  d«      Zer	  ej4                  d«      Zd„ Z G d„ dej<                  «      Z G d„ dej@                  ejB                  «      Z" G d„ de"«      Z# G d„ de"ejH                  «      Z%y# e$ r dZY ŒÁw xY w# e$ r dZY Œpw xY w)zÄEvent loop using a selector and related classes.

A selector is a "notify-when-ready" multiplexer.  For a subclass which
also includes support for signal handling, see the unix_events sub-module.
)ÚBaseSelectorEventLoopé    Né   )Úbase_events)Ú	constants)Úevents)Úfutures)Ú	protocols)Ússlproto)Ú
transports)Útrsock)ÚloggerÚsendmsgÚ
SC_IOV_MAXFc                 ót   — 	 | j                  |«      }t        |j                  |z  «      S # t        $ r Y yw xY w©NF)Úget_keyÚboolr   ÚKeyError)ÚselectorÚfdÚeventÚkeys       ú./usr/lib/python3.12/asyncio/selector_events.pyÚ_test_selector_eventr   *   sA   € ð(Ø×Ñ˜rÓ"ˆô �C—J‘J Ñ&Ó'Ð'øô ò Ùðús   ‚+ «	7¶7c                   ó  ‡ — e Zd ZdZd3ˆ fd„	Zd3dddœd„Z	 d3ddddej                  ej                  dœd„Z		 d4d	„Z
ˆ fd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zdddej                  ej                  fd„Zdddej                  ej                  fd„Zddej                  ej                  fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd3d„Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#d5d$„Z$d%„ Z%d&„ Z&d'„ Z'd(„ Z(d)„ Z)d*„ Z*d+„ Z+d3d,„Z,d-„ Z-d.„ Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2ˆ xZ3S )6r   zJSelector event loop.

    See events.EventLoop for API specification.
    Nc                 ó  •— t         ‰| �  «        |€t        j                  «       }t	        j
                  d|j                  j                  «       || _        | j                  «        t        j                  «       | _        y )NzUsing selector: %s)ÚsuperÚ__init__Ú	selectorsÚDefaultSelectorr   ÚdebugÚ	__class__Ú__name__Ú	_selectorÚ_make_self_pipeÚweakrefÚWeakValueDictionaryÚ_transports)Úselfr   r"   s     €r   r   zBaseSelectorEventLoop.__init__;   sa   ø€ Ü‰ÑÔàÐÜ ×0Ñ0Ó2ˆHÜ�‰Ð)¨8×+=Ñ+=×+FÑ+FÔGØ!ˆŒØ×ÑÔÜ"×6Ñ6Ó8ˆÕó    ©ÚextraÚserverc                óD   — | j                  |«       t        | |||||«      S ©N)Ú_ensure_fd_no_transportÚ_SelectorSocketTransport)r)   ÚsockÚprotocolÚwaiterr,   r-   s         r   Ú_make_socket_transportz,BaseSelectorEventLoop._make_socket_transportE   s*   € à×$Ñ$ TÔ*Ü'¨¨d°H¸fØ(-¨vó7ð 	7r*   F)Úserver_sideÚserver_hostnamer,   r-   Ússl_handshake_timeoutÚssl_shutdown_timeoutc          
      ó–   — | j                  |«       t        j                  | ||||||	|
¬«      }t        | ||||¬«       |j                  S )N)r8   r9   r+   )r0   r
   ÚSSLProtocolr1   Ú_app_transport)r)   Úrawsockr3   Ú
sslcontextr4   r6   r7   r,   r-   r8   r9   Ússl_protocols               r   Ú_make_ssl_transportz)BaseSelectorEventLoop._make_ssl_transportK   sW   € ð 	×$Ñ$ WÔ-Ü×+Ñ+Ø�(˜J¨Ø˜Ø"7Ø!5ô	
ˆô 	!  w°Ø',°Võ	=à×*Ñ*Ð*r*   c                 óD   — | j                  |«       t        | |||||«      S r/   )r0   Ú_SelectorDatagramTransport)r)   r2   r3   Úaddressr4   r,   s         r   Ú_make_datagram_transportz.BaseSelectorEventLoop._make_datagram_transport]   s,   € à×$Ñ$ TÔ*Ü)¨$°°hØ*1°6¸5óBð 	Br*   c                 óö   •— | j                  «       rt        d«      ‚| j                  «       ry | j                  «        t        ‰| �  «        | j                  �"| j                  j                  «        d | _        y y )Nz!Cannot close a running event loop)Ú
is_runningÚRuntimeErrorÚ	is_closedÚ_close_self_piper   Úcloser$   ©r)   r"   s    €r   rJ   zBaseSelectorEventLoop.closec   sa   ø€ Ø�?‰?ÔÜÐBÓCÐCØ�>‰>ÔØØ×ÑÔÜ‰‰ŒØ�>‰>Ð%Ø�N‰N× Ñ Ô"Ø!ˆD�Nð &r*   c                 ó  — | j                  | j                  j                  «       «       | j                  j                  «        d | _        | j                  j                  «        d | _        | xj
                  dz  c_        y )Nr   )Ú_remove_readerÚ_ssockÚfilenorJ   Ú_csockÚ_internal_fds©r)   s    r   rI   z&BaseSelectorEventLoop._close_self_pipen   s\   € Ø×Ñ˜DŸK™K×.Ñ.Ó0Ô1Ø�‰×ÑÔØˆŒØ�‰×ÑÔØˆŒØ×Ò˜aÑÖr*   c                 óD  — t        j                  «       \  | _        | _        | j                  j	                  d«       | j                  j	                  d«       | xj
                  dz  c_        | j                  | j                  j                  «       | j                  «       y )NFr   )	ÚsocketÚ
socketpairrN   rP   ÚsetblockingrQ   Ú_add_readerrO   Ú_read_from_selfrR   s    r   r%   z%BaseSelectorEventLoop._make_self_pipev   sq   € ä#)×#4Ñ#4Ó#6Ñ ˆŒ�T”[Ø�‰×Ñ Ô&Ø�‰×Ñ Ô&Ø×Ò˜aÑÕØ×Ñ˜Ÿ™×+Ñ+Ó-¨t×/CÑ/CÕDr*   c                  ó   — y r/   © ©r)   Údatas     r   Ú_process_self_dataz(BaseSelectorEventLoop._process_self_data~   s   € Ør*   c                 ó˜   — 	 	 | j                   j                  d«      }|sy | j                  |«       Œ1# t        $ r Y Œ=t        $ r Y y w xY w)Ni   )rN   Úrecvr]   ÚInterruptedErrorÚBlockingIOErrorr[   s     r   rX   z%BaseSelectorEventLoop._read_from_self�   sV   € ØðØ—{‘{×'Ñ'¨Ó-�ÙØØ×'Ñ'¨Ô-ð øô $ò ÙÜ"ò Ùðús   ƒ3 ¡3 ³	A	¾A	ÁA	c                 ó®   — | j                   }|€y 	 |j                  d«       y # t        $ r( | j                  rt	        j
                  dd¬«       Y y Y y w xY w)Nó    z3Fail to write a null byte into the self-pipe socketT©Úexc_info)rP   ÚsendÚOSErrorÚ_debugr   r!   )r)   Úcsocks     r   Ú_write_to_selfz$BaseSelectorEventLoop._write_to_self�   sU   € ð —‘ˆØˆ=Øð	,Ø�J‰J�uÕøÜò 	,Ø�{Š{Ü—‘ð 0à&*÷,ñ ð	,ús   ‘# £,AÁAéd   c                 óf   — | j                  |j                  «       | j                  |||||||«	       y r/   )rW   rO   Ú_accept_connection)r)   Úprotocol_factoryr2   r>   r-   Úbacklogr8   r9   s           r   Ú_start_servingz$BaseSelectorEventLoop._start_servingŸ   s4   € ð 	×Ñ˜Ÿ™›¨×(?Ñ(?Ø)¨4°¸VÀWØ.Ð0Dõ	Fr*   c                 óð  — t        |«      D ]w  }	 |j                  «       \  }	}
| j                  rt        j                  d||
|	«       |	j                  d«       d|
i}| j                  ||	|||||«      }| j                  |«       Œy y # t        t        t        f$ r Y  y t        $ rÏ}|j                  t        j                  t        j                  t        j                  t        j                   fv ry| j#                  d|t%        j&                  |«      dœ«       | j)                  |j+                  «       «       | j-                  t.        j0                  | j2                  |||||||«	       n‚ Y d }~�Œdd }~ww xY w)Nz#%r got a new connection from %r: %rFÚpeernamez&socket.accept() out of system resource)ÚmessageÚ	exceptionrT   )ÚrangeÚacceptrh   r   r!   rV   Ú_accept_connection2Úcreate_taskra   r`   ÚConnectionAbortedErrorrg   ÚerrnoÚEMFILEÚENFILEÚENOBUFSÚENOMEMÚcall_exception_handlerr   ÚTransportSocketrM   rO   Ú
call_laterr   ÚACCEPT_RETRY_DELAYrp   )r)   rn   r2   r>   r-   ro   r8   r9   Ú_ÚconnÚaddrr,   rv   Úexcs                 r   rm   z(BaseSelectorEventLoop._accept_connection§   s]  € ô �w“ò #	)ˆAð")Ø!Ÿ[™[›]‘
��dØ—;’;Ü—L‘LÐ!FØ!'¨¨tô5à× Ñ  Ô'ð2 $ TÐ*�Ø×1Ñ1Ø$ d¨E°:¸vØ)Ð+?óA�ð × Ñ  Õ(ñG#	)øô $Ô%5Ô7MÐNò âÜò à—9‘9¤§¡¬u¯|©|Ü!&§¡´·±ð!>ñ >ð
 ×/Ñ/Ø#KØ%(Ü"(×"8Ñ"8¸Ó">ñ1ô ð
 ×'Ñ'¨¯©«Ô6Ø—O‘O¤I×$@Ñ$@Ø$(×$7Ñ$7Ø$4°d¸JÈØ$+Ð-BØ$8õ	:ð õ:ûðús   �ABÂE5ÂE5Â&CE0Å0E5c              ƒ   ó¸  K  — d }d }		  |«       }| j                  «       }
|r| j                  ||||
d||||¬«	      }	n| j                  |||
||¬«      }		 |
ƒ d {  –—†  y 7 Œ# t        $ r |	j	                  «        d }
‚ w xY w# t
        t        f$ r ‚ t        $ r?}| j                  r)d|dœ}|�||d<   |	�|	|d<   | j                  |«       Y d }~y Y d }~y d }~ww xY w­w)NT)r4   r6   r,   r-   r8   r9   )r4   r,   r-   z3Error on transport creation for incoming connection)rs   rt   r3   Ú	transport)	Úcreate_futurer@   r5   ÚBaseExceptionrJ   Ú
SystemExitÚKeyboardInterruptrh   r   )r)   rn   r„   r,   r>   r-   r8   r9   r3   rˆ   r4   r†   Úcontexts                r   rw   z)BaseSelectorEventLoop._accept_connection2Õ   s  è ø€ ð
 ˆØˆ	ð&	5Ù'Ó)ˆHØ×'Ñ'Ó)ˆFÙØ ×4Ñ4Ø˜( J°vØ $¨E¸&Ø*?Ø)=ð	 5ó ?‘	ð !×7Ñ7Ø˜(¨6¸Ø!ð 8ó #�	ðØ—’ùÜ ò Ø—‘Ô!ð �Øðûô Ô-Ð.ò 	ØÜò 	5Ø�{Š{ð NØ!$ñ�ð
 Ð'Ø*2�G˜JÑ'ØÐ(Ø+4�G˜KÑ(Ø×+Ñ+¨G×4Ñ4ô ûð	5üsS   ‚CˆA
B  ÁA  ÁAÁA  ÁCÁA  Á A=Á=B  Â CÂ0CÃ
CÃCÃCc                 ó*  — |}t        |t        «      s	 t        |j                  «       «      }	 | j                  |   }|j                  «       st        d|›d|›�«      ‚y # t        t        t
        f$ r t        d|›�«      d ‚w xY w# t        $ r Y y w xY w)NzInvalid file object: zFile descriptor z is used by transport )
Ú
isinstanceÚintrO   ÚAttributeErrorÚ	TypeErrorÚ
ValueErrorr(   Ú
is_closingrG   r   )r)   r   rO   rˆ   s       r   r0   z-BaseSelectorEventLoop._ensure_fd_no_transport  s²   € ØˆÜ˜&¤#Ô&ðKÜ˜VŸ]™]›_Ó-�ð	&Ø×(Ñ(¨Ñ0ˆIð ×'Ñ'Ô)Ü"Ø& r fÐ,BØ �mð%ó&ð &ð *øô #¤I¬zÐ:ò Kä Ð#8¸¸Ð!?Ó@ÀdÐJðKûô
 ò 	Ùð	ús   ”A ®B Á$BÂ	BÂBc                 óÄ  — | j                  «        t        j                  ||| d «      }	 | j                  j	                  |«      }|j                  |j
                  c}\  }}| j                  j                  ||t        j                  z  ||f«       |�|j                  «        |S # t        $ r1 | j                  j                  |t        j                  |d f«       Y |S w xY wr/   )Ú_check_closedr   ÚHandler$   r   r\   Úmodifyr   Ú
EVENT_READÚcancelr   Úregister©	r)   r   ÚcallbackÚargsÚhandler   ÚmaskÚreaderÚwriters	            r   rW   z!BaseSelectorEventLoop._add_reader  sÎ   € Ø×ÑÔÜ—‘˜x¨¨t°TÓ:ˆð
	 Ø—.‘.×(Ñ(¨Ó,ˆCð
 &)§Z¡Z°·±Ð"ˆDÑ"�6˜6Ø�N‰N×!Ñ! " d¬Y×-AÑ-AÑ&AØ#)¨6Ð"2ô4àÐ!Ø—‘”Øˆøô ò 	4Ø�N‰N×#Ñ# B¬	×(<Ñ(<Ø%+¨T Nõ4ð ˆð	4úó   ªB% Â%6CÃCc                 ó|  — | j                  «       ry	 | j                  j                  |«      }|j                  |j                  c}\  }}|t
        j                   z  }|s| j                  j                  |«       n| j                  j                  ||d |f«       |�|j                  «        yy# t        $ r Y yw xY w)NFT)rH   r$   r   r   r\   r   r™   Ú
unregisterr˜   rš   r   ©r)   r   r   r    r¡   r¢   s         r   rM   z$BaseSelectorEventLoop._remove_reader&  s®   € Ø�>‰>ÔØð	Ø—.‘.×(Ñ(¨Ó,ˆCð &)§Z¡Z°·±Ð"ˆDÑ"�6˜6Ø”Y×)Ñ)Ð)Ñ)ˆDÙØ—‘×)Ñ)¨"Õ-à—‘×%Ñ% b¨$°°v°Ô?àÐ!Ø—‘”Øàøô ò 	Ùð	úó   “B/ Â/	B;Â:B;c                 óÄ  — | j                  «        t        j                  ||| d «      }	 | j                  j	                  |«      }|j                  |j
                  c}\  }}| j                  j                  ||t        j                  z  ||f«       |�|j                  «        |S # t        $ r1 | j                  j                  |t        j                  d |f«       Y |S w xY wr/   )r–   r   r—   r$   r   r\   r˜   r   ÚEVENT_WRITErš   r   r›   rœ   s	            r   Ú_add_writerz!BaseSelectorEventLoop._add_writer;  sÎ   € Ø×ÑÔÜ—‘˜x¨¨t°TÓ:ˆð
	 Ø—.‘.×(Ñ(¨Ó,ˆCð
 &)§Z¡Z°·±Ð"ˆDÑ"�6˜6Ø�N‰N×!Ñ! " d¬Y×-BÑ-BÑ&BØ#)¨6Ð"2ô4àÐ!Ø—‘”Øˆøô ò 	4Ø�N‰N×#Ñ# B¬	×(=Ñ(=Ø%)¨6 Nõ4ð ˆð	4úr£   c                 ó|  — | j                  «       ry	 | j                  j                  |«      }|j                  |j                  c}\  }}|t
        j                   z  }|s| j                  j                  |«       n| j                  j                  |||df«       |�|j                  «        yy# t        $ r Y yw xY w)úRemove a writer callback.FNT)rH   r$   r   r   r\   r   r©   r¥   r˜   rš   r   r¦   s         r   Ú_remove_writerz$BaseSelectorEventLoop._remove_writerK  s®   € à�>‰>ÔØð	Ø—.‘.×(Ñ(¨Ó,ˆCð &)§Z¡Z°·±Ð"ˆDÑ"�6˜6à”Y×*Ñ*Ð*Ñ*ˆDÙØ—‘×)Ñ)¨"Õ-à—‘×%Ñ% b¨$°¸°Ô?àÐ!Ø—‘”Øàøô ò 	Ùð	úr§   c                 óN   — | j                  |«        | j                  ||g|¢­Ž  y)zAdd a reader callback.N)r0   rW   ©r)   r   r�   rž   s       r   Ú
add_readerz BaseSelectorEventLoop.add_readerb  ó'   € à×$Ñ$ RÔ(Øˆ×Ñ˜˜XÐ-¨Ô-r*   c                 óF   — | j                  |«       | j                  |«      S )zRemove a reader callback.)r0   rM   ©r)   r   s     r   Úremove_readerz#BaseSelectorEventLoop.remove_readerg  ó!   € à×$Ñ$ RÔ(Ø×"Ñ" 2Ó&Ð&r*   c                 óN   — | j                  |«        | j                  ||g|¢­Ž  y)zAdd a writer callback..N)r0   rª   r¯   s       r   Ú
add_writerz BaseSelectorEventLoop.add_writerl  r±   r*   c                 óF   — | j                  |«       | j                  |«      S )r¬   )r0   r­   r³   s     r   Úremove_writerz#BaseSelectorEventLoop.remove_writerq  rµ   r*   c              ƒ   óî  K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚	 |j                  |«      S # t        t        f$ r Y nw xY w| j                  «       }|j                  «       }| j                  |«       | j                  || j                  |||«      }|j                  t        j                  | j                   ||¬«      «       |ƒ d{  –—†7  S ­w)zÌReceive data from the socket.

        The return value is a bytes object representing the data received.
        The maximum amount of data to be received at once is specified by
        nbytes.
        r   úthe socket must be non-blocking©rŸ   N)r   Ú_check_ssl_socketrh   Ú
gettimeoutr“   r_   ra   r`   r‰   rO   r0   rW   Ú
_sock_recvÚadd_done_callbackÚ	functoolsÚpartialÚ_sock_read_done)r)   r2   ÚnÚfutr   rŸ   s         r   Ú	sock_recvzBaseSelectorEventLoop.sock_recvv  sÖ   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?ð	Ø—9‘9˜Q“<ÐøÜÔ!1Ð2ò 	Ùð	úà× Ñ Ó"ˆØ�[‰[‹]ˆØ×$Ñ$ RÔ(Ø×!Ñ! " d§o¡o°s¸DÀ!ÓDˆØ×ÑÜ×Ñ˜d×2Ñ2°B¸vÔFô	Hà�yˆyÐùó7   ‚A C5ÁA ÁC5ÁA&Á#C5Á%A&Á&B	C5Ã/C2Ã0C5c                 óL   — |�|j                  «       s| j                  |«       y y r/   )Ú	cancelledr´   ©r)   r   rÅ   rŸ   s       r   rÃ   z%BaseSelectorEventLoop._sock_read_doneŒ  ó%   € Øˆ> ×!1Ñ!1Ô!3Ø×Ñ˜rÕ"ð "4r*   c                 óø   — |j                  «       ry 	 |j                  |«      }|j                  |«       y # t        t        f$ r Y y t
        t        f$ r ‚ t        $ r}|j                  |«       Y d }~y d }~ww xY wr/   )	Údoner_   Ú
set_resultra   r`   r‹   rŒ   rŠ   Úset_exception)r)   rÅ   r2   rÄ   r\   r†   s         r   r¿   z BaseSelectorEventLoop._sock_recv�  su   € ð �8‰8Œ:Øð		!Ø—9‘9˜Q“<ˆDð �N‰N˜4Õ øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ñ"ûð	#úó   “6 ¶A9ÁA9ÁA4Á4A9c              ƒ   óî  K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚	 |j                  |«      S # t        t        f$ r Y nw xY w| j                  «       }|j                  «       }| j                  |«       | j                  || j                  |||«      }|j                  t        j                  | j                   ||¬«      «       |ƒ d{  –—†7  S ­w)z¥Receive data from the socket.

        The received data is written into *buf* (a writable buffer).
        The return value is the number of bytes written.
        r   r»   r¼   N)r   r½   rh   r¾   r“   Ú	recv_intora   r`   r‰   rO   r0   rW   Ú_sock_recv_intorÀ   rÁ   rÂ   rÃ   )r)   r2   ÚbufrÅ   r   rŸ   s         r   Úsock_recv_intoz$BaseSelectorEventLoop.sock_recv_into   sÙ   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?ð	Ø—>‘> #Ó&Ð&øÜÔ!1Ð2ò 	Ùð	úà× Ñ Ó"ˆØ�[‰[‹]ˆØ×$Ñ$ RÔ(Ø×!Ñ! " d×&:Ñ&:¸CÀÀsÓKˆØ×ÑÜ×Ñ˜d×2Ñ2°B¸vÔFô	Hà�yˆyÐùrÇ   c                 óø   — |j                  «       ry 	 |j                  |«      }|j                  |«       y # t        t        f$ r Y y t
        t        f$ r ‚ t        $ r}|j                  |«       Y d }~y d }~ww xY wr/   )	rÍ   rÒ   rÎ   ra   r`   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   rÔ   Únbytesr†   s         r   rÓ   z%BaseSelectorEventLoop._sock_recv_intoµ  sv   € ð �8‰8Œ:Øð		#Ø—^‘^ CÓ(ˆFð �N‰N˜6Õ"øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ñ"ûð	#úrÐ   c              ƒ   óî  K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚	 |j                  |«      S # t        t        f$ r Y nw xY w| j                  «       }|j                  «       }| j                  |«       | j                  || j                  |||«      }|j                  t        j                  | j                   ||¬«      «       |ƒ d{  –—†7  S ­w)a  Receive a datagram from a datagram socket.

        The return value is a tuple of (bytes, address) representing the
        datagram received and the address it came from.
        The maximum amount of data to be received at once is specified by
        nbytes.
        r   r»   r¼   N)r   r½   rh   r¾   r“   Úrecvfromra   r`   r‰   rO   r0   rW   Ú_sock_recvfromrÀ   rÁ   rÂ   rÃ   )r)   r2   ÚbufsizerÅ   r   rŸ   s         r   Úsock_recvfromz#BaseSelectorEventLoop.sock_recvfromÆ  sÙ   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?ð	Ø—=‘= Ó)Ð)øÜÔ!1Ð2ò 	Ùð	úà× Ñ Ó"ˆØ�[‰[‹]ˆØ×$Ñ$ RÔ(Ø×!Ñ! " d×&9Ñ&9¸3ÀÀgÓNˆØ×ÑÜ×Ñ˜d×2Ñ2°B¸vÔFô	Hà�yˆyÐùrÇ   c                 óø   — |j                  «       ry 	 |j                  |«      }|j                  |«       y # t        t        f$ r Y y t
        t        f$ r ‚ t        $ r}|j                  |«       Y d }~y d }~ww xY wr/   )	rÍ   rÙ   rÎ   ra   r`   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   rÛ   Úresultr†   s         r   rÚ   z$BaseSelectorEventLoop._sock_recvfromÝ  sv   € ð �8‰8Œ:Øð		#Ø—]‘] 7Ó+ˆFð �N‰N˜6Õ"øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ñ"ûð	#úrÐ   c              ƒ   ó  K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚|st        |«      }	 |j                  ||«      S # t        t        f$ r Y nw xY w| j                  «       }|j                  «       }| j                  |«       | j                  || j                  ||||«      }|j                  t        j                   | j"                  ||¬«      «       |ƒ d{  –—†7  S ­w)z·Receive data from the socket.

        The received data is written into *buf* (a writable buffer).
        The return value is a tuple of (number of bytes written, address).
        r   r»   r¼   N)r   r½   rh   r¾   r“   ÚlenÚrecvfrom_intora   r`   r‰   rO   r0   rW   Ú_sock_recvfrom_intorÀ   rÁ   rÂ   rÃ   )r)   r2   rÔ   r×   rÅ   r   rŸ   s          r   Úsock_recvfrom_intoz(BaseSelectorEventLoop.sock_recvfrom_intoî  sî   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?ÙÜ˜“XˆFð	Ø×%Ñ% c¨6Ó2Ð2øÜÔ!1Ð2ò 	Ùð	úà× Ñ Ó"ˆØ�[‰[‹]ˆØ×$Ñ$ RÔ(Ø×!Ñ! " d×&>Ñ&>ÀÀTÈ3Ø"(ó*ˆà×ÑÜ×Ñ˜d×2Ñ2°B¸vÔFô	Hà�yˆyÐùs7   ‚ADÁA" Á!DÁ"A4Á1DÁ3A4Á4B
DÃ>DÃ?Dc                 óú   — |j                  «       ry 	 |j                  ||«      }|j                  |«       y # t        t        f$ r Y y t
        t        f$ r ‚ t        $ r}|j                  |«       Y d }~y d }~ww xY wr/   )	rÍ   rá   rÎ   ra   r`   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   rÔ   rÛ   rÞ   r†   s          r   râ   z)BaseSelectorEventLoop._sock_recvfrom_into  sz   € ð �8‰8Œ:Øð		#Ø×'Ñ'¨¨WÓ5ˆFð �N‰N˜6Õ"øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús   “7 ·A:ÁA:ÁA5Á5A:c           	   ƒ   ó(  K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚	 |j                  |«      }|t        |«      k(  ry| j                  «       }|j                  «       }| j                  |«       | j                  || j                  ||t        |«      |g«      }|j                  t!        j"                  | j$                  ||¬«      «       |ƒ d{  –—† S # t        t        f$ r d}Y Œ¸w xY w7 Œ­w)áš  Send data to the socket.

        The socket must be connected to a remote socket. This method continues
        to send data from data until either all data has been sent or an
        error occurs. None is returned on success. On error, an exception is
        raised, and there is no way to determine how much data, if any, was
        successfully processed by the receiving end of the connection.
        r   r»   Nr¼   )r   r½   rh   r¾   r“   rf   ra   r`   rà   r‰   rO   r0   rª   Ú_sock_sendallÚ
memoryviewrÀ   rÁ   rÂ   Ú_sock_write_done)r)   r2   r\   rÄ   rÅ   r   rŸ   s          r   Úsock_sendallz"BaseSelectorEventLoop.sock_sendall  sú   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?ð	Ø—	‘	˜$“ˆAð ”�D“	Š>àà× Ñ Ó"ˆØ�[‰[‹]ˆØ×$Ñ$ RÔ(à×!Ñ! " d×&8Ñ&8¸#¸tÜ",¨TÓ"2°Q°Có9ˆà×ÑÜ×Ñ˜d×3Ñ3°RÀÔGô	Ià�yÐøô  Ô!1Ð2ò 	ØŠAð	úð ús7   ‚A DÁC9 ÁB DÃ4DÃ5DÃ9DÄ
DÄDÄDc                 ó:  — |j                  «       ry |d   }	 |j                  ||d  «      }||z  }|t        |«      k(  r|j                  d «       y ||d<   y # t        t        f$ r Y y t        t
        f$ r ‚ t        $ r}|j                  |«       Y d }~y d }~ww xY w©Nr   )
rÍ   rf   ra   r`   r‹   rŒ   rŠ   rÏ   rà   rÎ   )r)   rÅ   r2   ÚviewÚposÚstartrÄ   r†   s           r   rç   z#BaseSelectorEventLoop._sock_sendall7  s¡   € Ø�8‰8Œ:àØ�A‘ˆð	Ø—	‘	˜$˜u˜v˜,Ó'ˆAð 	�‰
ˆà”C˜“IÒØ�N‰N˜4Õ àˆC�ŠFøô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	Ø×Ñ˜cÔ"Üûð	ús   ˜A ÁBÁ(BÁ?BÂBc              ƒ   óò  K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚	 |j                  ||«      S # t        t        f$ r Y nw xY w| j                  «       }|j                  «       }| j                  |«       | j                  || j                  ||||«      }|j                  t        j                  | j                   ||¬«      «       |ƒ d{  –—†7  S ­w)ræ   r   r»   r¼   N)r   r½   rh   r¾   r“   Úsendtora   r`   r‰   rO   r0   rª   Ú_sock_sendtorÀ   rÁ   rÂ   ré   )r)   r2   r\   rC   rÅ   r   rŸ   s          r   Úsock_sendtoz!BaseSelectorEventLoop.sock_sendtoM  sâ   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?ð	Ø—;‘;˜t WÓ-Ð-øÜÔ!1Ð2ò 	Ùð	úð × Ñ Ó"ˆØ�[‰[‹]ˆØ×$Ñ$ RÔ(à×!Ñ! " d×&7Ñ&7¸¸dÀDØ")ó+ˆà×ÑÜ×Ñ˜d×3Ñ3°RÀÔGô	Ià�yˆyÐùs7   ‚A C7ÁA ÁC7ÁA'Á$C7Á&A'Á'B
C7Ã1C4Ã2C7c                 óü   — |j                  «       ry 	 |j                  |d|«      }|j                  |«       y # t        t        f$ r Y y t
        t        f$ r ‚ t        $ r}|j                  |«       Y d }~y d }~ww xY wrì   )	rÍ   rñ   rÎ   ra   r`   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   r\   rC   rÄ   r†   s          r   rò   z"BaseSelectorEventLoop._sock_sendtoh  sx   € Ø�8‰8Œ:àð		Ø—‘˜D ! WÓ-ˆAð �N‰N˜1Õøô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús   “8 ¸A;Á	A;Á A6Á6A;c              ƒ   ó   K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚|j
                  t        j                  k(  s-t         j                  rd|j
                  t        j                  k(  rG| j                  ||j
                  |j                  |j                  | ¬«      ƒ d{  –—† }|d   \  }}}}}| j                  «       }| j                  |||«       	 |ƒ d{  –—† d}S 7 Œ?7 Œ# d}w xY w­w)zTConnect to a remote socket at address.

        This method is a coroutine.
        r   r»   )ÚfamilyÚtypeÚprotoÚloopN)r   r½   rh   r¾   r“   rö   rT   ÚAF_INETÚ	_HAS_IPv6ÚAF_INET6Ú_ensure_resolvedr÷   rø   r‰   Ú_sock_connect)r)   r2   rC   Úresolvedrƒ   rÅ   s         r   Úsock_connectz"BaseSelectorEventLoop.sock_connectw  së   è ø€ ô
 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?à�;‰;œ&Ÿ.™.Ò(Ü×%Ò%¨$¯+©+¼¿¹Ò*HØ!×2Ñ2Ø §¡°$·)±)À4Ç:Á:Øð 3ó ÷ ˆHð #+¨1¡+ÑˆAˆq�!�Q˜à× Ñ Ó"ˆØ×Ñ˜3  gÔ.ð	Ø—9ð ‰Cðøð ùð ‰Cüs<   ‚CDÃDÃ2DÃ7D Ã<DÃ=D Ä DÄD ÄDÄDc                 óÒ  — |j                  «       }	 |j                  |«       |j                  d «       d }y # t        t        f$ rf | j                  |«       | j                  || j                  |||«      }|j                  t        j                  | j                  ||¬«      «       Y d }y t        t        f$ r ‚ t        $ r}|j                  |«       Y d }~d }y d }~ww xY w# d }w xY w)Nr¼   )rO   ÚconnectrÎ   ra   r`   r0   rª   Ú_sock_connect_cbrÀ   rÁ   rÂ   ré   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   rC   r   rŸ   r†   s          r   rþ   z#BaseSelectorEventLoop._sock_connect�  sä   € Ø�[‰[‹]ˆð	Ø�L‰L˜Ô!ð  �N‰N˜4Ô à‰Cøô#  Ô!1Ð2ò 		Mð
 ×(Ñ(¨Ô,Ø×%Ñ%Ø�D×)Ñ)¨3°°gó?ˆFà×!Ñ!Ü×!Ñ! $×"7Ñ"7¸ÀFÔKõMð ‰Cô Ô-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ð"ð ‰Cûð	#ûð
 ‰Cús9   ’7 £C" ·A0CÂ'C" Â+CÃCÃC" ÃCÃC" Ã"C&c                 óL   — |�|j                  «       s| j                  |«       y y r/   )rÉ   r¹   rÊ   s       r   ré   z&BaseSelectorEventLoop._sock_write_done§  rË   r*   c                 óv  — |j                  «       ry 	 |j                  t        j                  t        j                  «      }|dk7  rt        |d|› �«      ‚	 |j                  d «       d }y # t        t        f$ r Y d }y t        t        f$ r ‚ t        $ r}|j                  |«       Y d }~d }y d }~ww xY w# d }w xY w)Nr   zConnect call failed )rÍ   Ú
getsockoptrT   Ú
SOL_SOCKETÚSO_ERRORrg   rÎ   ra   r`   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   rC   Úerrr†   s         r   r  z&BaseSelectorEventLoop._sock_connect_cb«  s¾   € Ø�8‰8Œ:Øð	Ø—/‘/¤&×"3Ñ"3´V·_±_ÓEˆCØ�aŠxä˜cÐ%9¸'¸Ð#CÓDÐDð ð �N‰N˜4Ô à‰Cøô  Ô!1Ð2ò 	àð ‰Cô Ô-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ð"ð ‰Cûð	#ûð
 ‰Cús<   “AA* ÁB4 Á*B1Á9B4 Á=B1ÂB,Â%B4 Â,B1Â1B4 Â4B8c              ƒ   óä   K  — t        j                  |«       | j                  r|j                  «       dk7  rt	        d«      ‚| j                  «       }| j                  ||«       |ƒ d{  –—† S 7 Œ­w)aW  Accept a connection.

        The socket must be bound to an address and listening for connections.
        The return value is a pair (conn, address) where conn is a new socket
        object usable to send and receive data on the connection, and address
        is the address bound to the socket on the other end of the connection.
        r   r»   N)r   r½   rh   r¾   r“   r‰   Ú_sock_accept)r)   r2   rÅ   s      r   Úsock_acceptz!BaseSelectorEventLoop.sock_acceptÀ  s_   è ø€ ô 	×%Ñ% dÔ+Ø�;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?Ø× Ñ Ó"ˆØ×Ñ˜#˜tÔ$Ø�yÐˆyús   ‚A'A0Á)A.Á*A0c                 óà  — |j                  «       }	 |j                  «       \  }}|j                  d«       |j                  ||f«       y # t        t
        f$ rc | j                  |«       | j                  || j                  ||«      }|j                  t        j                  | j                  ||¬«      «       Y y t        t        f$ r ‚ t        $ r}|j!                  |«       Y d }~y d }~ww xY w)NFr¼   )rO   rv   rV   rÎ   ra   r`   r0   rW   r  rÀ   rÁ   rÂ   rÃ   r‹   rŒ   rŠ   rÏ   )r)   rÅ   r2   r   r„   rC   rŸ   r†   s           r   r  z"BaseSelectorEventLoop._sock_acceptÏ  sÕ   € Ø�[‰[‹]ˆð	,Ø ŸK™K›M‰MˆD�'Ø×Ñ˜UÔ#ð �N‰N˜D '˜?Õ+øô  Ô!1Ð2ò 	LØ×(Ñ(¨Ô,Ø×%Ñ% b¨$×*;Ñ*;¸SÀ$ÓGˆFØ×!Ñ!Ü×!Ñ! $×"6Ñ"6¸À6ÔJöLäÔ-Ð.ò 	ØÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús   ’$A
 Á
A/C-Â;C-ÃC(Ã(C-c              ƒ   óø  K  — | j                   |j                  = |j                  «       }|j                  «        |j	                  «       ƒ d {  –—†  	 | j                  |j                  |||d¬«      ƒ d {  –—† |j                  «        |r|j                  «        || j                   |j                  <   S 7 Œh7 ŒA# |j                  «        |r|j                  «        || j                   |j                  <   w xY w­w)NF)Úfallback)	r(   Ú_sock_fdÚ
is_readingÚpause_readingÚ_make_empty_waiterÚsock_sendfileÚ_sockÚ_reset_empty_waiterÚresume_reading)r)   ÚtranspÚfileÚoffsetÚcountr  s         r   Ú_sendfile_nativez&BaseSelectorEventLoop._sendfile_nativeà  sÞ   è ø€ Ø×Ñ˜VŸ_™_Ð-Ø×*Ñ*Ó,ˆØ×ÑÔØ×'Ñ'Ó)×)Ð)ð	7Ø×+Ñ+¨F¯L©L¸$ÀÈØ5:ð ,ó <÷ <ð ×&Ñ&Ô(ÙØ×%Ñ%Ô'Ø06ˆD×Ñ˜VŸ_™_Ò-ð 	*øð<ùð ×&Ñ&Ô(ÙØ×%Ñ%Ô'Ø06ˆD×Ñ˜VŸ_™_Ò-üs<   ‚AC:ÁB6ÁC:Á#B: Á6B8Á7B: Á:=C:Â8B: Â:=C7Ã7C:c                 ód  — |D ]«  \  }}|j                   |j                  c}\  }}|t        j                  z  r1|�/|j                  r| j                  |«       n| j                  |«       |t        j                  z  sŒz|€Œ}|j                  r| j                  |«       Œ›| j                  |«       Œ­ y r/   )	Úfileobjr\   r   r™   Ú
_cancelledrM   Ú_add_callbackr©   r­   )r)   Ú
event_listr   r    r  r¡   r¢   s          r   Ú_process_eventsz%BaseSelectorEventLoop._process_eventsî  sž   € Ø#ò 	/‰IˆC�Ø(+¯©°S·X±XÐ%ˆGÑ%�f˜fØ”i×*Ñ*Ò*¨vÐ/AØ×$Ò$Ø×'Ñ'¨Õ0à×&Ñ& vÔ.Ø”i×+Ñ+Ó+°Ñ0BØ×$Ò$Ø×'Ñ'¨Õ0à×&Ñ& vÕ.ñ	/r*   c                 ób   — | j                  |j                  «       «       |j                  «        y r/   )rM   rO   rJ   )r)   r2   s     r   Ú_stop_servingz#BaseSelectorEventLoop._stop_servingü  s   € Ø×Ñ˜DŸK™K›MÔ*Ø�
‰
�r*   r/   ©NNN)r   )4r#   Ú
__module__Ú__qualname__Ú__doc__r   r5   r   ÚSSL_HANDSHAKE_TIMEOUTÚSSL_SHUTDOWN_TIMEOUTr@   rD   rJ   rI   r%   r]   rX   rj   rp   rm   rw   r0   rW   rM   rª   r­   r°   r´   r·   r¹   rÆ   rÃ   r¿   rÕ   rÓ   rÜ   rÚ   rã   râ   rê   rç   ró   rò   r   rþ   ré   r  r  r  r  r"  r$  Ú__classcell__©r"   s   @r   r   r   5   so  ø„ ñõ
9ð7Ø%)°$ô7ð 9=ð+à °$Ø˜tØ"+×"AÑ"AØ!*×!?Ñ!?ô+ð& CGóBô	"ò òEòò
ò,ð& #'¨t¸SØ-6×-LÑ-LØ,5×,JÑ,JóFð  D°#Ø"+×"AÑ"AØ!*×!?Ñ!?ó	,)ð`  DØ"+×"AÑ"AØ!*×!?Ñ!?ó	-5ò^&ò$ò ò*ò ò..ò
'ò
.ò
'ò
ó,#ò!ò ò*#ò"ò.#ó"ò2#ò"ò>ò,ò6òò2ó.#òò*ò,ò"7ò/ör*   r   c                   óœ   ‡ — e Zd ZdZdZdˆ fd„	Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zej                   fd„Zdd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú_SelectorTransporti   Nc                 óÚ  •— t         ‰| �  ||«       t        j                  |«      | j                  d<   	 |j                  «       | j                  d<   d| j                  vr	 |j                  «       | j                  d<   || _
        |j                  «       | _        d| _        | j                  |«       || _        t!        j"                  «       | _        d| _        d| _        d| _        | j                  �| j                  j-                  «        | |j.                  | j                  <   y # t        $ r d | j                  d<   Y Œïw xY w# t        j                  $ r d | j                  d<   Y Œëw xY w)NrT   Úsocknamerr   Fr   )r   r   r   r€   Ú_extraÚgetsocknamerg   ÚgetpeernamerT   Úerrorr  rO   r  Ú_protocol_connectedÚset_protocolÚ_serverÚcollectionsÚdequeÚ_bufferÚ
_conn_lostÚ_closingÚ_pausedÚ_attachr(   )r)   rù   r2   r3   r,   r-   r"   s         €r   r   z_SelectorTransport.__init__  s8  ø€ Ü‰Ñ˜ Ô%Ü &× 6Ñ 6°tÓ <ˆ�‰�HÑð	+Ø&*×&6Ñ&6Ó&8ˆD�K‰K˜
Ñ#ð ˜TŸ[™[Ñ(ð/Ø*.×*:Ñ*:Ó*<�—‘˜JÑ'ð ˆŒ
ØŸ™›ˆŒà#(ˆÔ Ø×Ñ˜(Ô#àˆŒÜ"×(Ñ(Ó*ˆŒØˆŒØˆŒØˆŒà�<‰<Ð#Ø�L‰L× Ñ Ô"Ø*.ˆ×Ñ˜Ÿ™Ò'øô+ ò 	+Ø&*ˆD�K‰K˜
Ó#ð	+ûô
 —<‘<ò /Ø*.�—‘˜JÓ'ð/ús#   µD' Á!E Ä'EÅEÅ"E*Å)E*c                 óú  — | j                   j                  g}| j                  €|j                  d«       n| j                  r|j                  d«       |j                  d| j
                  › �«       | j                  �à| j                  j                  «       sÆt        | j                  j                  | j
                  t        j                  «      }|r|j                  d«       n|j                  d«       t        | j                  j                  | j
                  t        j                  «      }|rd}nd}| j                  «       }|j                  d|› d	|› d
�«       dj                  dj                  |«      «      S )NÚclosedÚclosingzfd=zread=pollingz	read=idleÚpollingÚidlezwrite=<z
, bufsize=ú>z<{}>ú )r"   r#   r  Úappendr<  r  Ú_looprH   r   r$   r   r™   r©   Úget_write_buffer_sizeÚformatÚjoin)r)   ÚinforB  ÚstaterÛ   s        r   Ú__repr__z_SelectorTransport.__repr__'  s$  € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÐØ�K‰K˜Õ!Ø�]Š]Ø�K‰K˜	Ô"Ø�‰�c˜$Ÿ-™-˜Ð)Ô*à�:‰:Ð!¨$¯*©*×*>Ñ*>Ô*@Ü*¨4¯:©:×+?Ñ+?Ø+/¯=©=¼)×:NÑ:NóPˆGáØ—‘˜NÕ+à—‘˜KÔ(ä*¨4¯:©:×+?Ñ+?Ø+/¯=©=Ü+4×+@Ñ+@óBˆGñ Ø!‘à�à×0Ñ0Ó2ˆGØ�K‰K˜' % ¨
°7°)¸1Ð=Ô>Ø�}‰}˜SŸX™X d›^Ó,Ð,r*   c                 ó&   — | j                  d «       y r/   )Ú_force_closerR   s    r   Úabortz_SelectorTransport.abortC  s   € Ø×Ñ˜$Õr*   c                 ó    — || _         d| _        y ©NT)Ú	_protocolr5  )r)   r3   s     r   r6  z_SelectorTransport.set_protocolF  s   € Ø!ˆŒØ#'ˆÕ r*   c                 ó   — | j                   S r/   )rS  rR   s    r   Úget_protocolz_SelectorTransport.get_protocolJ  s   € Ø�~‰~Ðr*   c                 ó   — | j                   S r/   )r<  rR   s    r   r”   z_SelectorTransport.is_closingM  s   € Ø�}‰}Ðr*   c                 óB   — | j                  «        xr | j                   S r/   )r”   r=  rR   s    r   r  z_SelectorTransport.is_readingP  s   € Ø—?‘?Ó$Ð$Ò9¨T¯\©\Ð)9Ð9r*   c                 óà   — | j                  «       sy d| _        | j                  j                  | j                  «       | j                  j                  «       rt        j                  d| «       y y )NTz%r pauses reading)r  r=  rG  rM   r  Ú	get_debugr   r!   rR   s    r   r  z _SelectorTransport.pause_readingS  sP   € Ø�‰Ô ØØˆŒØ�
‰
×!Ñ! $§-¡-Ô0Ø�:‰:×ÑÔ!Ü�L‰LÐ,¨dÕ3ð "r*   c                 óò   — | j                   s| j                  sy d| _        | j                  | j                  | j                  «       | j
                  j                  «       rt        j                  d| «       y y )NFz%r resumes reading)	r<  r=  rW   r  Ú_read_readyrG  rY  r   r!   rR   s    r   r  z!_SelectorTransport.resume_reading[  sW   € Ø�=Š= §¢ØØˆŒØ×Ñ˜Ÿ™¨×(8Ñ(8Ô9Ø�:‰:×ÑÔ!Ü�L‰LÐ-¨tÕ4ð "r*   c                 óP  — | j                   ry d| _         | j                  j                  | j                  «       | j                  sa| xj
                  dz  c_        | j                  j                  | j                  «       | j                  j                  | j                  d «       y y ©NTr   )	r<  rG  rM   r  r:  r;  r­   Ú	call_soonÚ_call_connection_lostrR   s    r   rJ   z_SelectorTransport.closec  ss   € Ø�=Š=ØØˆŒØ�
‰
×!Ñ! $§-¡-Ô0Ø�|Š|Ø�OŠO˜qÑ �OØ�J‰J×%Ñ% d§m¡mÔ4Ø�J‰J× Ñ  ×!;Ñ!;¸TÕBð r*   c                 óv   — | j                   �- |d| ›�t        | ¬«       | j                   j                  «        y y )Nzunclosed transport )Úsource)r  ÚResourceWarningrJ   )r)   Ú_warns     r   Ú__del__z_SelectorTransport.__del__m  s5   € Ø�:‰:Ð!ÙÐ'¨ xÐ0´/È$ÕOØ�J‰J×ÑÕð "r*   c                 ó  — t        |t        «      r4| j                  j                  «       rDt	        j
                  d| |d¬«       n*| j                  j                  ||| | j                  dœ«       | j                  |«       y )Nz%r: %sTrd   )rs   rt   rˆ   r3   )	r�   rg   rG  rY  r   r!   r   rS  rO  )r)   r†   rs   s      r   Ú_fatal_errorz_SelectorTransport._fatal_errorr  se   € ä�cœ7Ô#Ø�z‰z×#Ñ#Ô%Ü—‘˜X t¨W¸tÖDà�J‰J×-Ñ-Ø"Ø Ø!Ø ŸN™Nñ	/ô ð 	×Ñ˜#Õr*   c                 óš  — | j                   ry | j                  r?| j                  j                  «        | j                  j	                  | j
                  «       | j                  s,d| _        | j                  j                  | j
                  «       | xj                   dz  c_         | j                  j                  | j                  |«       y r]  )
r;  r:  ÚclearrG  r­   r  r<  rM   r^  r_  )r)   r†   s     r   rO  z_SelectorTransport._force_close€  s…   € Ø�?Š?ØØ�<Š<Ø�L‰L×ÑÔ Ø�J‰J×%Ñ% d§m¡mÔ4Ø�}Š}Ø ˆDŒMØ�J‰J×%Ñ% d§m¡mÔ4Ø�Š˜1Ñ�Ø�
‰
×Ñ˜T×7Ñ7¸Õ=r*   c                 ó²  — 	 | j                   r| j                  j                  |«       | j                  j	                  «        d | _        d | _        d | _        | j                  }|�|j                  «        d | _        y y # | j                  j	                  «        d | _        d | _        d | _        | j                  }|�|j                  «        d | _        w w xY wr/   )r5  rS  Úconnection_lostr  rJ   rG  r7  Ú_detach)r)   r†   r-   s      r   r_  z(_SelectorTransport._call_connection_lostŒ  sº   € ð	$Ø×'Ò'Ø—‘×.Ñ.¨sÔ3à�J‰J×ÑÔØˆDŒJØ!ˆDŒNØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�•ð "øð �J‰J×ÑÔØˆDŒJØ!ˆDŒNØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�•ð "ús   ‚'A? Á?ACc                 óH   — t        t        t        | j                  «      «      S r/   )ÚsumÚmaprà   r:  rR   s    r   rH  z(_SelectorTransport.get_write_buffer_sizeš  s   € Ü”3”s˜DŸL™LÓ)Ó*Ð*r*   c                 ób   — | j                  «       sy  | j                  j                  ||g|¢­Ž  y r/   )r  rG  rW   r¯   s       r   rW   z_SelectorTransport._add_reader�  s*   € Ø�‰Ô ØØˆ�
‰
×Ñ˜r 8Ð3¨dÔ3r*   )NN)zFatal error on transport)r#   r&  r'  Úmax_sizer  r   rM  rP  r6  rU  r”   r  r  r  rJ   ÚwarningsÚwarnrd  rf  rO  r_  rH  rW   r+  r,  s   @r   r.  r.    sk   ø„ ð €Hð
 €Eõ/ò8-ò8 ò(òòò:ò4ò5òCð %ŸM™Mó ó
ò
>ò$ò+ö4r*   r.  c                   óÐ   ‡ — e Zd ZdZej
                  j                  Z	 	 dˆ fd„	Zˆ fd„Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zdeddfd„Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zˆ fd„Zˆ xZS )r1   TNc                 ó  •— d | _         t        ‰| �	  |||||«       d| _        d | _        t
        r| j                  | _        n| j                  | _        t        j                  | j                  «       | j                  j                  | j                  j                  | «       | j                  j                  | j                   | j"                  | j$                  «       |�,| j                  j                  t&        j(                  |d «       y y r   )Ú_read_ready_cbr   r   Ú_eofÚ_empty_waiterÚ_HAS_SENDMSGÚ_write_sendmsgÚ_write_readyÚ_write_sendr   Ú_set_nodelayr  rG  r^  rS  Úconnection_maderW   r  r[  r   Ú_set_result_unless_cancelled)r)   rù   r2   r3   r4   r,   r-   r"   s          €r   r   z!_SelectorSocketTransport.__init__¨  sÕ   ø€ ð #ˆÔÜ‰Ñ˜˜t X¨u°fÔ=ØˆŒ	Ø!ˆÔÝØ $× 3Ñ 3ˆDÕà $× 0Ñ 0ˆDÔô 	× Ñ  §¡Ô,à�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBà�
‰
×Ñ˜T×-Ñ-Ø!Ÿ]™]¨D×,<Ñ,<ô	>àÐà�J‰J× Ñ ¤×!EÑ!EØ!'¨õ/ð r*   c                 óž   •— t        |t        j                  «      r| j                  | _        n| j
                  | _        t        ‰| �  |«       y r/   )r�   r	   ÚBufferedProtocolÚ_read_ready__get_bufferru  Ú_read_ready__data_receivedr   r6  )r)   r3   r"   s     €r   r6  z%_SelectorSocketTransport.set_protocolÁ  s<   ø€ Ü�h¤	× :Ñ :Ô;Ø"&×">Ñ">ˆDÕà"&×"AÑ"AˆDÔä‰Ñ˜XÕ&r*   c                 ó$   — | j                  «        y r/   )ru  rR   s    r   r[  z$_SelectorSocketTransport._read_readyÉ  s   € Ø×ÑÕr*   c                 ó„  — | j                   ry 	 | j                  j                  d«      }t        |«      st	        d«      ‚	 	 | j                  j                  |«      }|s| j                  «        y 	 | j                  j                  |«       y # t
        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w# t        t        f$ r Y y t
        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w# t
        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w)Néÿÿÿÿz%get_buffer() returned an empty bufferz/Fatal error: protocol.get_buffer() call failed.ú$Fatal read error on socket transportz3Fatal error: protocol.buffer_updated() call failed.)r;  rS  Ú
get_bufferrà   rG   r‹   rŒ   rŠ   rf  r  rÒ   ra   r`   Ú_read_ready__on_eofÚbuffer_updated)r)   rÔ   r†   r×   s       r   r�  z0_SelectorSocketTransport._read_ready__get_bufferÌ  sC  € Ø�?Š?Øð		Ø—.‘.×+Ñ+¨BÓ/ˆCÜ�s”8Ü"Ð#JÓKÐKð ð	Ø—Z‘Z×)Ñ)¨#Ó.ˆFñ Ø×$Ñ$Ô&Øð	LØ�N‰N×)Ñ)¨&Õ1øô- Ô-Ð.ò 	ØÜò 	Ø×ÑØÐFôHäûð	ûô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	Ø×Ñ˜cÐ#IÔJÜûð	ûô Ô-Ð.ò 	ØÜò 	LØ×ÑØÐJ÷Lñ Lûð	LúsM   �1B ÁC Á1D ÂCÂ%B<Â<CÃDÃDÃ,DÄDÄD?Ä#D:Ä:D?c                 óÄ  — | j                   ry 	 | j                  j                  | j                  «      }|s| j                  «        y 	 | j                  j                  |«       y # t        t
        f$ r Y y t        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w# t        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nr†  z2Fatal error: protocol.data_received() call failed.)r;  r  r_   rp  ra   r`   r‹   rŒ   rŠ   rf  rˆ  rS  Údata_received)r)   r\   r†   s      r   r‚  z3_SelectorSocketTransport._read_ready__data_receivedñ  sÚ   € Ø�?Š?Øð	Ø—:‘:—?‘? 4§=¡=Ó1ˆDñ Ø×$Ñ$Ô&Øð	KØ�N‰N×(Ñ(¨Õ.øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	Ø×Ñ˜cÐ#IÔJÜûð	ûô Ô-Ð.ò 	ØÜò 	KØ×ÑØÐI÷Kñ Kûð	Kús5   �%A$ ÁB+ Á$B(Á5B(ÂB#Â#B(Â+CÃCÃCc                 óx  — | j                   j                  «       rt        j                  d| «       	 | j                  j                  «       }|r&| j                   j                  | j                  «       y | j                  «        y # t        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)rG  rY  r   r!   rS  Úeof_receivedr‹   rŒ   rŠ   rf  rM   r  rJ   )r)   Ú	keep_openr†   s      r   rˆ  z,_SelectorSocketTransport._read_ready__on_eof
  s™   € Ø�:‰:×ÑÔ!Ü�L‰LÐ*¨DÔ1ð	ØŸ™×3Ñ3Ó5ˆIñ ð �J‰J×%Ñ% d§m¡mÕ4à�J‰J�Løô Ô-Ð.ò 	ØÜò 	Ø×ÑØÐHôJäûð	ús   ²B ÂB9ÂB4Â4B9c                 ó<  — t        |t        t        t        f«      s!t	        dt        |«      j                  ›�«      ‚| j                  rt        d«      ‚| j                  �t        d«      ‚|sy | j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_
        y | j                  s]	 | j                   j#                  |«      }t        |«      |d  }|sy | j0                  j3                  | j4                  | j6                  «       | j                  j9                  |«       | j;                  «        y # t$        t&        f$ r Y Œmt(        t*        f$ r ‚ t,        $ r}| j/                  |d«       Y d }~y d }~ww xY w)Nú/data argument must be a bytes-like object, not z%Cannot call write() after write_eof()z(unable to write; sendfile is in progressúsocket.send() raised exception.r   ú%Fatal write error on socket transport)r�   ÚbytesÚ	bytearrayrè   r’   r÷   r#   rv  rG   rw  r;  r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   Úwarningr:  r  rf   ra   r`   r‹   rŒ   rŠ   rf  rG  rª   r  rz  rF  Ú_maybe_pause_protocol)r)   r\   rÄ   r†   s       r   Úwritez_SelectorSocketTransport.write  s_  € Ü˜$¤¬	´:Ð >Ô?Üð #Ü#'¨£:×#6Ñ#6Ð"9ð;ó <ð <à�9Š9ÜÐFÓGÐGØ×ÑÐ)ÜÐIÓJÐJÙØà�?Š?Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØà�|Š|ðØ—J‘J—O‘O DÓ)�ô " $Ó'¨¨Ð+�ÙØà�J‰J×"Ñ" 4§=¡=°$×2CÑ2CÔDð 	�‰×Ñ˜DÔ!Ø×"Ñ"Õ$øô! $Ô%5Ð6ò ÙÜÔ 1Ð2ò ØÜ ò Ø×!Ñ! #Ð'NÔOÜûðús   ÃE ÅFÅ(FÅ?FÆFc                 óJ   — t        j                  | j                  t        «      S r/   )Ú	itertoolsÚislicer:  r   rR   s    r   Ú_get_sendmsg_bufferz,_SelectorSocketTransport._get_sendmsg_bufferF  s   € Ü×Ñ §¡¬jÓ9Ð9r*   c                 ó˜  — | j                   sJ d«       ‚| j                  ry 	 | j                  j                  | j	                  «       «      }| j                  |«       | j                  «        | j                   s¡| j                  j                  | j                  «       | j                  �| j                  j                  d «       | j                  r| j                  d «       y | j                  r*| j                  j                  t         j"                  «       y y y # t$        t&        f$ r Y y t(        t*        f$ r ‚ t,        $ r‡}| j                  j                  | j                  «       | j                   j/                  «        | j1                  |d«       | j                  � | j                  j3                  |«       Y d }~y Y d }~y d }~ww xY w©NzData should not be emptyr’  )r:  r;  r  r   rœ  Ú_adjust_leftover_bufferÚ_maybe_resume_protocolrG  r­   r  rw  rÎ   r<  r_  rv  ÚshutdownrT   ÚSHUT_WRra   r`   r‹   rŒ   rŠ   rh  rf  rÏ   )r)   r×   r†   s      r   ry  z'_SelectorSocketTransport._write_sendmsgI  sh  € Ø�|Š|Ð7Ð7Ó7ˆ|Ø�?Š?Øð	8Ø—Z‘Z×'Ñ'¨×(@Ñ(@Ó(BÓCˆFØ×(Ñ(¨Ô0ð ×'Ñ'Ô)Ø—<’<Ø—
‘
×)Ñ)¨$¯-©-Ô8Ø×%Ñ%Ð1Ø×&Ñ&×1Ñ1°$Ô7Ø—=’=Ø×.Ñ.¨tÕ4Ø—Y’YØ—J‘J×'Ñ'¬¯©Õ7ð ð  øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	6Ø�J‰J×%Ñ% d§m¡mÔ4Ø�L‰L×ÑÔ Ø×Ñ˜cÐ#JÔKØ×!Ñ!Ð-Ø×"Ñ"×0Ñ0°×5Ñ5ô .ûð		6ús   ¢:D ÄG	Ä+G	ÅA8GÇG	r×   Úreturnc                 óž   — | j                   }|r?|j                  «       }t        |«      }||k  r||z  }n|j                  ||d  «       y |rŒ>y y r/   )r:  Úpopleftrà   Ú
appendleft)r)   r×   ÚbufferÚbÚb_lens        r   rŸ  z0_SelectorSocketTransport._adjust_leftover_buffere  sO   € Ø—‘ˆÙØ—‘Ó ˆAÜ˜“FˆEØ˜ŠØ˜%‘‘à×!Ñ! ! F G *Ô-Øô r*   c                 óæ  — | j                   sJ d«       ‚| j                  ry 	 | j                   j                  «       }| j                  j	                  |«      }|t        |«      k7  r| j                   j                  ||d  «       | j                  «        | j                   s¡| j                  j                  | j                  «       | j                  �| j                  j                  d «       | j                  r| j                  d «       y | j                  r*| j                  j!                  t"        j$                  «       y y y # t&        t(        f$ r Y y t*        t,        f$ r ‚ t.        $ r‡}| j                  j                  | j                  «       | j                   j1                  «        | j3                  |d«       | j                  � | j                  j5                  |«       Y d }~y Y d }~y d }~ww xY wrž  )r:  r;  r¥  r  rf   rà   r¦  r   rG  r­   r  rw  rÎ   r<  r_  rv  r¡  rT   r¢  ra   r`   r‹   rŒ   rŠ   rh  rf  rÏ   )r)   r§  rÄ   r†   s       r   r{  z$_SelectorSocketTransport._write_sendp  s…  € Ø�|Š|Ð7Ð7Ó7ˆ|Ø�?Š?Øð	8Ø—\‘\×)Ñ)Ó+ˆFØ—
‘
—‘ Ó'ˆAØ”C˜“KÒà—‘×'Ñ'¨¨q¨r¨
Ô3ð ×'Ñ'Ô)Ø—<’<Ø—
‘
×)Ñ)¨$¯-©-Ô8Ø×%Ñ%Ð1Ø×&Ñ&×1Ñ1°$Ô7Ø—=’=Ø×.Ñ.¨tÕ4Ø—Y’YØ—J‘J×'Ñ'¬¯©Õ7ð ð  øô  Ô!1Ð2ò 	ÙÜÔ-Ð.ò 	ØÜò 	6Ø�J‰J×%Ñ% d§m¡mÔ4Ø�L‰L×ÑÔ Ø×Ñ˜cÐ#JÔKØ×!Ñ!Ð-Ø×"Ñ"×0Ñ0°×5Ñ5ô .ûð		6ús   ¢A!E ÅG0ÅG0Å)A8G+Ç+G0c                 ó°   — | j                   s| j                  ry d| _        | j                  s*| j                  j	                  t
        j                  «       y y rR  )r<  rv  r:  r  r¡  rT   r¢  rR   s    r   Ú	write_eofz"_SelectorSocketTransport.write_eof�  s;   € Ø�=Š=˜DŸIšIØØˆŒ	Ø�|Š|Ø�J‰J×Ñ¤§¡Õ/ð r*   c                 óŽ  — | j                   rt        d«      ‚| j                  �t        d«      ‚|sy | j                  j	                  |D �cg c]  }t        |«      ‘Œ c}«       | j                  «        | j                  rA| j                  j                  | j                  | j                  «       | j                  «        y y c c}w )Nz*Cannot call writelines() after write_eof()z-unable to writelines; sendfile is in progress)rv  rG   rw  r:  Úextendrè   rz  rG  rª   r  r—  )r)   Úlist_of_datar\   s      r   Ú
writelinesz#_SelectorSocketTransport.writelines–  s�   € Ø�9Š9ÜÐKÓLÐLØ×ÑÐ)ÜÐNÓOÐOÙØØ�‰×Ñ¸,ÖG°$œZ¨Õ-ÒGÔHØ×ÑÔà�<Š<Ø�J‰J×"Ñ" 4§=¡=°$×2CÑ2CÔDØ×&Ñ&Õ(ð ùò Hs   ÁCc                  ó   — yrR  rZ   rR   s    r   Úcan_write_eofz&_SelectorSocketTransport.can_write_eof¤  s   € Ør*   c                 ó†   •— t         ‰| �  |«       | j                  �%| j                  j                  t	        d«      «       y y )NzConnection is closed by peer)r   r_  rw  rÏ   ÚConnectionError)r)   r†   r"   s     €r   r_  z._SelectorSocketTransport._call_connection_lost§  s?   ø€ Ü‰Ñ% cÔ*Ø×ÑÐ)Ø×Ñ×,Ñ,ÜÐ >Ó?õAð *r*   c                 óÔ   — | j                   �t        d«      ‚| j                  j                  «       | _         | j                  s| j                   j                  d «       | j                   S )NzEmpty waiter is already set)rw  rG   rG  r‰   r:  rÎ   rR   s    r   r  z+_SelectorSocketTransport._make_empty_waiter­  sV   € Ø×ÑÐ)ÜÐ<Ó=Ð=Ø!ŸZ™Z×5Ñ5Ó7ˆÔØ�|Š|Ø×Ñ×)Ñ)¨$Ô/Ø×!Ñ!Ð!r*   c                 ó   — d | _         y r/   )rw  rR   s    r   r  z,_SelectorSocketTransport._reset_empty_waiterµ  s
   € Ø!ˆÕr*   c                 ó>   •— d | _         d | _        t        ‰| �  «        y r/   )ru  rz  r   rJ   rK   s    €r   rJ   z_SelectorSocketTransport.close¸  s   ø€ Ø"ˆÔØ ˆÔÜ‰‰�r*   r%  )r#   r&  r'  Ú_start_tls_compatibler   Ú_SendfileModeÚ
TRY_NATIVEÚ_sendfile_compatibler   r6  r[  r�  r‚  rˆ  r˜  rœ  ry  r�   rŸ  r{  r¬  r°  r²  r_  r  r  rJ   r+  r,  s   @r   r1   r1   £  s“   ø„ à ÐØ$×2Ñ2×=Ñ=Ðà48Ø$(õ/ô2'òò#LòJKò2ò*%%òN:ò8ð8	¨cð 	°dó 	ò8ò>0ò)òôAò"ò"÷ð r*   r1   c                   óV   ‡ — e Zd Zej                  Z	 	 dˆ fd„	Zd„ Zd„ Zdd„Z	d„ Z
ˆ xZS )rB   c                 óx  •— t         ‰| �  ||||«       || _        d| _        | j                  j                  | j                  j                  | «       | j                  j                  | j                  | j                  | j                  «       |�,| j                  j                  t        j                  |d «       y y rì   )r   r   Ú_addressÚ_buffer_sizerG  r^  rS  r}  rW   r  r[  r   r~  )r)   rù   r2   r3   rC   r4   r,   r"   s          €r   r   z#_SelectorDatagramTransport.__init__Â  s–   ø€ ä‰Ñ˜˜t X¨uÔ5ØˆŒØˆÔØ�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBà�
‰
×Ñ˜T×-Ñ-Ø!Ÿ]™]¨D×,<Ñ,<ô	>àÐà�J‰J× Ñ ¤×!EÑ!EØ!'¨õ/ð r*   c                 ó   — | j                   S r/   )r¿  rR   s    r   rH  z0_SelectorDatagramTransport.get_write_buffer_sizeÐ  s   € Ø× Ñ Ð r*   c                 óŽ  — | j                   ry 	 | j                  j                  | j                  «      \  }}| j                  j                  ||«       y # t        t        f$ r Y y t        $ r%}| j                  j                  |«       Y d }~y d }~wt        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nz&Fatal read error on datagram transport)r;  r  rÙ   rp  rS  Údatagram_receivedra   r`   rg   Úerror_receivedr‹   rŒ   rŠ   rf  ©r)   r\   r…   r†   s       r   r[  z&_SelectorDatagramTransport._read_readyÓ  s«   € Ø�?Š?Øð	9ØŸ™×,Ñ,¨T¯]©]Ó;‰JˆD�$ð �N‰N×,Ñ,¨T°4Õ8øô  Ô!1Ð2ò 	ÙÜò 	/Ø�N‰N×)Ñ)¨#×.Ñ.ûÜÔ-Ð.ò 	ØÜò 	MØ×Ñ˜cÐ#K×LÑLûð	Mús)   �(A ÁCÁ%CÁ-BÂCÂ(B?Â?Cc                 óZ  — t        |t        t        t        f«      s!t	        dt        |«      j                  ›�«      ‚|sy | j                  r4|d | j                  fvrt        d| j                  › �«      ‚| j                  }| j                  rT| j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_	        y | j                  sI	 | j                  d   r| j                   j#                  |«       y | j                   j%                  ||«       y | j                  jA                  t        |«      |f«       | xjB                  tE        |«      z  c_!        | jG                  «        y # t&        t(        f$ r3 | j*                  j-                  | j.                  | j0                  «       Y Œ–t2        $ r%}| j4                  j7                  |«       Y d }~y d }~wt8        t:        f$ r ‚ t<        $ r}| j?                  |d«       Y d }~y d }~ww xY w)Nr�  z!Invalid address: must be None or r‘  r   rr   ú'Fatal write error on datagram transport)$r�   r“  r”  rè   r’   r÷   r#   r¾  r“   r;  r   r•  r   r–  r:  r1  r  rf   rñ   ra   r`   rG  rª   r  Ú_sendto_readyrg   rS  rÃ  r‹   rŒ   rŠ   rf  rF  r¿  rà   r—  rÄ  s       r   rñ   z!_SelectorDatagramTransport.sendtoã  sÅ  € Ü˜$¤¬	´:Ð >Ô?Üð #Ü#'¨£:×#6Ñ#6Ð"9ð;ó <ð <áØà�=Š=Ø˜D $§-¡-Ð0Ñ0Ü Ø7¸¿¹°ÐGóIð Ià—=‘=ˆDà�?Š?˜tŸ}š}Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØà�|Š|ðØ—;‘;˜zÒ*Ø—J‘J—O‘O DÔ)ð ð —J‘J×%Ñ% d¨DÔ1Øð 	�‰×ÑœU 4›[¨$Ð/Ô0Ø×ÒœS ›YÑ&ÕØ×"Ñ"Õ$øô $Ô%5Ð6ò JØ—
‘
×&Ñ& t§}¡}°d×6HÑ6HÖIÜò Ø—‘×-Ñ-¨cÔ2ÜûÜÔ 1Ð2ò ØÜ ò Ø×!Ñ!ØÐBôDäûðús0   Ã-*F
 ÄF
 Æ
?H*ÇH*ÇG3Ç3H*ÈH%È%H*c                 óX  — | j                   r�| j                   j                  «       \  }}| xj                  t        |«      z  c_        	 | j                  d   r| j
                  j                  |«       n| j
                  j                  ||«       | j                   rŒ�| j%                  «        | j                   sD| j&                  j)                  | j*                  «       | j,                  r| j/                  d «       y y y # t        t        f$ r> | j                   j                  ||f«       | xj                  t        |«      z  c_        Y Œ­t        $ r%}| j                  j                  |«       Y d }~y d }~wt        t        f$ r ‚ t         $ r}| j#                  |d«       Y d }~y d }~ww xY w)Nrr   rÆ  )r:  r¥  r¿  rà   r1  r  rf   rñ   ra   r`   r¦  rg   rS  rÃ  r‹   rŒ   rŠ   rf  r   rG  r­   r  r<  r_  rÄ  s       r   rÇ  z(_SelectorDatagramTransport._sendto_ready  sQ  € Ø�lŠlØŸ™×-Ñ-Ó/‰JˆD�$Ø×Ò¤ T£Ñ*ÕðØ—;‘;˜zÒ*Ø—J‘J—O‘O DÕ)à—J‘J×%Ñ% d¨DÔ1ð �l‹lð, 	×#Ñ#Ô%Ø�|Š|Ø�J‰J×%Ñ% d§m¡mÔ4Ø�}Š}Ø×*Ñ*¨4Õ0ð ð øô $Ô%5Ð6ò Ø—‘×'Ñ'¨¨t¨Ô5Ø×!Ò!¤S¨£YÑ.Õ!ÙÜò Ø—‘×-Ñ-¨cÔ2ÜûÜÔ 1Ð2ò ØÜ ò Ø×!Ñ!ØÐBôDäûðús,   Á	AC> Ã>A
F)Å
F)ÅE2Å2F)ÆF$Æ$F)r%  r/   )r#   r&  r'  r8  r9  Ú_buffer_factoryr   rH  r[  rñ   rÇ  r+  r,  s   @r   rB   rB   ¾  s.   ø„ à!×'Ñ'€Oà59Ø$(õ/ò!ò9ó *%öX1r*   rB   )&r(  Ú__all__r8  rz   rÁ   rš  Úosr   rT   rq  r&   ÚsslÚImportErrorÚ r   r   r   r   r	   r
   r   r   Úlogr   Úhasattrrx  Úsysconfr   rg   r   ÚBaseEventLoopr   Ú_FlowControlMixinÚ	Transportr.  r1   ÚDatagramTransportrB   rZ   r*   r   ú<module>rÖ     s  ðñð #€ã Û Û Û Û 	Û Û Û Û ðÛõ Ý Ý Ý Ý Ý Ý Ý Ý á�v—}‘} iÓ0€áðØ�R—Z‘Z Ó-ˆ
ò
(ôI˜K×5Ñ5ô IôX_4˜×5Ñ5Ø#×-Ñ-ô_4ôDXÐ1ô Xôvl1Ð!3°Z×5QÑ5Qõ l1øðU% ò Ø
‚Cðûð$ ò àŠðús#   ªC& Á:C3 Ã&C0Ã/C0Ã3C=Ã<C=