§
    VøÁiO+  ã                   ó@  — 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
Zd dlZd dlZd dlZd dlZdZdZedz  Z G d„ de¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ de¦  «        ZdS )é    N)ÚAnyi   é   é   c                   ó   — e Zd ZdS )ÚUnexpectedEOFN)Ú__name__Ú
__module__Ú__qualname__© ó    úZ/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/dns/quic/_common.pyr   r      s   € € € € € Ø€Dr   r   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚBufferc                 ó"   — d| _         d| _        d S )Nr   F)Ú_bufferÚ	_seen_end©Úselfs    r   Ú__init__zBuffer.__init__   s   € ØˆŒØˆŒˆˆr   c                 óN   — | j         rd S | xj        |z  c_        |r	d| _         d S d S )NT)r   r   ©r   ÚdataÚis_ends      r   Úputz
Buffer.put#   s>   € ØŒ>ð 	ØˆFØˆŒ˜ÑˆŒØð 	"Ø!ˆDŒNˆNˆNð	"ð 	"r   c                 óV   — t          | j        ¦  «        |k    rdS | j        rt          ‚dS )NTF)Úlenr   r   r   )r   Úamounts     r   ÚhavezBuffer.have*   s1   € ÝˆtŒ|ÑÔ Ò&Ð&Ø�4ØŒ>ð 	 ÝÐØˆur   c                 ó   — | j         S ©N)r   r   s    r   Úseen_endzBuffer.seen_end1   ó
   € ØŒ~Ðr   c                 óz   — |                       |¦  «        sJ ‚| j        d |…         }| j        |d …         | _        |S r    )r   r   )r   r   r   s      r   Úgetz
Buffer.get4   sA   € Ø�yŠy˜Ñ Ô Ð Ð Ð ØŒ|˜G˜V˜GÔ$ˆØ”| F G GÔ,ˆŒØˆr   c                 óN   — |                       ¦   «         sJ ‚| j        }d| _        |S )Nr   )r!   r   )r   r   s     r   Úget_allzBuffer.get_all:   s(   € Ø�}Š}‰ŒÐÐˆØŒ|ˆØˆŒØˆr   N)	r   r	   r
   r   r   r   r!   r$   r&   r   r   r   r   r      sn   € € € € € ðð ð ð"ð "ð "ðð ð ðð ð ðð ð ðð ð ð ð r   r   c                   óL   — e 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S )ÚBaseQuicStreamc                 ór   — || _         || _        t          ¦   «         | _        d| _        d | _        d | _        d S ©Nr   )Ú_connectionÚ
_stream_idr   r   Ú
_expectingÚ_headersÚ	_trailers)r   Ú
connectionÚ	stream_ids      r   r   zBaseQuicStream.__init__B   s5   € Ø%ˆÔØ#ˆŒÝ‘x”xˆŒØˆŒØˆŒØˆŒˆˆr   c                 ó   — | j         S r    )r,   r   s    r   ÚidzBaseQuicStream.idJ   s
   € ØŒÐr   c                 ó   — | j         S r    )r.   r   s    r   ÚheaderszBaseQuicStream.headersM   s
   € ØŒ}Ðr   c                 ó   — | j         S r    )r/   r   s    r   ÚtrailerszBaseQuicStream.trailersP   r"   r   c                 ó<   — |�t          j         ¦   «         |z   }nd }|S r    )Útime)r   ÚtimeoutÚ
expirations      r   Ú_expiration_from_timeoutz'BaseQuicStream._expiration_from_timeoutS   s%   € ØÐÝœ™œ wÑ.ˆJˆJàˆJØÐr   c                 óX   — |�%t          |t          j        ¦   «         z
  d¦  «        }nd }|S )Ng        )Úmaxr9   )r   r;   r:   s      r   Ú_timeout_from_expirationz'BaseQuicStream._timeout_from_expirationZ   s.   € ØÐ!Ý˜*¥t¤y¡{¤{Ñ2°CÑ8Ô8ˆGˆGàˆGØˆr   Tc           	      óÄ  — | j                              ¦   «         st          d¦  «        ‚t          j                             |¦  «        }|j                             ¦   «         }|rd}n/d}|dt          j	        |¦  «         
                    d¦  «        z   z  }d|fd|j                             ¦   «         fd|j                             ¦   «         fd	|fd
g}|rE|                     ddt          t          |¦  «        ¦  «                             ¦   «         fg¦  «         | j                              | j        || ¦  «         |r#| j                              | j        |d¦  «         d S d S )Nz%cannot send H3 to a non-H3 connections   POSTs   GETs   ?dns=ó   =s   :methods   :schemes
   :authoritys   :path)s   acceptó   application/dns-message)s   content-typerB   s   content-lengthT)r+   Úis_h3ÚSyntaxErrorÚurllibÚparseÚurlparseÚpathÚencodeÚbase64Úurlsafe_b64encodeÚrstripÚschemeÚnetlocÚextendÚstrr   Úsend_headersr,   Ú	send_data)r   ÚurlÚdatagramÚpostÚ	url_partsrH   Úmethodr5   s           r   Úsend_h3zBaseQuicStream.send_h3g   sy  € ØÔ×%Ò%Ñ'Ô'ð 	GÝÐEÑFÔFÐFÝ”L×)Ò)¨#Ñ.Ô.ˆ	ØŒ~×$Ò$Ñ&Ô&ˆØð 	OØˆFˆFàˆFØ�H�vÔ7¸ÑAÔA×HÒHÈÑNÔNÑNÑNˆDà˜Ð Ø˜Ô)×0Ò0Ñ2Ô2Ð3Ø˜IÔ,×3Ò3Ñ5Ô5Ð6Ø�tÐØ3ð
ˆð ð 	Ø�NŠNàAØ&­­C°©M¬MÑ(:Ô(:×(AÒ(AÑ(CÔ(CÐDðñô ð ð 	Ô×%Ò% d¤o°wÀDÀÑIÔIÐIØð 	HØÔ×&Ò& t¤¸À$ÑGÔGÐGÐGÐGð	Hð 	Hr   c                 ó†   — | j                              ¦   «         r|S t          |¦  «        }t          j        d|¦  «        |z   S )Nz!H)r+   rC   r   ÚstructÚpack)r   rT   Úls      r   Ú_encapsulatezBaseQuicStream._encapsulateƒ   s@   € ØÔ×!Ò!Ñ#Ô#ð 	ØˆOÝ�‰MŒMˆÝŒ{˜4 Ñ#Ô# hÑ.Ð.r   c                 óÈ   — | j                              ||¦  «         	 | j        dk    o| j                              | j        ¦  «        p| j         j        S # t
          $ r Y dS w xY w)Nr   T)r   r   r-   r   r!   r   r   s      r   Ú_common_add_inputz BaseQuicStream._common_add_input‰   sv   € ØŒ×Ò˜˜vÑ&Ô&Ð&ð	à” !Ò#ÐJ¨¬×(9Ò(9¸$¼/Ñ(JÔ(Jð'à”Ô&ð'øõ ð 	ð 	ð 	Ø�4�4ð	øøøs   �5A Á
A!Á A!c                 óz   — | j                              | j        ¦  «         | j                             dd¦  «         d S )Nr   T)r+   Úclose_streamr,   r   r   r   s    r   Ú_closezBaseQuicStream._close’   s9   € ØÔ×%Ò% d¤oÑ6Ô6Ð6ØŒ×Ò˜˜dÑ#Ô#Ð#Ð#Ð#r   N©T)r   r	   r
   r   r3   r5   r7   r<   r?   rX   r]   r_   rb   r   r   r   r(   r(   A   s³   € € € € € ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðHð Hð Hð Hð8/ð /ð /ðð ð ð$ð $ð $ð $ð $r   r(   c                   óF   — e Zd Z	 	 	 dd„Zd„ Zd„ Zdd„Zdd„Zdd
„Zd„ Z	dS )ÚBaseQuicConnectionNr   c                 ó2  — d| _         || _        || _        || _        d| _        || _        i | _        |�?|                     ¦   «         r+t          j	        j
                             |d¦  «        | _        nd | _        t          j                             |¦  «        | _        t          j                             ||f¦  «        | _        |€=|dk    r7| j        t&          j        k    rd}n| j        t&          j        k    rd}nt,          ‚|r||f| _        d S d | _        d S )NFr   z0.0.0.0z::)Ú_doner+   Ú_addressÚ_portÚ_closedÚ_managerÚ_streamsrC   ÚaioquicÚh3r0   ÚH3ConnectionÚ_h3_connÚdnsÚinetÚaf_for_addressÚ_afÚlow_level_address_tupleÚ_peerÚsocketÚAF_INETÚAF_INET6ÚNotImplementedErrorÚ_source)r   r0   ÚaddressÚportÚsourceÚsource_portÚmanagers          r   r   zBaseQuicConnection.__init__˜   s  € ð ˆŒ
Ø%ˆÔØˆŒØˆŒ
ØˆŒØˆŒØˆŒØÐ 7§=¢=¡?¤?ÐÝ#œJÔ1×>Ò>¸zÈ5ÑQÔQˆDŒMˆMà ˆDŒMÝ”8×*Ò*¨7Ñ3Ô3ˆŒÝ”X×5Ò5°wÀ°oÑFÔFˆŒ
Øˆ>˜k¨QÒ.Ð.ØŒx�6œ>Ò)Ð)Ø"��Ø”�Vœ_Ò,Ð,Ø��å)Ð)Øð 	 Ø" KÐ0ˆDŒLˆLˆLàˆDŒLˆLˆLr   c                 ó   — | j         d uS r    )rp   r   s    r   rC   zBaseQuicConnection.is_h3º   s   € ØŒ} DÐ(Ð(r   c                 ó   — | j         |= d S r    )rl   )r   r1   s     r   ra   zBaseQuicConnection.close_stream½   s   € ØŒM˜)Ð$Ð$Ð$r   Fc                 óP   — | j         €J ‚| j                              |||¦  «         d S r    )rp   rQ   )r   r1   r5   r   s       r   rQ   zBaseQuicConnection.send_headersÀ   s0   € ØŒ}Ð(Ð(Ð(ØŒ×"Ò" 9¨g°vÑ>Ô>Ð>Ð>Ð>r   c                 óP   — | j         €J ‚| j                              |||¦  «         d S r    )rp   rR   )r   r1   r   r   s       r   rR   zBaseQuicConnection.send_dataÄ   s0   € ØŒ}Ð(Ð(Ð(ØŒ×Ò 	¨4°Ñ8Ô8Ð8Ð8Ð8r   Tc                 óÈ   — t          j         ¦   «         }| j                             ¦   «         }|€|dz   }t          ||z
  d¦  «        }| j        r|rt          |d¦  «        }||fS )Ni  r   gš™™™™™©?)r9   r+   Ú	get_timerr>   rj   Úmin)r   Úclosed_is_specialÚnowr;   Úintervals        r   Ú_get_timer_valuesz$BaseQuicConnection._get_timer_valuesÈ   sr   € ÝŒi‰kŒkˆØÔ%×/Ò/Ñ1Ô1ˆ
ØÐØ˜t™ˆJÝ�z CÑ'¨Ñ+Ô+ˆØŒ<ð 	+Ð-ð 	+õ ˜8 TÑ*Ô*ˆHØ˜HÐ%Ð%r   c                 óp   — t          j         ¦   «         }||k    r| j                             |¦  «         d S d S r    )r9   r+   Úhandle_timer)r   r;   r‰   s      r   Ú_handle_timerz BaseQuicConnection._handle_timerÕ   s=   € ÝŒi‰kŒkˆØ˜ÒÐØÔ×)Ò)¨#Ñ.Ô.Ð.Ð.Ð.ð Ðr   )Nr   N)Frc   )
r   r	   r
   r   rC   ra   rQ   rR   r‹   rŽ   r   r   r   re   re   —   s�   € € € € € ð ØØð  ð   ð   ð   ðD)ð )ð )ð%ð %ð %ð?ð ?ð ?ð ?ð9ð 9ð 9ð 9ð&ð &ð &ð &ð/ð /ð /ð /ð /r   re   c                   ó&   — e Zd Zddedz  defd„ZdS )ÚAsyncQuicConnectionNr:   Úreturnc              ƒ   ó
   K  — d S r    r   )r   r:   s     r   Úmake_streamzAsyncQuicConnection.make_streamÜ   s   è è € Øˆr   r    )r   r	   r
   Úfloatr   r“   r   r   r   r�   r�   Û   s?   € € € € € ðð ¨°©ð Àð ð ð ð ð ð r   r�   c                   óB   — e Zd Z	 dd„Z	 	 	 	 	 dd„Zd„ Zd	„ Zd
„ Zd„ ZdS )ÚBaseQuicManagerNFc                 ól  — i | _         || _        i | _        i | _        || _        |€‡d }t          |t          ¦  «        r|}d}|rdg}nddg}t          j        j	         
                    |||¬¦  «        }|�9t          j                             |¦  «        \  }}	|                     ||	¬¦  «         || _        d S )NTrn   Údoqzdoq-i03)Úalpn_protocolsÚverify_modeÚserver_name)ÚcafileÚcapath)Ú_connectionsÚ_connection_factoryÚ_session_ticketsÚ_tokensÚ_h3Ú
isinstancerP   rm   ÚquicÚconfigurationÚQuicConfigurationrq   Ú	_tls_utilÚ#convert_verify_to_cafile_and_capathÚload_verify_locationsÚ_conf)
r   Úconfrš   Úconnection_factoryr›   rn   Úverify_pathr™   rœ   r�   s
             r   r   zBaseQuicManager.__init__á   sà   € ð ˆÔØ#5ˆÔ Ø "ˆÔØˆŒØˆŒØˆ<ØˆKÝ˜+¥sÑ+Ô+ð #Ø)�Ø"�Øð 4Ø"& ��à"'¨Ð!3�Ý”<Ô-×?Ò?Ø-Ø'Ø'ð @ñ ô ˆDð
 Ð&Ý!$¤×!RÒ!RØñ"ô "‘�˜ð ×*Ò*°&ÀÐ*ÑHÔHÐHØˆŒ
ˆ
ˆ
r   éU  r   Tc                 ó*  — | j                              ||f¦  «        }|�|dfS | j        }|re	 | j                             ||f¦  «        }	t          j        |¦  «        }|	|_        n# t          $ r Y nw xY wt          j	        | j
        ||¦  «        }
nd }
|re	 | j                             ||f¦  «        }t          j        |¦  «        }||_        n# t          $ r Y nw xY wt          j	        | j        ||¦  «        }nd }t          j        j                             ||
|¬¦  «        }t$          j                             ||f¦  «        }|                     |t-          j        ¦   «         ¦  «         |                      |||||| ¦  «        }|| j         ||f<   |dfS )NF)r¥   Úsession_ticket_handlerÚtoken_handlerT)rž   r$   rª   r    ÚpopÚcopyÚsession_ticketÚKeyErrorÚ	functoolsÚpartialÚsave_session_ticketr¡   ÚtokenÚ
save_tokenrm   r¤   r0   ÚQuicConnectionrq   rr   ru   Úconnectr9   rŸ   )r   r|   r}   r~   r   Úwant_session_ticketÚ
want_tokenr0   r«   r´   r°   r¹   r±   ÚqconnÚ	lladdresss                  r   Ú_connectzBaseQuicManager._connectþ   s×  € ð Ô&×*Ò*¨G°T¨?Ñ;Ô;ˆ
ØÐ!Ø Ð&Ð&ØŒzˆØð 	*ðØ!%Ô!6×!:Ò!:¸GÀT¸?Ñ!KÔ!K�å”y ‘”�Ø&4�Ô#Ð#øÝð ð ð à�ðøøøõ
 &/Ô%6ØÔ(¨'°4ñ&ô &Ð"Ð"ð &*Ð"Øð 	!ðØœ×(Ò(¨'°4¨Ñ9Ô9�å”y ‘”�Ø"�”
�
øÝð ð ð à�ðøøøõ &Ô-¨d¬o¸wÈÑMÔMˆMˆMà ˆMå”Ô'×6Ò6ØØ#9Ø'ð 7ñ 
ô 
ˆõ
 ”H×4Ò4°g¸t°_ÑEÔEˆ	Ø�Š�i¥¤¡¤Ñ-Ô-Ð-Ø×-Ò-Ø�7˜D &¨+°tñ
ô 
ˆ
ð .8ˆÔ˜7 D˜/Ñ*Ø˜DÐ!Ð!s#   ­7A% Á%
A2Á1A2Â7C Ã
CÃCc                 ó>   — 	 | j         ||f= d S # t          $ r Y d S w xY wr    )rž   rµ   )r   r|   r}   s      r   ÚclosedzBaseQuicManager.closed6  s>   € ð	ØÔ! 7¨D /Ð2Ð2Ð2øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚
 Ž
›c                 ó   — | j         S r    )r¢   r   s    r   rC   zBaseQuicManager.is_h3<  s	   € ØŒxˆr   c                 óÜ   — t          | j        ¦  «        }|t          k    r@t          | j                             ¦   «         ¦  «        dt
          …         }|D ]
}| j        |= Œ|| j        ||f<   d S r*   )r   r    ÚMAX_SESSION_TICKETSÚlistÚkeysÚSESSIONS_TO_DELETE)r   r|   r}   Úticketr\   Úkeys_to_deleteÚkeys          r   r¸   z#BaseQuicManager.save_session_ticket?  s{   € õ �Ô%Ñ&Ô&ˆØÕ#Ò#Ð#Ý! $Ô"7×"<Ò"<Ñ">Ô">Ñ?Ô?ÀÕBTÐ@TÔUˆNØ%ð /ð /�ØÔ)¨#Ð.Ð.Ø17ˆÔ˜w¨˜oÑ.Ð.Ð.r   c                 óÜ   — t          | j        ¦  «        }|t          k    r@t          | j                             ¦   «         ¦  «        dt
          …         }|D ]
}| j        |= Œ|| j        ||f<   d S r*   )r   r¡   rÆ   rÇ   rÈ   rÉ   )r   r|   r}   r¹   r\   rË   rÌ   s          r   rº   zBaseQuicManager.save_tokenJ  sw   € õ �”ÑÔˆØÕ#Ò#Ð#Ý! $¤,×"3Ò"3Ñ"5Ô"5Ñ6Ô6°qÕ9KÐ7KÔLˆNØ%ð &ð &�Ø”L Ð%Ð%Ø(-ˆŒ�g˜t�_Ñ%Ð%Ð%r   )NF)r®   Nr   TT)	r   r	   r
   r   rÁ   rÃ   rC   r¸   rº   r   r   r   r–   r–   à   sŽ   € € € € € àJOðð ð ð ð@ ØØØ Øð6"ð 6"ð 6"ð 6"ðpð ð ðð ð ð	8ð 	8ð 	8ð	.ð 	.ð 	.ð 	.ð 	.r   r–   c                   ó   — e Zd Zdd„ZdS )ÚAsyncQuicManagerr®   Nr   c                 ó   — t           ‚r    )rz   )r   r|   r}   r~   r   s        r   r¼   zAsyncQuicManager.connectW  s   € Ý!Ð!r   )r®   Nr   )r   r	   r
   r¼   r   r   r   rÏ   rÏ   V  s(   € € € € € ð"ð "ð "ð "ð "ð "r   rÏ   )rJ   r³   r¶   rw   rZ   r9   Úurllib.parserE   Útypingr   Úaioquic.h3.connectionrm   Úaioquic.quic.configurationÚaioquic.quic.connectionÚdns._tls_utilrq   Údns.inetÚQUIC_MAX_DATAGRAMrÆ   rÉ   Ú	Exceptionr   r   r(   re   r�   r–   rÏ   r   r   r   ú<module>rÚ      sõ  ðð €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø !Ð !Ð !Ð !Ø Ð Ð Ð à Ð Ð Ð Ø €€€àÐ ØÐ ð )¨AÑ-Ð ð	ð 	ð 	ð 	ð 	�Iñ 	ô 	ð 	ð ð  ð  ð  ð  ñ  ô  ð  ðFS$ð S$ð S$ð S$ð S$ñ S$ô S$ð S$ðlA/ð A/ð A/ð A/ð A/ñ A/ô A/ð A/ðHð ð ð ð Ð,ñ ô ð ð
s.ð s.ð s.ð s.ð s.ñ s.ô s.ð s.ðl"ð "ð "ð "ð "�ñ "ô "ð "ð "ð "r   