§
    HºiâB  ã                   ó  — 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m	Z	m
Z
 d dlmZ g d¢ZdZe j        e j        e j        hZd e j        hZej        dd…         dk    re                     e j        ¦  «         ej                             d¦  «        j        Zej        d	k    rej        Znej                             ej        ¦  «        Zd
„ Zd„ Z d„ Z!ej        dd…         dk    r#e j"        e j        hZ#e j$        e j%        e j&        hZ'n(e j"        e j        e j%        hZ#e j$        e j&        e j(        hZ'd„ Z)	 d dlm*Z* n# e+$ r  e,¦   «         Z*Y nw xY w G d„ d¦  «        Z-d„ Z.dZ/	 d dl0m1Z1 n# e+$ r  G d„ d¦  «        Z1Y nw xY wd„ Z2dS )é    N)Ú
trampolineÚnotify_openedÚIOClosed)Ú	get_errno)
ÚGreenSocketÚ_GLOBAL_DEFAULT_TIMEOUTÚset_nonblockingÚSOCKET_BLOCKINGÚSOCKET_CLOSEDÚCONNECT_ERRÚCONNECT_SUCCESSÚshutdown_safeÚSSLÚsocket_timeouti   é   ÚwinÚsocket)r   é
   c                 ó˜   — |                       |¦  «        }|t          v rdS |t          vr t          |t          j        |         ¦  «        ‚| S )z›
    Attempts to connect to the address, returns the descriptor if it succeeds,
    returns None if it needs to trampoline, and raises any exceptions.
    N)Ú
connect_exr   r   ÚOSErrorÚerrnoÚ	errorcode)Ú
descriptorÚaddressÚerrs      úZ/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/eventlet/greenio/base.pyÚsocket_connectr   "   sO   € ð
 ×
Ò
 Ñ
(Ô
(€CØ
�kÐÐØˆtØ
•/Ð!Ð!Ý�c�5œ?¨3Ô/Ñ0Ô0Ð0ØÐó    c                 ó¬   — |                       t          j        t          j        ¦  «        }|t          vr t          |t          j        |         ¦  «        ‚d S ©N)Ú
getsockoptr   Ú
SOL_SOCKETÚSO_ERRORr   r   r   r   )r   r   s     r   Úsocket_checkerrr%   /   sF   € Ø
×
Ò
¥Ô 1µ6´?Ñ
CÔ
C€CØ
•/Ð!Ð!Ý�c�5œ?¨3Ô/Ñ0Ô0Ð0ð "Ð!r   c                 ó˜   — 	 |                       ¦   «         S # t          $ r)}t          |¦  «        t          j        k    rY d}~dS ‚ d}~ww xY w)z«
    Attempts to accept() on the descriptor, returns a client,address tuple
    if it succeeds; returns None if it needs to trampoline, and raises
    any exceptions.
    N)Úacceptr   r   r   ÚEWOULDBLOCK)r   Úes     r   Úsocket_acceptr*   5   s\   € ðØ× Ò Ñ"Ô"Ð"øÝð ð ð Ý�Q‰<Œ<�5Ô,Ò,Ð,Ø�4�4�4�4�4Øøøøøðøøøs   ‚ –
A	 AÁAÁA	c                 óZ  — 	 | j         } |d¦  «         dS # t          $ rŠ 	 ddl}n# t          $ r t	          d¦  «        ‚w xY w|                      ¦   «         }|                     ||j        ¦  «        }|t          j        z  }||k    r|                     ||j	        |¦  «         Y dS Y dS w xY w)z£
    Sets the descriptor to be nonblocking.  Works on many file-like
    objects as well as sockets.  Only sockets can be nonblocking on
    Windows, however.
    r   Nznset_nonblocking() on a file object with no setblocking() method (Windows pipes don't support non-blocking I/O))
ÚsetblockingÚAttributeErrorÚfcntlÚImportErrorÚNotImplementedErrorÚfilenoÚF_GETFLÚosÚ
O_NONBLOCKÚF_SETFL)Úfdr,   r.   r1   Ú
orig_flagsÚ	new_flagss         r   r	   r	   N   sò   € ðØ”nˆð2 	ˆ�A‰Œˆˆˆøõ1 ð :ð :ð :ð

	XØˆLˆLˆLˆLøÝð 	Xð 	Xð 	Xõ &ð 'Wñ Xô Xð Xð	Xøøøð —’‘”ˆØ—[’[ ¨¬Ñ7Ô7ˆ
Ø¥¤Ñ.ˆ	Ø˜
Ò"Ð"Ø�KŠK˜ ¤¨yÑ9Ô9Ð9Ð9Ð9Ð9ð #Ð"Ð"ð):øøøs$   ‚ –
B*¡&¥B*¦A Á A#B*Â)B*)r   c                   ó  — e Zd ZdZdZej        fd„Zed„ ¦   «         Z	d„ Z
d„ Z ee
e¦  «        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#d„Zd#d„Zd$d„Zd$d„Zd„ Zd#d„Zd„ Zd#d„Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%dS )%r   a  
    Green version of socket.socket class, that is intended to be 100%
    API-compatible.

    It also recognizes the keyword parameter, 'set_nonblocking=True'.
    Pass False to indicate that socket is already in non-blocking mode
    to save syscalls.
    Nc                 ó¬  — |                      dd¦  «        }t          |t          ¦  «        r2t          |g|¢R i |¤Ž}t	          |                     ¦   «         ¦  «         n|}	 |                     ¦   «         pt          j        ¦   «         | _	        n(# t          $ r t          j        ¦   «         | _	        Y nw xY w|r'|                     ¦   «         dk    rt          |¦  «         || _        d| _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d| _        d S )Nr	   TéÿÿÿÿF)ÚpopÚ
isinstanceÚintÚ_original_socketr   r1   Ú
gettimeoutr   ÚgetdefaulttimeoutÚ_timeoutr-   r	   r6   Úact_non_blockingÚbindÚcloseÚgetsocknamer"   ÚlistenÚ
setsockoptÚshutdownÚ_closed)ÚselfÚfamilyÚargsÚkwargsÚshould_set_nonblockingr6   s         r   Ú__init__zGreenSocket.__init__„   sH  € Ø!'§¢Ð,=¸tÑ!DÔ!DÐÝ�f�cÑ"Ô"ð 	Ý! &Ð:¨4Ð:Ð:Ð:°6Ð:Ð:ˆBå˜"Ÿ)š)™+œ+Ñ&Ô&Ð&Ð&àˆBð	7ØŸMšM™OœOÐI­vÔ/GÑ/IÔ/IˆDŒMˆMøÝð 	7ð 	7ð 	7Ý"Ô4Ñ6Ô6ˆDŒMˆMˆMð	7øøøð
 "ð 	  b§i¢i¡k¤k°RÒ&7Ð&7Ý˜BÑÔÐØˆŒð !&ˆÔð ”GˆŒ	Ø”XˆŒ
Ø”iˆŒØœ>ˆÔØœ-ˆŒØ”iˆŒØœ-ˆŒØœˆŒØˆŒˆˆs   Á!,B Â"B3Â2B3c                 ó   — | S r!   © ©rK   s    r   Ú_sockzGreenSocket._sock«   s   € àˆr   c                 ó   — | j         j        S r!   ©r6   Ú_io_refsrS   s    r   Ú_get_io_refszGreenSocket._get_io_refs¯   s   € ØŒwÔÐr   c                 ó   — || j         _        d S r!   rV   )rK   Úvalues     r   Ú_set_io_refszGreenSocket._set_io_refs²   s   € Ø ˆŒÔÐÐr   c                 ó~   — | j         €t          |¦  «        ‚t          | j         |¦  «        }t          | ||¦  «         |S r!   )r6   r-   ÚgetattrÚsetattr)rK   ÚnameÚattrs      r   Ú__getattr__zGreenSocket.__getattr__¼   s?   € ØŒ7ˆ?Ý  Ñ&Ô&Ð&Ý�t”w Ñ%Ô%ˆÝ��d˜DÑ!Ô!Ð!Øˆr   Fc                 ó¨   — | j         rt          ¦   «         ‚	 t          |||||| j        ¬¦  «        S # t          $ r |                      ¦   «          ‚ w xY w)zí We need to trampoline via the event hub.
            We catch any signal back from the hub indicating that the operation we
            were waiting on was associated with a filehandle that's since been
            invalidated.
        )ÚreadÚwriteÚtimeoutÚtimeout_excÚmark_as_closed)rJ   r   r   Ú_mark_as_closed)rK   r6   rc   rd   re   rf   s         r   Ú_trampolinezGreenSocket._trampolineÃ   s}   € ð Œ<ð 	õ ‘*”*Ðð	Ý˜b t°5À'Ø*5Ø-1Ô-AðCñ Cô Cð Cøõ ð 	ð 	ð 	à× Ò Ñ"Ô"Ð"Øð	øøøs	   —1 ± Ac                 óÚ  — | j         rB| j                             ¦   «         }t          |d                              ¦   «         ¦  «         |S | j        }t          d¦  «        }	 t          |¦  «        }|�O|\  }}t          |                     ¦   «         ¦  «         t          |¦  «          t          | ¦  «        |¦  «        |fS |  	                    |d|  
                    ¦   «         |¬¦  «         ŒŒ)Nr   ú	timed outT©rc   re   rf   )rC   r6   r'   r   r1   r   r*   r	   Útyperi   r@   )rK   Úresr6   Ú_timeout_excÚclientÚaddrs         r   r'   zGreenSocket.acceptÖ   sß   € ØÔ ð 	Ø”'—.’.Ñ"Ô"ˆCÝ˜#˜aœ&Ÿ-š-™/œ/Ñ*Ô*Ð*ØˆJØŒWˆÝ% kÑ2Ô2ˆð	aÝ Ñ#Ô#ˆCØˆØ"‘�˜Ý˜fŸmšm™oœoÑ.Ô.Ð.Ý Ñ'Ô'Ð'Ø!•t˜D‘z”z &Ñ)Ô)¨4Ð/Ð/Ø×Ò˜R d°D·O²OÑ4EÔ4EÐS_ÐÑ`Ô`Ð`ð	ar   c                 ó   — d| _         dS )z" Mark this socket as being closed TN)rJ   rS   s    r   rh   zGreenSocket._mark_as_closedæ   s   € àˆŒˆˆr   c                 óD   — t          | dd ¦  «        }|� |¦   «          d S d S )NrE   )r]   )rK   rE   s     r   Ú__del__zGreenSocket.__del__ê   s0   € å˜˜g tÑ,Ô,ˆØÐØˆE‰GŒGˆGˆGˆGð Ðr   c                 óö  — | j         r| j                             |¦  «        S | j        }t          d¦  «        }|                      ¦   «         €st          ||¦  «        sa	 |                      |d¬¦  «         n'# t          $ r t          t          j
        ¦  «        ‚w xY wt          |¦  «         t          ||¦  «        ¯_d S d S t          j        ¦   «         |                      ¦   «         z   }	 t          ||¦  «        rd S t          j        ¦   «         |k    r|‚|t          j        ¦   «         z
  }	 |                      |d||¬¦  «         n'# t          $ r t          t          j
        ¦  «        ‚w xY wt          |¦  «         Œ“)Nrk   T©rd   ©rd   re   rf   )rC   r6   Úconnectr   r@   r   ri   r   r   r   ÚEBADFDr%   Útime)rK   r   r6   ro   Úendre   s         r   rx   zGreenSocket.connectð   sž  € ØÔ ð 	,Ø”7—?’? 7Ñ+Ô+Ð+ØŒWˆÝ% kÑ2Ô2ˆØ�?Š?ÑÔÐ$Ý$ R¨Ñ1Ô1ð $ð0Ø×$Ò$ R¨tÐ$Ñ4Ô4Ð4Ð4øÝð 0ð 0ð 0Ý!¥%¤,Ñ/Ô/Ð/ð0øøøå Ñ#Ô#Ð#õ % R¨Ñ1Ô1ð $ð $ð $ð $ð $õ ”)‘+”+ §¢Ñ 1Ô 1Ñ1ˆCð$Ý! " gÑ.Ô.ð Ø�FÝ”9‘;”; #Ò%Ð%Ø&Ð&Ø¥¤	¡¤Ñ+�ð0Ø×$Ò$ R¨t¸WÐR^Ð$Ñ_Ô_Ð_Ð_øÝð 0ð 0ð 0å!¥%¤,Ñ/Ô/Ð/ð0øøøõ   Ñ#Ô#Ð#ð$s   ÁA5 Á5$BÄ*E Å$E(c                 óJ  — | j         r| j                             |¦  «        S | j        }|                      ¦   «         €yt	          ||¦  «        sg	 |                      |d¬¦  «         t          |¦  «         n=# t          $ r}t          |¦  «        cY d }~S d }~wt          $ r t          j        cY S w xY wdS d S t          j        ¦   «         |                      ¦   «         z   }t          j        t          j        ¦  «        }	 	 t	          ||¦  «        rdS t          j        ¦   «         |k    r|‚|                      |d|t          j        ¦   «         z
  |¬¦  «         t          |¦  «         n=# t          $ r}t          |¦  «        cY d }~S d }~wt          $ r t          j        cY S w xY wdS )NTrv   r   rw   )rC   r6   r   r@   r   ri   r%   r   r   r   r   ry   rz   r   re   ÚEAGAIN)rK   r   r6   Úexr{   rf   s         r   r   zGreenSocket.connect_ex  sê  € ØÔ ð 	/Ø”7×%Ò% gÑ.Ô.Ð.ØŒWˆØ�?Š?ÑÔÐ$Ý$ R¨Ñ1Ô1ð ð(Ø×$Ò$ R¨tÐ$Ñ4Ô4Ð4Ý# BÑ'Ô'Ð'Ð'øÝð )ð )ð )Ý$ R™=œ=Ð(Ð(Ð(Ð(Ð(Ð(øøøøÝð (ð (ð (Ý œ<Ð'Ð'Ð'ð(øøøà�qðð õ ”)‘+”+ §¢Ñ 1Ô 1Ñ1ˆCÝ œ.­¬Ñ6Ô6ˆKðð(Ý% b¨'Ñ2Ô2ð !Ø ˜qÝ”y‘{”{ cÒ)Ð)Ø)Ð)Ø×$Ò$ R¨t¸SÅ4Ä9Á;Ä;Ñ=NØ1<ð %ñ >ô >ð >å# BÑ'Ô'Ð'Ð'øÝð )ð )ð )Ý$ R™=œ=Ð(Ð(Ð(Ð(Ð(Ð(øøøøÝð (ð (ð (Ý œ<Ð'Ð'Ð'ð(øøøà�qsO   Á&A5 Á5
B/Á?BÂB/ÂB/Â.B/Ã>E& ÄAE& Å&
F Å0FÅ>F ÆF ÆF c                 ó¬   —  | j         j        |i |¤Ž} t          | ¦  «        |d¬¦  «        }|                     |                      ¦   «         ¦  «         |S )NF)r	   )r6   Úduprm   Ú
settimeoutr@   )rK   rM   ÚkwÚsockÚnewsocks        r   r€   zGreenSocket.dup+  sW   € ØˆtŒwŒ{˜DÐ' BÐ'Ð'ˆØ•$�t‘*”*˜T°5Ð9Ñ9Ô9ˆØ×Ò˜4Ÿ?š?Ñ,Ô,Ñ-Ô-Ð-Øˆr   c                 ó,   — t          j        | g|¢R i |¤ŽS r!   )r?   Úmakefile)rK   rM   rN   s      r   r†   zGreenSocket.makefile1  s#   € ÝÔ(¨Ð?°Ð?Ð?Ð?¸Ð?Ð?Ð?r   c                 óT   — t          j        dt          d¬¦  «          | j        |i |¤ŽS )Nz>makeGreenFile has been deprecated, please use makefile insteadé   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr†   )rK   rM   r‚   s      r   ÚmakeGreenFilezGreenSocket.makeGreenFile4  s@   € ÝŒð )Ý*<Èð	Lñ 	Lô 	Lð 	LàˆtŒ}˜dÐ) bÐ)Ð)Ð)r   c                 ó€   — |                       | j        d|                      ¦   «         t          d¦  «        ¬¦  «         d S )NTrk   rl   )ri   r6   r@   r   rS   s    r   Ú_read_trampolinezGreenSocket._read_trampoline9  sI   € Ø×ÒØŒGØØ—O’OÑ%Ô%Ý& {Ñ3Ô3ð	 	ñ 	5ô 	5ð 	5ð 	5ð 	5r   c                 óf  — | j         r ||Ž S 	 	 |d         s|                      ¦   «           ||Ž S # t          $ r?}t          |¦  «        t          v rnt          |¦  «        t
          v r|cY d }~S ‚ Y d }~nd }~ww xY w	 |                      ¦   «          n # t          $ r}t          ¦   «         ‚d }~ww xY wŒ¥)NTr   )rC   r�   r   r   r
   r   r   ÚEOFError)rK   Ú	recv_methÚ	empty_valrM   r)   s        r   Ú
_recv_loopzGreenSocket._recv_loop@  s  € ØÔ ð 	$Ø�9˜dÐ#Ð#ð	!ðð ˜A”wð ,Ø×)Ò)Ñ+Ô+Ð+Ø �y $Ð'Ð'øÝð ð ð Ý˜Q‘<”<¥?Ð2Ð2ØÝ˜q‘\”\¥]Ð2Ð2Ø$Ð$Ð$Ð$Ð$Ð$Ð$àð	 �D�D�D�Døøøøðøøøð!Ø×%Ò%Ñ'Ô'Ð'Ð'øÝð !ð !ð !å‘j”jÐ øøøøð!øøøð/	!s8   � 0 °
A9º.A4Á(A9Á.A4Á4A9Á=B Â
B/ÂB*Â*B/r   c                 óF   — |                       | j        j        d||¦  «        S ©Nr   )r”   r6   Úrecv©rK   ÚbufsizeÚflagss      r   r—   zGreenSocket.recv_  s   € Ø�Š˜tœwœ|¨S°'¸5ÑAÔAÐAr   c                 óF   — |                       | j        j        d||¦  «        S r–   )r”   r6   Úrecvfromr˜   s      r   rœ   zGreenSocket.recvfromb  s   € Ø�Š˜tœwÔ/°°g¸uÑEÔEÐEr   c                 óH   — |                       | j        j        d|||¦  «        S ©Nr   )r”   r6   Ú	recv_into©rK   ÚbufferÚnbytesrš   s       r   rŸ   zGreenSocket.recv_intoe  s!   € Ø�Š˜tœwÔ0°!°V¸VÀUÑKÔKÐKr   c                 óH   — |                       | j        j        d|||¦  «        S rž   )r”   r6   Úrecvfrom_intor    s       r   r¤   zGreenSocket.recvfrom_intoh  s!   € Ø�Š˜tœwÔ4°a¸ÀÈÑOÔOÐOr   c                 óŒ  — | j         r	 ||g|¢R Ž S t          d¦  «        }	 	  ||g|¢R Ž S # t          $ r3}t          |¦  «        }|t          j        k    s	|t          vr‚ Y d }~nd }~ww xY w	 |                      | j        d|  	                    ¦   «         |¬¦  «         n(# t          $ r t          t          j        d¦  «        ‚w xY wŒ¥)Nrk   Trw   z#Connection closed by another thread)rC   r   r   r   r   ÚENOTCONNr
   ri   r6   r@   r   Ú
ECONNRESET)rK   Úsend_methodÚdatarM   ro   r)   Úenos          r   Ú
_send_loopzGreenSocket._send_loopk  s!  € ØÔ ð 	,Ø�;˜tÐ+ dÐ+Ð+Ð+Ð+å% kÑ2Ô2ˆð	WðØ"�{ 4Ð/¨$Ð/Ð/Ð/Ð/øÝð ð ð Ý ‘l”l�Ø�%œ.Ò(Ð(¨CµÐ,FÐ,FØð -GÐ,FÐ,FÐ,FÐ,Føøøøðøøøð
WØ× Ò  ¤°¸d¿oºoÑ>OÔ>OØ-9ð !ñ ;ô ;ð ;ð ;øåð Wð Wð WÝ�eÔ.Ð0UÑVÔVÐVðWøøøð	Ws    ¢+ «
A(µ)A#Á#A(Á,0B Â%Cc                 óD   — |                       | j        j        ||¦  «        S r!   )r«   r6   Úsend)rK   r©   rš   s      r   r­   zGreenSocket.send~  s   € Ø�Š˜tœwœ|¨T°5Ñ9Ô9Ð9r   c                 ó4   —  | j         | j        j        |g|¢R Ž S r!   )r«   r6   Úsendto)rK   r©   rM   s      r   r¯   zGreenSocket.sendto�  s"   € ØˆtŒ˜tœwœ~¨tÐ;°dÐ;Ð;Ð;Ð;r   c                 ó®   — |                       ||¦  «        }t          |¦  «        }||k     r)||                       ||d …         |¦  «        z  }||k     °'d S d S r!   )r­   Úlen)rK   r©   rš   ÚtailÚlen_datas        r   ÚsendallzGreenSocket.sendall„  s\   € Ø�yŠy˜˜uÑ%Ô%ˆÝ�t‘9”9ˆØ�XŠoˆoØ�D—I’I˜d 4 5 5œk¨5Ñ1Ô1Ñ1ˆDð �XŠoˆoˆoˆoˆoˆor   c                 óF   — |rd| _         d | _        d S d| _         d| _        d S )NFTç        )rC   rB   )rK   Úflags     r   r,   zGreenSocket.setblockingŠ  s0   € Øð 	 Ø$)ˆDÔ!Ø ˆDŒMˆMˆMà$(ˆDÔ!ØˆDŒMˆMˆMr   c                 ó   — |�|t           k    r|                      d¦  «         d S 	 |j        }n# t          $ r t	          d¦  «        ‚w xY w |¦   «         }|dk     rt          d¦  «        ‚|dk    rd| _        d| _        d S d| _        || _        d S )NTza float is requiredr¶   zTimeout value out of rangeF)r   r,   Ú	__float__r-   Ú	TypeErrorÚ
ValueErrorrC   rB   )rK   ÚhowlongÚfs      r   r�   zGreenSocket.settimeout’  s¶   € Øˆ?˜gÕ)@Ò@Ð@Ø×Ò˜TÑ"Ô"Ð"ØˆFð	3ØÔ!ˆAˆAøÝð 	3ð 	3ð 	3ÝÐ1Ñ2Ô2Ð2ð	3øøøà�!‘#”#ˆØ�SŠ=ˆ=ÝÐ9Ñ:Ô:Ð:Ø�cŠ>ˆ>Ø$(ˆDÔ!ØˆDŒMˆMˆMà$)ˆDÔ!Ø#ˆDŒMˆMˆMs	   ¦. ®Ac                 ó   — | j         S r!   )rB   rS   s    r   r@   zGreenSocket.gettimeout¤  s
   € ØŒ}Ðr   c                 ó   — | S r!   rR   rS   s    r   Ú	__enter__zGreenSocket.__enter__§  s   € Øˆr   c                 ó.   — |                       ¦   «          d S r!   )rE   )rK   rM   s     r   Ú__exit__zGreenSocket.__exit__ª  s   € Ø�
Š
‰Œˆˆˆr   )FFNN)r   )r   r   )&Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   r   ÚAF_INETrP   ÚpropertyrT   rX   r[   rW   ra   ri   r'   rh   rt   rx   r   r€   r†   r�   r�   r”   r—   rœ   rŸ   r¤   r«   r­   r¯   r´   r,   r�   r@   rÀ   rÂ   rR   r   r   r   r   w   s?  € € € € € ðð ð 
€Bà$œnð %ð %ð %ð %ðN ðð ñ „Xðð ð  ð  ð!ð !ð !ð ˆx˜ lÑ3Ô3€Hðð ð ðð ð ð ð&að að að ð ð ðð ð ð$ð $ð $ð6ð ð ð@ð ð ð@ð @ð @ð*ð *ð *ð
5ð 5ð 5ð!ð !ð !ð>Bð Bð Bð BðFð Fð Fð FðLð Lð Lð LðPð Pð Pð PðWð Wð Wð&:ð :ð :ð :ð<ð <ð <ð2ð 2ð 2ð 2ð ð  ð  ð$ð $ð $ð$ð ð ðð ð ðð ð ð ð r   r   c                  ó    — t          d¦  «        ‚)NzI/O operation on closed file)r»   )rM   rN   s     r   Ú_operation_on_closed_filerÊ   ®  s   € Ý
Ð3Ñ
4Ô
4Ð4r   a  
    GreenPipe is a cooperative replacement for file class.
    It will cooperate on pipes. It will block on regular file.
    Differences from file class:
    - mode is r/w property. Should re r/o
    - encoding property not implemented
    - write/writelines will not raise TypeError exception when non-string data is written
      it will write str(data) instead
    - Universal new lines are not supported and newlines property not implementeded
    - file argument can be descriptor, file name or file object.
    )r   c                   ó~   — e Zd Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd	S )
r   c                   ó   — e Zd ZdS )úSSL.WantWriteErrorN©rÃ   rÄ   rÅ   rR   r   r   ÚWantWriteErrorrÍ   Ä  ó   € € € € € ØˆDr   rÏ   c                   ó   — e Zd ZdS )úSSL.WantReadErrorNrÎ   rR   r   r   ÚWantReadErrorrÒ   Ç  rÐ   r   rÓ   c                   ó   — e Zd ZdS )úSSL.ZeroReturnErrorNrÎ   rR   r   r   ÚZeroReturnErrorrÕ   Ê  rÐ   r   rÖ   c                   ó   — e Zd ZdS )úSSL.SysCallErrorNrÎ   rR   r   r   ÚSysCallErrorrØ   Í  rÐ   r   rÙ   N)rÃ   rÄ   rÅ   Ú	ExceptionrÏ   rÓ   rÖ   rÙ   rR   r   r   r   r   Ã  s¼   € € € € € ð	ð 	ð 	ð 	ð 	˜Yñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜Iñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜iñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜9ñ 	ô 	ð 	ð 	ð 	r   r   c                 ó"  — 	 	 |                       t          j        ¦  «        S # t          $ r |                       ¦   «         cY S w xY w# t          $ r>}t          |¦  «        t          j        t          j        t          j	        fvr‚ Y d}~dS d}~ww xY w)a¥  Shuts down the socket. This is a convenience method for
    code that wants to gracefully handle regular sockets, SSL.Connection
    sockets from PyOpenSSL and ssl.SSLSocket objects from Python 2.7 interchangeably.
    Both types of ssl socket require a shutdown() before close,
    but they have different arity on their shutdown method.

    Regular sockets don't need a shutdown before close, but it doesn't hurt.
    N)
rI   r   Ú	SHUT_RDWRrº   r   r   r   r¦   ÚEBADFÚENOTSOCK)rƒ   r)   s     r   r   r   Ñ  s©   € ðð	#à—=’=¥Ô!1Ñ2Ô2Ð2øÝð 	#ð 	#ð 	#à—=’=‘?”?Ð"Ð"Ð"ð	#øøøøõ ð ð ð õ �Q‰<Œ<¥¤µ´½U¼^ÐLÐLÐLØð MÐLÐLÐLÐLÐLøøøøðøøøs-   ƒ" ¢AÁ A ÁAÁA Á
BÁ3B	Â	B)3r   r3   r   Úsysrz   rŠ   ÚeventletÚeventlet.hubsr   r   r   Úeventlet.supportr   Ú__all__ÚBUFFER_SIZEÚEINPROGRESSÚEALREADYr(   r   ÚEISCONNr   ÚplatformÚaddÚ	WSAEINVALÚpatcherÚoriginalr?   Úversion_infore   r   Úwrap_is_timeoutr   r%   r*   r}   r
   r§   r¦   Ú	ESHUTDOWNr   ÚEPIPEr	   r   r/   Úobjectr   rÊ   Úgreenpipe_docÚOpenSSLr   r   rR   r   r   ú<module>rô      sÐ  ðØ €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø &Ð &Ð &Ð &Ð &Ð &ðð ð €ð €ØÔ  %¤.°%Ô2CÐD€Ø�e”mÐ$€Ø„<���Ô�uÒÐØ‡O‚O�E”OÑ$Ô$Ð$àÔ#×,Ò,¨XÑ6Ô6Ô=Ð ð Ô�wÒÐØ”^€N€NàÔ%×5Ò5°f´nÑEÔE€Nð
ð 
ð 
ð1ð 1ð 1ðð ð ð „<���Ô�uÒÐà”| UÔ%6Ð7€OØÔ% u¤~°u´ÐG€M€Mð ”| UÔ%6¸¼ÐG€OØÔ% u¤¸¼ÐD€Mð ð  ð  ðF'Ø.Ð.Ð.Ð.Ð.Ð.Ð.øØð 'ð 'ð 'Ø$˜f™hœhÐÐÐð'øøøðtð tð tð tð tñ tô tð tðn	5ð 5ð 5ð
€ðØÐÐÐÐÐÐøØð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð ð ð ð ð s$   Ä9E  Å EÅEÅ(E/ Å/FÆF