§
    (¶ÕiVO  ã                   óØ  — 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mZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ dZ ej        eed¬¦  «          eeeeeeeh¦  «        Z	 e n# e$ r i ZY nw xY wd„ Z G d„ d	e¦  «        Zeee fZ!d
„ Z"d„ Z#d„ Z$d„ Z%dd„Z&dd„Z'e'Z(d d„Z) G d„ d¦  «        Z* G d„ de*¦  «        Z+d„ Z,d!d„Z-ej.        dk    r G d„ d¦  «        Z/ G d„ de*¦  «        Z0dS dS )"a   Basic infrastructure for asynchronous socket service clients and servers.

There are only two ways to have a program on a single processor do "more
than one thing at a time".  Multi-threaded programming is the simplest and
most popular way to do it, but there is another very different technique,
that lets you have nearly all the advantages of multi-threading, without
actually using multiple threads. it's really only practical if your program
is largely I/O bound. If your program is CPU bound, then pre-emptive
scheduled threads are probably what you really need. Network servers are
rarely CPU-bound, however.

If your operating system supports the select() system call in its I/O
library (and nearly all do), then you can use it to juggle multiple
communication channels at once; doing other work while your I/O is taking
place in the "background."  Although this strategy can seem strange and
complex, especially at first, it is in many ways easier to understand and
control than multi-threaded programming. The module documented here solves
many of the difficult problems for you, making the task of building
sophisticated high-performance network servers and clients a snap.
é    N)ÚEALREADYÚEINPROGRESSÚEWOULDBLOCKÚ
ECONNRESETÚEINVALÚENOTCONNÚ	ESHUTDOWNÚEISCONNÚEBADFÚECONNABORTEDÚEPIPEÚEAGAINÚ	errorcodeznThe {name} module is deprecated and will be removed in Python {remove}. The recommended replacement is asyncio)é   é   )Úremovec                 ó    — 	 t          j        | ¦  «        S # t          t          t          f$ r  | t
          v rt
          |          cY S d| z  cY S w xY w)NzUnknown error %s)ÚosÚstrerrorÚ
ValueErrorÚOverflowErrorÚ	NameErrorr   )Úerrs    ú/usr/lib/python3.11/asyncore.pyÚ	_strerrorr   I   se   € ð'ÝŒ{˜3ÑÔÐøÝ�¥yÐ1ð 'ð 'ð 'Ø•)ÐÐÝ˜S”>Ð!Ð!Ð!Ø! 3Ñ&Ð&Ð&Ð&ð'øøøs   ‚ –-AÁAÁAc                   ó   — e Zd ZdS )ÚExitNowN)Ú__name__Ú
__module__Ú__qualname__© ó    r   r   r   Q   s   € € € € € Ø€Dr"   r   c                 ó|   — 	 |                       ¦   «          d S # t          $ r ‚  |                      ¦   «          Y d S xY w©N)Úhandle_read_eventÚ_reraised_exceptionsÚhandle_error©Úobjs    r   Úreadr*   V   óX   € ðØ×ÒÑÔÐÐÐøÝð ð ð ØðØ×ÒÑÔÐÐÐÐøøøó   ‚ ˜ ;c                 ó|   — 	 |                       ¦   «          d S # t          $ r ‚  |                      ¦   «          Y d S xY wr$   )Úhandle_write_eventr&   r'   r(   s    r   Úwriter/   ^   sX   € ðØ×ÒÑ Ô Ð Ð Ð øÝð ð ð ØðØ×ÒÑÔÐÐÐÐøøør,   c                 ó|   — 	 |                       ¦   «          d S # t          $ r ‚  |                      ¦   «          Y d S xY wr$   )Úhandle_expt_eventr&   r'   r(   s    r   Ú
_exceptionr2   f   r+   r,   c                 óD  — 	 |t           j        z  r|                      ¦   «          |t           j        z  r|                      ¦   «          |t           j        z  r|                      ¦   «          |t           j        t           j        z  t           j	        z  z  r|  
                    ¦   «          d S d S # t          $ rH}|j        t          vr|                      ¦   «          n|  
                    ¦   «          Y d }~d S Y d }~d S d }~wt          $ r ‚  |                      ¦   «          Y d S xY wr$   )ÚselectÚPOLLINr%   ÚPOLLOUTr.   ÚPOLLPRIr1   ÚPOLLHUPÚPOLLERRÚPOLLNVALÚhandle_closeÚOSErrorÚerrnoÚ_DISCONNECTEDr'   r&   )r)   ÚflagsÚes      r   Ú	readwriterA   n   sT  € ðØ•6”=Ñ ð 	$Ø×!Ò!Ñ#Ô#Ð#Ø•6”>Ñ!ð 	%Ø×"Ò"Ñ$Ô$Ð$Ø•6”>Ñ!ð 	$Ø×!Ò!Ñ#Ô#Ð#Ø•F”N¥V¤^Ñ3µf´oÑEÑFð 	Ø×ÒÑÔÐÐÐð	ð 	øåð ð ð ØŒ7�-Ð'Ð'Ø×ÒÑÔÐÐà×ÒÑÔÐÐÐÐÐÐÐð ÐÐÐÐÐøøøøõ  ð ð ð ØðØ×ÒÑÔÐÐÐÐøøøs   ‚B&B, Â,
DÂ67C9Ã9#Dç        c                 ó   — |€t           }|�rog }g }g }t          |                     ¦   «         ¦  «        D ]{\  }}|                     ¦   «         }|                     ¦   «         }|r|                     |¦  «         |r|j        s|                     |¦  «         |s|r|                     |¦  «         Œ|g |cxk    r|cxk    r|k    rn nt          j        | ¦  «         d S t          j	        |||| ¦  «        \  }}}|D ])}| 
                    |¦  «        }|€Œt          |¦  «         Œ*|D ])}| 
                    |¦  «        }|€Œt          |¦  «         Œ*|D ]+}| 
                    |¦  «        }|€Œt          |¦  «         Œ*d S d S r$   )Ú
socket_mapÚlistÚitemsÚreadableÚwritableÚappendÚ	acceptingÚtimeÚsleepr4   Úgetr*   r/   r2   )	ÚtimeoutÚmapÚrÚwr@   Úfdr)   Úis_rÚis_ws	            r   ÚpollrU   ‚   sÂ  € Ø
€{ÝˆØ
ñ "Øˆ�B�˜B˜Ý˜CŸIšI™KœKÑ(Ô(ð 		ð 		‰GˆB�Ø—<’<‘>”>ˆDØ—<’<‘>”>ˆDØð Ø—’˜‘”�àð ˜CœMð Ø—’˜‘”�Øð �tð Ø—’˜‘”�øØ�ÐÐÒÐ�aÐÐÒÐ˜1ÒÐÐÐÐÝŒJ�wÑÔÐØˆFå”-  1 a¨Ñ1Ô1‰ˆˆ1ˆaàð 	ð 	ˆBØ—'’'˜"‘+”+ˆCØˆ{ØÝ�‰IŒIˆIˆIàð 	ð 	ˆBØ—'’'˜"‘+”+ˆCØˆ{ØÝ�#‰JŒJˆJˆJàð 	ð 	ˆBØ—'’'˜"‘+”+ˆCØˆ{ØÝ�s‰OŒOˆOˆOðE"ð "ð<	ð 	r"   c                 ó.  — |€t           }| �t          | dz  ¦  «        } t          j        ¦   «         }|ràt	          |                     ¦   «         ¦  «        D ]y\  }}d}|                     ¦   «         r|t          j        t          j        z  z  }| 	                    ¦   «         r|j
        s|t          j        z  }|r|                     ||¦  «         Œz|                     | ¦  «        }|D ]/\  }}|                     |¦  «        }|€Œt          ||¦  «         Œ.d S d S )Niè  r   )rD   Úintr4   rU   rE   rF   rG   r5   r7   rH   rJ   r6   ÚregisterrM   rA   )rN   rO   ÚpollsterrR   r)   r?   rP   s          r   Úpoll2rZ   ©   s'  € à
€{ÝˆØÐå�g˜d‘lÑ#Ô#ˆÝŒ{‰}Œ}€HØ
ð "Ý˜CŸIšI™KœKÑ(Ô(ð 	-ð 	-‰GˆB�ØˆEØ�|Š|‰~Œ~ð 8Ø�œ­¬Ñ7Ñ7�à�|Š|‰~Œ~ð ( c¤mð (Ø�œÑ'�Øð -Ø×!Ò! " eÑ,Ô,Ð,øà�MŠM˜'Ñ"Ô"ˆØð 	"ð 	"‰IˆB�Ø—'’'˜"‘+”+ˆCØˆ{ØÝ�c˜5Ñ!Ô!Ð!Ð!ð!"ð "ð	"ð 	"r"   ç      >@Fc                 óÞ   — |€t           }|rt          t          d¦  «        rt          }nt          }|€|r || |¦  «         |°d S d S |r!|dk    r || |¦  «         |dz
  }|r
|dk    °d S d S d S d S )NrU   r   é   )rD   Úhasattrr4   rZ   rU   )rN   Úuse_pollrO   ÚcountÚpoll_funs        r   Úlooprb   Å   sÉ   € Ø
€{Ýˆàð •G�F FÑ+Ô+ð Ýˆˆåˆà€}Øð 	#ØˆH�W˜cÑ"Ô"Ð"ð ð 	#ð 	#ð 	#ð 	#ð 	#ð ð 	�e˜a’i�iØˆH�W˜cÑ"Ô"Ð"Ø˜A‘IˆEð ð 	�e˜a’i�i�i�ið 	ð 	ð 	ð 	�i�ir"   c                   ó  — e Zd ZdZdZdZdZdZdZ e	dh¦  «        Z
d#d„Zd„ Zd$d„Zd$d„Zej        ej        fd„Zd$d	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd%d„Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d „ Z)d!„ Z*d"„ Z+dS )&Ú
dispatcherFNÚwarningc                 ó„  — |€t           | _        n|| _        d | _        |r™|                     d¦  «         |                      ||¦  «         d| _        	 |                     ¦   «         | _        d S # t          $ r>}|j	        t          t          fv rd| _        n|                      |¦  «         ‚ Y d }~d S d }~ww xY wd | _        d S )NFT)rD   Ú_mapÚ_filenoÚsetblockingÚ
set_socketÚ	connectedÚgetpeernameÚaddrr<   r=   r   r   Údel_channelÚsocket)ÚselfÚsockrO   r   s       r   Ú__init__zdispatcher.__init__á   sä   € Øˆ;Ý"ˆDŒIˆIàˆDŒIàˆŒàð 	ð ×Ò˜UÑ#Ô#Ð#Ø�OŠO˜D #Ñ&Ô&Ð&Ø!ˆDŒNðØ ×,Ò,Ñ.Ô.�”	�	�	øÝð 
ð 
ð 
Ø”9¥­6Ð 2Ð2Ð2ð &+�D”N�Nð
 ×$Ò$ SÑ)Ô)Ð)Øð #�N�N�N�N�Nøøøøð	
øøøð ˆDŒKˆKˆKs   ÁA. Á.
B6Á83B1Â1B6c                 óÄ  — | j         j        dz   | j         j        z   g}| j        r| j        r|                     d¦  «         n| j        r|                     d¦  «         | j        �V	 |                     d| j        z  ¦  «         n7# t          $ r* |                     t          | j        ¦  «        ¦  «         Y nw xY wdd 	                    |¦  «        t          | ¦  «        fz  S )Nú.Ú	listeningrk   z%s:%dz<%s at %#x>ú )Ú	__class__r   r    rJ   rm   rI   rk   Ú	TypeErrorÚreprÚjoinÚid)rp   Ústatuss     r   Ú__repr__zdispatcher.__repr__  sè   € Ø”.Ô+¨CÑ/°´Ô0KÑKÐLˆØŒ>ð 	'˜dœið 	'Ø�MŠM˜+Ñ&Ô&Ð&Ð&ØŒ^ð 	'Ø�MŠM˜+Ñ&Ô&Ð&ØŒ9Ð ð/Ø—’˜g¨¬	Ñ1Ñ2Ô2Ð2Ð2øÝð /ð /ð /Ø—’�d 4¤9™oœoÑ.Ô.Ð.Ð.Ð.ð/øøøà §¢¨Ñ 0Ô 0µ"°T±(´(Ð;Ñ;Ð;s   Á&B Â1B8Â7B8c                 ó,   — |€| j         }| || j        <   d S r$   )rg   rh   )rp   rO   s     r   Úadd_channelzdispatcher.add_channel  s    € àˆ;Ø”)ˆCØ ˆˆDŒLÑÐÐr"   c                 óB   — | j         }|€| j        }||v r||= d | _         d S r$   )rh   rg   )rp   rO   rR   s      r   rn   zdispatcher.del_channel  s0   € ØŒ\ˆØˆ;Ø”)ˆCØ�ˆ9ˆ9à�B�ØˆŒˆˆr"   c                 ó–   — ||f| _         t          j        ||¦  «        }|                     d¦  «         |                      |¦  «         d S ©NF)Úfamily_and_typero   ri   rj   )rp   ÚfamilyÚtyperq   s       r   Úcreate_socketzdispatcher.create_socket  sK   € Ø% t˜|ˆÔÝŒ}˜V TÑ*Ô*ˆØ×Ò˜ÑÔÐØ�Š˜ÑÔÐÐÐr"   c                 óp   — || _         |                     ¦   «         | _        |                      |¦  «         d S r$   )ro   Úfilenorh   r   ©rp   rq   rO   s      r   rj   zdispatcher.set_socket#  s2   € ØˆŒØ—{’{‘}”}ˆŒØ×Ò˜ÑÔÐÐÐr"   c                 óê   — 	 | j                              t           j        t           j        | j                              t           j        t           j        ¦  «        dz  ¦  «         d S # t
          $ r Y d S w xY w)Nr]   )ro   Ú
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚ
getsockoptr<   ©rp   s    r   Úset_reuse_addrzdispatcher.set_reuse_addr(  sƒ   € ð	ØŒK×"Ò"ÝÔ!¥6Ô#6Ø”×&Ò&¥vÔ'8Ý'-Ô':ñ<ô <Ø>?ñ@ñô ð ð ð øõ
 ð 	ð 	ð 	ØˆDˆDð	øøøs   ‚A A$ Á$
A2Á1A2c                 ó   — dS ©NTr!   r�   s    r   rG   zdispatcher.readable9  ó   € Øˆtr"   c                 ó   — dS r’   r!   r�   s    r   rH   zdispatcher.writable<  r“   r"   c                 ót   — d| _         t          j        dk    r|dk    rd}| j                             |¦  «        S )NTÚnté   )rJ   r   Únamero   Úlisten)rp   Únums     r   r™   zdispatcher.listenC  s7   € ØˆŒÝŒ7�dŠ?ˆ?˜s Qšw˜wØˆCØŒ{×!Ò! #Ñ&Ô&Ð&r"   c                 óD   — || _         | j                             |¦  «        S r$   )rm   ro   Úbind)rp   rm   s     r   rœ   zdispatcher.bindI  s   € ØˆŒ	ØŒ{×Ò Ñ%Ô%Ð%r"   c                 óL  — d| _         d| _        | j                             |¦  «        }|t          t
          t          fv s|t          k    rt          j	        dk    r	|| _
        d S |dt          fv r|| _
        |                      ¦   «          d S t          |t          |         ¦  «        ‚)NFTr–   r   )rk   Ú
connectingro   Ú
connect_exr   r   r   r   r   r˜   rm   r
   Úhandle_connect_eventr<   r   )rp   Úaddressr   s      r   Úconnectzdispatcher.connectM  s˜   € ØˆŒØˆŒØŒk×$Ò$ WÑ-Ô-ˆØ•;¥­+Ð6Ð6Ð6Ø•&Š=ˆ=�RœW¨š_˜_ØˆDŒIØˆFØ�1•g�,ÐÐØˆDŒIØ×%Ò%Ñ'Ô'Ð'Ð'Ð'å˜#�y¨œ~Ñ.Ô.Ð.r"   c                 óÄ   — 	 | j                              ¦   «         \  }}||fS # t          $ r Y d S t          $ r'}|j        t
          t          t          fv rY d }~d S ‚ d }~ww xY wr$   )ro   Úacceptrx   r<   r=   r   r   r   )rp   Úconnrm   Úwhys       r   r¤   zdispatcher.accept[  sˆ   € ð
	Øœ×+Ò+Ñ-Ô-‰JˆD�$ð ˜�:Ðøõ ð 	ð 	ð 	Ø�4�4Ýð 	ð 	ð 	ØŒy�[­,½Ð?Ð?Ð?Ø�t�t�t�t�tàøøøøð		øøøs   ‚" ¢
A¯	A¸AÁAÁAc                 óÞ   — 	 | j                              |¦  «        }|S # t          $ rD}|j        t          k    rY d }~dS |j        t
          v r|                      ¦   «          Y d }~dS ‚ d }~ww xY w©Nr   )ro   Úsendr<   r=   r   r>   r;   )rp   ÚdataÚresultr¦   s       r   r©   zdispatcher.sendi  s‰   € ð
	Ø”[×%Ò% dÑ+Ô+ˆFØˆMøÝð 	ð 	ð 	ØŒy�KÒ'Ð'Ø�q�q�q�q�qØ”�mÐ+Ð+Ø×!Ò!Ñ#Ô#Ð#Ø�q�q�q�q�qàøøøøð	øøøs   ‚ ž
A,¨A'¾"A'Á&A'Á'A,c                 óâ   — 	 | j                              |¦  «        }|s|                      ¦   «          dS |S # t          $ r.}|j        t
          v r|                      ¦   «          Y d }~dS ‚ d }~ww xY w©Nr"   )ro   Úrecvr;   r<   r=   r>   )rp   Úbuffer_sizerª   r¦   s       r   r®   zdispatcher.recvv  s�   € ð	Ø”;×#Ò# KÑ0Ô0ˆDØð ð ×!Ò!Ñ#Ô#Ð#Ø�sà�øÝð 	ð 	ð 	àŒy�MÐ)Ð)Ø×!Ò!Ñ#Ô#Ð#Ø�s�s�s�s�sàøøøøð	øøøs   ‚06 ´6 ¶
A.Á "A)Á(A)Á)A.c                 óú   — d| _         d| _        d| _        |                      ¦   «          | j        �J	 | j                             ¦   «          d S # t          $ r!}|j        t          t          fvr‚ Y d }~d S d }~ww xY wd S r‚   )
rk   rJ   rž   rn   ro   Úcloser<   r=   r   r   )rp   r¦   s     r   r±   zdispatcher.closeˆ  s    € ØˆŒØˆŒØˆŒØ×ÒÑÔÐØŒ;Ð"ðØ”×!Ò!Ñ#Ô#Ð#Ð#Ð#øÝð ð ð Ø”9¥X­uÐ$5Ð5Ð5Øð 6Ð5Ð5Ð5Ð5Ð5øøøøðøøøð #Ð"s   ²A Á
A8ÁA3Á3A8c                 ód   — t           j                             dt          |¦  «        z  ¦  «         d S )Nzlog: %s
)ÚsysÚstderrr/   Ústr)rp   Úmessages     r   Úlogzdispatcher.log˜  s)   € ÝŒ
×Ò˜¥s¨7¡|¤|Ñ3Ñ4Ô4Ð4Ð4Ð4r"   Úinfoc                 óD   — || j         vrt          |›d|›�¦  «         d S d S )Nz: )Úignore_log_typesÚprint)rp   r¶   r…   s      r   Úlog_infozdispatcher.log_info›  s7   € Ø�tÔ,Ð,Ð,Ý˜d˜d˜d G GÐ,Ñ-Ô-Ð-Ð-Ð-ð -Ð,r"   c                 óØ   — | j         r|                      ¦   «          d S | j        s1| j        r|                      ¦   «          |                      ¦   «          d S |                      ¦   «          d S r$   )rJ   Úhandle_acceptrk   rž   r    Úhandle_readr�   s    r   r%   zdispatcher.handle_read_eventŸ  s|   € ØŒ>ð 		ð ×ÒÑ Ô Ð Ð Ð Ø”ð 	ØŒð ,Ø×)Ò)Ñ+Ô+Ð+Ø×ÒÑÔÐÐÐà×ÒÑÔÐÐÐr"   c                 óî   — | j                              t           j        t           j        ¦  «        }|dk    rt	          |t          |¦  «        ¦  «        ‚|                      ¦   «          d| _        d| _        d S )Nr   TF)	ro   rŽ   rŒ   ÚSO_ERRORr<   r   Úhandle_connectrk   rž   ©rp   r   s     r   r    zdispatcher.handle_connect_event«  sa   € ØŒk×$Ò$¥VÔ%6½¼ÑHÔHˆØ�!Š8ˆ8Ý˜#�y¨™~œ~Ñ.Ô.Ð.Ø×ÒÑÔÐØˆŒØˆŒˆˆr"   c                 ó„   — | j         rd S | j        s| j        r|                      ¦   «          |                      ¦   «          d S r$   )rJ   rk   rž   r    Úhandle_writer�   s    r   r.   zdispatcher.handle_write_event³  sQ   € ØŒ>ð 	ð ˆFàŒ~ð 	,ØŒð ,Ø×)Ò)Ñ+Ô+Ð+Ø×ÒÑÔÐÐÐr"   c                 óÄ   — | j                              t           j        t           j        ¦  «        }|dk    r|                      ¦   «          d S |                      ¦   «          d S r¨   )ro   rŽ   rŒ   rÁ   r;   Úhandle_exptrÃ   s     r   r1   zdispatcher.handle_expt_event¾  s[   € ð Œk×$Ò$¥VÔ%6½¼ÑHÔHˆØ�!Š8ˆ8ð ×ÒÑÔÐÐÐà×ÒÑÔÐÐÐr"   c                 óî   — t          ¦   «         \  }}}}	 t          | ¦  «        }n#  dt          | ¦  «        z  }Y nxY w|                      d|›d|›d|›d|›d�	d¦  «         |                      ¦   «          d S )Nz)<__repr__(self) failed for object at %0x>z-uncaptured python exception, closing channel z (ú:rv   ú)Úerror)Úcompact_tracebackry   r{   r¼   r;   )rp   ÚnilÚtÚvÚtbinfoÚ	self_reprs         r   r'   zdispatcher.handle_errorÍ  sŸ   € Ý-Ñ/Ô/ÑˆˆQ��6ð	OÝ˜T™
œ
ˆIˆIøð	OØCÅbÈÁhÄhÑNˆIˆIˆIøøøà�Šˆà�	�	Ø��Ø��Ø��ð	ð ñ	ô 	ð 	ð 	×ÒÑÔÐÐÐs   •% ¥;c                 ó2   — |                       dd¦  «         d S )Nz!unhandled incoming priority eventre   ©r¼   r�   s    r   rÇ   zdispatcher.handle_exptá  s   € Ø�ŠÐ9¸9ÑEÔEÐEÐEÐEr"   c                 ó2   — |                       dd¦  «         d S )Nzunhandled read eventre   rÓ   r�   s    r   r¿   zdispatcher.handle_readä  s   € Ø�ŠÐ,¨iÑ8Ô8Ð8Ð8Ð8r"   c                 ó2   — |                       dd¦  «         d S )Nzunhandled write eventre   rÓ   r�   s    r   rÅ   zdispatcher.handle_writeç  s   € Ø�ŠÐ-¨yÑ9Ô9Ð9Ð9Ð9r"   c                 ó2   — |                       dd¦  «         d S )Nzunhandled connect eventre   rÓ   r�   s    r   rÂ   zdispatcher.handle_connectê  s   € Ø�ŠÐ/°Ñ;Ô;Ð;Ð;Ð;r"   c                 óJ   — |                       ¦   «         }|� | j        |Ž  d S d S r$   )r¤   Úhandle_accepted)rp   Úpairs     r   r¾   zdispatcher.handle_acceptí  s3   € Ø�{Š{‰}Œ}ˆØÐØ ˆDÔ  $Ð'Ð'Ð'Ð'ð Ðr"   c                 óZ   — |                      ¦   «          |                      dd¦  «         d S )Nzunhandled accepted eventre   )r±   r¼   )rp   rq   rm   s      r   rØ   zdispatcher.handle_acceptedò  s*   € Ø�
Š
‰ŒˆØ�ŠÐ0°)Ñ<Ô<Ð<Ð<Ð<r"   c                 óZ   — |                       dd¦  «         |                      ¦   «          d S )Nzunhandled close eventre   )r¼   r±   r�   s    r   r;   zdispatcher.handle_closeö  s(   € Ø�ŠÐ-¨yÑ9Ô9Ð9Ø�
Š
‰Œˆˆˆr"   ©NNr$   )r¸   ),r   r   r    Údebugrk   rJ   rž   Úclosingrm   Ú	frozensetrº   rr   r}   r   rn   ro   ÚAF_INETÚSOCK_STREAMr†   rj   r�   rG   rH   r™   rœ   r¢   r¤   r©   r®   r±   r·   r¼   r%   r    r.   r1   r'   rÇ   r¿   rÅ   rÂ   r¾   rØ   r;   r!   r"   r   rd   rd   ×   s4  € € € € € à€EØ€IØ€IØ€JØ€GØ€DØ �y ) Ñ-Ô-Ððð ð ð ð@<ð <ð <ð!ð !ð !ð !ðð ð ð ð $*¤>¸Ô8Jð ð ð ð ðð ð ð ð
	ð 	ð 	ð"ð ð ðð ð ð'ð 'ð 'ð&ð &ð &ð/ð /ð /ðð ð ðð ð ðð ð ð$
ð 
ð 
ð 5ð 5ð 5ð.ð .ð .ð .ð
ð 
ð 
ð ð  ð  ð	ð 	ð 	ðð ð ðð ð ð(Fð Fð Fð9ð 9ð 9ð:ð :ð :ð<ð <ð <ð(ð (ð (ð
=ð =ð =ðð ð ð ð r"   rd   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )Údispatcher_with_sendNc                 óL   — t                                | ||¦  «         d| _        d S r­   )rd   rr   Ú
out_bufferr‰   s      r   rr   zdispatcher_with_send.__init__  s%   € Ý×Ò˜D $¨Ñ,Ô,Ð,ØˆŒˆˆr"   c                 ó‚   — d}t                                | | j        d d…         ¦  «        }| j        |d …         | _        d S )Nr   i   )rd   r©   rå   )rp   Únum_sents     r   Úinitiate_sendz"dispatcher_with_send.initiate_send  s;   € ØˆÝ—?’? 4¨¬¸¸%¸Ô)@ÑAÔAˆØœ/¨(¨)¨)Ô4ˆŒˆˆr"   c                 ó.   — |                       ¦   «          d S r$   )rè   r�   s    r   rÅ   z!dispatcher_with_send.handle_write
  s   € Ø×ÒÑÔÐÐÐr"   c                 ó:   — | j          pt          | j        ¦  «        S r$   )rk   Úlenrå   r�   s    r   rH   zdispatcher_with_send.writable  s   € Ø”NÐ"Ð;¥s¨4¬?Ñ';Ô';Ð;r"   c                 ó¤   — | j         r%|                      dt          |¦  «        z  ¦  «         | j        |z   | _        |                      ¦   «          d S )Nz
sending %s)rÝ   r¼   ry   rå   rè   )rp   rª   s     r   r©   zdispatcher_with_send.send  sO   € ØŒ:ð 	5Ø�MŠM˜,­¨d©¬Ñ3Ñ4Ô4Ð4Øœ/¨DÑ0ˆŒØ×ÒÑÔÐÐÐr"   rÜ   )r   r   r    rr   rè   rÅ   rH   r©   r!   r"   r   rã   rã   ÿ  sd   € € € € € ðð ð ð ð5ð 5ð 5ð
ð ð ð<ð <ð <ðð ð ð ð r"   rã   c                  óf  — t          j        ¦   «         \  } }}g }|st          d¦  «        ‚|rQ|                     |j        j        j        |j        j        j        t          |j	        ¦  «        f¦  «         |j
        }|°Q~|d         \  }}}d                     d„ |D ¦   «         ¦  «        }|||f| ||fS )Nztraceback does not existéÿÿÿÿrv   c                 ó   — g | ]}d |z  ‘ŒS )z
[%s|%s|%s]r!   )Ú.0Úxs     r   ú
<listcomp>z%compact_traceback.<locals>.<listcomp>+  s   € Ð6Ð6Ð6¨!�\ AÑ%Ð6Ð6Ð6r"   )r³   Úexc_infoÚAssertionErrorrI   Útb_frameÚf_codeÚco_filenameÚco_namerµ   Ú	tb_linenoÚtb_nextrz   )rÎ   rÏ   ÚtbrÐ   ÚfileÚfunctionÚliner¸   s           r   rÌ   rÌ     sÓ   € ÝŒ|‰~Œ~�H€A€qˆ"Ø€FØð 9ÝÐ7Ñ8Ô8Ð8Ø
ð Ø�ŠØŒKÔÔ*ØŒKÔÔ&Ý�”ÑÔðñ 	ô 	ð 	ð
 ŒZˆð ð ð 	à! "œ:Ñ€Dˆ(�DØ�8Š8Ð6Ð6¨vÐ6Ñ6Ô6Ñ7Ô7€DØ�(˜DÐ! 1 a¨Ð-Ð-r"   c                 ó&  — | €t           } t          |                      ¦   «         ¦  «        D ]Q}	 |                     ¦   «          Œ# t          $ r}|j        t          k    rn|s‚ Y d }~Œ;d }~wt          $ r ‚  |s‚ Y ŒOxY w|                      ¦   «          d S r$   )	rD   rE   Úvaluesr±   r<   r=   r   r&   Úclear)rO   Ú
ignore_allrñ   s      r   Ú	close_allr  .  s¹   € Ø
€{ÝˆÝ�#—*’*‘,”,ÑÔð ð ˆð	Ø�GŠG‰IŒIˆIˆIøÝð 	ð 	ð 	ØŒw�%ÒÐØØð ØøøøøøøøøøÝ#ð 	ð 	ð 	Øð	Øð Øðð øøøà‡I‚I�K„K€K€K€Ks   ®AÁ
A:ÁA&Á&A:Úposixc                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd	d„ZeZeZ	d„ Z
d„ ZdS )
Úfile_wrapperc                 ó8   — t          j        |¦  «        | _        d S r$   )r   ÚduprR   ©rp   rR   s     r   rr   zfile_wrapper.__init__S  s   € Ý”f˜R‘j”jˆDŒGˆGˆGr"   c                 ó‚   — | j         dk    rt          j        d| z  t          | ¬¦  «         |                      ¦   «          d S )Nr   zunclosed file %r)Úsource)rR   ÚwarningsÚwarnÚResourceWarningr±   r�   s    r   Ú__del__zfile_wrapper.__del__V  sD   € ØŒw˜!Š|ˆ|Ý”Ð0°4Ñ7½Ø%)ð+ñ +ô +ð +à�JŠJ‰LŒLˆLˆLˆLr"   c                 ó0   — t          j        | j        g|¢R Ž S r$   )r   r*   rR   ©rp   Úargss     r   r®   zfile_wrapper.recv\  s   € Ý”7˜4œ7Ð* TÐ*Ð*Ð*Ð*r"   c                 ó0   — t          j        | j        g|¢R Ž S r$   )r   r/   rR   r  s     r   r©   zfile_wrapper.send_  s   € Ý”8˜DœGÐ+ dÐ+Ð+Ð+Ð+r"   Nc                 óh   — |t           j        k    r|t           j        k    r|sdS t          d¦  «        ‚)Nr   z-Only asyncore specific behaviour implemented.)ro   rŒ   rÁ   ÚNotImplementedError)rp   ÚlevelÚoptnameÚbuflens       r   rŽ   zfile_wrapper.getsockoptb  sA   € Ø�Ô*Ò*Ð*Ø�6œ?Ò*Ð*Øð +à�qÝ%ð '5ñ 6ô 6ð 6r"   c                 ód   — | j         dk     rd S | j         }d| _         t          j        |¦  «         d S )Nr   rî   )rR   r   r±   r	  s     r   r±   zfile_wrapper.closem  s1   € ØŒw˜Š{ˆ{Ø�Ø”ˆBØˆDŒGÝŒH�R‰LŒLˆLˆLˆLr"   c                 ó   — | j         S r$   )rR   r�   s    r   rˆ   zfile_wrapper.filenot  s	   € Ø”7ˆNr"   r$   )r   r   r    rr   r  r®   r©   rŽ   r*   r/   r±   rˆ   r!   r"   r   r  r  N  sŽ   € € € € € ð
	!ð 	!ð 	!ð	ð 	ð 	ð	+ð 	+ð 	+ð	,ð 	,ð 	,ð	6ð 	6ð 	6ð 	6ð ˆØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r"   r  c                   ó   — e Zd Zdd„Zd„ ZdS )Úfile_dispatcherNc                 óì   — t                                | d |¦  «         d| _        	 |                     ¦   «         }n# t          $ r Y nw xY w|                      |¦  «         t          j        |d¦  «         d S )NTF)rd   rr   rk   rˆ   ÚAttributeErrorÚset_filer   Úset_blocking)rp   rR   rO   s      r   rr   zfile_dispatcher.__init__y  s   € Ý×Ò  d¨CÑ0Ô0Ð0Ø!ˆDŒNðØ—Y’Y‘[”[��øÝ!ð ð ð Ø�ðøøøà�MŠM˜"ÑÔÐåŒO˜B Ñ&Ô&Ð&Ð&Ð&s   ¥: º
AÁAc                 ó’   — t          |¦  «        | _        | j                             ¦   «         | _        |                      ¦   «          d S r$   )r  ro   rˆ   rh   r   r	  s     r   r  zfile_dispatcher.set_file„  s>   € Ý& rÑ*Ô*ˆDŒKØœ;×-Ò-Ñ/Ô/ˆDŒLØ×ÒÑÔÐÐÐr"   r$   )r   r   r    rr   r  r!   r"   r   r  r  w  s7   € € € € € ð		'ð 		'ð 		'ð 		'ð	ð 	ð 	ð 	ð 	r"   r  )rB   N)r[   FNNr‚   )1Ú__doc__r4   ro   r³   rK   r  r   r=   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Ú_DEPRECATION_MSGÚ_deprecatedr   rß   r>   rD   r   r   Ú	Exceptionr   ÚKeyboardInterruptÚ
SystemExitr&   r*   r/   r2   rA   rU   rZ   Úpoll3rb   rd   rã   rÌ   r  r˜   r  r  r!   r"   r   ú<module>r)     s  ðð8ð ð* €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€à 	€	€	€	ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðNÐ à €Ô �XÐ/¸Ð @Ñ @Ô @Ð @ð �	˜: x°¸LÈ%Ø ð"ñ #ô #€ðØ€J€JøØð ð ð Ø€J€J€Jðøøøð'ð 'ð 'ð	ð 	ð 	ð 	ð 	ˆiñ 	ô 	ð 	ð  Ð!2°JÐ?Ð ðð ð ðð ð ðð ð ðð ð ð(%ð %ð %ð %ðN"ð "ð "ð "ð4 	€ðð ð ð ð$að að að að añ aô að aðP	ð ð ð ð ˜:ñ ô ð ð6.ð .ð .ð(ð ð ð ð> „7ˆgÒÐð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðRð ð ð ð ˜*ñ ô ð ð ð ðU Ðs   Á A# Á#A-Á,A-