§
    „h²  ã                   óÚ   — 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  G d„ d¦  «        Z	 G d„ de	¦  «        Z
 G d„ de
¦  «        Z G d	„ d
e	¦  «        Zd„ Zdd„Zdd„Zd„ Zd„ ZdS )é    N)Úutilc                   ó6   — e Zd Zd	d„Zd„ Zd„ Zd
d„Zd„ Zd„ ZdS )Ú
BaseSocketNc                 ó0  — || _         || _        || _        |€'t          j        | j        t          j        ¦  «        }d}n;t          j        || j        t          j        ¦  «        }t          j        |¦  «         d}|  	                    ||¬¦  «        | _
        d S )NFT©Úbound)ÚlogÚconfÚcfg_addrÚsocketÚFAMILYÚSOCK_STREAMÚfromfdÚosÚcloseÚset_optionsÚsock)ÚselfÚaddressr
   r	   Úfdr   r   s          úD/var/www/histauto/venv/lib/python3.11/site-packages/gunicorn/sock.pyÚ__init__zBaseSocket.__init__   s�   € ØˆŒØˆŒ	àˆŒØˆ:Ý”= ¤­fÔ.@ÑAÔAˆDØˆEˆEå”=  T¤[µ&Ô2DÑEÔEˆDÝŒH�R‰LŒLˆLØˆEà×$Ò$ T°Ð$Ñ7Ô7ˆŒ	ˆ	ˆ	ó    c                 ó:   — d| j                              ¦   «         z  S )Nz<socket %d>)r   Úfileno©r   s    r   Ú__str__zBaseSocket.__str__!   s   € Ø˜tœy×/Ò/Ñ1Ô1Ñ1Ð1r   c                 ó,   — t          | j        |¦  «        S ©N)Úgetattrr   )r   Únames     r   Ú__getattr__zBaseSocket.__getattr__$   s   € Ý�t”y $Ñ'Ô'Ð'r   Fc                 óF  — |                      t          j        t          j        d¦  «         | j        j        ryt          t          d¦  «        rd	 |                      t          j        t          j        d¦  «         n7# t          $ r*}|j	        t          j
        t          j        fvr‚ Y d }~nd }~ww xY w|s|                      |¦  «         |                     d¦  «         t          |d¦  «        r|                     d¦  «         |                     | j        j        ¦  «         |S )Né   ÚSO_REUSEPORTr   Úset_inheritableT)Ú
setsockoptr   Ú
SOL_SOCKETÚSO_REUSEADDRr
   Ú
reuse_portÚhasattrr%   ÚOSErrorÚerrnoÚENOPROTOOPTÚEINVALÚbindÚsetblockingr&   ÚlistenÚbacklog)r   r   r   Úerrs       r   r   zBaseSocket.set_options'   s  € Ø�Š�Ô)­6Ô+>ÀÑBÔBÐBØŒIÔ ð 	Ý�F NÑ3Ô3ð	ðØ—’¥Ô 1µ6Ô3FÈÑJÔJÐJÐJøÝð ð ð Ø”9¥UÔ%6½¼Ð$EÐEÐEØð FÐEÐEÐEÐEøøøøðøøøð ð 	Ø�IŠI�d‰OŒOˆOØ×Ò˜ÑÔÐõ �4Ð*Ñ+Ô+ð 	'Ø× Ò  Ñ&Ô&Ð&à�Š�D”IÔ%Ñ&Ô&Ð&Øˆs   Á+A: Á:
B.Â B)Â)B.c                 ó:   — |                      | j        ¦  «         d S r   )r0   r   )r   r   s     r   r0   zBaseSocket.bind;   s   € Ø�	Š	�$”-Ñ Ô Ð Ð Ð r   c                 óÚ   — | j         €d S 	 | j                              ¦   «          n?# t          $ r2}| j                             dt          |¦  «        ¦  «         Y d }~nd }~ww xY wd | _         d S )NzError while closing socket %s)r   r   r,   r	   ÚinfoÚstr)r   Úes     r   r   zBaseSocket.close>   s†   € ØŒ9ÐØˆFð	CØŒI�OŠOÑÔÐÐøÝð 	Cð 	Cð 	CØŒH�MŠMÐ9½3¸q¹6¼6ÑBÔBÐBÐBÐBÐBÐBÐBøøøøð	Cøøøð ˆŒ	ˆ	ˆ	s   ‹% ¥
A!¯(AÁA!r   ©F)	Ú__name__Ú
__module__Ú__qualname__r   r   r"   r   r0   r   © r   r   r   r      sx   € € € € € ð8ð 8ð 8ð 8ð2ð 2ð 2ð(ð (ð (ðð ð ð ð(!ð !ð !ð	ð 	ð 	ð 	ð 	r   r   c                   ó4   ‡ — e Zd Zej        Zd„ Zdˆ fd„	Zˆ xZS )Ú	TCPSocketc                 ó~   — | j         j        rd}nd}| j                             ¦   «         }d||d         |d         fz  S )NÚhttpsÚhttpz
%s://%s:%dr   r$   )r
   Úis_sslr   Úgetsockname)r   ÚschemeÚaddrs      r   r   zTCPSocket.__str__N   sH   € ØŒ9Ôð 	ØˆFˆFàˆFàŒy×$Ò$Ñ&Ô&ˆØ˜v t¨A¤w°°Q´Ð8Ñ8Ð8r   Fc                 ó    •— |                      t          j        t          j        d¦  «         t	          ¦   «                              ||¬¦  «        S )Nr$   r   )r'   r   ÚIPPROTO_TCPÚTCP_NODELAYÚsuperr   )r   r   r   Ú	__class__s      €r   r   zTCPSocket.set_optionsW   s<   ø€ Ø�Š�Ô*­FÔ,>ÀÑBÔBÐBÝ‰wŒw×"Ò" 4¨uÐ"Ñ5Ô5Ð5r   r:   )	r;   r<   r=   r   ÚAF_INETr   r   r   Ú__classcell__©rL   s   @r   r@   r@   J   sS   ø€ € € € € àŒ^€Fð9ð 9ð 9ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r   r@   c                   ó"   — e Zd Zej        Zd„ ZdS )Ú
TCP6Socketc                 óL   — | j                              ¦   «         \  }}}}d||fz  S )Nzhttp://[%s]:%d)r   rE   )r   ÚhostÚportÚ_s       r   r   zTCP6Socket.__str__`   s-   € Ø!œY×2Ò2Ñ4Ô4Ñˆˆt�Q˜Ø 4¨ ,Ñ.Ð.r   N)r;   r<   r=   r   ÚAF_INET6r   r   r>   r   r   rQ   rQ   \   s*   € € € € € àŒ_€Fð/ð /ð /ð /ð /r   rQ   c                   ó:   ‡ — e Zd Zej        Zdˆ fd„	Zd„ Zd„ Zˆ xZ	S )Ú
UnixSocketNc                 óf  •— |€ˆ	 t          j        |¦  «        }t          j        |j        ¦  «        rt          j        |¦  «         nEt          d|z  ¦  «        ‚# t          $ r&}|j        d         t          j	        k    r‚ Y d }~nd }~ww xY wt          ¦   «                              ||||¬¦  «         d S )Nz%r is not a socketr   ©r   )r   ÚstatÚS_ISSOCKÚst_modeÚremoveÚ
ValueErrorr,   Úargsr-   ÚENOENTrK   r   )r   rG   r
   r	   r   Ústr9   rL   s          €r   r   zUnixSocket.__init__i   sÆ   ø€ Øˆ:ð	BÝ”W˜T‘]”]�õ
 ”= ¤Ñ,Ô,ð BÝ”I˜d‘O”O�O�Oå$Ð%9¸DÑ%@ÑAÔAÐAøõ ð ð ð Ø”6˜!”9¥¤Ò,Ð,Øð -Ð,Ð,Ð,Ð,øøøøðøøøõ 	‰Œ×Ò˜˜t S¨RÐÑ0Ô0Ð0Ð0Ð0s   …A Á
B	Á#BÂB	c                 ó   — d| j         z  S )Nzunix:%s)r   r   s    r   r   zUnixSocket.__str__w   s   € Ø˜4œ=Ñ(Ð(r   c                 óü   — t          j        | j        j        ¦  «        }|                     | j        ¦  «         t          j        | j        | j        j        | j        j        ¦  «         t          j        |¦  «         d S r   )	r   Úumaskr
   r0   r   r   ÚchownÚuidÚgid)r   r   Ú	old_umasks      r   r0   zUnixSocket.bindz   s]   € Ý”H˜TœYœ_Ñ-Ô-ˆ	Ø�	Š	�$”-Ñ Ô Ð ÝŒ
�4”= $¤)¤-°´´Ñ?Ô?Ð?Ý
Œ�ÑÔÐÐÐr   r   )
r;   r<   r=   r   ÚAF_UNIXr   r   r   r0   rN   rO   s   @r   rX   rX   e   sb   ø€ € € € € àŒ^€Fð1ð 1ð 1ð 1ð 1ð 1ð)ð )ð )ðð ð ð ð ð ð r   rX   c                 óð   — t          | t          ¦  «        r*t          j        | d         ¦  «        rt          }n>t
          }n6t          | t          t          f¦  «        rt          }nt          d| z  ¦  «        ‚|S )Nr   z Unable to create socket from: %r)
Ú
isinstanceÚtupler   Úis_ipv6rQ   r@   r8   ÚbytesrX   Ú	TypeError)rG   Ú	sock_types     r   Ú
_sock_typerr   �   sq   € Ý�$�ÑÔð CÝŒ<˜˜QœÑ Ô ð 	"Ý"ˆIˆIå!ˆIˆIÝ	�D�3¥˜,Ñ	'Ô	'ð CÝˆ	ˆ	åÐ:¸TÑAÑBÔBÐBØÐr   c                 ó�  — g }| j         }d„ |D ¦   «         }|r|t          |¦  «        z  }d„ |D ¦   «         }| j        r;t          j                             | j        ¦  «        st          d| j        z  ¦  «        ‚| j        r;t          j                             | j        ¦  «        st          d| j        z  ¦  «        ‚|rx|D ]s}t          j	        |t          j
        t          j        ¦  «        }|                     ¦   «         }	t          |	¦  «        }
 |
|	| ||¬¦  «        }|                     |¦  «         Œt|S |D �]Ž}t          |¦  «        }
d}t          d¦  «        D �]}	  |
|| |¦  «        } �n	# t           $ rü}|j        d         t$          j        k    r#|                     d	t+          |¦  «        ¦  «         |j        d         t$          j        k    r#|                     d
t+          |¦  «        ¦  «         d}|                     |                     t+          |¦  «        t+          |¦  «        ¬¦  «        ¦  «         |dk     r)|                     d¦  «         t3          j        d¦  «         Y d}~�Œd}~ww xY w|€7|                     dt+          |¦  «        ¦  «         t7          j        d¦  «         |                     |¦  «         �Œ�|S )zì
    Create a new socket for the configured addresses or file descriptors.

    If a configured address is a tuple then a TCP socket is created.
    If it is a string, a Unix socket is created. Otherwise, a TypeError is
    raised.
    c                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r>   ©rl   Úint©Ú.0r0   s     r   ú
<listcomp>z"create_sockets.<locals>.<listcomp>š   s'   € Ð=Ð=Ð=�t¥z°$½Ñ'<Ô'<Ð=ˆdÐ=Ð=Ð=r   c                 ó<   — g | ]}t          |t          ¦  «        °|‘ŒS r>   ru   rw   s     r   ry   z"create_sockets.<locals>.<listcomp>�   s'   € Ð@Ð@Ð@�d­*°T½3Ñ*?Ô*?Ð@ˆTÐ@Ð@Ð@r   zcertfile "%s" does not existzkeyfile "%s" does not existrZ   Né   r   zConnection in use: %szInvalid address: %sz$connection to {addr} failed: {error})rG   ÚerrorzRetrying in 1 second.r$   zCan't connect to %s)r   ÚlistÚcertfiler   ÚpathÚexistsr_   Úkeyfiler   r   rj   r   rE   rr   ÚappendÚranger,   r`   r-   Ú
EADDRINUSEr|   r8   ÚEADDRNOTAVAILÚformatÚdebugÚtimeÚsleepÚsysÚexit)r
   r	   ÚfdsÚ	listenersrG   ÚfdaddrÚladdrr   r   Ú	sock_namerq   ÚlistenerÚir9   Úmsgs                  r   Úcreate_socketsr”   Ž   sË  € ð €Ið Œ<€DØ=Ð=˜tÐ=Ñ=Ô=€FØ
ð Ø•$�s‘)”)ÑˆØ@Ð@˜dÐ@Ñ@Ô@€Eð „}ð I�RœWŸ^š^¨D¬MÑ:Ô:ð IÝÐ7¸$¼-ÑGÑHÔHÐHà„|ð G�BœGŸNšN¨4¬<Ñ8Ô8ð GÝÐ6¸¼ÑEÑFÔFÐFð ð Øð 	'ð 	'ˆBÝ”= ¥V¤^µVÔ5GÑHÔHˆDØ×(Ò(Ñ*Ô*ˆIÝ" 9Ñ-Ô-ˆIØ �y ¨D°#¸"Ð=Ñ=Ô=ˆHØ×Ò˜XÑ&Ô&Ð&Ð&àÐð ð ñ ˆÝ˜tÑ$Ô$ˆ	ØˆÝ�q‘”ð 	ñ 	ˆAðØ �y  t¨SÑ1Ô1�ð ‘øõ ð 	"ð 	"ð 	"Ø”6˜!”9¥Ô 0Ò0Ð0Ø—I’IÐ5µs¸4±y´yÑAÔAÐAØ”6˜!”9¥Ô 3Ò3Ð3Ø—I’IÐ3µS¸±Y´YÑ?Ô?Ð?Ø<�Ø—	’	˜#Ÿ*š*­#¨d©)¬)½3¸q¹6¼6˜*ÑBÔBÑCÔCÐCØ�q’5�5Ø—I’IÐ5Ñ6Ô6Ð6Ý”J˜q‘M”M�Møøøøùøøøøð	"øøøð ˆ<Ø�IŠIÐ+­S°©Y¬YÑ7Ô7Ð7ÝŒH�Q‰KŒKˆKà×Ò˜ÑÔÐÑàÐs   ÅE-Å-
I3Å7C1I.É.I3Tc                 ó¸   — | D ]V}|                      ¦   «         }|                     ¦   «          |r*t          |¦  «        t          u rt	          j        |¦  «         ŒWd S r   )rE   r   rr   rX   r   Úunlink)r�   r–   r   r�   s       r   Úclose_socketsr—   Ï   sd   € Øð !ð !ˆØ×$Ò$Ñ&Ô&ˆ	Ø�
Š
‰ŒˆØð 	!•j Ñ+Ô+­zÐ9Ð9ÝŒI�iÑ Ô Ð øð	!ð !r   c                 ó:   ‡ — ˆ fd„}‰                       ‰ |¦  «        S )Nc                  óø   •— t          j        t           j        j        ‰j        ¬¦  «        } |                      ‰j        ‰j        ¬¦  «         ‰j        | _	        ‰j
        r|                      ‰j
        ¦  «         | S )N)Úcafile)r~   r�   )ÚsslÚcreate_default_contextÚPurposeÚCLIENT_AUTHÚca_certsÚload_cert_chainr~   r�   Ú	cert_reqsÚverify_modeÚciphersÚset_ciphers)Úcontextr
   s    €r   Údefault_ssl_context_factoryz0ssl_context.<locals>.default_ssl_context_factoryØ   sk   ø€ ÝÔ,­S¬[Ô-DÈTÌ]Ð[Ñ[Ô[ˆØ×Ò¨¬ÀÄÐÑMÔMÐMØ"œnˆÔØŒ<ð 	.Ø×Ò ¤Ñ-Ô-Ð-Øˆr   )Ússl_context)r
   r¦   s   ` r   r§   r§   ×   s5   ø€ ðð ð ð ð ð ×Ò˜DÐ"=Ñ>Ô>Ð>r   c                 ób   — t          |¦  «                             | d|j        |j        ¬¦  «        S )NT)Úserver_sideÚsuppress_ragged_eofsÚdo_handshake_on_connect)r§   Úwrap_socketrª   r«   )r   r
   s     r   Ússl_wrap_socketr­   ã   s;   € Ý�tÑÔ×(Ò(¨Ø59Ø>BÔ>WØAEÔA]ð )ñ _ô _ð _r   r   )T)r-   r   r   r›   r[   rŠ   rˆ   Úgunicornr   r   r@   rQ   rX   rr   r”   r—   r§   r­   r>   r   r   ú<module>r¯      sd  ðð
 €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø 
€
€
€
Ø €€€à Ð Ð Ð Ð Ð ð7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ðt6ð 6ð 6ð 6ð 6�
ñ 6ô 6ð 6ð$/ð /ð /ð /ð /�ñ /ô /ð /ðð ð ð ð �ñ ô ð ð8
ð 
ð 
ð>ð >ð >ð >ðB!ð !ð !ð !ð	?ð 	?ð 	?ð_ð _ð _ð _ð _r   