
    F2j
/                       U d dl m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
 ej        rddlmZ ddlmZ ej        dv Ze o'ej        dk    pd	ej        v pd
ej        v p
ej        dk    Zd	ej        v pd
ej        v Zej        dk    p
ej        dk    Ze o
ej        dk    Z e ed eedd           eedd           eedd           eedd          f                    Zded<   erd dlZd dlZ G d dej                  Z	 ej        j         j!        Z"ej#        ej$        j%        ej#        ej$        j%        ej#        ej$        j%         ej&        ej$        j%                  ej#        ej#        g	e"_'        ej(        e"_)        n# e*$ r dZ"Y nw xY w	 ej        j         j+        Z,g e,_'        ej(        e,_)        n# e*$ r dZ,Y nw xY wej$        %                    d          Z-dZ.dZ/dZ0d$dZ1 e2e           e2e	          e
fd%d#Z3dS )&    )annotationsN   )DEFAULT_KEEPALIVE_IDLE_WINDOWDEFAULT_BACKGROUND_WATCH_WINDOW#DEFAULT_TCP_KEEPALIVE_ATTEMPT_COUNT)AsyncSocket)SSLTransport>   msyswin32cygwindarwinbsd	dragonflyioslinuxEBADFENOTSOCKEINVALENOTCONNzfrozenset[int]SOCKET_CLOSED_ERRNOSc                     e Zd ZdZdej        fdej        j        fdej        fdej        j	        fdej        j        fdej        j        fdej        j        fd	ej        j        fd
ej        j        fdej        j        fdej        j        fdej        fdej        fdej        j        fdej        j        fdej        j        fdej        j        fdej        j        fdej
        fgZdS )WindowsTcpInfoz
        WindowsTcpInfo structure (https://learn.microsoft.com/en-us/windows/desktop/api/mstcpip/ns-mstcpip-tcp_info_v0)

        Minimum supported client: (Windows 10, version 1703 // Windows Server 2016)
        StateMssConnectionTimeMsTimestampsEnabledRttUsMinRttUsBytesInFlightCwndSndWndRcvWndRcvBufBytesOutBytesInBytesReorderedBytesRetransFastRetrans	DupAcksInTimeoutEpisodes
SynRetransN)__name__
__module____qualname____doc__ctypesc_intwintypesULONGc_uint64BOOLEANc_uint8_fields_     a/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/urllib3/util/socket_state.pyr   r   0   s	       	 	 fl#FO)*1 &/"9:fo+,./fo34V_*+v,-v,-v,-)(v45V_23FO12&//0 566>*'
r9   r   l   '  0 i6'  i&'  i  sock*socket.socket | AsyncSocket | SSLTransportreturnboolc                t   |                                  dk    rdS t          | d          r.t          | j        dd          }|r|                                rdS 	 |                     t          j        t          j                  }|dk    rdS n# t          $ r Y dS w xY w	 | j
        t          j        z  t          j        k    rdS n(# t          $ r | j
        t          j        k    rY dS Y nw xY wt          rt          j        dv rt          t          d	d
          }nt          t          dd          }|dS 	 |                     t          j        |d          }n,# t          $ r}|j        t$          v rY d}~dS Y d}~dS d}~ww xY w|sdS t'          j        d|dd                   d         }|dk    S t*          rt          t          dd          }	 |                     t          j        |d          }n,# t          $ r}|j        t$          v rY d}~dS Y d}~dS d}~ww xY w|sdS t'          j        d|dd                   d         }|dk    S t,          rit.          dS t1          j        |                                            }t0          j                            d          }	t9                      }
t0          j                            d          }t/          |t:          t1          j        |	          t0          j                            t1          j        |	                    t1          j        |
          t0          j                            t1          j        |
                    t1          j        |          dd	  	        }|dk    r|
j         dk    S tB          &tC                      }|tD          tF          tH          fv rdS dS )a  
    Determine by best effort if the socket is closed
    without ever attempting to read from it.
    This works by trying to get the TCP current status.

    That function is extremely sensible, making change here
    must be carefully thought before even suggesting a change.
    F_writer
_transportNr   T>   r   r   TCP_CONNECTION_INFOi  TCP_INFOi   B         )%filenohasattrgetattrrA   
is_closing
getsockoptsocket
SOL_SOCKETSO_ERROROSErrortypeSOCK_STREAM	TypeErrorIS_DARWIN_OR_BSDsysplatformIPPROTO_TCPerrnor   structunpackIS_LINUXIS_NTWSAIoctl_Fnr0   c_void_pr2   DWORDr   SIO_TCP_INFOpointersizeofr   WSAGetLastError_FnWSAENOTSOCK	WSAEINVALWSA_OPERATION_ABORTED)r;   	transporterrrC   infoestaterD   sockfdinfo_versiontcp_infobytes_returnedioctl_return_codes                r:   is_establishedrr   r   s    {{}}u tY DL,==	 	--// 	5oof/AA!885    uuI**v/AAA4 B   9***44 +*  p<,,,")&2G"O"O #*&*d"C"C"*t	??6#57JDQQDD 	 	 	w...uuuuu44444		  	4]3QqS	2215 z	 L6:r22	??6#5xFFDD 	 	 	w...uuuuu44444		  	4c4!9--a0  z	 -4//,,Q//!##..q11'N<((O!!&-"="=>>N8$$O!!&-"9"9::N>**

 

 !! >Q&&+$&&C%  
 u4sT   0B 
BB"C C)(C)3!E 
E>E99E>!G. .
H8HHidleintintervalcountNonec                   	 t          |                     t          j        t          j                            }n# t
          $ r Y dS w xY w|rdS 	 |                     t          j        t          j        d           n# t
          $ r Y dS w xY wt          st          st          rt          rt          t          dd          }nt          t          dd          }|dS 	 |                     t          j        ||           n# t
          $ r Y dS w xY wt          t          d          r=	 |                     t          j        t          j        |           n# t
          $ r Y nw xY wt          t          d          r?	 |                     t          j        t          j        |           dS # t
          $ r Y dS w xY wdS t          r*d}t          t          d          rt          t          d          rt          t          d          r	 |                     t          j        t          j        |           |                     t          j        t          j        |           |                     t          j        t          j        |           d	}n# t
          $ r Y nw xY w|sTt          t          d
          rA	 |                     t          j        d|dz  |dz  f           dS # t
          $ r Y dS w xY wdS dS dS )a  Enable SO_KEEPALIVE and tune timers as portably as possible.

    Per-platform timer tuning is best-effort and silently skipped on failure.
    Do not use outside an HTTP/1.1 connection. Ping frame is the recommended
    alternative.

    If the end user already enabled tcp keepalive on the socket (e.g. via
    ``socket_options``), this function is a no-op: their configuration prime.
    NrF   TCP_KEEPALIVE   TCP_KEEPIDLETCP_KEEPINTVLTCP_KEEPCNTFTSIO_KEEPALIVE_VALSi  )r>   rM   rN   rO   SO_KEEPALIVErQ   
setsockoptr\   IS_BSD	IS_DARWINrK   rX   rJ   r|   r}   r]   r{   ioctlr~   )r;   rs   ru   rv   already_enabledidle_opt	modern_oks          r:   enable_keepaliver     sR    tv/@&BUVVWW     )6+>BBBB     16 1Y 1 	=v==HHv~t<<HF	OOF.$???? 	 	 	FF	 6?++ 	 2F4H(SSSS   6=)) 	 2F4FNNNNN   	 	
 
  	FN++	00	 ..	
 2F4GNNN 2F4H(SSS 2F4FNNN 		    	WV-ABB 	

-tX_5        / "	 	 	 	s|   7: 
AA+A< <
B
	B
!C> >
DD%+E 
EE7+F$ $
F21F2BJ 
JJ-)K 
K&%K&)r;   r<   r=   r>   )
r;   r<   rs   rt   ru   rt   rv   rt   r=   rw   )4
__future__r   rY   rV   rN   rZ   typing	_constantr   r   r   TYPE_CHECKINGcontrib.ssar   util.ssltransportr	   rW   r]   rU   r   r   r\   	frozensetfilterrK   r   __annotations__r0   ctypes.wintypes	Structurer   windllws2_32WSAIoctlr^   r_   r2   r`   POINTERargtypesr1   restypeAttributeErrorWSAGetLastErrorrd   ra   re   rf   rg   rr   rt   r   r8   r9   r:   <module>r      s   " " " " " " "  



             
 1))))))000000339 LH cl" |u	  
#,		=+"=LH$=(=	;CLG$;'0y
FGE7D))GE:t,,GE8T**GE:t,,		
 
( 
(  
 
 
 
 	 C MMM
 
 
 
 
) 
 
 
:m*3 OO!OO!OO!FN6?011OO
 
 %l   "#]1A&(#%+\"" " " "!" ?((	 L KIV V V Vv 122C7884	N N N N N N Ns%   A<F FF$F; ;GG