Ë
    æU.j"1  ã                  ó�  — 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Zd dl	Zd dl
ZddlmZ ddlmZ ddlmZmZ ddlmZ ddlmZ eZ ej.                  d	«      Z ej2                  e«      Z ej8                  d
«      Z ej8                  d«      Zdd„Zdd„Z  G d„ dejB                  e   «      Z" G d„ de«      Z# G d„ de«      Z$y)é    )ÚannotationsNé   )Ú
_TYPE_BODY)ÚHTTPHeaderDict)ÚHTTPSConnectionÚ_get_default_user_agent)ÚConnectionError)ÚBaseHTTPResponseÚTs   ^[!#$%&'*+\-.^_`|~0-9a-z]+$s*   [\0\x00\x0a\x0d\r\n]|^[ \r\n\t]|[ \r\n\t]$c                ó>   — t        t        j                  | «      «      S )a5  
    "An implementation that validates fields according to the definitions in Sections
    5.1 and 5.5 of [HTTP] only needs an additional check that field names do not
    include uppercase characters." (https://httpwg.org/specs/rfc9113.html#n-field-validity)

    `http.client._is_legal_header_name` does not validate the field name according to the
    HTTP 1.1 spec, so we do that here, in addition to checking for uppercase characters.

    This does not allow for the `:` character in the header name, so should not
    be used to validate pseudo-headers.
    )ÚboolÚRE_IS_LEGAL_HEADER_NAMEÚmatch)Únames    úZC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\urllib3/http2/connection.pyÚ_is_legal_header_namer      s   € ô Ô'×-Ñ-¨dÓ3Ó4Ð4ó    c                ó>   — t        t        j                  | «      «      S )aK  
    "A field value MUST NOT contain the zero value (ASCII NUL, 0x00), line feed
    (ASCII LF, 0x0a), or carriage return (ASCII CR, 0x0d) at any position. A field
    value MUST NOT start or end with an ASCII whitespace character (ASCII SP or HTAB,
    0x20 or 0x09)." (https://httpwg.org/specs/rfc9113.html#n-field-validity)
    )r   ÚRE_IS_ILLEGAL_HEADER_VALUEÚsearch)Úvalues    r   Ú_is_illegal_header_valuer   ,   s   € ô Ô*×1Ñ1°%Ó8Ó9Ð9r   c                  ó<   — e Zd ZdZdZdd„Zdd„Z	 	 	 	 	 	 	 	 d	d„Zy)
Ú_LockedObjectaX  
    A wrapper class that hides a specific object behind a lock.
    The goal here is to provide a simple way to protect access to an object
    that cannot safely be simultaneously accessed from multiple threads. The
    intended use of this class is simple: take hold of it with a context
    manager, which returns the protected object.
    )ÚlockÚ_objc                óD   — t        j                  «       | _        || _        y ©N)Ú	threadingÚRLockr   r   )ÚselfÚobjs     r   Ú__init__z_LockedObject.__init__D   s   € Ü—O‘OÓ%ˆŒ	Øˆ�	r   c                óN   — | j                   j                  «        | j                  S r   )r   Úacquirer   ©r!   s    r   Ú	__enter__z_LockedObject.__enter__H   s   € Ø�	‰	×ÑÔØ�y‰yÐr   c                ó8   — | j                   j                  «        y r   )r   Úrelease)r!   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__z_LockedObject.__exit__L   s   € ð 	�	‰	×ÑÕr   N)r"   r   )Úreturnr   )r*   ztype[BaseException] | Noner+   zBaseException | Noner,   ztypes.TracebackType | Noner.   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r#   r'   r-   © r   r   r   r   6   sC   „ ñð€Ió
óðà,ðð &ðð +ð	ð
 
ôr   r   c                  óì   ‡ — e Zd Z	 d	 	 	 	 	 	 	 dˆ fd„Zdd„Zdˆ fd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zddd„Zdd„Z		 	 	 d	 	 	 	 	 	 	 	 	 dd„Z
	 	 dd	„Z	 	 dd
d
d
dœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdˆ fd„Zˆ xZS )ÚHTTP2Connectionc                óÂ   •— | j                  «       | _        d | _        g | _        d|v sd|v rt	        d«      ‚t        ‰| �  ||fi |¤Ž | j                  �t	        d«      ‚y )NÚproxyÚproxy_configz$Proxies aren't supported with HTTP/2z%Tunneling isn't supported with HTTP/2)Ú_new_h2_connÚ_h2_connÚ
_h2_streamÚ_headersÚNotImplementedErrorÚsuperr#   Ú_tunnel_host)r!   ÚhostÚportÚkwargsÚ	__class__s       €r   r#   zHTTP2Connection.__init__V   so   ø€ ð ×)Ñ)Ó+ˆŒØ&*ˆŒØ35ˆŒà�fÑ °&Ñ 8Ü%Ð&LÓMÐMä‰Ñ˜˜tÑ. vÒ.à×ÑÐ(Ü%Ð&MÓNÐNð )r   c                ó”   — t         j                  j                  d¬«      }t        t         j                  j                  |¬«      «      S )NT)Úclient_side)Úconfig)Úh2rH   ÚH2Configurationr   Ú
connectionÚH2Connection)r!   rH   s     r   r;   zHTTP2Connection._new_h2_conne   s6   € Ü—‘×*Ñ*°tÐ*Ó<ˆÜœRŸ]™]×7Ñ7¸vÐ7ÓFÓGÐGr   c                óÞ   •— t         ‰| �  «        | j                  5 }|j                  «        |j	                  «       x}r| j
                  j                  |«       d d d «       y # 1 sw Y   y xY wr   )r@   Úconnectr<   Úinitiate_connectionÚdata_to_sendÚsockÚsendall)r!   ÚconnrP   rE   s      €r   rN   zHTTP2Connection.connecti   sR   ø€ Ü‰‰ÔØ�]Š]˜dØ×$Ñ$Ô&Ø#×0Ñ0Ó2Ð2ˆ|Ð2Ø—	‘	×!Ñ! ,Ô/÷ �]‰]ús   œ>A#Á#A,c                ó¸  — d|v rt        d«      ‚d|v rt        d«      ‚|xs d| _        | j                  |«       d| j                  v r!d| j                  › d| j                  xs d	› �}n| j                  › d| j                  xs d	› �}| j
                  j                  d
«       | j
                  j                  d|j                  «       f«       | j
                  j                  d|j                  «       f«       | j
                  j                  d|j                  «       f«       | j                  5 }|j                  «       | _
        ddd«       y# 1 sw Y   yxY w)z®putrequest
        This deviates from the HTTPConnection method signature since we never need to override
        sending accept-encoding headers or the host header.
        Ú	skip_hostz`skip_host` isn't supportedÚskip_accept_encodingz&`skip_accept_encoding` isn't supportedÚ/Ú:Ú[z]:i»  )s   :schemes   httpss   :methods
   :authoritys   :pathN)r?   Ú_request_urlÚ_validate_pathrB   rC   r>   ÚappendÚencoder<   Úget_next_available_stream_idr=   )r!   ÚmethodÚurlrD   Ú	authorityrS   s         r   Ú
putrequestzHTTP2Connection.putrequestp   s   € ð ˜&Ñ Ü%Ð&CÓDÐDØ! VÑ+Ü%Ð&NÓOÐOàšJ 3ˆÔØ×Ñ˜CÔ à�$—)‘)ÑØ˜DŸI™I˜; b¨¯©Ò)9°cÐ(:Ð;‰IàŸ9™9˜+ Q t§y¡yÒ'7°CÐ&8Ð9ˆIà�‰×ÑÐ3Ô4Ø�‰×Ñ˜j¨&¯-©-«/Ð:Ô;Ø�‰×Ñ˜m¨Y×-=Ñ-=Ó-?Ð@ÔAØ�‰×Ñ˜h¨¯
©
«Ð5Ô6à�]Š]˜dØ"×?Ñ?ÓAˆDŒO÷ �]‰]ús   Ä1EÅEc                ó|  — t        |t        «      r|j                  «       n|}|j                  «       }t	        |«      st        dt        |«      › �«      ‚|D ]c  }t        |t        «      r|j                  «       n|}t        |«      rt        dt        |«      › �«      ‚| j                  j                  ||f«       Œe y )NzIllegal header name zIllegal header value )	Ú
isinstanceÚstrr]   Úlowerr   Ú
ValueErrorr   r>   r\   )r!   ÚheaderÚvaluesr   s       r   Ú	putheaderzHTTP2Connection.putheader�   s—   € ä$.¨v´sÔ$;�—‘”ÀˆØ—‘“ˆÜ$ VÔ,ÜÐ3´C¸³K°=ÐAÓBÐBãˆEÜ&0°¼Ô&<�E—L‘L”NÀ%ˆEÜ'¨Ô.Ü Ð#8¼¸U»¸Ð!EÓFÐFØ�M‰M× Ñ  &¨% Õ1ñ	 r   c                ó>  — | j                   €t        d«      ‚| j                  5 }|j                  | j                   | j                  |d u ¬«       |j                  «       x}r| j                  j                  |«       d d d «       g | _        y # 1 sw Y   g | _        y xY w)NúMust call `putrequest` first.)Ú	stream_idÚheadersÚ
end_stream)r=   r	   r<   Úsend_headersr>   rP   rQ   rR   )r!   Úmessage_bodyrS   rP   s       r   Ú
endheaderszHTTP2Connection.endheadersœ   s�   € Ø�?‰?Ð"Ü!Ð"AÓBÐBà�]Š]˜dØ×ÑØŸ/™/ØŸ™Ø(¨DÐ0ð ô ð
  $×0Ñ0Ó2Ð2ˆ|Ð2Ø—	‘	×!Ñ! ,Ô/÷ ð ˆ�÷ ð ˆ�ús   ¤ABÂBc                ód  — | j                   €t        d«      ‚| j                  5 }|j                  «       x}r| j                  j                  |«       t        |d«      r°	 |j                  | j                  «      }|snlt        |t        «      r|j                  «       }|j                  | j                   |d¬«       |j                  «       x}r| j                  j                  |«       ŒŠ|j                  | j                   «       	 ddd«       yt        |t        «      r|j                  «       }	 t        |t        «      rL|j                  | j                   |d¬«       |j                  «       x}rŠ| j                  j                  |«       nn|D ]N  }|j                  | j                   |d¬«       |j                  «       x}sŒ4| j                  j                  |«       ŒP |j                  | j                   «       ddd«       y# t        $ r t        dt!        |«      z  «      ‚w xY w# 1 sw Y   yxY w)z‘Send data to the server.
        `data` can be: `str`, `bytes`, an iterable, or file-like objects
        that support a .read() method.
        Nrl   ÚreadTF)ro   z6`data` should be str, bytes, iterable, or file. got %r)r=   r	   r<   rP   rQ   rR   Úhasattrrt   Ú	blocksizerd   re   r]   Ú	send_dataro   ÚbytesÚ	TypeErrorÚtype)r!   ÚdatarS   rP   Úchunks        r   ÚsendzHTTP2Connection.sendª   sÖ  € ð
 �?‰?Ð"Ü!Ð"AÓBÐBà�]Š]˜dØ#×0Ñ0Ó2Ð2ˆ|Ð2Ø—	‘	×!Ñ! ,Ô/ä�t˜VÔ$ØØ ŸI™I d§n¡nÓ5�EÙ ØÜ! %¬Ô-Ø %§¡£˜Ø—N‘N 4§?¡?°EÀe�NÔLØ'+×'8Ñ'8Ó':Ð:�|Ð:ØŸ	™	×)Ñ)¨,Ô7ð ð —‘ §¡Ô0Ø÷ ˆ]ô" ˜$¤Ô$Ø—{‘{“}�ðÜ˜d¤EÔ*Ø—N‘N 4§?¡?°DÀT�NÔJØ'+×'8Ñ'8Ó':Ð:�|Ð:ØŸ	™	×)Ñ)¨,Õ7ã!%˜ØŸ™ t§¡¸È%˜ÔPØ+/×+<Ñ+<Ó+>Ð>˜<Ñ>Ø ŸI™I×-Ñ-¨lÕ;ð "&ð —O‘O D§O¡OÔ4÷= ˆ]øô> ò ÜØLÜ˜4“jñ!óð ðú÷? ˆ]ús+   ¤C!H&Ä H&Ä/BHÇ8HÈ!H#È#H&È&H/c                ó   — t        d«      ‚)Nz;HTTP/2 does not support setting up a tunnel through a proxy)r?   )r!   rB   rC   rn   Úschemes        r   Ú
set_tunnelzHTTP2Connection.set_tunnel×   s   € ô "ØIó
ð 	
r   c           	     ó¬  — d }t        «       }| j                  5 }d}|�s}| j                  j                  d«      x}�r.|j	                  |«      }|D �]  }t        |t        j                  j                  «      rnt        «       }|j                  D ]T  \  }	}
|	dk(  rt        |
j                  «       «      }Œ%|j                  |	j                  d«      |
j                  d«      «       ŒV Œ–t        |t        j                  j                  «      r6||j                  z  }|j!                  |j"                  |j$                  «       Œðt        |t        j                  j&                  «      s�Œd}�Œ |j)                  «       x}r| j                  j+                  |«       |s�Œ}d d d «       |€J ‚t-        || j.                  t1        |«      ¬«      S # 1 sw Y   Œ/xY w)NFiÿÿ  s   :statusÚasciiT)Ústatusrn   Úrequest_urlr{   )Ú	bytearrayr<   rQ   ÚrecvÚreceive_datard   rI   ÚeventsÚResponseReceivedr   rn   ÚintÚdecodeÚaddÚDataReceivedr{   Úacknowledge_received_dataÚflow_controlled_lengthrm   ÚStreamEndedrP   rR   ÚHTTP2ResponserZ   rx   )r!   rƒ   r{   rS   ro   Úreceived_datarˆ   Úeventrn   rh   r   rP   s               r   ÚgetresponsezHTTP2Connection.getresponseâ   sƒ  € ð ˆÜ‹{ˆØ�]Š]˜dØˆJÚ à$(§I¡I§N¡N°5Ó$9Ð9�=Ñ9Ø!×.Ñ.¨}Ó=�FÜ!'˜Ü% e¬R¯Y©Y×-GÑ-GÔHÜ&4Ó&6˜GØ16·´¡ ¨Ø#)¨ZÒ#7Ü-0°·±³Ó-@¡Fà$+§K¡KØ(.¯©°gÓ(>ÀÇÁÈWÓ@Uõ%&ñ	 2?ô (¨¬r¯y©y×/EÑ/EÔFØ  E§J¡JÑ.˜DØ ×:Ñ:Ø %× <Ñ <¸e¿o¹oõô (¨¬r¯y©y×/DÑ/DÖEØ)-šJð% "(ð( $(×#4Ñ#4Ó#6Ð6�<Ð6Ø—I‘I×%Ñ% lÔ3ó3 !÷ ð: Ð!Ð!Ð!ÜØØØ×)Ñ)Ü�t“ô	
ð 	
÷= ˆ]ús   ™EG
Å&4G
Ç
GT)Úpreload_contentÚdecode_contentÚenforce_content_lengthc               óô  — d|v r	 | j                   �%| j                   j                  | j                  «       | j                  ||«       |xs i }|j	                  «       D ]0  \  }	}
|	j                  «       dk(  r|
dk(  rŒ| j                  |	|
«       Œ2 dt        | j                  «      vr| j                  dt        «       «       |r$| j                  |¬«       | j                  |«       y| j                  «        y)zSend an HTTP/2 requestÚchunkedNztransfer-encodings
   user-agent)rq   )rQ   Ú
settimeoutÚtimeoutrb   Úitemsrf   rj   Údictr>   r   rr   r}   )r!   r_   r`   Úbodyrn   r•   r–   r—   rD   ÚkÚvs              r   ÚrequestzHTTP2Connection.request  sÍ   € ð ˜Ñð à�9‰9Ð Ø�I‰I× Ñ  §¡Ô.à�‰˜ Ô$à’-˜RˆØ—M‘M–O‰DˆAˆqØ�w‰w‹yÐ/Ò/°A¸²NØà—‘˜q !Õ$ð	 $ð ¤ T§]¡]Ó 3Ñ3Ø�N‰N˜=Ô*AÓ*CÔDáØ�O‰O¨ˆOÔ.Ø�I‰I�d�Oà�O‰OÕr   c                óD  •— | j                   5 }	 |j                  «        |j                  «       x}r| j                  j	                  |«       d d d «       | j                  «       | _         d | _        g | _        t        ‰| �)  «        y # t
        $ r Y ŒEw xY w# 1 sw Y   ŒJxY wr   )r<   Úclose_connectionrP   rQ   rR   Ú	Exceptionr;   r=   r>   r@   Úclose)r!   rS   r{   rE   s      €r   r¥   zHTTP2Connection.close3  s�   ø€ Ø�]Š]˜dðØ×%Ñ%Ô'Ø×,Ñ,Ó.Ð.�4Ð.Ø—I‘I×%Ñ% dÔ+÷	 ð ×)Ñ)Ó+ˆŒØˆŒØˆŒä‰‰�øô ò Ùðú÷ ˆ]ús(   ŽB�=BÂ	BÂBÂBÂBÂBr   )rB   re   rC   ú
int | NonerD   ú
typing.Anyr.   r/   )r.   z)_LockedObject[h2.connection.H2Connection]©r.   r/   )r_   re   r`   re   rD   r§   r.   r/   )rh   ústr | bytesri   r©   r.   r/   )rq   r§   r.   r/   )r{   r§   r.   r/   )NNÚhttp)
rB   re   rC   r¦   rn   útyping.Mapping[str, str] | Noner   re   r.   r/   )r.   r‘   )NN)r_   re   r`   re   rž   z_TYPE_BODY | Nonern   r«   r•   r   r–   r   r—   r   rD   r§   r.   r/   )r0   r1   r2   r#   r;   rN   rb   rj   rr   r}   r€   r”   r¡   r¥   Ú__classcell__©rE   s   @r   r7   r7   U   sI  ø„ à,0ðOØðOØ)ðOØ<FðOà	õOóHõ0ðBàðBð ðBð ð	Bð
 
óBó>2ôó+ð`  Ø37Øð	
àð	
ð ð	
ð 1ð		
ð
 ð	
ð 
ó	
ð(
à	ó(
ð\ #'Ø37ð%ð !%Ø#Ø'+ñ%àð%ð ð%ð  ð	%ð
 1ð%ð ð%ð ð%ð !%ð%ð ð%ð 
ó%÷Nñ r   r7   c                  ó\   ‡ — e Zd Z	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zedd„«       Zdd„Zdd„Zˆ xZS )	r‘   c           	     óN   •— t         ‰| �  ||ddd ||¬«       || _        d| _        y )Né   zHTTP/2)rƒ   rn   ÚversionÚversion_stringÚreasonr–   r„   r   )r@   r#   Ú_dataÚlength_remaining)r!   rƒ   rn   r„   r{   r–   rE   s         €r   r#   zHTTP2Response.__init__F  s=   ø€ ô 	‰ÑØØàØ#àØ)Ø#ð 	ô 
	
ð ˆŒ
Ø !ˆÕr   c                ó   — | j                   S r   )r´   r&   s    r   r{   zHTTP2Response.data\  s   € à�z‰zÐr   c                 ó   — y r   r5   r&   s    r   Úget_redirect_locationz#HTTP2Response.get_redirect_location`  s   € Ør   c                 ó   — y r   r5   r&   s    r   r¥   zHTTP2Response.closec  s   € Ør   )F)rƒ   rŠ   rn   r   r„   re   r{   rx   r–   r   r.   r/   )r.   rx   r¨   )	r0   r1   r2   r#   Úpropertyr{   r¸   r¥   r¬   r­   s   @r   r‘   r‘   D  se   ø„ ð  %ð"àð"ð  ð"ð ð	"ð
 ð"ð ð"ð 
õ"ð, òó ðó÷r   r‘   )r   rx   r.   r   )r   rx   r.   r   )%Ú
__future__r   ÚloggingÚrer   ÚtypesÚtypingÚ	h2.configrI   Úh2.connectionÚ	h2.eventsÚ_base_connectionr   Ú_collectionsr   rK   r   r   Ú
exceptionsr	   Úresponser
   Úorig_HTTPSConnectionÚTypeVarr   Ú	getLoggerr0   ÚlogÚcompiler   r   r   r   ÚGenericr   r7   r‘   r5   r   r   Ú<module>rÍ      s¶   ðÝ "ã Û 	Û Û Û ã Û Û å )Ý )ß AÝ (Ý 'à&Ð à€F‡N�N�3Ó€à€g×Ñ˜Ó!€à$˜"Ÿ*™*Ð%DÓEÐ Ø'˜RŸZ™ZÐ(VÓWÐ ó5ó:ô�F—N‘N 1Ñ%ô ô>l�oô lô^ Ð$õ  r   