
    hs                        % S SK r S SKrS SKrS SKrS SKr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  S SKJr  S SKrS SKJrJr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.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9J:r:  SSK;J<r<J=r=  SSK>J?r?J@r@JArAJBrBJCrC  SSKDJErE  SSKFJGrG  SrH\(       a  SSKIJJrJ  SSKKJLrL  SSKMJNrN  \R                  " SSSS9 " S S5      5       rP\R                  \R                  -   S-   rS\\T   \US'   S\S S3rV\\T   \US'   S R                  S!R                  S" S#\Y" \Z" S$S%5      5      -    5       5      5      r[\\T   \US&'   S'r\\\T   \US('   S)R                  \[\\S*9r]\\T   \US+'   S,R                  \V\]S-9r^\\T   \US.'   \R                  " S/5      r`\\\T      \US0'   \R                  " \^5      ra\\\T      \US1'    " S2 S3\\T\4   \/5      rb " S4 S5\b5      rcg)6    N)SimpleCookie)MappingProxyType)TYPE_CHECKINGAnyDictFinalIteratorMappingMutableMappingOptionalPatternTupleUnioncast)	parse_qsl)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxyMultiMapping)URL   )hdrs)AbstractStreamWriter)	_SENTINELDEBUGETAG_ANYLIST_QUOTED_ETAG_REChainMapProxyETagHeadersMixinparse_http_datereifysentinelset_exception)RawRequestMessage)HttpVersion)BodyPartReaderMultipartReader)EmptyStreamReaderStreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseHeaders
RawHeadersStrOrURL)HTTPRequestEntityTooLarge)StreamResponse)BaseRequest	FileFieldRequest)Application)RequestHandler)UrlMappingMatchInfoT)auto_attribsfrozenslotsc                   b    \ rS rSr% \\S'   \\S'   \R                  \S'   \\S'   \\   \S'   Sr	g)	r4   L   namefilenamefilecontent_typeheaders N)
__name__
__module____qualname____firstlineno__str__annotations__ioBufferedReaderr   __static_attributes__rC       E/var/www/html/env/lib/python3.13/site-packages/aiohttp/web_request.pyr4   r4   L   s)    
IM


c""rM   r4   z!#$%&'*+.^_`|~-_TCHAR[z]+_TOKENz[{}] c              #   8   #    U  H  n[        U5      v   M     g 7fN)chr).0cs     rN   	<genexpr>rX   [   s     KJSVVJs   )	       !   #      _QDTEXTz
\\[\t !-~]_QUOTED_PAIRz"(?:{quoted_pair}|{qdtext})*")qdtextquoted_pair_QUOTED_STRINGz0({token})=({token}|{quoted_string})(:\d{{1,4}})?)tokenquoted_string_FORWARDED_PAIRz\\([\t !-~])_QUOTED_PAIR_REPLACE_RE_FORWARDED_PAIR_REc                   t   \ rS rSr% \R
                  \R                  \R                  \R                  \R                  1r
\R                  \" / SQ5      -  rSr\\\\\\4         \S'   Sr\\   \S'   SSSSSS.S\S	\S
SS\SSS\R6                  S\S\\\\4      S\\   S\\   S\\   SS4S jjr\ \ \ \ \ \ \ S.S\\\!4   S\\"\!4   S\\#\!4   S\\\!4   S\\\!4   S\\\!4   S\\\!4   SS 4S jjr$\%S`S j5       r&\%SaS j5       r'\%S\\RP                     4S j5       r)\%S\4S j5       r*\%S\4S  j5       r+\,S\4S! j5       r-\,S\.4S" j5       r/\,S\R6                  4S# j5       r0S$\S\4S% jr1S$\S&\SS4S' jr2S$\SS4S( jr3S\4S) jr4S\5\   4S* jr6\,S\74S+ j5       r8\,S\9\:\\4   S,4   4S- j5       r;\,S\4S. j5       r<\,S\4S/ j5       r=\,S\>4S0 j5       r?\,S\4S1 j5       r@\,S\\   4S2 j5       rA\,S\.4S3 j5       rB\,S\4S4 j5       rC\,S\4S5 j5       rD\,S\4S6 j5       rE\,SbS7 j5       rF\,S\4S8 j5       rG\,S\H\   4S9 j5       rI\,S\J4S: j5       rK\,S\\LR                     4S; j5       rM\,S\\LR                     4S< j5       rN\OS=\S\5\P   4S> j5       rQ\RS?\\   S\\9\PS,4      4S@ j5       rS\,S\\9\PS,4      4SA j5       rT\,S\\9\PS,4      4SB j5       rU\,S\\LR                     4SC j5       rV\,S\74SD j5       rW\,S\:\\4   4SE j5       rX\,S\Y4SF j5       rZ\,S\4SG j5       r[\%S\74SH j5       r\\%S\74SI j5       r]\,S\74SJ j5       r^ScSK jr_S\4SL jr`S\4SM jra\bSN.SO\cS\4SP jjrdS\e4SQ jrfSdSR jrgSeSS\ST\S\4SU jjrhS\4SV jriSW\jS\74SX jrkS\74SY jrlSZ\mSS4S[ jrnS\\oSS4S] jrpScS^ jrqS_rrg)fr3   v   )_message	_protocol_payload_writer_payload_headers_method_version_rel_url_post_read_bytes_state_cache_task_client_max_size_loop_transport_sslcontext_transport_peernameNrr   rs   i   )client_max_sizestateschemehostremotemessagepayloadprotocolr7   payload_writertaskasyncio.Task[None]loopr{   r|   r}   r~   r   returnc                   Xl         X0l        X@l        X l        UR                  U l        UR                  U l        UR                  U l	        0 U l
        UR                  nUR                  (       a~  U	b  UR                  U	5      nU
b  UR                  U
5      nXR                  S'   UR                  U R                  S'   UR                   U R                  S'   UR#                  5       U l        O(Xl        U	b  XR                  S'   U
b  XR                  S'   Uc  0 OUU l        XPl        Xpl        X`l        UR.                  U l        UR2                  U l        Ub  XR                  S'   g g )Nurlr~   r}   r   )rj   rk   rl   rm   rB   rn   methodro   versionrp   ru   r   absolutewith_scheme	with_hostr~   r}   relativerq   rt   rv   rw   rx   ssl_contextry   peernamerz   )selfr   r   r   r   r   r   r{   r|   r}   r~   r   r   s                rN   __init__BaseRequest.__init__   s1     !-/6~~&(kk<<!oof-mmD) "%KK"%((DKK$'JJDKK!LLNDMM!(.H%&*F#!Mbu
 /
%-%9%9"#+#4#4 $*KK! rM   r   rel_urlrB   r}   r~   r   r{   r   r   rB   c                   U R                   (       a  [        S5      e0 nU[        La  XS'   U[        La  [        U5      n	XS'   [	        U	5      US'   U[        La=  [        [        U5      5      US'   [        S US   R                  5        5       5      US'   U R                  R                  " S0 UD6n
0 nU[        La  XKS'   U[        La  X[S	'   U[        La  XkS
'   U[        L a  U R                  nU R                  " U
U R                  U R                  U R                  U R                   U R"                  4UU R$                  R'                  5       S.UD6$ )zClone itself with replacement some attributes.

Creates and returns a new instance of Request object. If no parameters
are given, an exact copy is returned. If a parameter is not passed, it
will reuse the one from the current request object.
z.Cannot clone request after reading its contentr   r   pathrB   c              3   j   #    U  H)  u  pUR                  S 5      UR                  S 5      4v   M+     g7f)utf-8N)encode)rV   kvs      rN   rX   $BaseRequest.clone.<locals>.<genexpr>   s0      '2DA '"AHHW$562s   13raw_headersr}   r~   r   )r{   r|   rC   )rs   RuntimeErrorr$   r   rH   r   r   tupleitemsrj   _replacerw   	__class__rm   rk   rl   rv   rx   rt   copy)r   r   r   rB   r}   r~   r   r{   dctnew_urlr   kwargss               rN   cloneBaseRequest.clone   sS   " OPP !"M("w<G Jg,CK("-k'.BCC	N!& '	N002' "C
 --((/3/!%8x!6N!%8h&"33O~~MMNN  JJJJ

 ,++""$

 

 
	
rM   c                     U R                   $ rT   )rv   r   s    rN   r   BaseRequest.task
  s    zzrM   c                     U R                   $ rT   )rk   r   s    rN   r   BaseRequest.protocol  s    ~~rM   c                 J    U R                   c  g U R                   R                  $ rT   )rk   	transportr   s    rN   r   BaseRequest.transport  s    >>!~~'''rM   c                     U R                   $ rT   )rl   r   s    rN   writerBaseRequest.writer  s    ###rM   c                     U R                   $ rT   )rw   r   s    rN   r{   BaseRequest.client_max_size  s    $$$rM   c                 N    [         R                  " S[        SS9  U R                  $ )NzRequest.message is deprecated   
stacklevel)warningswarnDeprecationWarningrj   r   s    rN   r   BaseRequest.message   s    57IVWX}}rM   c                     U R                   $ rT   )rq   r   s    rN   r   BaseRequest.rel_url%  s    }}rM   c                 N    [         R                  " S[        SS9  U R                  $ )Nz#request.loop property is deprecated   r   )r   r   r   rx   r   s    rN   r   BaseRequest.loop)  s#    13ERS	
 zzrM   keyc                      U R                   U   $ rT   rt   r   r   s     rN   __getitem__BaseRequest.__getitem__2  s    {{3rM   valuec                      X R                   U'   g rT   r   )r   r   r   s      rN   __setitem__BaseRequest.__setitem__5  s     CrM   c                     U R                   U	 g rT   r   r   s     rN   __delitem__BaseRequest.__delitem__8  s    KKrM   c                 ,    [        U R                  5      $ rT   )lenrt   r   s    rN   __len__BaseRequest.__len__;  s    4;;rM   c                 ,    [        U R                  5      $ rT   )iterrt   r   s    rN   __iter__BaseRequest.__iter__>  s    DKK  rM   c                      U R                   S:H  $ )z5A bool indicating if the request is handled with SSL.https)r}   r   s    rN   secureBaseRequest.secureC  s     {{g%%rM   .c                 f   / nU R                   R                  R                  [        R                  S5       GHl  n[        U5      nSnSn0 nUR                  [        R                  " U5      5        SUs=::  a  U:  d  MI  O  MM  [        R                  X$5      nUb  U(       a  UR                  SU5      nOUR                  5       u  pn
U	S   S:X  a  [        R                  SU	SS 5      n	U
(       a  X-  n	XUR                  5       '   U[        UR!                  S5      5      -  nS	nOgX$   S:X  a/  Sn0 nUR                  [        R                  " U5      5        US-  nO0X$   S
:X  a  SnUS-  nO X$   S;   a  US-  nOUR                  SU5      nSUs=::  a  U:  a  GM  GMk    GMo     [#        U5      $ )a(  A tuple containing all parsed Forwarded header(s).

Makes an effort to parse Forwarded headers as specified by RFC 7239:

- It adds one (immutable) dictionary per Forwarded 'field-value', ie
  per proxy. The element corresponds to the data in the Forwarded
  field-value added by the first proxy encountered by the client. Each
  subsequent item corresponds to those added by later proxies.
- It checks that every value has valid syntax in general as specified
  in section 4: either a 'token' or a 'quoted-string'.
- It un-escapes found escape sequences.
- It does NOT validate 'by' and 'for' contents as specified in section
  6.
- It does NOT validate 'host' contents (Host ABNF).
- It does NOT validate 'proto' contents for valid URI scheme names.

Returns a tuple containing one or more immutable dicts
rC   r   F,"z\1r   T;z 	)rj   rB   getallr   	FORWARDEDr   appendtypesr   rg   matchfindgroupsrf   sublowergroupr   )r   elemsfield_valuelengthposneed_separatorelemr   r>   r   ports              rN   	forwardedBaseRequest.forwardedH  s   ( ==0077KK%FC"N#%DLL//56s#V##*00B$%)..sC8,1LLN)T 8s?$;$?$?uQr{$SE!ME-2TZZ\*s5;;q>22)- %,%*NDLL!7!7!=>1HC %,%*N1HC %. 1HC &**34C? s#V## LL U|rM   c                 (    U R                   (       a  gg)zA string representing the scheme of the request.

Hostname is resolved in this order:

- overridden value by .clone(scheme=new_scheme) call.
- type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

'http' or 'https'.
r   http)ry   r   s    rN   r}   BaseRequest.scheme  s     %%rM   c                     U R                   $ )ziRead only property for getting HTTP method.

The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
)ro   r   s    rN   r   BaseRequest.method  s     ||rM   c                     U R                   $ )zhRead only property for getting HTTP version of request.

Returns aiohttp.protocol.HttpVersion instance.
)rp   r   s    rN   r   BaseRequest.version  s     }}rM   c                     U R                   R                  R                  [        R                  5      nUb  U$ [
        R                  " 5       $ )a  Hostname of the request.

Hostname is resolved in this order:

- overridden value by .clone(host=new_host) call.
- HOST HTTP header
- socket.getfqdn() value

For example, 'example.com' or 'localhost:8080'.

For historical reasons, the port number may be included.
)rj   rB   getr   HOSTsocketgetfqdn)r   r~   s     rN   r~   BaseRequest.host  s:     }}$$((3K~~rM   c                     U R                   c  g[        U R                   [        [        45      (       a  [	        U R                   S   5      $ [	        U R                   5      $ )zRemote IP of client initiated HTTP request.

The IP is resolved in this order:

- overridden value by .clone(remote=new_remote) call.
- peername of opened socket
Nr   )rz   
isinstancelistr   rH   r   s    rN   r   BaseRequest.remote  sQ     ##+d..u>>t//2334++,,rM   c                     [         R                  " U R                  U R                  S9R	                  U R
                  5      $ )zThe full URL of the request.)r}   	authority)r   buildr}   r~   joinrq   r   s    rN   r   BaseRequest.url  s,    
 yytyyAFFt}}UUrM   c                 .    U R                   R                  $ )zOThe URL including *PATH INFO* without the host or scheme.

E.g., ``/app/blog``
)rq   r   r   s    rN   r   BaseRequest.path  s     }}!!!rM   c                 ,    [        U R                  5      $ )zHThe URL including PATH_INFO and the query string.

E.g, /app/blog?id=10
)rH   rq   r   s    rN   path_qsBaseRequest.path_qs  s     4==!!rM   c                 .    U R                   R                  $ )zThe URL including raw *PATH INFO* without the host or scheme.

Warning, the path is unquoted and may contains non valid URL characters

E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
)rj   r   r   s    rN   raw_pathBaseRequest.raw_path  s     }}!!!rM   c                 .    U R                   R                  $ )z7A multidict with all the variables in the query string.)rq   queryr   s    rN   r  BaseRequest.query  s     }}"""rM   c                 .    U R                   R                  $ )z*The query string in the URL.

E.g., id=10
)rq   query_stringr   s    rN   r  BaseRequest.query_string  s     }})))rM   c                     U R                   $ )z4A case-insensitive multidict proxy with all headers.)rn   r   s    rN   rB   BaseRequest.headers       }}rM   c                 .    U R                   R                  $ )z$A sequence of pairs for all headers.)rj   r   r   s    rN   r   BaseRequest.raw_headers  s     }}(((rM   c                 f    [        U R                  R                  [        R                  5      5      $ )ziThe value of If-Modified-Since HTTP header, or None.

This header is represented as a `datetime` object.
)r"   rB   r   r   IF_MODIFIED_SINCEr   s    rN   if_modified_sinceBaseRequest.if_modified_since  s$     t||//0F0FGHHrM   c                 f    [        U R                  R                  [        R                  5      5      $ )zkThe value of If-Unmodified-Since HTTP header, or None.

This header is represented as a `datetime` object.
)r"   rB   r   r   IF_UNMODIFIED_SINCEr   s    rN   if_unmodified_sinceBaseRequest.if_unmodified_since  s$     t||//0H0HIJJrM   etag_headerc              #      #    U [         :X  a  [        S[         S9v   g[        R                  " U 5       H7  nUR	                  SSS5      u  p#nU(       a    g[        [        U5      US9v   M9     g7f)z'Extract `ETag` objects from raw header.F)is_weakr   r   r      N)r   r    r   finditerr   bool)r'  r   r)  r   garbages        rN   _etag_valuesBaseRequest._etag_values  sp      (" 
 -55kB*/++aA*>'  M  Cs   A.A0header_valuec                 F    U(       d  g [        U R                  U5      5      $ rT   )r   r.  )clsr0  s     rN   _if_match_or_none_impl"BaseRequest._if_match_or_none_impl$  s      S%%l344rM   c                 r    U R                  U R                  R                  [        R                  5      5      $ )zhThe value of If-Match HTTP header, or None.

This header is represented as a `tuple` of `ETag` objects.
)r3  rB   r   r   IF_MATCHr   s    rN   if_matchBaseRequest.if_match-  s(     **4<<+;+;DMM+JKKrM   c                 r    U R                  U R                  R                  [        R                  5      5      $ )zmThe value of If-None-Match HTTP header, or None.

This header is represented as a `tuple` of `ETag` objects.
)r3  rB   r   r   IF_NONE_MATCHr   s    rN   if_none_matchBaseRequest.if_none_match5  s*     **4<<+;+;D<N<N+OPPrM   c                 f    [        U R                  R                  [        R                  5      5      $ )z`The value of If-Range HTTP header, or None.

This header is represented as a `datetime` object.
)r"   rB   r   r   IF_RANGEr   s    rN   if_rangeBaseRequest.if_range=  s"     t||//>??rM   c                 8    U R                   R                  (       + $ )zIs keepalive enabled by client?)rj   should_closer   s    rN   
keep_aliveBaseRequest.keep_aliveE  s     ==----rM   c                     U R                   R                  [        R                  S5      n[	        U5      n[        UR                  5        VVs0 s H  u  p4X4R                  _M     snn5      $ s  snnf )z=Return request cookies.

A read-only dictionary-like object.
rR   )rB   r   r   COOKIEr   r   r   r   )r   rawparsedr   vals        rN   cookiesBaseRequest.cookiesJ  sS     llt{{B/c" OHCii OPP Os   A.
c                    U R                   R                  [        R                  5      nSu  p#Ub   Sn[        R
                  " XA5      S   u  p#U(       a  [        U5      OSnU(       a  [        U5      OSnUc  Ub  U* nSnUb  Ub  US-  nX#:  a  [        S5      eX#s=L a  c  O  O[        S5      e[        X#S5      $ ! [         a    [        S5      ef = f)	z=The content of Range HTTP header.

Return a slice instance.

)NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)
rn   r   r   RANGErefindall
IndexError
ValueErrorintslice)r   rngstartendpatterns        rN   
http_rangeBaseRequest.http_rangeT  s     mm

+
?C0ZZ5a8
 "#c(tC"'CJTE} S_q<$%@AA## !EFFU##+  C !ABBCs   B? ?Cc                     U R                   $ )zReturn raw payload stream.)rm   r   s    rN   contentBaseRequest.contentx  r  rM   c                 t    [         R                  " S[        SS9  U R                  R	                  5       (       + $ )@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r   r   )r   r   r   rm   at_eofr   s    rN   has_bodyBaseRequest.has_body}  s1     	24FST	
 =='')))rM   c                 @    U R                   R                  5       (       + $ )r^  )rm   r_  r   s    rN   can_read_bodyBaseRequest.can_read_body  s     =='')))rM   c                 8    [        U R                  5      [        L$ )z6Return True if request has HTTP BODY, False otherwise.)typerm   r*   r   s    rN   body_existsBaseRequest.body_exists  s     DMM"*;;;rM   c                    #    U R                   R                  5       (       dD  U R                   R                  5       I Sh  vN   U R                   R                  5       (       d  MC  gg N'7f)z;Release request.

Eat unread part of HTTP BODY if present.
N)rm   r_  readanyr   s    rN   releaseBaseRequest.release  sH     
 --&&((--''))) --&&(()s   =A)A' #A)%A)c                 n  #    U R                   c  [        5       n U R                  R                  5       I Sh  vN nUR	                  U5        U R
                  (       a.  [        U5      nX0R
                  :  a  [        U R
                  US9eU(       d  OM|  [        U5      U l         U R                   $  Nz7f)zORead request body if present.

Returns bytes object with full request content.
Nmax_sizeactual_size)	rs   	bytearrayrm   rj  extendrw   r   r1   bytes)r   bodychunk	body_sizes       rN   readBaseRequest.read  s     
 #;D"mm3355E"(( #D	I $9$997%)%:%:	     %T{D 6s   6B5B3A;B5c                    #    U R                  5       I Sh  vN nU R                  =(       d    SnUR                  U5      $  N*7f)z1Return BODY as text using encoding from .charset.Nr   )rw  charsetdecode)r   
bytes_bodyencodings      rN   textBaseRequest.text  s7     99;&
<<*7  ** 's   AA+A)loadsr  c                N   #    U R                  5       I Sh  vN nU" U5      $  N7f)zReturn BODY as JSON.N)r~  )r   r  rt  s      rN   jsonBaseRequest.json  s"     YY[ T{ !s   %#%c                 J   #    [        U R                  U R                  5      $ 7f)z3Return async iterator to process BODY as multipart.)r)   rn   rm   r   s    rN   	multipartBaseRequest.multipart  s     t}}dmm<<s   !#c                   #    U R                   b  U R                   $ U R                  U R                  ;  a$  [        [	        5       5      U l         U R                   $ U R
                  nUS;  a$  [        [	        5       5      U l         U R                   $ [	        5       nUS:X  Ga  U R                  5       I Sh  vN nU R                  nUR                  5       I Sh  vN nUGb  SnUR                  R                  [        R                  5      n[        U[        5      (       Gak  UR                  c   eUR                   (       Ga  U R"                  R%                  S[&        R(                  5      I Sh  vN nUR+                  SS9I Sh  vN n	U	(       a  UR-                  U	5      n	U R"                  R%                  SUR.                  U	5      I Sh  vN   U[1        U	5      -  nSUs=:  a  U:  a:  O  O7U R"                  R%                  SUR2                  5      I Sh  vN   [5        XFS9eUR+                  SS9I Sh  vN n	U	(       a  M  U R"                  R%                  SUR6                  S5      I Sh  vN   Uc  Sn[9        UR                  UR                   [;        [<        R>                  U5      UUR                  5      n
URA                  UR                  U
5        OURC                  S	S
9I Sh  vN nUb  URE                  S5      (       a;  URG                  SS9nURA                  UR                  UR-                  U5      5        OURA                  UR                  U5        U[1        U5      -  nSUs=:  a  U:  a  O  O[5        XFS9eO[I        S5      eUR                  5       I Sh  vN nUb  GM  OkU RC                  5       I Sh  vN nU(       aL  U RJ                  =(       d    SnURM                  [O        URQ                  5       R-                  U5      S	US95        [        U5      U l         U R                   $  GN GNi GN GN GN| GN3 GN GN GNf N N7f)zReturn POST parameters.N)rR   z!application/x-www-form-urlencodedmultipart/form-datar  r   i   )sizern  zapplication/octet-streamT)r{  ztext/r   )defaultz8To decode nested multipart you need to use custom reader)keep_blank_valuesr}  ))rr   ro   POST_METHODSr   r   rA   r  rw   nextrB   r   r   CONTENT_TYPEr  r(   r>   r?   rx   run_in_executortempfileTemporaryFile
read_chunkr{  writer   closer1   seekr4   r   rJ   rK   addrw  
startswithget_charsetrQ  rz  rr  r   rstrip)r   rA   outr  ro  fieldr  field_cttmpru  ffr   rz  datas                 rN   postBaseRequest.post  s    ::!::<<t000'	4DJ::((  
 

 (	4DJ::7@{00"nn..I,,H#..**E# ==,,T->->?e^44 ::111 ~~~$(JJ$>$> ("8"8%  ',&6&6E&6&B B#$)LL$7E"&**"<"<T399e"TTT CJ.D 82d2&*jj&@&@syy&Q Q Q&?-5'" !" +0*:*:*:*F$FE $e #jj88sxxKKK#+'AH&!JJ!NN !2!2C8$!MM 

B/ ',jjj&= =#+x/B/B7/K/K&+&7&7&7&HGGGEJJW0EFGGEJJ6E
*x.$.";)1#  /
 %R  (nn..u #x $D,,1'

,,W5*.!( $C(
zzY / + !C U !R %GK !>  /$s   B2Q4P>5#QQBQ0Q1QQAQQ
AQQQ:Q;Q*Q2Q3A=Q0Q1B:Q+Q,Q6Q
QA4QQQQ
QQQQQQQr>   r  c                 h    U R                   nUc  U$ UR                  nUc  U$ UR                  X5      $ )z"Extra info from protocol transport)rk   r   get_extra_info)r   r>   r  r   r   s        rN   r  BaseRequest.get_extra_info  s=    >>N&&	N''66rM   c                     U R                   R                  SS5      R                  S5      nSR                  U R                  R
                  U R                  U5      $ )Nasciibackslashreplacez<{} {} {} >)r   r   r{  formatr   rD   ro   )r   ascii_encodable_paths     rN   __repr__BaseRequest.__repr__)  sS    #yy//9KLSS 
 ##NN##T\\3G
 	
rM   otherc                 0    [        U 5      [        U5      :H  $ rT   )id)r   r  s     rN   __eq__BaseRequest.__eq__1  s    $x2e9$$rM   c                     g)NTrC   r   s    rN   __bool__BaseRequest.__bool__4  s    rM   responsec                    #    g 7frT   rC   )r   r  s     rN   _prepare_hookBaseRequest._prepare_hook7  s     s   excc                 0    [        U R                  U5        g rT   )r%   rm   )r   r  s     rN   _cancelBaseRequest._cancel:  s    dmmS)rM   c                     U R                   b  U R                  S:w  a  g U R                   R                  5        H6  u  p[        U[        5      (       d  M  UR
                  R                  5         M8     g )Nr  )rr   rA   r   r  r4   r@   r  )r   	file_namefile_field_objects      rN   _finishBaseRequest._finish=  sY    ::!2!26K!K -1JJ,<,<,>(I+Y77!&&,,. -?rM   )ru   rw   rn   rx   rj   ro   rm   rl   rr   rk   rs   rq   rt   rv   rz   ry   rp   )r   r   )r   r7   )r   zMultiMapping[str])r   N)r   z,MultiDictProxy[Union[str, bytes, FileField]]rT   )srD   rE   rF   rG   r   
METH_PATCH	METH_POSTMETH_PUT
METH_TRACEMETH_DELETEr  r!   ATTRS	frozensetrr   r   r   r   rH   rs  r4   rI   rs   r&   r+   r   asyncioAbstractEventLooprR  r   r   r   r$   r   r0   r.   r   propertyr   r   	Transportr   r   r{   r#   r   r   r   r   r   r   r   r   r	   r   r,  r   r   r
   r   r}   r   r'   r   r~   r   r   r   r  r  r  r  r   rB   r/   r   datetimer!  r%  staticmethodr    r.  classmethodr3  r7  r;  r?  rC  rJ  rS  rX  r[  r`  rc  rg  rk  rw  r~  r,   r-   r  r)   r  r  r  r  objectr  r  r2   r  BaseExceptionr  r  rL   rC   rM   rN   r3   r3   v   st    	L 	
" E* EIE8N5eY)>#?@AH#'K%'  '*. $" $5+"5+ 5+ #	5+
 -5+ #5+ ''5+ 5+ S#X'5+ 5+ sm5+ 5+ 
5+t )1.62:(0&.(0199
 c9n%9
 x*+	9

 |Y./9
 c9n%9
 CN#9
 c9n%9
 sI~.9
 
9
v     (8G$5$56 ( (
 $, $ $ % % % *      g//   s  s  !s !3 !4 !s t    !(3- !
 & & & :5c!2C!78 : :x           c    $ - - - VS V V "c " " " " " "# " " # # *c * * )#.   )Z ) ) I8H,=,=#> I I KXh.?.?%@ K K # (4.  ( 5#C=5	%c	"	#5 5 L(5s#34 L L QxdCi(89 Q Q @(8#4#45 @ @ .D . . Qc* Q Q !$E !$ !$F    *$ * * *t * * <T < <* E  *+C + 2F ; # 
= =`D
73 
7 
7 
7
# 
%F %t %$ N t *= *T *
/rM   r3   c                   d  ^  \ rS rSr% \R
                  \" S/5      -  rSr\S   \	S'   \
(       a  S\S\SS4U 4S jjr\\\\\\\S	.S
\\\4   S\\\4   S\\\4   S\\\4   S\\\4   S\\\4   S\\\4   SS 4U 4S jjjr\SS j5       r\SS j5       r\S\4S j5       rS\SS4S jrSrU =r$ )r5   iJ  _match_infoNr8   r>   rI  r   c                    > XR                   ;  a>  [        R                  " SR                  U R                  R
                  U5      [        SS9  [        TU ]!  X5        g )Nz-Setting custom {}.{} attribute is discouragedr   r   )	r  r   r   r  r   rD   r   super__setattr__)r   r>   rI  r   s      rN   r  Request.__setattr__R  sI    ::%%%+VDNN,C,CT%J& 	 G*rM   r   r   r   rB   r}   r~   r   r{   c          
      p   > [         T
U ]  UUUUUUUS9n[        [        U5      n	U R                  U	l        U	$ )Nr   )r  r   r   r5   r  )r   r   r   rB   r}   r~   r   r{   retnew_retr   s             rN   r   Request.clone\  sN     gm+  
 w$"..rM   c                 (    U R                   nUc   eU$ )zResult of route resolving.)r  r   
match_infos     rN   r  Request.match_infot  s!     %%
%%%rM   c                 <    U R                   nUc   eUR                  $ )zApplication instance.)r  current_appr  s     rN   appRequest.app{  s'     %%
%%%%%%rM   c                     U R                   nUc   eUR                  nU R                  nUR                  U5      n[	        [        US US-    5      5      n[        U5      $ )Nr   )r  appsr  indexr  reversedr   )r   r  lstr  idxsublists         rN   config_dictRequest.config_dict  s\    %%
%%%oohhiinxIcAg/0W%%rM   r  c                    #    U R                   nUc  g UR                   H1  nUR                  =n(       d  M  UR                  X5      I S h  vN   M3     g  N	7frT   )r  _appson_response_preparesend)r   r  r  r  r  s        rN   r  Request._prepare_hook  sR     %%
##C&)&=&=="=)..t>>> $>s   1AAA
ArC   )r   r8   )r   r6   )rD   rE   rF   rG   r3   r  r  r  r   rI   r   rH   r   r  r$   r   r   r0   r.   rR  r   r#   r  r  r  r   r  r2   r  rL   __classcell__)r   s   @rN   r5   r5   J  sT   	=/ ::E37K/07	+C 	+c 	+d 	+ )1.62:(0&.(019 c9n% x*+	
 |Y./ c9n% CN# c9n% sI~. 
 0   & & &] & &?N ?t ? ?rM   r5   )dr  r  rJ   rN  r   stringr  r   r   http.cookiesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   urllib.parser   attr	multidictr   r   r   r   r   yarlr   rR   r   abcr   helpersr   r   r   r   r   r    r!   r"   r#   r$   r%   http_parserr&   http_writerr'   r  r(   r)   streamsr*   r+   typedefsr,   r-   r.   r/   r0   web_exceptionsr1   web_responser2   __all__web_appr6   web_protocolr7   web_urldispatcherr8   sr4   digitsascii_lettersrO   rH   rI   rQ   r  r
  r   ranger^   r_   rb   re   compilerf   rg   r3   r5   rC   rM   rN   <module>r
     s     	 	      % "    #     %    + $ 6 4  6 (
1 $,6 T$d3# # 4# ]]V%9%99<NNc
 N &_c
 $nnHHK/%dD8I2JJKKs  )eCj (=DD E c
 
 8>>N ?  s  02zz//J ws|, J +-**_*E E'#,' EQ/.c*L Q/hH?k H?rM   