§
    VøÁiì$  ã                   óâ   — 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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mZmZmZmZmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ d	e¦  «        ZdS )
é    N)ÚNullContext)ÚQUIC_MAX_DATAGRAMÚAsyncQuicConnectionÚAsyncQuicManagerÚBaseQuicStreamÚUnexpectedEOFc                   óR   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zdd„Zdd„Zd„ Zd	„ Z	d
„ Z
d„ Zˆ xZS )ÚTrioQuicStreamc                 ó|   •— t          ¦   «                              ||¦  «         t          j        ¦   «         | _        d S ©N)ÚsuperÚ__init__ÚtrioÚ	ConditionÚ_wake_up)ÚselfÚ
connectionÚ	stream_idÚ	__class__s      €úX/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/dns/quic/_trio.pyr   zTrioQuicStream.__init__   s0   ø€ Ý‰Œ×Ò˜ YÑ/Ô/Ð/ÝœÑ(Ô(ˆŒˆˆó    c              ƒ   óþ   K  — 	 | j                              |¦  «        rd S || _        | j        4 ƒd {V —† | j                             ¦   «         ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d| _        Œ{)NTr   )Ú_bufferÚhaveÚ
_expectingr   Úwait)r   Úamounts     r   Úwait_forzTrioQuicStream.wait_for    s  è è € ð	 ØŒ|× Ò  Ñ(Ô(ð Ø�Ø$ˆDŒOØ”}ð +ð +ð +ð +ð +ð +ð +ð +Ø”m×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +àˆDŒOð	 s   ´ A&Á&
A0Á3A0c              ƒ   óà   K  — 	 | j                              ¦   «         rd S | j        4 ƒd {V —† | j                             ¦   «         ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   Œlr   )r   Úseen_endr   r   ©r   s    r   Úwait_for_endzTrioQuicStream.wait_for_end)   s  è è € ð	+ØŒ|×$Ò$Ñ&Ô&ð Ø�Ø”}ð +ð +ð +ð +ð +ð +ð +ð +Ø”m×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð	+s   ¬ AÁ
A(Á+A(Nc              ƒ   óV  K  — |€t          d ¦  «        }nt          j        |¦  «        }|5  | j                             ¦   «         r?|                      ¦   «         ƒ d {V —† | j                             ¦   «         cd d d ¦  «         S |                      d¦  «        ƒ d {V —† t          j
        d| j                             d¦  «        ¦  «        \  }|                      |¦  «        ƒ d {V —† | j                             |¦  «        cd d d ¦  «         S # 1 swxY w Y   t          j        j        ‚)Né   z!H)r   r   Úmove_on_afterÚ_connectionÚis_h3r"   r   Úget_allr   ÚstructÚunpackÚgetÚdnsÚ	exceptionÚTimeout)r   ÚtimeoutÚcontextÚsizes       r   ÚreceivezTrioQuicStream.receive0   s‹  è è € Øˆ?Ý! $Ñ'Ô'ˆGˆGåÔ(¨Ñ1Ô1ˆGØð 	.ð 	.ØÔ×%Ò%Ñ'Ô'ð .Ø×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø”|×+Ò+Ñ-Ô-ð	.ð 	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð
 —m’m AÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ý œ-¨¨d¬l×.>Ò.>¸qÑ.AÔ.AÑBÔB‘�Ø—m’m DÑ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø”|×'Ò'¨Ñ-Ô-ð	.ð 	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ ŒmÔ#Ð#s   «ADÂA>DÄDÄDFc              ƒ   ó‚   K  — |                       |¦  «        }| j                             | j        ||¦  «        ƒ d {V —† d S r   )Ú_encapsulater&   ÚwriteÚ
_stream_id)r   ÚdatagramÚis_endÚdatas       r   ÚsendzTrioQuicStream.send@   sN   è è € Ø× Ò  Ñ*Ô*ˆØÔ×$Ò$ T¤_°d¸FÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCr   c              ƒ   óÐ   K  — |                       ||¦  «        rM| j        4 ƒd {V —† | j                             ¦   «          d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S d S r   )Ú_common_add_inputr   Únotify)r   r9   r8   s      r   Ú
_add_inputzTrioQuicStream._add_inputD   s  è è € Ø×!Ò! $¨Ñ/Ô/ð 	'Ø”}ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'Ø”×$Ò$Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 'ð	'ð 	's   ¦AÁ
AÁ Ac              ƒ   ó2   K  — |                       ¦   «          d S r   )Ú_closer!   s    r   ÚclosezTrioQuicStream.closeI   s   è è € Ø�Š‰Œˆˆˆr   c              ƒ   ó
   K  — | S r   © r!   s    r   Ú
__aenter__zTrioQuicStream.__aenter__N   ó   è è € Øˆr   c              ƒ   óÒ   K  — |                       ¦   «         ƒ d {V —† | j        4 ƒd {V —† | j                             ¦   «          d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   dS ©NF)rA   r   r=   )r   Úexc_typeÚexc_valÚexc_tbs       r   Ú	__aexit__zTrioQuicStream.__aexit__Q   sö   è è € Ø�jŠj‰lŒlÐÐÐÐÐÐÐØ”=ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ØŒM× Ò Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#àˆus   ªAÁ
A Á#A r   ©F)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r2   r:   r>   rA   rD   rK   Ú__classcell__©r   s   @r   r
   r
      s¾   ø€ € € € € ð)ð )ð )ð )ð )ð ð  ð  ð+ð +ð +ð$ð $ð $ð $ð Dð Dð Dð Dð'ð 'ð 'ð
ð ð ð
ð ð ðð ð ð ð ð ð r   r
   c                   óH   ‡ — e Zd Zd
ˆ fd„	Zd„ Zd„ Zdd„Zd„ Zd
d„Zd	„ Z	ˆ xZ
S )ÚTrioQuicConnectionNc                 ó:  •— t          ¦   «                              ||||||¦  «         t          j                             | j        t          j        d¦  «        | _        t          j        ¦   «         | _        t          j        ¦   «         | _	        d | _
        d| _        d S )Nr   F)r   r   r   ÚsocketÚ_afÚ
SOCK_DGRAMÚ_socketÚEventÚ_handshake_completeÚ	_run_doneÚ_worker_scopeÚ_send_pending)r   r   ÚaddressÚportÚsourceÚsource_portÚmanagerr   s          €r   r   zTrioQuicConnection.__init__Y   sv   ø€ Ý‰Œ×Ò˜ W¨d°F¸KÈÑQÔQÐQÝ”{×)Ò)¨$¬(µFÔ4EÀqÑIÔIˆŒÝ#'¤:¡<¤<ˆÔ Ýœ™œˆŒØ!ˆÔØ"ˆÔÐÐr   c              ƒ   óž  K  — 	 | j         rH| j                             t          j                             | j         | j        ¦  «        ¦  «        ƒ d {V —† | j                             | j        ¦  «        ƒ d {V —† | j	        �sV|  
                    d¦  «        \  }}| j        rd}t          j        t          j        ¦   «         |z   ¬¦  «        5 | _        | j                             t"          ¦  «        ƒ d {V —†}| j                             || j        t)          j        ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   d | _        |                      |¦  «         |                      ¦   «         ƒ d {V —† d| _        | j                             t)          j        ¦   «         ¦  «        }|D ]%\  }}| j                             |¦  «        ƒ d {V —† Œ&| j	        �¯Vd| _	        | j                             ¦   «          | j                             ¦   «          d S # d| _	        | j                             ¦   «          | j                             ¦   «          w xY w)NFg        )ÚdeadlineT)Ú_sourcerX   Úbindr,   ÚinetÚlow_level_address_tuplerV   ÚconnectÚ_peerÚ_doneÚ_get_timer_valuesr]   r   ÚCancelScopeÚcurrent_timer\   Úrecvr   r&   Úreceive_datagramÚtimeÚ_handle_timerÚ_handle_eventsÚdatagrams_to_sendr:   rA   rZ   Úset)r   Ú
expirationÚintervalr7   Ú	datagramsÚ_s         r   Ú_workerzTrioQuicConnection._workera   sÃ  è è € ð"	+ØŒ|ð Ø”l×'Ò'Ý”H×4Ò4°T´\À4Ä8ÑLÔLñô ð ð ð ð ð ð ð ð ”,×&Ò& t¤zÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø”jñ 6Ø)-×)?Ò)?ÀÑ)FÔ)FÑ&�˜XØÔ%ð #ð  #�HÝÔ%Ý!Ô.Ñ0Ô0°8Ñ;ðñ ô ð YàÔ'Ø%)¤\×%6Ò%6Õ7HÑ%IÔ%IÐIÐIÐIÐIÐIÐI�HØÔ$×5Ò5°hÀÄ
ÍDÌIÉKÌKÑXÔXÐXð	Yð Yð Yñ Yô Yð Yð Yð Yð Yð Yð Yøøøð Yð Yð Yð Yð
 &*�Ô"Ø×"Ò" :Ñ.Ô.Ð.Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð &+�Ô"Ø Ô,×>Ò>½t¼y¹{¼{ÑKÔK�	Ø#,ð 6ð 6‘K�H˜aØœ,×+Ò+¨HÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð1 ”jñ 6ð4 ˆDŒJØŒL×ÒÑ Ô Ð ØÔ$×(Ò(Ñ*Ô*Ð*Ð*Ð*øð ˆDŒJØŒL×ÒÑ Ô Ð ØÔ$×(Ò(Ñ*Ô*Ð*Ð*øøøs2   „CH Ã
AD3Ä'H Ä3D7Ä7H Ä:D7Ä;BH È;Ic              ƒ   ó®  K  — d}	 | j                              ¦   «         }|€d S t          |t          j        j        j        ¦  «        �r‚|                      ¦   «         �r%| j        €J ‚| j         	                    |¦  «        }|D ]ý}t          |t          j
        j        j        ¦  «        rl| j                             |j        ¦  «        }|rJ|j        €|j        |_        n|j        €|j        |_        |j        r|                     dd¦  «        ƒ d {V —† Œ’t          |t          j
        j        j        ¦  «        rG| j                             |j        ¦  «        }|r&|                     |j        |j        ¦  «        ƒ d {V —† Œþ�n,| j                             |j        ¦  «        }|r&|                     |j        |j        ¦  «        ƒ d {V —† nät          |t          j        j        j        ¦  «        r| j                             ¦   «          n¦t          |t          j        j        j        ¦  «        r!d| _        | j                             ¦   «          nat          |t          j        j        j        ¦  «        r=| j                             |j        ¦  «        }|r|                     dd¦  «        ƒ d {V —† |dz  }|dk    rd}t?          j         d¦  «        ƒ d {V —† �ŒÑ)Nr   Tr   é   é
   )!r&   Ú
next_eventÚ
isinstanceÚaioquicÚquicÚeventsÚStreamDataReceivedr'   Ú_h3_connÚhandle_eventÚh3ÚHeadersReceivedÚ_streamsr+   r   Ú_headersÚheadersÚ	_trailersÚstream_endedr>   ÚDataReceivedr9   Ú
end_streamÚHandshakeCompletedrZ   ru   ÚConnectionTerminatedrk   rX   rA   ÚStreamResetr   Úsleep)r   ÚcountÚeventÚ	h3_eventsÚh3_eventÚstreams         r   rs   z!TrioQuicConnection._handle_events†   sù  è è € Øˆð)	$ØÔ$×/Ò/Ñ1Ô1ˆEØˆ}Ø�Ý˜%¥¤Ô!4Ô!GÑHÔHñ  7Ø—:’:‘<”<ñ NØœ=Ð4Ð4Ð4Ø $¤× :Ò :¸5Ñ AÔ A�IØ$-ð "ð "˜Ý% hµ´
Ô0AÔ0QÑRÔRð "Ø%)¤]×%6Ò%6°u´Ñ%GÔ%G˜FØ%ð GØ#)¤?Ð#:Ø6>Ô6F F¤O OØ%+Ô%5Ð%=Ø7?Ô7G FÔ$4Ø#+Ô#8ð !GØ*0×*;Ò*;¸CÀÑ*FÔ*FÐ$FÐ$FÐ$FÐ$FÐ$FÐ$FÐ$FøÝ'¨µ'´*Ô2CÔ2PÑQÔQð "Ø%)¤]×%6Ò%6°u´Ñ%GÔ%G˜FØ%ð "Ø&,×&7Ò&7Ø$,¤M°8Ô3Hñ'"ô '"ð !"ð !"ð !"ð !"ð !"ð !"ð !"øñ"ð" "œ]×.Ò.¨u¬Ñ?Ô?�FØð NØ$×/Ò/°´
¸EÔ<LÑMÔMÐMÐMÐMÐMÐMÐMÐMøÝ˜E¥7¤<Ô#6Ô#IÑJÔJð 7ØÔ(×,Ò,Ñ.Ô.Ð.Ð.Ý˜E¥7¤<Ô#6Ô#KÑLÔLð 7Ø!�”
Ø”×"Ò"Ñ$Ô$Ð$Ð$Ý˜E¥7¤<Ô#6Ô#BÑCÔCð 7Øœ×*Ò*¨5¬?Ñ;Ô;�Øð 7Ø ×+Ò+¨C°Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø�Q‰JˆEØ�rŠzˆzà�Ý”j ‘m”mÐ#Ð#Ð#Ð#Ð#Ð#Ð#ñS)	$r   Fc              ƒ   ó”   K  — | j                              |||¦  «         d| _        | j        �| j                             ¦   «          d S d S )NT)r&   Úsend_stream_datar]   r\   Úcancel)r   r—   r9   r8   s       r   r5   zTrioQuicConnection.write³   sU   è è € ØÔ×)Ò)¨&°$¸Ñ?Ô?Ð?Ø!ˆÔØÔÐ)ØÔ×%Ò%Ñ'Ô'Ð'Ð'Ð'ð *Ð)r   c              ƒ   óü   K  — | j         rd S t          j        ¦   «         4 ƒd {V —†}|                     | j        ¦  «         d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | j                             ¦   «          d S r   )Ú_closedr   Úopen_nurseryÚ
start_soonrz   r[   ru   )r   Únurserys     r   ÚrunzTrioQuicConnection.run¹   s   è è € ØŒ<ð 	ØˆFÝÔ$Ñ&Ô&ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-¨'Ø×Ò˜tœ|Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-àŒ×ÒÑÔÐÐÐs   ¥AÁ
AÁAc              ƒ   ón  K  — |€t          d ¦  «        }nt          j        |¦  «        }|5  | j                             ¦   «         ƒ d {V —† | j        rt          ‚| j                             d¦  «        }t          | |¦  «        }|| j
        |<   |cd d d ¦  «         S # 1 swxY w Y   t          j        j        ‚rG   )r   r   r%   rZ   r   rk   r   r&   Úget_next_available_stream_idr
   rˆ   r,   r-   r.   )r   r/   r0   r   r—   s        r   Úmake_streamzTrioQuicConnection.make_streamÀ   s  è è € Øˆ?Ý! $Ñ'Ô'ˆGˆGåÔ(¨Ñ1Ô1ˆGØð 	ð 	ØÔ*×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØŒzð $Ý#Ð#ØÔ(×EÒEÀeÑLÔLˆIÝ# D¨)Ñ4Ô4ˆFØ'-ˆDŒM˜)Ñ$Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ŒmÔ#Ð#s   «A#BÂBÂ"Bc              ƒ   óX  K  — | j         s | j        �1| j                             | j        d         | j        d         ¦  «         d| _         | j                             ¦   «          d| _        | j        �| j                             ¦   «          | j	         
                    ¦   «         ƒ d {V —† d S d S )Nr   r|   T)rœ   Ú_managerÚclosedrj   r&   rA   r]   r\   rš   r[   r   r!   s    r   rA   zTrioQuicConnection.closeÏ   s´   è è € ØŒ|ð 	(ØŒ}Ð(Ø”×$Ò$ T¤Z°¤]°D´J¸q´MÑBÔBÐBØˆDŒLØÔ×"Ò"Ñ$Ô$Ð$Ø!%ˆDÔØÔ!Ð-ØÔ"×)Ò)Ñ+Ô+Ð+Ø”.×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð	(ð 	(r   r   rL   )rM   rN   rO   r   rz   rs   r5   r    r£   rA   rP   rQ   s   @r   rS   rS   X   s£   ø€ € € € € ð#ð #ð #ð #ð #ð #ð#+ð #+ð #+ðJ+$ð +$ð +$ðZ(ð (ð (ð (ðð ð ð$ð $ð $ð $ð	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(r   rS   c                   óH   ‡ — e Zd Zdej        ddfˆ fd„	Z	 d
d„Zd„ Zd	„ Zˆ xZ	S )ÚTrioQuicManagerNFc                 ój   •— t          ¦   «                              ||t          ||¦  «         || _        d S r   )r   r   rS   Ú_nursery)r   rŸ   ÚconfÚverify_modeÚserver_namer†   r   s         €r   r   zTrioQuicManager.__init__Ü   s1   ø€ õ 	‰Œ×Ò˜˜{Õ,>ÀÈRÑPÔPÐPØˆŒˆˆr   éU  r   Tc                 ó€   — |                       |||||¦  «        \  }}|r| j                             |j        ¦  «         |S r   )Ú_connectrª   rž   r    )r   r^   r_   r`   ra   Úwant_session_ticketr   Ústarts           r   ri   zTrioQuicManager.connectç   sP   € ð #ŸmšmØ�T˜6 ;Ð0Cñ
ô 
Ñˆ�Uð ð 	5ØŒM×$Ò$ Z¤^Ñ4Ô4Ð4ØÐr   c              ƒ   ó
   K  — | S r   rC   r!   s    r   rD   zTrioQuicManager.__aenter__ñ   rE   r   c              ƒ   ó”   K  — t          | j                             ¦   «         ¦  «        }|D ]}|                     ¦   «         ƒ d {V —† ŒdS rG   )ÚlistÚ_connectionsÚvaluesrA   )r   rH   rI   rJ   Úconnectionsr   s         r   rK   zTrioQuicManager.__aexit__ô   s_   è è € õ ˜4Ô,×3Ò3Ñ5Ô5Ñ6Ô6ˆØ%ð 	%ð 	%ˆJØ×"Ò"Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Øˆur   )r®   Nr   T)
rM   rN   rO   ÚsslÚCERT_REQUIREDr   ri   rD   rK   rP   rQ   s   @r   r¨   r¨   Û   s‡   ø€ € € € € ð ØÔ%ØØð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð RVðð ð ð ðð ð ðð ð ð ð ð ð r   r¨   )rU   r¹   r)   rq   Úaioquic.h3.connectionr€   Úaioquic.h3.eventsÚaioquic.quic.configurationÚaioquic.quic.connectionÚaioquic.quic.eventsr   Údns.exceptionr,   Údns.inetÚdns._asyncbackendr   Údns.quic._commonr   r   r   r   r   r
   rS   r¨   rC   r   r   ú<module>rÄ      sq  ðð €€€Ø 
€
€
€
Ø €€€Ø €€€à Ð Ð Ð Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð ð ð ð ð:ð :ð :ð :ð :�^ñ :ô :ð :ðz@(ð @(ð @(ð @(ð @(Ð,ñ @(ô @(ð @(ðFð ð ð ð Ð&ñ ô ð ð ð r   