
    tni!                        U 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
mZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ ddlmZ dd	lm Z  dd
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZB dZCed         ZD eEejF                  ZGeeeH                  eId<    ejJ        d          ZKeeH         eId<    ejL        deK d          ZMeeeH                  eId<    ejL        dejN                  ZOeeeH                  eId<    ejL        dejN                  ZPeeeH                  eId<    ejL        d          ZQeeeR                  eId<    G d de          ZS G d  d!e          ZT ed"eSeT          ZU G d# d$e          ZV G d% d&e          ZW G d' d(          ZXd)eeH         d*eYfd+ZZ G d, d-e j[        eeU                   Z\ G d. d/e\eS                   Z] G d0 d1e\eT                   Z^ G d2 d3          Z_ G d4 d5          Z`e]Zae^ZbeSZceTZd	 e-sdd6lem]Z]m^Z^mSZSmTZT e]Zfe^ZgeSZheTZidS dS # ej$ r Y dS w xY w)7    N)suppress)IntEnum)AnyClassVarFinalGenericListLiteral
NamedTupleOptionalPatternSetTupleTypeTypeVarUnion)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)DEFAULT_MAX_DECOMPRESS_SIZE
HAS_BROTLIHAS_ZSTDBrotliDecompressorZLibDecompressorZSTDDecompressor)_EXC_SENTINELDEBUGEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)
BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorDecompressSizeErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10)EMPTY_PAYLOADStreamReader)
RawHeaders)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSc                       e Zd ZU eed<   eed<   eed<   ded<   eed<   eed<   ee         ed<   eed	<   eed
<   e	ed<   dS )r:   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurlN)
__name__
__module____qualname__str__annotations__r1   r5   boolr   r        P/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/aiohttp/http_parser.pyr:   r:   Y   s}         KKK
III$$$$#MMMMMM	HHHHHrW   r:   c                       e Zd ZU eed<   eed<   eed<   ee         ed<   eed<   e	ed<   e
e         ed<   e	ed<   e	ed	<   d
S )r;   rG   codereasonrI   rJ   rK   rL   rM   rN   N)rP   rQ   rR   r1   rT   intrS   r   r5   rU   r   rV   rW   rX   r;   r;   f   sy         
IIIKKKc""""#MMMMMMMMrW   r;   _MsgTc                       e Zd ZdZdZdZdZdS )
ParseStater   r         N)rP   rQ   rR   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrV   rW   rX   r_   r_   u   s"        JLMOOOrW   r_   c                   "    e Zd ZdZdZdZdZdZdS )
ChunkStater   r   r`   ra      N)rP   rQ   rR   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrV   rW   rX   rg   rg   }   s+        NNNrW   rg   c                   `    e Zd Z	 	 	 	 ddededededd	f
d
Zdee         dede	f         fdZ
d	S )r6        Fmax_line_sizemax_headersmax_field_sizelaxreturnNc                 >    || _         || _        || _        || _        d S N)rq   rr   rs   _lax)selfrq   rr   rs   rt   s        rX   __init__zHeadersParser.__init__   s'     +&,			rW   linesrH   c           	         t                      }g }d}||         }t          |          }|r!	 |                    dd          \  }}n# t          $ r t	          |          d w xY wt          |          dk    rt	          |          |d         |d         hddhz  rt	          |          |                    d          }t          |          | j        k    rdt          d                    |	                    d	d
                    t          | j                  t          t          |                              |	                    dd          }	t                              |	          st	          |          t          |          }
|dz  }||         }| j        o|o	|d         dv }|r|g}|r|
t          |          z  }
|
| j        k    rWt          d                    |	                    d	d
                    t          | j                  t          |
                    |                    |           |dz  }||k     r||         }|r
|d         dv }nd}n|d                    |          }nb|
| j        k    rWt          d                    |	                    d	d
                    t          | j                  t          |
                    |                    d          }|	                    dd          }d|v sd|v sd|v rt	          |          |                    |	|           |                    ||f           |!t%          |          t'          |          fS )Nr      :r       	   s    	zrequest header name {}utf8backslashreplaceutf-8surrogateescape)r   r   zrequest header field {}rW   
 )r   lensplit
ValueErrorr-   lstriprs   r/   formatdecoderS   r@   	fullmatchrx   appendjoinstripaddr   tuple)ry   r{   rI   rJ   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 rX   parse_headerszHeadersParser.parse_headers   s    %0MM	YZZ
 O	04 $

4 3 3vv 4 4 4#D))t34 5zzQ#E*** a%)$Aw. *#D)))]]6**F5zzD///!,33V-?@@  +,,E

OO   <<):;;D$$T** +#E***KKM NI#D  9DD$q'W2DL   $X
" !SYY.M$t':::)5<< %V5G H H    344..   %%d+++ NI :--$Y/ >+/7g+=L") # * *-- 4#666%188!LL1CDD  D/00M**   \\&))FMM'+<==E u}}5#F+++KKe$$$v///_  O	0b !))5+=+=>>s   A A#)ro   rp   ro   F)rP   rQ   rR   r\   rU   rz   r	   bytesr   r5   r   rV   rW   rX   r6   r6      s         " "
 

 
 	

 
 

 
 
 
\?%[\?	&
2	3\? \? \? \? \? \?rW   r6   rI   ru   c                     |                      t          j        d          }|                                o|                                dv S )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciilower)rI   us     rX   _is_supported_upgrader      s8    DL"%%A99;;<17799(<<<rW   c                   4   e Zd ZU dZee         ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 d)dee         d	ee	j
                 d
ededededee         dee         dee         deee                  dedededdfdZej        dee         defd            Zej        dedefd            Zdee         fdZddej        ej        ej        fdeded ed!ed"ed#edeeeee f                  eef         fd$Z!dee         ded%e"ee         ee         eef         fd&Z#d'eddfd(Z$dS )*r7   Frt   N   ro   rp   Tprotocollooplimitrq   rr   rs   timerrZ   rE   payload_exceptionresponse_with_bodyread_until_eofauto_decompressru   c                 :   || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        || _        || _        t%          |||| j                  | _        d S )NrW   F)r   r   rq   rr   rs   r   rZ   rE   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr6   rt   _headers_parser)ry   r   r   r   rq   rr   rs   r   rZ   rE   r   r   r   r   s                 rX   rz   zHttpParser.__init__   s      !	*&,
	!2"4,#%
<@ /,; 
  
rW   r{   c                     d S rw   rV   )ry   r{   s     rX   parse_messagezHttpParser.parse_message"  s    :=#rW   tec                     d S rw   rV   ry   r   s     rX   _is_chunked_tezHttpParser._is_chunked_te%  s    /2srW   c                    | j         !| j                                          d | _         n| j        r| j                            | j                   | j        rq| j        d         dk    r| j                            d           t          t                    5  |                     | j                  cd d d            S # 1 swxY w Y   d S )Nr~   z
rW   )r   feed_eofr   r   r   r   	Exceptionr   ry   s    rX   r   zHttpParser.feed_eof(  s    + ))+++#'D   z /""4:...{ ;;r?f,,K&&s+++i(( ; ;--dk::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;ts   B<<C C r<   rW   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 	   g }| j         r| j         |z   dc}| _         t          |          }d}	| j        }
d}|	|k     rm| j        h| j        s`|                    ||	          }||	k    r| j        s|t          |          z   }	M||	k    r|rt          d          ||	|         }|dk    r|                    d          }| j        	                    |           |t          |          z   }	| j        d         |k    r	 | 
                    | j                  | j                                         n# | j                                         w xY wdt          t                   ffd	} |            }|j        v rt          |          j        ot#          j                  | _        t%          d
| j                  }t%          dd          }| j        J |t*          v pt-          |o|t.          v           }|s||dk    sj        rt| j        smt3          | j        | j        |
| j                  }t9          ||j        |j        | j        | j        | j         | j!        | j"        
  
        }|j#        s|| _        n||k    rttI          tJ                    sJ t3          | j        | j        |
| j                  }d| _        t9          |j        j        | j         | j!        | j"                  | _        n|sv|t| j&        rmt3          | j        | j        |
| j                  }t9          ||j        |j        | j        | j        | j         | j!        | j"        
  
        }|j#        s|| _        ntN          }|	                    |f           j(        }n||	d          | _         |}n| j        | j        r
| j        rJ n|r|	|k     r| j        rJ | j        J 	 | j        )                    ||	d          |          \  }}n~# tT          $ rq}|}| j+        "| +                    tY          |                    }t[          | j        j.        ||           d}d}tI          |t          t^          f          r Y d }~nd }~ww xY w|rd}	t          |          }d | _        knn|	|k     m|r|	|k     r||	d          }n|}|| j        |fS )NrW   r   FzData after `Connection: close`r=      r~   ru   c                      j                                       } | d S t                              |           st	                    t          |           S rw   )rI   r   rB   r   r-   r\   )
length_hdrr   msgs    rX   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_lengthi  sT    ),)H)HJ)1'+t
 $*#3#3J#?#? D&3N&C&C C#&z??2rW   rE   rZ   )r   r   r   )	lengthrN   rE   rL   rZ   r   r   rt   headers_parserT)rE   rL   r   rt   r   )0r   r   r   r   r   findr   r'   rstripr   r   clearr   r\   rI   r-   rM   r   getattrrE   r   r#   rU   r"   rN   r4   r   r   HttpPayloadParserrL   rZ   r   r   rt   r   done
isinstancer:   r   r3   rK   	feed_dataBaseExceptionr   rS   r&   payloadr0   )ry   r   r   r   r   r   r   messagesdata_len	start_posr   rK   posr   r   r   rE   rZ   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                   @rX   r   zHttpParser.feed_data8  s    : 	6#zD0#D$*t99	y("" #+DN+iiY//)##DK# #c#hhI)### O,-MNNN  	#.De||#{{511K&&t,,, #c#hhI {2%//0)-););DK)H)HC K--////DK--////3HSM 3 3 3 3 3 3 3 "4!3!5!5-<<"/0B"C"CC), *9NK: : ")h!D!D&sFA66#}888%)-D%D &"Cv1C'CI I
  * ?4$0VaZZCKZ$(N 6@ '3 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H/3/C. . .N $2#6 F7E 4#|33#-c3D#E#EEEE&2 $&*j%)&*k	' ' 'G .2DN3D ''*z,/O040E$(H/3/C4 4 4D00 ", 44CV&2 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H/3/C. . .N $2#6 F7E 4&3G g777'*'7!%ijj!1DJ D %-$.-;&&&  )h..;&&&+777 $ 4 > >tIJJ?OQT U UIC$   #1L-9'+'='=c.>Q>Q'R'R!,4$&   CD!&8M(N       $   !I"4yyH+/D(	 Q (""T  	I((	

#DDD--s%   D5 5E"&P	 	
RA'Q??RrH   c           
         | j                             |          \  }d}d}d}d}t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        f
}t          fd|D             d          }|t          d| d                              t          j                  }	|	rM|	                                }
|
dk    rd}n0|
dk    rd}n'|
d	k    r!                    t          j                  rd}                    t          j        d
          }|                                r|                                dv r|}                    t          j                  }|4|                     |          rd}t          j        v rt          d          |||||fS )zParses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFc              3   j   K   | ]-}t                              |d                     dk    )|V  .dS )rV   r   N)r   getall).0hrI   s     rX   	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>  sC      PPaW^^Ar5J5J1K1Ka1O1O1O1O1O1OPPrW   zDuplicate 'z' header found.closeTz
keep-aliverM   r   >   brgzipzstddeflatez6Transfer-Encoding can't be present with Content-Length)r   r   r   r   CONTENT_LOCATIONCONTENT_RANGECONTENT_TYPEETAGHOSTMAX_FORWARDSSERVERTRANSFER_ENCODING
USER_AGENTnextr'   r   
CONNECTIONr   r   CONTENT_ENCODINGr   r   )ry   r{   rJ   
close_connencodingrM   rN   
singletonsbad_hdrconnvencr   rI   s                @rX   r   zHttpParser.parse_headers  s     $3AA%HH

 !IIK"O

 PPPP:PPPRVWW !Gw!G!G!GHHH {{4?++ 	

AG||!

l"""

iGKK$=$= kk$/44;;== 	SYY[[,MMMH [[/00>""2&& "g--$L   j(GWMMrW   valc                     || _         dS )zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )ry   r  s     rX   set_upgradedzHttpParser.set_upgraded=  s    
 rW   )NNr   ro   rp   ro   NNNNTFT)%rP   rQ   rR   rt   r   rU   rT   r   r   asyncioAbstractEventLoopr\   r%   rS   r   r   rz   abcabstractmethodr	   r   r]   r   r   r   r   r   r   r   _SEPr   r   r4   r   r5   r   r  rV   rW   rX   r7   r7      s        C$ ,048! ",0" $;?#'$ $%
 %
<(%
 w01%
 	%

 %
 %
 %
 ()%
 sm%
 %
 $D$78%
 !%
 %
 %
 
%
 %
 %
 %
N 	=4;=5=== =22222 2(5/    & #2 -#'#:C. C.C. C. 	C.
 C. C. !C. 
tE%-./u<	=C. C. C. C.J>N%[>N	Xd^Xc]DRVV
>N >N >N >N@       rW   r7   c                   >    e Zd ZdZdee         defdZdede	fdZ
dS )r8   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    r{   ru   c                    |d                              dd          }	 |                    dd          \  }}}n# t          $ r t          |          d w xY wt	          |          | j        k    r=t          dt          | j                  t          t	          |                              t          	                    |          st          |          t          	                    |          }|t          |          t          t          |                    d                    t          |                    d                              }|d	k    rt          j        |d
          }n|                    d          rK|                    d          \  }	}
}|	                    d          \  }	}}t          j        |	||d
          }np|dk    r|dk    rt          |d
          }nRt          |d
          }|j        dk    r6t)          |                    d                               d                    |                     |dd                    \  }}}}}}||t.          k    rd
}nd}t1          ||||||||||
  
        S )Nr   r   r    r`   maxsplitStatus line is too longr   CONNECTT)	authorityencoded/#?)rF   query_stringfragmentr  *OPTIONS)r  r   )errorslatin1F)r   r   r   r(   r   rq   r/   rS   r@   r   rA   r)   r1   r\   groupr   build
startswith	partitionschemer.   encoder   r2   r:   )ry   r{   r   rE   rF   rG   match	version_orO   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrI   rJ   r   rL   rM   rN   s                       rX   r   zHttpRequestParser.parse_messageM  s   Qxw(9::	0$(JJsQJ$?$?!FD'' 	0 	0 	0%%4/	0 t99t))))3t/A+B+BCD		NN  
   (( 	('''   ))=%%%EKKNN 3 3SQ5H5HII	Y )dD999CC__S!! 	 8<~~c7J7J4I;D;N;Ns;S;S8I/ )$%	  CC S[[Vy00dD)))CC dD)))CzR%KK'8K99@@JJ   uQRRy))	
 =M)) 
 
 	
s	   : Ar   c                     |                     dd          d                             d          }|                                r|                                dk    rdS t	          d          )	N,r   r  r~    	rN   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r'   r   s     rX   r   z HttpRequestParser._is_chunked_te  s`    YYsQY''+11%88::<< 	BHHJJ)334FGGGrW   N)rP   rQ   rR   __doc__r	   r   r:   r   rS   rU   r   rV   rW   rX   r8   r8   E  sv         S
4; S
3D S
 S
 S
 S
jH H H H H H H HrW   r8   c                        e Zd ZdZe Z	 ddedee         de	de	de
ee
eef                  eef         f
 fdZd	ee         defd
ZdedefdZ xZS )r9   zRead response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr   r   argskwargsru   c                 Z    |t           rdnd} t                      j        ||g|R i |S )Nr<   r=   )r!   superr   )ry   r   r   r3  r4  	__class__s        rX   r   zHttpResponseParser.feed_data  sA     ;"-''C uww s<T<<<V<<<rW   r{   c                    |d                              dd          }	 |                    d          \  }}n# t          $ r t          |          d w xY w	 |                    d          \  }}n&# t          $ r |                                }d}Y nw xY wt          |          | j        k    r=t          dt          | j                  t          t          |                              t          
                    |          }|t          |          t          t          |                    d                    t          |                    d                              }t          |          d	k    st          
                    |          st          |          t          |          }|                     |dd                    \  }	}
}}}}|E|t           k    rd
}n7d|cxk    rdk     sn |dv rd}n!t"          j        |	v st"          j        |	v rd}nd
}t)          |||                                |	|
||||	  	        S )Nr   r   r   r   r  r   r  r`   ra   Td      >   0     F)r   r   r   r)   r   r   rq   r/   rS   rA   r   r1   r\   r   rB   r   r2   r   r   r   r;   )ry   r{   r   rG   statusr[   r&  r'  status_irI   rJ   r   rL   rM   rN   s                  rX   r   z HttpResponseParser.parse_message  sm   Qxw(9::	0"jj!j44OGVV 	0 	0 	0%%4/	0	#\\1\55NFFF 	 	 	\\^^FFFF	 v;;+++)3t/A+B+BCFDTDT  
   ))=%%%EKKNN 3 3SQ5H5HII	 v;;!6#3#3F#;#;%%%v;; uQRRy))	
 =M))&&&&3&&&&(j*@*@$//43IW3T3T !LLNN

 

 
	
s   8 AA1 1 BBr   c                     |                     dd          d                             d                                          dk    S )Nr.  r   r  r~   r/  rN   )r0  r   r   r   s     rX   r   z!HttpResponseParser._is_chunked_te  s<    yyqy))"-33E::@@BBiOOrW   rw   )rP   rQ   rR   r1  r!   rt   r   r   r  r   r   r	   r;   r4   rU   r   r   rS   r   __classcell__)r7  s   @rX   r9   r9     s          )C
 #	= 	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	= 	= 	= 	= 	==
4; =
3E =
 =
 =
 =
~P P P P P P P P P PrW   r9   c                       e Zd Z	 	 	 	 	 	 	 	 ddedee         dedee         dee         d	ee         d
ededededdfdZ	ddZ
	 ddedededeeef         fdZdS )r   NFTr   r   rN   rL   rZ   rE   r   r   rt   r   ru   c
                
   d| _         t          j        | _        t          j        | _        d| _        d| _        || _	        |	| _
        |
| _        g | _        d| _        |r|r| j	        rt          ||          }n|}|s-t          j        | _        |                                 d| _        nT|rt          j        | _        n@|>t          j        | _        || _         | j         dk    r|                                 d| _        || _        d S )Nr   rW   FT)_lengthr_   re   _typerg   ri   _chunk_chunk_size_chunk_tailr   rx   r   _trailer_linesr   DeflateBufferrb   r   rd   rc   r   )ry   r   r   rN   rL   rZ   rE   r   r   rt   r   real_payloads               rX   rz   zHttpPayloadParser.__init__  s    /
 3 /	-+-	  	#+ 	#$2G 	#?L@ @LL #L " 	!#.DJ!!###DII 	!#1DJJ#0DJ!DL|q  %%''' 	#rW   c                     | j         t          j        k    r| j                                         d S | j         t          j        k    rt          d          | j         t          j        k    rt          d          d S )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	rD  r_   re   r   r   rc   r+   rd   r0   r   s    rX   r   zHttpPayloadParser.feed_eof7  s    :333L!!#####Z:222$C   Z:333'D   43rW   r<      ;chunkr   	CHUNK_EXTc                 
   | j         t          j        k    r| j        }t	          |          }||k    rM||z
  | _        | j                            ||           | j        dk    r| j                                         dS nd| _        | j                            |d |         |           | j                                         d||d          fS | j         t          j        k    r;| j	        r| j	        |z   }d| _	        |r| j
        t          j        k    r|                    |          }|dk    r|                    |d|          }|dk    rB|d |         }d|||         x}	v r)t          d|	          }
t          | j        |
           |
n
|d |         }| j        r|                                }t%          j        t(          |          sBt          |d |                             dd                    }
t          | j        |
           |
t-          t/          |          d	          }||t	          |          z   d          }|dk    r8t          j        | _
        | j        r|                    d
          r
|dd          }n;t          j        | _
        || _        | j                                         n	|| _	        dS | j
        t          j        k    r| j        }t	          |          }||k    r'||z
  | _        | j                            ||           dS d| _        | j                            |d |         |           ||d          }t          j        | _
        | j                                         | j
        t          j        k    rs| j        r|                    d
          r
|dd          }|d t	          |                   |k    r)|t	          |          d          }t          j        | _
        n	|| _	        dS | j
        t          j        k    r|                    |          }|dk     r	|| _	        dS |d |         }||t	          |          z   d          }|dk    r|                    d
          }| j         !                    |           | j         d         dk    rx	 | j"        #                    | j                   \  }}| j         $                                 n# | j         $                                 w xY w| j                                         d|fS |n=| j         t          j%        k    r(| j                            |t	          |                     dS )Nr   )TrW   TrW   r=   z"Unexpected LF in chunk-extension: asciir      r   r   )FrW   r~   )&rD  r_   rc   rC  r   r   r   r   rd   rG  rE  rg   ri   r   r0   r&   rx   r   rer   rC   r   r\   r   rm   r"  rj   rF  begin_http_chunk_receivingrk   end_http_chunk_receivingr   rH  r   r   r   r   re   )ry   rM  r   rN  required	chunk_lenr   isize_bextexcsizer   trailersraw_trailerss                  rX   r   zHttpPayloadParser.feed_dataC  si    :000|HE

I9$$')3&&ui888<1$$L))+++$9 %  !&&uYhY'7BBB%%'''U899--- Z:333 '(50#&  ]+ ;*"???**S//Caxx!JJy!S9966%*2A2YF$ae)<==&;$P$P$P'" '" !.dlC @ @ @&)	  > &+4C4[F9 4%+\\^^F!|Iv>> &"7 %dsd 2 27<M N N# #C *$,<<<"%I"5=="55 %cCHHn&6&6 7199*4*CDK#y 2U-=-=e-D-D 2(-abb	*4*HDK/3D, LCCEEEE+0()z ;*"@@@#/H #E

I)+++3i+?(..ui@@@)z+,(..uYhY/?JJJ %hii 0&0&H==??? ;*"DDDy *U%5%5e%<%< * %abb	Zs3xxZ(C// %c#hhjj 1&0&C+0()z;*";;;**S//CQww+0()z #;D!#C."2"23Ee||#{{511'..t444 *2.#558595I5W5W $ 36 62Hl !/557777D/557777--///#U{*{  ]+@ Z:555L""5#e**555zs   $"S   S;)NFNNNTTFru   N)r<   rL  )rP   rQ   rR   r4   r   r\   rU   rS   r6   rz   r   r   r  r   r   rV   rW   rX   r   r     s,        !%%)" $#' $0$ 0$0$ 0$ 	0$
 c]0$ sm0$ 0$ !0$ 0$ 0$ &0$ 
0$ 0$ 0$ 0$d
 
 
 
 EI} }}!%}<A}	tU{	} } } } } }rW   r   c            	           e Zd ZU dZeed<   efdedee	         de
ddfdZefd	ed
eddfdZdede
ddfdZddZddZddZdS )rI  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr   max_decompress_sizeru   Nc                 R   || _         d| _        | j        |_        || _        d| _        |  |dk    r*t
          st          d          t                      | _        nE|dk    r*t          st          d          t                      | _        nt          |          | _        || _        d S )Nr   Fr   zECan not decode content-encoding: brotli (br). Please install `Brotli`r   zRCan not decode content-encoding: zstandard (zstd). Please install `backports.zstd`)r   )ra  r[  total_compressed_bytesr   _started_decodingr   r*   r   r`  r   r   r   _max_decompress_size)ry   ra  r   rb  s       rX   rz   zDeflateBuffer.__init__  s     	%)Y" !&Xt *.   !3 4 4D *6   !1 2 2D 0( C C CD$7!!!rW   rZ  	exc_causec                 2    t          | j        ||           d S rw   )r&   ra  )ry   rZ  rg  s      rX   r&   zDeflateBuffer.set_exception  s    
 	dhY/////rW   rM  r[  c                 "   |sd S | xj         |z  c_         | j         | j        _        | j        s5| j        dk    r*|d         dz  dk    rt          | j        d          | _        	 | j                            || j        dz             }n%# t          $ r t          d	| j        z            w xY wd| _        t          |          | j        k    rt          d
| j        z            |r*| j                            |t          |                     d S d S )Nr   r         T)r   suppress_deflate_headerr   )
max_lengthz#Can not decode content-encoding: %sz:Decompressed data exceeds the configured limit of %d bytes)r[  ra  rd  re  r   r   r`  decompress_syncrf  r   r*   r   r,   r   )ry   rM  r[  s      rX   r   zDeflateBuffer.feed_data  sZ    	F		T		*.)' &		**a3!## !1! ! !D	%55$";a"? 6  EE  	 	 	&5E  	
 "& u::111%L+,  
  	2Huc%jj11111	2 	2s   #$B "B*c                     | j                                         }|s| j        dk    rN| j                            |t          |                     | j        dk    r| j         j        st          d          | j        	                                 d S )Nr   r   )
r`  flushr[  ra  r   r   r   r   r*   r   )ry   rM  s     rX   r   zDeflateBuffer.feed_eof  s    !'')) 	6DIMMHuc%jj111}	))$2C2G)*9555rW   c                 8    | j                                          d S rw   )ra  rS  r   s    rX   rS  z(DeflateBuffer.begin_http_chunk_receiving$  s    ++-----rW   c                 8    | j                                          d S rw   )ra  rT  r   s    rX   rT  z&DeflateBuffer.end_http_chunk_receiving'  s    ))+++++rW   r^  )rP   rQ   rR   r1  r   rT   r   r4   r   rS   r\   rz   r    r   r&   r   r   r   rS  rT  rV   rW   rX   rI  rI    s        NN $?	8 88 3-8 !	8
 
8 8 8 8F $10 00 !0 
	0 0 0 0)2u )2C )2D )2 )2 )2 )2V   . . . ., , , , , ,rW   rI  )r8   r9   r:   r;   )kr  r	  rR  string
contextlibr   enumr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	multidictr   r   r   yarlr   r   r   base_protocolr   compression_utilsr   r   r   r   r   r   helpersr    r!   r"   r#   r$   r%   r&   http_exceptionsr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   http_writerr1   r2   streamsr3   r4   typedefsr5   __all__r  set	printabler>   rS   rT   escaper?   compiler@   ASCIIrA   rB   rC   r   r:   r;   r]   r_   rg   r6   rU   r   ABCr7   r8   r9   r   rI  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrV   rW   rX   <module>r     s   




  				                                            " : 9 9 9 9 9 9 9 9 9             ' ' ' ' ' '                                                        4 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0             ~C 011%C/ 1 1 1 (bi(9::s : : :)rz*J*J*J*JKKws|	 K K K(bj);RXFFgcl F F F(bj::gcl : : :#-2:.>#?#?	5  ? ? ?
 
 
 
 

 
 
 
	 	 	 	 	 	 	 	 	*,>??              i? i? i? i? i? i? i? i?X=#3C#8 =T = = = =J J J J J'%. J J JZ
cH cH cH cH cH
#45 cH cH cHLVP VP VP VP VP$67 VP VP VPr| | | | | | | |~e, e, e, e, e, e, e, e,P ( ) ' ) 	 1	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 /0.01 1  	 	 	DD	s   	I# #I,+I,