
    pi!                     l   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j                        ZGeeeH      eId<    ej                  d      ZKeeH   eId<    ej                  deK d      ZMeeeH      eId<    ej                  dej                        ZOeeeH      eId<    ej                  dej                        ZPeeeH      eId<    ej                  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^ZgeSZheTZiyy# ej$ r Y y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                   x    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<   y)r:   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurlN)
__name__
__module____qualname__str__annotations__r1   r5   boolr   r        U/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/aiohttp/http_parser.pyr:   r:   Y   s=    K
I$$#MM	HrW   r:   c                   t    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	<   y
)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   s=    
IKc""#MMrW   r;   _MsgTc                       e Zd ZdZdZdZdZy)
ParseStater   r         N)rP   rQ   rR   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrV   rW   rX   r_   r_   u   s    JLMOrW   r_   c                        e Zd ZdZdZdZdZdZy)
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    NrW   rg   c                   R    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
y)r6   max_line_sizemax_headersmax_field_sizelaxreturnNc                 <    || _         || _        || _        || _        y N)ro   rp   rq   _lax)selfro   rp   rq   rr   s        rX   __init__zHeadersParser.__init__   s#     +&,	rW   linesrH   c           	         t               }g }d}||   }t        |      }|r	 |j                  dd      \  }}t        |      dk(  rt	        |      |d   |d   hddhz  rt	        |      |j                  d      }t        |      | j                  kD  rQt        dj                  |j                  d	d
            t        | j                        t        t        |                  |j                  dd      }	t        j                  |	      st	        |      t        |      }
|dz  }||   }| j                  xr |xr |d   dv }|r|g}|r|
t        |      z  }
|
| j                  kD  rHt        dj                  |j                  d	d
            t        | j                        t        |
            |j                  |       |dz  }||k  r||   }|r|d   dv }nd}n|rdj                  |      }nW|
| j                  kD  rHt        dj                  |j                  d	d
            t        | j                        t        |
            |j!                  d      }|j                  dd      }d|v sd|v sd|v rt	        |      |j#                  |	|       |j                  ||f       |rt%        |      t'        |      fS # t        $ r t	        |      d w xY w)Nr      :r       	   s    	zrequest header name {}utf8backslashreplaceutf-8surrogateescape)r}   r~   zrequest header field {}rW   
 )r   lensplit
ValueErrorr-   lstriprq   r/   formatdecoderS   r@   	fullmatchrv   appendjoinstripaddr   tuple)rw   ry   rI   rJ   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 rX   parse_headerszHeadersParser.parse_headers   s    %0M	YZ
4 $

4 3v 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$t':'::)5<< %V5G H   3 34.  %%d+ NI :-$Y/+/7g+=L") #* *- 4#6#66%188!LL1CD D//0M*  \\&)FMM'+<=E u}5#F++KKe$v/_ b !)5+=>>[  4#D)t34s   K K)     r   F)rP   rQ   rR   r\   rU   rx   r	   bytesr   r5   r   rV   rW   rX   r6   r6      sl     " "

 
 	

 
 

\?%[\?	&
2	3\?rW   r6   rI   rs   c                     | j                  t        j                  d      }|j                         xr |j	                         dv S )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciilower)rI   us     rX   _is_supported_upgrader      s3    DLL"%A99;<1779(<<<rW   c                      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j4                  ej6                  ej8                  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$y)&r7   Frr   Nprotocollooplimitro   rp   rq   timerrZ   rE   payload_exceptionresponse_with_bodyread_until_eofauto_decompressrs   c                 :   || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        || _        || _        t%        |||| j&                        | _        y )NrW   F)r   r   ro   rp   rq   r   rZ   rE   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr6   rr   _headers_parser)rw   r   r   r   ro   rp   rq   r   rZ   rE   r   r   r   r   s                 rX   rx   zHttpParser.__init__   s      !	*&,
	!2"4,#%
<@ /,; 
rW   ry   c                      y ru   rV   )rw   ry   s     rX   parse_messagezHttpParser.parse_message"  s    :=rW   tec                      y ru   rV   rw   r   s     rX   _is_chunked_tezHttpParser._is_chunked_te%  s    /2rW   c                    | j                   "| j                   j                          d | _         y | j                  r%| j                  j	                  | j                         | j                  ra| j                  d   dk7  r| j                  j	                  d       t        t              5  | j                  | j                        cd d d        S y # 1 sw Y   y xY w)Nr|   z
rW   )r   feed_eofr   r   r   r   	Exceptionr   rw   s    rX   r   zHttpParser.feed_eof(  s    +  ))+#'D   zz""4::.{{;;r?f,KK&&s+i( ;--dkk:; ;;s   (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  rX| j                  | j                  s|j                  ||	      }||	k(  r| j                  s|t        |      z   }	R||	k\  rl|rt        d      ||	| }|dk(  r|j                  d      }| j                  j                  |       |t        |      z   }	| j                  d   |k(  r	 | j                  | j                        | j                  j                          dt        t           ffd	} |       }|j                  v rt        |      j                   xr t#        j                        | _        t%        d
| j&                        }t%        dd      }| j(                  J |t*        v xs t-        |xr |t.        v       }|s||dkD  sj0                  r| j                  st3        | j(                  | j4                  |
| j6                        }t9        ||j0                  |j:                  | j<                  | j>                  | j@                  | jB                  | jD                  
      }|jF                  sO|| _        nF||k(  rtI        tJ              sJ t3        | j(                  | j4                  |
| j6                        }d| _        t9        |j&                  j:                  | j@                  | jB                  | jD                        | _        n|s|| jL                  rt3        | j(                  | j4                  |
| j6                        }t9        ||j0                  |j:                  | j<                  | j>                  | j@                  | jB                  | jD                  
      }|jF                  s|| _        ntN        }|j                  |f       jP                  }n||	d  | _         |}n| j                  | j                  r| j                  rJ nf|r\|	|k  rW| j                  rJ | j                  J 	 | j                  jS                  ||	d  |      \  }}|rd}	t        |      }d | _        Vn|	|k  rX|r|	|k  r||	d  }n|}|| j                  |fS # | j                  j                          w xY w# tT        $ rn}|}| jV                  | jW                  tY        |            }t[        | j                  j\                  ||       d}d}tI        |t        t^        f      r Y d }~d }~ww xY w)NrW   r   FzData after `Connection: close`r=      r|   rs   c                      j                   j                        } | y t        j                  |       st	              t        |       S ru   )rI   r   rB   r   r-   r\   )
length_hdrr   msgs    rX   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_lengthi  sC    ),)HJ)1'+
 $*#3#3J#?&3N&C C#&z?2rW   rE   rZ   )r   r   r   )	lengthrN   rE   rL   rZ   r   r   rr   headers_parserT)rE   rL   r   rr   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   rr   r   done
isinstancer:   r   r3   rK   	feed_dataBaseExceptionr   rS   r&   payloadr0   )rw   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    ::#zzD0#D$*t9	yy(" ##+DNNiiY/)#DKK #c#hI)##,-MNN  	#.De|#{{51KK&&t, #c#hI {{2%/0)-););DKK)HC KK--/3HSM 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&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!%ij!1DJ D %%-$..;;& )h.;;&++777 $ 4 4 > >tIJ?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%    R? "S ?S	U'A$UUrH   c           
         | j                   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      j                  t        j                         }	|	rF|	j#                         }
|
dk(  rd}n.|
dk(  rd}n&|
d	k(  r!j                  t        j$                        rd}j                  t        j&                  d
      }|j)                         r|j#                         dv r|}j                  t        j                        }|0| j+                  |      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   `   K   | ]%  }t        j                  |d             dkD  s"| ' yw)rV   r   N)r   getall).0hrI   s     rX   	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>  s(     PaW^^Ar5J1Ka1OPs   #..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   )rw   ry   rJ   
close_connencodingrM   rN   
singletonsbad_hdrconnvencr   rI   s                @rX   r   z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  j(GWMMrW   valc                     || _         y)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )rw   r  s     rX   set_upgradedzHttpParser.set_upgraded=  s    
 rW   )NNi   r   r   r   NNNNTFT)%rP   rQ   rR   rr   r   rU   rT   r   r   asyncioAbstractEventLoopr\   r%   rS   r   r   rx   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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@  rW   r7   c                   6    e Zd ZdZdee   defdZdede	fdZ
y)r8   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    ry   rs   c                 <   |d   j                  dd      }	 |j                  dd      \  }}}t	        |      | j
                  kD  r2t        dt        | j
                        t        t	        |                  t        j                  |      st        |      t        j                  |      }|t        |      t        t        |j                  d            t        |j                  d                  }|d	k(  rt        j                   |d
      }n|j#                  d      rD|j%                  d      \  }	}
}|	j%                  d      \  }	}}t        j                   |	||d
      }n^|dk(  r|dk(  rt        |d
      }nFt        |d
      }|j&                  dk(  r*t)        |j+                  d      j                  d            | j-                  |dd        \  }}}}}}||t.        k  rd
}nd}t1        ||||||||||
      S # t        $ r t        |      d w xY w)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   ro   r/   rS   r@   r   rA   r)   r1   r\   groupr   build
startswith	partitionschemer.   encoder   r2   r:   )rw   ry   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  s1   Qxw(9:	0$(JJsQJ$?!FD' 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                     |j                  dd      d   j                  d      }|j                         r|j                         dk(  ry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  sI    YYsQY'+11%8::<BHHJ)3FGGrW   N)rP   rQ   rR   __doc__r	   r   r:   r   rS   rU   r   rV   rW   rX   r8   r8   E  s9    S
4; S
3D S
j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.
    r   r   argskwargsrs   c                 D    |
t         rdnd}t        |   ||g|i |S )Nr<   r=   )r!   superr   )rw   r   r   r2  r3  	__class__s        rX   r   zHttpResponseParser.feed_data  s/     ;"'Cw s<T<V<<rW   ry   c                    |d   j                  dd      }	 |j                  d      \  }}	 |j                  d      \  }}t        |      | j                  kD  r2t        dt        | j                        t        t        |                  t        j                  |      }|t        |      t        t        |j                  d            t        |j                  d                  }t        |      d	k7  st        j                  |      st        |      t        |      }| j                  |dd        \  }	}
}}}}|I|t         k  rd
}n=d|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)        |||j	                         |	|
||||	      S # t        $ r t        |      d w xY w# t        $ r |j	                         }d}Y w xY w)Nr   r   r   r   r  r   r  r`   ra   Td      >   0     F)r   r   r   r)   r   r   ro   r/   rS   rA   r   r1   r\   r  rB   r   r2   r   r   r   r;   )rw   ry   r   rG   statusr[   r%  r&  status_irI   rJ   r   rL   rM   rN   s                  rX   r   z HttpResponseParser.parse_message  s   Qxw(9:	0"jj!j4OGV	#\\1\5NFF
 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   F* G *G G"!G"r   c                 n    |j                  dd      d   j                  d      j                         dk(  S )Nr-  r   r  r|   r.  rN   )r/  r   r   r   s     rX   r   z!HttpResponseParser._is_chunked_te  s3    yyqy)"-33E:@@BiOOrW   ru   )rP   rQ   rR   r0  r!   rr   r   r   r  r   r   r	   r;   r4   rU   r   r   rS   r   __classcell__)r6  s   @rX   r9   r9     s     )C
 #	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	==
4; =
3E =
~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y)r   Nr   r   rN   rL   rZ   rE   r   r   rr   r   rs   c
                F   d| _         t        j                  | _        t        j
                  | _        d| _        d| _        || _	        |	| _
        |
| _        g | _        d| _        |r|r| j                  rt        ||      }n|}|s4t        j                  | _        |j!                          d| _        || _        y |rt        j"                  | _        || _        y |Bt        j$                  | _        || _         | j                   dk(  r|j!                          d| _        || _        y )Nr   rW   FT)_lengthr_   re   _typerg   ri   _chunk_chunk_size_chunk_tailr   rv   r   _trailer_linesr   DeflateBufferrb   r   rd   rc   r   )rw   r   r   rN   rL   rZ   rE   r   r   rr   r   real_payloads               rX   rx   zHttpPayloadParser.__init__  s    //
 33 /	-+-	 +$2G2G?L@L #L "#..DJ!!#DI $ #11DJ $ #00DJ!DL||q %%' 	#rW   c                    | j                   t        j                  k(  r| j                  j	                          y | j                   t        j
                  k(  rt        d      | j                   t        j                  k(  rt        d      y )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	rC  r_   re   r   r   rc   r+   rd   r0   r   s    rX   r   zHttpPayloadParser.feed_eof7  so    ::333LL!!#ZZ:222$C  ZZ:333'D  4rW   chunkr   	CHUNK_EXTc                 v
   | j                   t        j                  k(  r| j                  }t	        |      }||k\  rP||z
  | _        | j
                  j                  ||       | j                  dk(  rb| j
                  j                          yd| _        | j
                  j                  |d | |       | j
                  j                          d||d  fS y| j                   t        j                  k(  r| j                  r| j                  |z   }d| _	        |r| j                  t        j                  k(  rv|j                  |      }|dk\  rW|j                  |d|      }|dk\  r4|d | }d||| x}	v r+t        d|	      }
t        | j
                  |
       |
|d | }| j                   r|j#                         }t%        j&                  t(        |      s6t        |d | j+                  dd            }
t        | j
                  |
       |
t-        t/        |      d	      }||t	        |      z   d  }|dk(  r8t        j0                  | _
        | j                   rV|j3                  d
      rE|dd  }n?t        j4                  | _
        || _        | j
                  j9                          n|| _	        y| j                  t        j4                  k(  r| j6                  }t	        |      }||kD  r'||z
  | _        | j
                  j                  ||       yd| _        | j
                  j                  |d | |       ||d  }t        j:                  | _
        | j
                  j=                          | j                  t        j:                  k(  r_| j                   r|j3                  d
      r|dd  }|d t	        |       |k(  r$|t	        |      d  }t        j                  | _
        n|| _	        y| j                  t        j0                  k(  r|j                  |      }|dk  r|| _	        y|d | }||t	        |      z   d  }|dk(  r|j?                  d
      }| j@                  jC                  |       | j@                  d   dk(  ra	 | jD                  jG                  | j@                        \  }}| j@                  jI                          | j
                  j                          d|fS |ry| j                   t        jJ                  k(  r%| j
                  j                  |t	        |             y# | j@                  jI                          w xY w)Nr   )TrW   TrW   r=   z"Unexpected LF in chunk-extension: asciir      r   r   )FrW   r|   )&rC  r_   rc   rB  r   r   r   r   rd   rF  rD  rg   ri   r   r0   r&   rv   r   rer   rC   r   r\   r   rm   r!  rj   rE  begin_http_chunk_receivingrk   end_http_chunk_receivingr   rG  r   r   r   r   re   )rw   rK  r   rL  required	chunk_lenr   isize_bextexcsizer   trailersraw_trailerss                  rX   r   zHttpPayloadParser.feed_dataC  s    ::000||HE
I9$')3&&ui8<<1$LL))+$ &&uYh'7B%%'U89---V Q ZZ:333((50#&  ;;*"?"??**S/Cax!JJy!S96%*2AYF$a)<=&;&H$P'" !.dllC @&)	%*4C[F99%+\\^F!||Iv>"7 %ds 2 27<M N#C *$,,<"%I"5="5 %cCHn&6 719*4*C*CDK#yyU-=-=e-D(-ab	*4*H*HDK/3D, LLCCE+0() ;;*"@"@@#//H #E
I)++3i+?(..ui@)+,(..uYh/?J %hi 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2Hl !//557--/#U{*{ F  ZZ:555LL""5#e*5 !//557s   4(T T8)NFNNNTTFrs   N)r<      ;)rP   rQ   rR   r4   r   r\   rU   rS   r6   rx   r   r   r  r   r   rV   rW   rX   r   r     s     !%%)" $#' $0$0$ 0$ 	0$
 c]0$ sm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y)rH  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr   max_decompress_sizers   Nc                 F   || _         d| _        | j                  |_        || _        d| _        |  |dk(  r(t
        st        d      t               | _        || _        y |dk(  r(t        st        d      t               | _        || _        y t        |      | _        || _        y )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`  rY  total_compressed_bytesr   _started_decodingr   r*   r   r_  r   r   r   _max_decompress_size)rw   r`  r   ra  s       rX   rx   zDeflateBuffer.__init__  s     	%)YY" !&t*.  !3 4D %8! *6  !1 2D %8! !1( CD$7!rW   rX  	exc_causec                 2    t        | j                  ||       y ru   )r&   r`  )rw   rX  rf  s      rX   r&   zDeflateBuffer.set_exception  s    
 	dhhY/rW   rK  rY  c                 L   |sy | xj                   |z  c_         | j                   | j                  _        | j                  s6| j                  dk(  r'|d   dz  dk7  rt        | j                  d      | _        	 | j                  j                  || j                  dz         }d| _        t        |      | j                  kD  rt        d
| j                  z        |r&| j                  j                  |t        |             y y # t        $ r t        d	| j                  z        w xY w)Nr   r         T)r   suppress_deflate_headerr   )
max_lengthz#Can not decode content-encoding: %sz:Decompressed data exceeds the configured limit of %d bytes)rY  r`  rc  rd  r   r   r_  decompress_syncre  r   r*   r   r,   r   )rw   rK  rY  s      rX   r   z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   7*D "D#c                 8   | j                   j                         }|s| j                  dkD  rU| j                  j	                  |t        |             | j                  dk(  r!| j                   j                  st        d      | j                  j                          y )Nr   r   )
r_  flushrY  r`  r   r   r   r   r*   r   )rw   rK  s     rX   r   zDeflateBuffer.feed_eof  sp    !!'')DIIMHHuc%j1}}	)$2C2C2G2G*955rW   c                 8    | j                   j                          y ru   )r`  rQ  r   s    rX   rQ  z(DeflateBuffer.begin_http_chunk_receiving$  s    ++-rW   c                 8    | j                   j                          y ru   )r`  rR  r   s    rX   rR  z&DeflateBuffer.end_http_chunk_receiving'  s    ))+rW   r\  )rP   rQ   rR   r0  r   rT   r   r4   r   rS   r\   rx   r    r   r&   r   r   r   rQ  rR  rV   rW   rX   rH  rH    s    N $?	88 3-8 !	8
 
8F $100 !0 
	0)2u )2C )2D )2V.,rW   rH  )r8   r9   r:   r;   )kr
  r  rP  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   rH  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrV   rW   rX   <module>r     ss   
  	      " : 9   '      4 0   ~ 0 01%C/ 1 (bii(9:s :)rzzJ6Gr*JKws|	 K(bjj);RXXFgcl F(bjj:gcl :#-2::.>#?	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   H+ +H32H3