
    "Ki!                     z   % S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJrJr  S SKJr  SSKJr  SS	KJ r   SS
K!J"r"J#r#J$r$J%r%J&r&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/  SSK0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:  SSK;J<r<J=r=  SSK>J?r?J@r@  SSKAJBrB  SrC\S   rD\E" \R                  5      rG\\\H      \IS'   \R                  " S5      rK\\H   \IS'   \R                  " S\K S35      rM\\\H      \IS'   \R                  " S\R                  5      rO\\\H      \IS'   \R                  " S\R                  5      rP\\\H      \IS'   \R                  " S5      rQ\\\R      \IS'    " S S\5      rS " S  S!\5      rT\" S"\S\T5      rU " S# S$\5      rV " S% S&\5      rW " S' S(5      rXS)\\H   S*\Y4S+ jrZ " S, S-\ R                  \\U   5      r\ " S. S/\\\S   5      r] " S0 S1\\\T   5      r^ " S2 S35      r_ " S4 S55      r`\]ra\^rb\Src\Trd \-(       d  SS6KeJ]r]J^r^JSrSJTrT  \]rf\^rg\Srh\Trigg! \j a     gf = f)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                       \ rS rSr% \\S'   \\S'   \\S'   S\S'   \\S'   \\S'   \	\   \S	'   \\S
'   \\S'   \
\S'   Srg)r:   Y   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurl N)__name__
__module____qualname____firstlineno__str__annotations__r1   r5   boolr   r   __static_attributes__rQ       U/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/aiohttp/http_parser.pyr:   r:   Y   s=    K
I$$#MM	HrZ   r:   c                   |    \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   \	\S'   \
\S'   \\   \S'   \
\S	'   \
\S
'   Srg)r;   f   rH   codereasonrJ   rK   rL   rM   rN   rO   rQ   N)rR   rS   rT   rU   r1   rW   intrV   r   r5   rX   r   rY   rQ   rZ   r[   r;   r;   f   s=    
IKc""#MMrZ   r;   _MsgTc                   $    \ rS rSrSrSrSrSrSrg)
ParseStateu   r   r         rQ   N)	rR   rS   rT   rU   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrY   rQ   rZ   r[   rc   rc   u   s    JLMOrZ   rc   c                   (    \ rS rSrSrSrSrSrSrSr	g)	
ChunkState}   r   r   re   rf      rQ   N)
rR   rS   rT   rU   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrY   rQ   rZ   r[   rl   rl   }   s    NrZ   rl   c                   `    \ rS rSr    SS\S\S\S\SS4
S jjrS	\\   S\	S
\
4   4S jrSrg)r6      max_line_sizemax_headersmax_field_sizelaxreturnNc                 4    Xl         X l        X0l        X@l        g N)rv   rw   rx   _lax)selfrv   rw   rx   ry   s        r[   __init__HeadersParser.__init__   s     +&,	rZ   linesrI   c           	      *   [        5       n/ nSnX   n[        U5      nU(       Ga   UR                  SS5      u  px[        U5      S:X  a  [	        U5      eUS   US   1SS1-  (       a  [	        U5      eUR                  S5      n[        U5      U R                  :  aQ  [        SR                  UR                  S	S
5      5      [        U R                  5      [        [        U5      5      5      eUR                  SS5      n	[        R                  U	5      (       d  [	        U5      e[        U5      n
US-  nX   nU R                  =(       a    U=(       a    US   S;   nU(       a  U/nU(       a  U
[        U5      -  n
XR                  :  aH  [        SR                  UR                  S	S
5      5      [        U R                  5      [        U
5      5      eUR                  U5        US-  nXF:  a  X   nU(       a  US   S;   nOSnO	U(       a  M  SR                  U5      nOWXR                  :  aH  [        SR                  UR                  S	S
5      5      [        U R                  5      [        U
5      5      eUR!                  S5      nUR                  SS5      nSU;   d  SU;   d  SU;   a  [	        U5      eUR#                  X5        UR                  Xx45        U(       a  GM  [%        U5      ['        U5      4$ ! [         a    [	        U5      S ef = f)Nr      :r       	   s    	zrequest header name {}utf8backslashreplaceutf-8surrogateescape)r   r   zrequest header field {}rZ   
 )r   lensplit
ValueErrorr-   lstriprx   r/   formatdecoderV   r@   	fullmatchr}   appendjoinstripaddr   tuple)r~   r   rJ   rK   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 r[   parse_headersHeadersParser.parse_headers   s    %0M	Z
4 $

4 3 5zQ#E** a%)$Aw.#D))]]6*F5zD///!,33V-?@ ++,E
O  <<):;D$$T**#E**KM NI#D  99DD$q'W2DL $X
"!SY.M$':'::)5<< %V5G H   3 34.  %%d+ NI -$/+/7g+=L") #l* *- #6#66%188!LL1CD D//0M*  \\&)FMM'+<=E u}5#F++KK$/_ db !)5+=>>[  4#D)t34s   K; ;L)r}   rx   rw   rv   )     r   F)rR   rS   rT   rU   r`   rX   r   r	   bytesr   r5   r   rY   rQ   rZ   r[   r6   r6      sl     " "

 
 	

 
 

\?%[\?	&
2	3\?rZ   r6   rJ   rz   c                     U R                  [        R                  S5      nUR                  5       =(       a    UR	                  5       S;   $ )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciilower)rJ   us     r[   _is_supported_upgrader      s3    DLL"%A99;<1779(<<<rZ   c                      \ rS rSr% Sr\\   \S'                S'S\\	   S\\
R                     S\S\S	\S
\S\\   S\\   S\\   S\\\      S\S\S\SS4S jjr\R&                  S\\   S\4S j5       r\R&                  S\S\4S j5       rS\\   4S jrSS\R6                  \R8                  \R:                  4S\S\S\S\S\S \S\ \\ \\!4      \\4   4S! jjr"S\\   S\ S"\#\\   \\   \\4   4S# jr$S$\SS4S% jr%S&r&g)(r7      Fry   Nprotocollooplimitrv   rw   rx   timerr^   rF   payload_exceptionresponse_with_bodyread_until_eofauto_decompressrz   c                    Xl         X l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl        Xl	        Xl
        / U l        SU l        SU l        S U l        S U l        Xl        X0l        [%        XEX`R&                  5      U l        g )NrZ   F)r   r   rv   rw   rx   r   r^   rF   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr6   ry   _headers_parser)r~   r   r   r   rv   rw   rx   r   r^   rF   r   r   r   r   s                 r[   r   HttpParser.__init__   s      !	*&,
	!2"4,#%
<@ /, 
rZ   r   c                     g r|   rQ   )r~   r   s     r[   parse_messageHttpParser.parse_message"  s    :=rZ   tec                     g r|   rQ   r~   r   s     r[   _is_chunked_teHttpParser._is_chunked_te%  s    /2rZ   c                    U R                   b"  U R                   R                  5         S U l         g U R                  (       a%  U R                  R	                  U R                  5        U R                  (       ab  U R                  S   S:w  a  U R                  R	                  S5        [        [        5         U R                  U R                  5      sS S S 5        $ g ! , (       d  f       g = f)Nr   z
rZ   )r   feed_eofr   r   r   r   	Exceptionr   r~   s    r[   r   HttpParser.feed_eof(  s    +  ))+#'D   zz""4::.{{;;r?f,KK&&s+i(--dkk: )( )(s   4C
C(r<   rZ   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                   ^^ / nU R                   (       a  U R                   U-   Ssol         [        U5      nSn	U R                  n
SnX:  Ga  U R                  Gc  U R                  (       Gd  UR                  X)5      nX:X  a!  U R                  (       d  U[        U5      -   n	M]  X:  Ga  U(       a  [        S5      eXU nUS:X  a  UR                  S5      nU R                  R                  U5        U[        U5      -   n	U R                  S   U:X  Ga6   U R                  U R                  5      mU R                  R                  5         S[        [           4UU4S	 jjnU" 5       nUTR                  ;   a  [        U5      eTR                   =(       a    [#        TR                  5      U l        [%        TS
U R&                  5      n[%        TSS5      nU R(                  c   eU[*        ;   =(       d    [-        U=(       a	    U[.        ;   5      nU(       d  Ub  US:  d  TR0                  (       a  U R                  (       d  [3        U R(                  U R4                  U
U R6                  S9n[9        UUTR0                  UTR:                  U R<                  U R>                  U R@                  U RB                  U RD                  S9
nURF                  (       d  UU l        GOPUU:X  a  [I        T[J        5      (       d   e[3        U R(                  U R4                  U
U R6                  S9nSU l        [9        UTR&                  TR:                  U R@                  U RB                  U RD                  S9U l        OU(       d  Uc  U RL                  (       a  [3        U R(                  U R4                  U
U R6                  S9n[9        UUTR0                  UTR:                  U R<                  U R>                  U R@                  U RB                  U RD                  S9
nURF                  (       d  UU l        O[N        nUR                  TU45        TRP                  nOXS  U l         UnOU R                  c%  U R                  (       a  U R                  (       a   eOxU(       ah  X:  ac  U R                  (       a   eU R                  c   e U R                  RS                  XS  U5      u  nnU(       a  Sn	[        U5      nS U l        GM  OOX:  a  GM  U(       a
  X:  a  XS  nOUnXpR                  U4$ ! U R                  R                  5         f = f! [T         at  nUnU RV                  b  U RW                  [Y        U5      5      n[[        U R                  R\                  UU5        SnSn[I        U[        [^        45      (       a  e  S nANS nAff = f)NrZ   r   FzData after `Connection: close`r=      r   rz   c                     > TR                   R                  T5      n U c  g [        R                  U 5      (       d  [	        T5      e[        U 5      $ r|   )rJ   r   rB   r   r-   r`   )
length_hdrr   msgs    r[   get_content_length0HttpParser.feed_data.<locals>.get_content_lengthi  sF    ),)HJ)1'+
 $*#3#3J#?#?&3N&C C#&z?2rZ   rF   r^   )r   r   r   )	lengthrO   rF   rM   r^   r   r   ry   headers_parserT)rF   rM   r   ry   r   )0r   r   r   r   r   findr   r'   rstripr   r   clearr   r`   rJ   r-   rN   r   getattrrF   r   r#   rX   r"   rO   r4   r   r   HttpPayloadParserrM   r^   r   r   ry   r   done
isinstancer:   r   r3   rL   	feed_dataBaseExceptionr   rV   r&   payloadr0   )r~   r   r   r   r   r   r   messagesdata_len	start_posr   rL   posr   r   r   rF   r^   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                   @r[   r   HttpParser.feed_data8  s    ::#zzD0#D*t9	yy" ##+DNNNii/#DKK #c#hI##,-MNN  #.De|#{{51KK&&t, #c#hI {{2%/0)-););DKK)HC KK--/3HSM 3 3 "4!5-<"/0B"CC), *9NKK: ")h!D&sFA6#}}888%)-D%D &"Cv1C'CI
  *$0VaZCKK$(NN&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.N $2#6#67E 4#|3#-c3D#E#EE#E&2 $&*jj%)&*kk	'G .2DN3D ''*zz,/OO040E0E$(HH/3/C/C4D0 ",4CVCV&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.N $2#6#67E 4&3G g7'*'7'7!%j!1DJ D %%-$..;;& ).;;&++777 $ 4 4 > >tJ?OQT UIC&  !I"4yH+/D(	  Q "T I(
#DD--i !KK--/j % #1L--9'+'='=c.>Q'R!,,44$& CD!&8M(N  s%   T" 8!U "T>
V?A*V::V?rI   c           
        ^ U R                   R                  U5      u  mnSnSnSnSn[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4
n[        U4S jU 5       S5      nUb  [        SU S35      eTR                  [        R                   5      n	U	(       aN  U	R#                  5       n
U
S:X  a  SnO5U
S:X  a  SnO,U
S	:X  a&  TR                  [        R$                  5      (       a  SnTR                  [        R&                  S
5      nUR)                  5       (       a  UR#                  5       S;   a  UnTR                  [        R                  5      nUb7  U R+                  U5      (       a  Sn[        R                  T;   a  [        S5      eTX#XEU4$ )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   >#    U  H(  n[        TR                  US 5      5      S:  d  M$  Uv   M*     g7f)rQ   r   N)r   getall).0hrJ   s     r[   	<genexpr>+HttpParser.parse_headers.<locals>.<genexpr>  s*     P:aW^^Ar5J1Ka1O:s   #3	3zDuplicate 'z' header found.closeTz
keep-aliverN   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   )r~   r   rK   
close_connencodingrN   rO   
singletonsbad_hdrconnvencr   rJ   s                @r[   r   HttpParser.parse_headers  s     $33AA%H

 !!IIIIKK""OO

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

AG|!
l""
iGKK$=$= kk$//4;;==SYY[,MMH [[//0>""2&&""g-$L  (WMMrZ   valc                     Xl         g)zJSet connection upgraded (to websocket) mode.

:param bool val: new state.
N)r   )r~   r  s     r[   set_upgradedHttpParser.set_upgraded=  s	    
 rZ   )r   r   r   r   r   r   r   r   r^   r   rx   rw   rv   rF   r   r   r   r   r   )NNi   r   r   r   NNNNTFT)'rR   rS   rT   rU   ry   r   rX   rW   r   r   asyncioAbstractEventLoopr`   r%   rV   r   r   r   abcabstractmethodr	   r   ra   r   r   r   r   r   r   r   _SEPr   r   r4   r   r5   r   r  rY   rQ   rZ   r[   r7   r7      s!   C$ ,048! ",0" $;?#'$ $%
<(%
 w001%
 	%

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

Exception .http_exceptions.BadStatusLine
could be raised in case of any errors in status line.
Returns RawRequestMessage.
r   rz   c                 <   US   R                  SS5      n UR                  SSS9u  p4n[	        U5      U R
                  :  a2  [        S[        U R
                  5      [        [	        U5      5      5      e[        R                  U5      (       d  [        U5      e[        R                  U5      nUc  [        U5      e[        [        UR                  S5      5      [        UR                  S5      5      5      nUS	:X  a  [        R                   " US
S9nOUR#                  S5      (       a@  UR%                  S5      u  pnU	R%                  S5      u  pn[        R                   " U	UUS
S9nOXUS:X  a  US:X  a  [        US
S9nOA[        US
S9nUR&                  S:X  a'  [)        UR+                  SS9R                  S5      5      eU R-                  USS  5      u  nnnnnnUc  U[.        ::  a  S
nOSn[1        UUUUUUUUUU5
      $ ! [         a    [        U5      S ef = f)Nr   r   r    re   maxsplitStatus line is too longr   CONNECTT)	authorityencoded/#?)rG   query_stringfragmentr(  *OPTIONS)r(  r   )errorslatin1F)r   r   r   r(   r   rv   r/   rV   r@   r   rA   r)   r1   r`   groupr   build
startswith	partitionschemer.   encoder   r2   r:   )r~   r   r   rF   rG   rH   match	version_orP   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrJ   rK   r   rM   rN   rO   s                       r[   r   HttpRequestParser.parse_messageM  s0   Qxw(9:	0$(JJsQJ$?!F' t9t))))3t/A/A+BCD	N 
   ((''   )=%%EKKN 3SQ5HI	Y ))dD9C__S!! 8<~~c7J4I;D;N;Ns;S8I ))$%	C S[Vy0dD)C dD)CzzR%KK'8K9@@J  uQRy)	
 =M) 
 	
G  	0%4/	0s   H Hr   c                     UR                  SSS9S   R                  S5      nUR                  5       (       a  UR                  5       S:X  a  g[	        S5      e)	N,r   r#  r    	rO   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r'   r   s     r[   r    HttpRequestParser._is_chunked_te  sK    YYsQY'+11%8::<<BHHJ)3FGGrZ   rQ   N)rR   rS   rT   rU   __doc__r	   r   r:   r   rV   rX   r   rY   rQ   rZ   r[   r8   r8   E  s9    S
4; S
3D S
jH H HrZ   r8   c                      ^  \ rS rSrSr\(       + r SS\S\\	   S\
S\
S\\\\\4      \\4   4
U 4S jjjrS	\\   S\4S
 jrS\S\4S jrSrU =r$ )r9   i  zRead response status line and headers.

BadStatusLine could be raised in case of any errors in status line.
Returns RawResponseMessage.
r   r   argskwargsrz   c                 P   > Uc  [         (       a  SOSn[        TU ]  " X/UQ70 UD6$ )Nr<   r=   )r!   superr   )r~   r   r   rG  rH  	__class__s        r[   r   HttpResponseParser.feed_data  s/     ;"U'Cw <T<V<<rZ   r   c                    US   R                  SS5      n UR                  SS9u  p4 UR                  SS9u  pE[        U5      U R                  :  a2  [        S[        U R                  5      [        [        U5      5      5      e[        R                  U5      nUc  [        U5      e[        [        UR                  S5      5      [        UR                  S5      5      5      n[        U5      S	:w  d  [        R                  U5      (       d  [        U5      e[        U5      nU R                  USS  5      u  n	n
nnnnUcR  U[         ::  a  S
nOESUs=::  a  S:  d  O  US;   a  SnO-["        R$                  U	;   d  ["        R&                  U	;   a  SnOS
n[)        UUUR	                  5       U	U
UUUU5	      $ ! [         a    [        U5      S ef = f! [         a    UR	                  5       nSn GNf = f)Nr   r   r   r   r#  r   r%  re   rf   Td      >   0     F)r   r   r   r)   r   r   rv   r/   rV   rA   r   r1   r`   r2  rB   r   r2   r   r   r
  r;   )r~   r   r   rH   statusr_   r8  r9  status_irJ   rK   r   rM   rN   rO   s                  r[   r    HttpResponseParser.parse_message  s   Qxw(9:	0"jj!j4OG	#\\1\5NF
 v;+++)3t/A/A+BCFDT 
   )=%%EKKN 3SQ5HI	 v;!6#3#3F#;#;%%v; uQRy)	
 =M)&3&(j*@$$/43I3IW3T !LLN

 
	
_  	0%4/	0
  	\\^FF	s   F4 G 4GG.-G.r   c                 h    UR                  SSS9S   R                  S5      R                  5       S:H  $ )NrA  r   r#  r   rB  rO   )rC  r   r   r   s     r[   r   !HttpResponseParser._is_chunked_te  s3    yyqy)"-33E:@@BiOOrZ   rQ   r|   )rR   rS   rT   rU   rE  r!   ry   r   r   r  r   r   r	   r;   r4   rX   r   r   rV   r   rY   __classcell__)rK  s   @r[   r9   r9     s     )C
 #	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	==
4; =
3E =
~P P P PrZ   r9   c                       \ rS rSr        SS\S\\   S\S\\   S\\   S\\   S	\S
\S\S\	SS4S jjr
SS jr SS\S\S\S\\\4   4S jjrSrg)r   i  Nr   r   rO   rM   r^   rF   r   r   ry   r   rz   c
                T   SU l         [        R                  U l        [        R
                  U l        SU l        SU l        Xl	        Xl
        Xl        / U l        SU l        U(       a$  U(       a  U R                  (       a  [        X5      nOUnU(       d-  [        R                  U l        UR!                  5         SU l        ObU(       a  [        R"                  U l        OEUbB  [        R$                  U l        X l         U R                   S:X  a  UR!                  5         SU l        Xl        g )Nr   rZ   FT)_lengthrc   rj   _typerl   ro   _chunk_chunk_size_chunk_tailr   r}   r   _trailer_linesr   DeflateBufferrg   r   ri   rh   r   )r~   r   r   rO   rM   r^   rF   r   r   ry   r   real_payloads               r[   r   HttpPayloadParser.__init__  s     //
 33 /	-+-	 +$2G2G?L@L #L "#..DJ!!#DI#11DJ#00DJ!L||q %%' 	#rZ   c                    U R                   [        R                  :X  a  U R                  R	                  5         g U R                   [        R
                  :X  a  [        S5      eU R                   [        R                  :X  a  [        S5      eg )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	r[  rc   rj   r   r   rh   r+   ri   r0   r   s    r[   r   HttpPayloadParser.feed_eof7  so    ::333LL!!#ZZ:222$C  ZZ:333'D  4rZ   chunkr   	CHUNK_EXTc                 
   U R                   [        R                  :X  a  U R                  n[	        U5      nXE:  aQ  XE-
  U l        U R
                  R                  X5        U R                  S:X  a  U R
                  R                  5         g gSU l        U R
                  R                  US U U5        U R
                  R                  5         SXS  4$ U R                   [        R                  :X  Ga  U R                  (       a  U R                  U-   nSU l	        U(       Ga  U R                  [        R                  :X  Ga  UR                  U5      nUS:  Gao  UR                  USU5      nUS:  a7  US U nSXU =n	;   a'  [        SU	< 35      n
[        U R
                  U
5        U
eOUS U nU R                   (       a  UR#                  5       n[$        R&                  " [(        U5      (       d6  [        US U R+                  SS5      5      n
[        U R
                  U
5        U
e[-        [/        U5      S	5      nX[	        U5      -   S  nUS:X  aB  [        R0                  U l
        U R                   (       a  UR3                  S
5      (       a  USS  nO=[        R4                  U l
        Xl        U R
                  R9                  5         OXl	        gU R                  [        R4                  :X  a  U R6                  n[	        U5      nXE:  a%  XE-
  U l        U R
                  R                  X5        gSU l        U R
                  R                  US U U5        XS  n[        R:                  U l
        U R
                  R=                  5         U R                  [        R:                  :X  ai  U R                   (       a  UR3                  S
5      (       a  USS  nUS [	        U5       U:X  a$  U[	        U5      S  n[        R                  U l
        OXl	        gU R                  [        R0                  :X  a  UR                  U5      nUS:  a  Xl	        gUS U nX[	        U5      -   S  nUS:X  a  UR?                  S
5      nU R@                  RC                  U5        U R@                  S   S:X  a`   U RD                  RG                  U R@                  5      u  pU R@                  RI                  5         U R
                  R                  5         SU4$ U(       a  GM  gU R                   [        RJ                  :X  a%  U R
                  R                  U[	        U5      5        g! U R@                  RI                  5         f = f)Nr   )TrZ   TrZ   r=   z"Unexpected LF in chunk-extension: asciir      r   r   )FrZ   r   )&r[  rc   rh   rZ  r   r   r   r   ri   r^  r\  rl   ro   r   r0   r&   r}   r   rer   rC   r   r`   r   rs   r4  rp   r]  begin_http_chunk_receivingrq   end_http_chunk_receivingr   r_  r   r   r   r   rj   )r~   re  r   rf  required	chunk_lenr   isize_bextexcsizer   trailersraw_trailerss                  r[   r   HttpPayloadParser.feed_dataC  s    ::000||HE
I$'3&&u8<<1$LL))+$ %d ]  !&&uYh'7B%%'U9--- ZZ:333((50#&  ;;*"?"??**S/Cax!JJy!S96%*2AYF$)<=&;&H$P'" !.dllC @&)	  > &+4C[F99%+\\^F!||Iv>>"7 %ds 2 27<M N#C *$,,<"%I"5="5 %CHn&6 719*4*C*CDK#yyU-=-=e-D-D(-ab	*4*H*HDK/3, LLCCE+0() ;;*"@"@@#//H #E
I++3+?(..u@)+,(..uYh/?J %i 0&0&H&H==? ;;*"D"DDyyU%5%5e%<%< %ab	Zs3x(C/ %c#hj 1&0&C&C+0();;*";";;**S/CQw+0() #;D!C."23Ee|#{{51''..t4 **2.#58595I5I5W5W $ 3 362H !//557--/#U{*{ %F  ZZ:555LL""5#e*5 !//557s   #'U U-)r   r\  r]  r^  r   r}   rZ  r_  r[  r   r   )NFNNNTTFrz   N)r<      ;)rR   rS   rT   rU   r4   r   r`   rX   rV   r6   r   r   r   r  r   r   rY   rQ   rZ   r[   r   r     s     !%%)" $#' $0$0$ 0$ 	0$
 c]0$ sm0$ 0$ !0$ 0$ 0$ &0$ 
0$d
 EI}}!%}<A}	tU{	} }rZ   r   c            	           \ rS rSr% Sr\\S'   \4S\S\	\
   S\SS4S	 jjr\4S
\S\SS4S jjrS\S\SS4S jrSS jrSS jrSS jrSrg)r`  i  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  max_decompress_sizerz   Nc                 6   Xl         SU l        U R                  Ul        X l        SU l        U   US:X  a&  [
        (       d  [        S5      e[        5       U l        O:US:X  a&  [        (       d  [        S5      e[        5       U l        O[        US9U l        X0l        g )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  )r{  rs  total_compressed_bytesr  _started_decodingr   r*   r   rz  r   r   r   _max_decompress_size)r~   r{  r  r|  s       r[   r   DeflateBuffer.__init__  s     	%)YY" !&t:*.  !3 4D8*6  !1 2D 0( CD$7!rZ   rr  	exc_causec                 0    [        U R                  X5        g r|   )r&   r{  )r~   rr  r  s      r[   r&   DeflateBuffer.set_exception  s    
 	dhh/rZ   re  rs  c                 d   U(       d  g U =R                   U-  sl         U R                   U R                  l        U R                  (       d5  U R                  S:X  a%  US   S-  S:w  a  [        U R                  SS9U l         U R                  R                  XR                  S-   S9nSU l        [        U5      U R                  :  a  [        S
U R                  -  5      eU(       a&  U R                  R                  U[        U5      5        g g ! [         a    [        S	U R                  -  5      ef = f)Nr  r         T)r  suppress_deflate_headerr   )
max_lengthz#Can not decode content-encoding: %sz:Decompressed data exceeds the configured limit of %d bytes)rs  r{  r~  r  r  r   rz  decompress_syncr  r   r*   r   r,   r   )r~   re  rs  s      r[   r   DeflateBuffer.feed_data  s   		T	*.))' &&*a3!# !1!D	%%55";";a"? 6 E "& u:111%L++, 
 HHuc%j1   	&5E 	s    &D #D/c                 P   U R                   R                  5       nU(       d  U R                  S:  a[  U R                  R	                  U[        U5      5        U R                  S:X  a&  U R                   R                  (       d  [        S5      eU R                  R                  5         g )Nr   r  )
rz  flushrs  r{  r   r   r  r   r*   r   )r~   re  s     r[   r   DeflateBuffer.feed_eof  sp    !!'')DIIMHHuc%j1}}	)$2C2C2G2G*955rZ   c                 8    U R                   R                  5         g r|   )r{  rk  r   s    r[   rk  (DeflateBuffer.begin_http_chunk_receiving$  s    ++-rZ   c                 8    U R                   R                  5         g r|   )r{  rl  r   s    r[   rl  &DeflateBuffer.end_http_chunk_receiving'  s    ))+rZ   )r  r  rz  r  r{  rs  rw  )rR   rS   rT   rU   rE  r   rW   r   r4   r   rV   r`   r   r    r   r&   r   r   r   rk  rl  rY   rQ   rZ   r[   r`  r`    s    N $?	88 3-8 !	8
 
8F $100 !0 
	0)2u )2C )2D )2V.,rZ   r`  )r8   r9   r:   r;   )kr  r  rj  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>   rV   rW   escaper?   compiler@   ASCIIrA   rB   rC   r   r:   r;   ra   rc   rl   r6   rX   r   ABCr7   r8   r9   r   r`  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrQ   rZ   r[   <module>r     si   
  	      " : 9   '      4 0   ~ 0 01%C/ 1 !ii(9:s :!zzJ6Gr*JKws|	 K jj);RXXFgcl F jj:gcl :#%::.>#?	5  ?

 
	 	 	*,>?  i? i?X=#3C#8 =T =J'%. JZ
cH
#45 cHLVP$67 VPr| |~e, e,P ( ) ' ) 		
 	
 /0.0   		s   H1 1H:9H: