Ë
    CØïihp  ã                   ó  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl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 d dlmZ d dlZd dlmZmZ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.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZF dZGerddlHmIZI ddlJmKZK ddlLmMZM  ejœ                  ddd¬«       G d„ d«      «       ZOej                   ej¢                  z   dz   ZReeS   eTd<   deR› d�ZUeeS   eTd<   d j­                  d!j¯                  d"„ d# eX eYd$d%«      «      z   D «       «      «      ZZeeS   eTd&<   d'Z[eeS   eTd(<   d)j­                  eZe[¬*«      Z\eeS   eTd+<   d,j­                  eUe\¬-«      Z]eeS   eTd.<    ej¼                  d/«      Z_eeeS      eTd0<    ej¼                  e]«      Z`eeeS      eTd1<    G d2„ d3eeSef   e/«      Za G d4„ d5ea«      Zby)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)Ú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                   óT   — e Zd ZU eed<   eed<   ej                  ed<   eed<   ded<   y)r3   ÚnameÚfilenameÚfileÚcontent_typezCIMultiDictProxy[str]ÚheadersN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚioÚBufferedReader© ó    úM/var/www/html/aiagents/fe/lib/python3.12/site-packages/aiohttp/web_request.pyr3   r3   K   s$   … à
ƒIØƒMØ
×
Ñ
ÓØÓØ$Ô$rI   r3   z!#$%&'*+.^_`|~-Ú_TCHARú[z]+Ú_TOKENz[{}]Ú c              #   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úchr)Ú.0Úcs     rJ   ú	<genexpr>rT   Z   s   è ø€ ÒK˜ŒS��VÑKùs   ‚)é	   é    é!   é#   é   Ú_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                   ó¤  — e Zd Zej                  ej
                  ej                  ej                  ej                  hZ	e
j                   eg d¢«      z  Zddddddœdededdd	ed
ddej"                  dedeeeef      dee   dee   dee   ddfd„Zeeeeeeedœdeeef   deeef   deeef   deeef   deeef   deeef   deeef   dd fd„Zed[d„«       Zed\d„«       Z edeejB                     fd„«       Z"edefd„«       Z#edefd„«       Z$e%defd„«       Z&e%de'fd„«       Z(e%dej"                  fd „«       Z)d!edefd"„Z*d!ed#eddfd$„Z+d!eddfd%„Z,defd&„Z-de.e   fd'„Z/e%de0fd(„«       Z1e%de2e3eef   d)f   fd*„«       Z4e%defd+„«       Z5e%defd,„«       Z6e%de7fd-„«       Z8e%defd.„«       Z9e%dee   fd/„«       Z:e%de'fd0„«       Z;e%defd1„«       Z<e%defd2„«       Z=e%defd3„«       Z>e%d]d4„«       Z?e%defd5„«       Z@e%d]d6„«       ZAe%deBfd7„«       ZCe%deeDjˆ                     fd8„«       ZEe%deeDjˆ                     fd9„«       ZFeGd:ede.eH   fd;„«       ZIeJd<ee   dee2eHd)f      fd=„«       ZKe%dee2eHd)f      fd>„«       ZLe%dee2eHd)f      fd?„«       ZMe%deeDjˆ                     fd@„«       ZNe%de0fdA„«       ZOe%de3eef   fdB„«       ZPe%deQfdC„«       ZRe%defdD„«       ZSede0fdE„«       ZTede0fdF„«       ZUe%de0fdG„«       ZVd^dH„ZWdeXfdI„ZYdefdJ„ZZe[dKœdLe\defdM„Z]de^fdN„Z_d_dO„Z`d`dPedQedefdR„ZadefdS„ZbdTecde0fdU„Zdde0fdV„ZedWefddfdX„ZgdYehddfdZ„Ziy)ar2   )Ú_messageÚ	_protocolÚ_payload_writerÚ_payloadÚ_headersÚ_methodÚ_versionÚ_rel_urlÚ_postÚ_read_bytesÚ_stateÚ_cacheÚ_taskÚ_client_max_sizeÚ_loopÚ_transport_sslcontextÚ_transport_peernamei   N)Úclient_max_sizeÚstateÚschemeÚhostÚremoteÚmessageÚpayloadÚprotocolr6   Úpayload_writerÚtaskúasyncio.Task[None]Úlooprv   rw   rx   ry   rz   Úreturnc                ó  — |€i }|| _         || _        || _        || _        |j                  | _        |j                  | _        |j                  | _	        i | _
        |j                  }|j                  «       rW|| j                  d<   |j                  | j                  d<   |j                  | j                  d<   |j                  «       | _        n|j                  | _        d | _        d | _        || _        || _        || _        || _        | j                  j.                  }|€J ‚|j1                  d«      | _        |j1                  d«      | _        |	�|	| j                  d<   |
�|
| j                  d<   |�|| j                  d<   y y )NÚurlry   rx   Ú
sslcontextÚpeernamerz   )re   rf   rg   rh   r@   ri   Úmethodrj   Úversionrk   rp   r„   Úis_absolutery   rx   Úrelativerl   rm   rn   ro   rq   rr   rs   Ú	transportÚget_extra_infort   ru   )Úselfr{   r|   r}   r~   r   r�   rv   rw   rx   ry   rz   r„   r‹   s                 rJ   Ú__init__zBaseRequest.__init__•   s`  € ð ˆ=ØˆEØˆŒØ!ˆŒØ-ˆÔàˆŒØŸ™ˆŒØ—~‘~ˆŒØŸ™ˆŒØ&(ˆŒØ�k‰kˆØ�?‰?Ôð "%ˆD�K‰K˜ÑØ"%§(¡(ˆD�K‰K˜ÑØ$'§J¡JˆD�K‰K˜Ñ!ØŸL™L›NˆD�Mà#ŸK™KˆDŒMØMQˆŒ
Ø,0ˆÔàˆŒØˆŒ
Ø /ˆÔØˆŒ
à—N‘N×,Ñ,ˆ	ØÐ$Ð$Ð$Ø%.×%=Ñ%=¸lÓ%KˆÔ"Ø#,×#;Ñ#;¸JÓ#GˆÔ àÐØ$*ˆD�K‰K˜Ñ!ØÐØ"&ˆD�K‰K˜ÑØÐØ$*ˆD�K‰K˜Ò!ð rI   ©r‡   Úrel_urlr@   rx   ry   rz   rv   r‡   r�   r@   c                óš  — | j                   rt        d«      ‚i }|t        ur||d<   |t        urt        |«      }	|	|d<   t	        |	«      |d<   |t        ur:t        t        |«      «      |d<   t        d„ |j                  «       D «       «      |d<    | j                  j                  di |¤Ž}
i }|t        ur||d<   |t        ur||d	<   |t        ur||d
<   |t        u r| j                  } | j                  |
| j                  | j                  | j                  | j                   | j"                  f|| j$                  j'                  «       dœ|¤ŽS )a  Clone 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„   Úpathr@   c              3   óf   K  — | ])  \  }}|j                  d «      |j                  d «      f–— Œ+ y­w)úutf-8N)Úencode)rR   ÚkÚvs      rJ   rT   z$BaseRequest.clone.<locals>.<genexpr>ì   s0   è ø€ ò 'Ù;?¸1¸a�—‘˜'Ó" A§H¡H¨WÓ$5Ô6ñ'ùs   ‚/1Úraw_headersrx   ry   rz   )rv   rw   rH   )rn   ÚRuntimeErrorr$   r   rD   r   r   ÚtupleÚitemsre   Ú_replacerr   Ú	__class__rh   rf   rg   rq   rs   ro   Úcopy)r�   r‡   r�   r@   rx   ry   rz   rv   ÚdctÚnew_urlr{   Úkwargss               rJ   ÚclonezBaseRequest.cloneÎ   sZ  € ð" ×ÒÜÐRÓSÐSà ˆØœÑ!Ø"ˆC�‰MØœ(Ñ"Ü˜w›<ˆGØ ˆC�‰JÜ˜g›,ˆC�‰KØœ(Ñ"ä-¬k¸'Ó.BÓCˆC�	‰NÜ!&ñ 'ØCJÇ=Á=Ã?ô'ó "ˆC�Ñð )�$—-‘-×(Ñ(Ñ/¨3Ñ/ˆàˆØœÑ!Ø%ˆF�8ÑØ”xÑØ!ˆF�6‰NØœÑ!Ø%ˆF�8ÑØœhÑ&Ø"×3Ñ3ˆOàˆt�~‰~ØØ�M‰MØ�N‰NØ× Ñ Ø�J‰JØ�J‰Jð

ð ,Ø—+‘+×"Ñ"Ó$ñ

ð ñ

ð 
	
rI   c                 ó   — | j                   S rP   )rq   ©r�   s    rJ   r   zBaseRequest.task  s   € à�z‰zÐrI   c                 ó   — | j                   S rP   )rf   r¤   s    rJ   r}   zBaseRequest.protocol  s   € à�~‰~ÐrI   c                 óH   — | j                   €y | j                   j                  S rP   )rf   r‹   r¤   s    rJ   r‹   zBaseRequest.transport  s   € à�>‰>Ð!ØØ�~‰~×'Ñ'Ð'rI   c                 ó   — | j                   S rP   )rg   r¤   s    rJ   ÚwriterzBaseRequest.writer  s   € à×#Ñ#Ð#rI   c                 ó   — | j                   S rP   )rr   r¤   s    rJ   rv   zBaseRequest.client_max_size  s   € à×$Ñ$Ð$rI   c                 óR   — t        j                  dt        d¬«       | j                  S )NzRequest.message is deprecatedé   ©Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningre   r¤   s    rJ   r{   zBaseRequest.message  s   € ä�‰Ð5Ô7IÐVWÕXØ�}‰}ÐrI   c                 ó   — | j                   S rP   )rl   r¤   s    rJ   r�   zBaseRequest.rel_url#  s   € à�}‰}ÐrI   c                 óR   — t        j                  dt        d¬«       | j                  S )Nz#request.loop property is deprecatedé   r¬   )r®   r¯   r°   rs   r¤   s    rJ   r�   zBaseRequest.loop'  s#   € ä�‰Ø1Ô3EÐRSõ	
ð �z‰zÐrI   Úkeyc                 ó    — | j                   |   S rP   ©ro   ©r�   r´   s     rJ   Ú__getitem__zBaseRequest.__getitem__0  s   € Ø�{‰{˜3ÑÐrI   Úvaluec                 ó"   — || j                   |<   y rP   r¶   )r�   r´   r¹   s      rJ   Ú__setitem__zBaseRequest.__setitem__3  s   € Ø ˆ�‰�CÒrI   c                 ó   — | j                   |= y rP   r¶   r·   s     rJ   Ú__delitem__zBaseRequest.__delitem__6  s   € Ø�K‰K˜ÑrI   c                 ó,   — t        | j                  «      S rP   )Úlenro   r¤   s    rJ   Ú__len__zBaseRequest.__len__9  s   € Ü�4—;‘;ÓÐrI   c                 ó,   — t        | j                  «      S rP   )Úiterro   r¤   s    rJ   Ú__iter__zBaseRequest.__iter__<  s   € Ü�D—K‘KÓ Ð rI   c                 ó    — | j                   dk(  S )z5A bool indicating if the request is handled with SSL.Úhttps)rx   r¤   s    rJ   ÚsecurezBaseRequest.secureA  s   € ð �{‰{˜gÑ%Ð%rI   .c                 ó<  — g }| j                   j                  j                  t        j                  d«      D �]X  }t        |«      }d}d}i }|j                  t        j                  |«      «       d|cxk  r|k  sŒEn ŒHt        j                  ||«      }|�„|r|j                  d|«      }nÔ|j                  «       \  }}	}
|	d   dk(  rt        j                  d|	dd «      }	|
r|	|
z  }	|	||j                  «       <   |t        |j!                  d«      «      z  }d	}ne||   dk(  r.d}i }|j                  t        j                  |«      «       |dz  }n/||   d
k(  rd}|dz  }n||   dv r|dz  }n|j                  d|«      }d|cxk  r|k  r�Œ�ŒX �Œ[ t#        |«      S )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
        rH   r   Fú,ú"z\1r   éÿÿÿÿTú;z 	)re   r@   Úgetallr   Ú	FORWARDEDr¿   ÚappendÚtypesr   rc   ÚmatchÚfindÚgroupsrb   ÚsubÚlowerÚgrouprš   )r�   ÚelemsÚfield_valueÚlengthÚposÚneed_separatorÚelemrÐ   r<   r¹   Úports              rJ   Ú	forwardedzBaseRequest.forwardedF  s§  € ð( ˆØŸ=™=×0Ñ0×7Ñ7¼¿¹ÈÓKó %	5ˆKÜ˜Ó%ˆFØˆCØ"ˆNØ#%ˆDØ�L‰Lœ×/Ñ/°Ó5Ô6Ø�sÔ#˜VÖ#Ü*×0Ñ0°¸cÓB�ØÐ$Ù%à)×.Ñ.¨s°CÓ8™à,1¯L©L«NÑ)˜˜e TØ  ™8 sš?ä$;×$?Ñ$?ÀÀuÈQÈrÀ{Ó$S˜EÙØ! T™M˜EØ-2˜˜TŸZ™Z›\Ñ*Øœs 5§;¡;¨q£>Ó2Ñ2˜Ø)-™Ø  Ñ%¨Ò,Ø%*�NØ�DØ—L‘L¤×!7Ñ!7¸Ó!=Ô>Ø˜1‘H‘CØ  Ñ%¨Ò,Ø%*�NØ˜1‘H‘CØ  Ñ%¨Ñ.ð ˜1‘H‘Cð &×*Ñ*¨3°Ó4�Cð? �sÔ#˜V×#Ñ#ð%	5ôL �U‹|ÐrI   c                 ó   — | j                   ryy)a  A 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)rt   r¤   s    rJ   rx   zBaseRequest.schemeƒ  s   € ð ×%Ò%ØàrI   c                 ó   — | j                   S )zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )rj   r¤   s    rJ   r‡   zBaseRequest.method“  s   € ð �|‰|ÐrI   c                 ó   — | j                   S )zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )rk   r¤   s    rJ   rˆ   zBaseRequest.version›  s   € ð �}‰}ÐrI   c                 ó˜   — | j                   j                  j                  t        j                  «      }|�|S t        j                  «       S )zÅHostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - socket.getfqdn() value
        )re   r@   Úgetr   ÚHOSTÚsocketÚgetfqdn)r�   ry   s     rJ   ry   zBaseRequest.host£  s:   € ð �}‰}×$Ñ$×(Ñ(¬¯©Ó3ˆØÐØˆKÜ�~‰~ÓÐrI   c                 ó¶   — | j                   €yt        | j                   t        t        f«      rt	        | j                   d   «      S t	        | j                   «      S )zÂRemote 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   )ru   Ú
isinstanceÚlistrš   rD   r¤   s    rJ   rz   zBaseRequest.remote²  sN   € ð ×#Ñ#Ð+ØÜ�d×.Ñ.´´u°Ô>Ü�t×/Ñ/°Ñ2Ó3Ð3Ü�4×+Ñ+Ó,Ð,rI   c                 óŽ   — t        j                  | j                  | j                  ¬«      }|j	                  | j
                  «      S )N)rx   ry   )r   Úbuildrx   ry   Újoinrl   )r�   r„   s     rJ   r„   zBaseRequest.urlÁ  s-   € ä�i‰i˜tŸ{™{°·±Ô;ˆØ�x‰x˜Ÿ™Ó&Ð&rI   c                 ó.   — | j                   j                  S )z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )rl   r’   r¤   s    rJ   r’   zBaseRequest.pathÆ  s   € ð �}‰}×!Ñ!Ð!rI   c                 ó,   — t        | j                  «      S )zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rD   rl   r¤   s    rJ   Úpath_qszBaseRequest.path_qsÎ  s   € ô �4—=‘=Ó!Ð!rI   c                 ó.   — | j                   j                  S )zÚThe 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``
        )re   r’   r¤   s    rJ   Úraw_pathzBaseRequest.raw_pathÖ  s   € ð �}‰}×!Ñ!Ð!rI   c                 ó@   — t        | j                  j                  «      S )z7A multidict with all the variables in the query string.)r   rl   Úqueryr¤   s    rJ   ró   zBaseRequest.queryà  s   € ô ˜dŸm™m×1Ñ1Ó2Ð2rI   c                 ó.   — | j                   j                  S )z:The query string in the URL.

        E.g., id=10
        )rl   Úquery_stringr¤   s    rJ   rõ   zBaseRequest.query_stringå  s   € ð �}‰}×)Ñ)Ð)rI   c                 ó   — | j                   S )z4A case-insensitive multidict proxy with all headers.)ri   r¤   s    rJ   r@   zBaseRequest.headersí  ó   € ð �}‰}ÐrI   c                 ó.   — | j                   j                  S )z$A sequence of pairs for all headers.)re   r˜   r¤   s    rJ   r˜   zBaseRequest.raw_headersò  s   € ð �}‰}×(Ñ(Ð(rI   c                 óf   — t        | j                  j                  t        j                  «      «      S )zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   r@   rã   r   ÚIF_MODIFIED_SINCEr¤   s    rJ   Úif_modified_sincezBaseRequest.if_modified_since÷  s$   € ô ˜tŸ|™|×/Ñ/´×0FÑ0FÓGÓHÐHrI   c                 óf   — t        | j                  j                  t        j                  «      «      S )z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   r@   rã   r   ÚIF_UNMODIFIED_SINCEr¤   s    rJ   Úif_unmodified_sincezBaseRequest.if_unmodified_sinceÿ  s$   € ô ˜tŸ|™|×/Ñ/´×0HÑ0HÓIÓJÐJrI   Úetag_headerc              #   óà   K  — | t         k(  rt        dt         ¬«      –— yt        j                  | «      D ]5  }|j	                  ddd«      \  }}}|r yt        t        |«      |¬«      –— Œ7 y­w)z'Extract `ETag` objects from raw header.F)Úis_weakr¹   r³   r«   é   N)r   r    r   ÚfinditerrÕ   Úbool)rÿ   rÐ   r  r¹   Úgarbages        rJ   Ú_etag_valueszBaseRequest._etag_values  sw   è ø€ ð œ(Ò"ÜØÜôó ô
 -×5Ñ5°kÓBò 
�Ø*/¯+©+°a¸¸AÓ*>Ñ'�˜ ñ ÙäÜ  ›MØôó ñ
ùs   ‚A,A.Úheader_valuec                 ó<   — |sy t        | j                  |«      «      S rP   )rš   r  )Úclsr  s     rJ   Ú_if_match_or_none_implz"BaseRequest._if_match_or_none_impl  s    € ñ Øä�S×%Ñ% lÓ3Ó4Ð4rI   c                 ór   — | j                  | j                  j                  t        j                  «      «      S )zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r
  r@   rã   r   ÚIF_MATCHr¤   s    rJ   Úif_matchzBaseRequest.if_match%  s(   € ð ×*Ñ*¨4¯<©<×+;Ñ+;¼D¿M¹MÓ+JÓKÐKrI   c                 ór   — | j                  | j                  j                  t        j                  «      «      S )z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r
  r@   rã   r   ÚIF_NONE_MATCHr¤   s    rJ   Úif_none_matchzBaseRequest.if_none_match-  s*   € ð ×*Ñ*¨4¯<©<×+;Ñ+;¼D×<NÑ<NÓ+OÓPÐPrI   c                 óf   — t        | j                  j                  t        j                  «      «      S )zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   r@   rã   r   ÚIF_RANGEr¤   s    rJ   Úif_rangezBaseRequest.if_range5  s"   € ô ˜tŸ|™|×/Ñ/´·±Ó>Ó?Ð?rI   c                 ó0   — | j                   j                   S )zIs keepalive enabled by client?)re   Úshould_closer¤   s    rJ   Ú
keep_alivezBaseRequest.keep_alive=  s   € ð —=‘=×-Ñ-Ð-Ð-rI   c                 óæ   — | j                   j                  t        j                  d«      }t	        |«      }t        |j                  «       D ��ci c]  \  }}||j                  “Œ c}}«      S c c}}w )zMReturn request cookies.

        A read-only dictionary-like object.
        rN   )r@   rã   r   ÚCOOKIEr   r   r›   r¹   )r�   ÚrawÚparsedr´   Úvals        rJ   ÚcookieszBaseRequest.cookiesB  sS   € ð �l‰l×ÑœtŸ{™{¨BÓ/ˆÜ˜cÓ"ˆÜÀÇÁÃ× O±H°C¸  c§i¡i¡Ó OÓPÐPùÓ Os   ÁA-
c                 ó�  — | j                   j                  t        j                  «      }d\  }}|�r	 d}t	        j
                  ||«      d   \  }}|rt        |«      nd}|rt        |«      nd}|€|�| }d}|�|�|dz  }||k\  rt        d«      ‚||cxu r€t        d«      ‚ t        ||d«      S # t        $ r t        d«      ‚w xY w)	zMThe 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)
ri   rã   r   ÚRANGEÚreÚfindallÚ
IndexErrorÚ
ValueErrorÚintÚslice)r�   ÚrngÚstartÚendÚpatterns        rJ   Ú
http_rangezBaseRequest.http_rangeL  sî   € ð �m‰m×Ñ¤§
¡
Ó+ˆØ‰
ˆˆsØˆ?ðCØ0�ÜŸZ™Z¨°Ó5°aÑ8‘
��sñ "”#�c”( tˆCÙ"'”C˜”J¨TˆEàˆ}  à˜�Ø�àÐ  S _à�q‘�à˜C’<Ü$Ð%@ÓAÐAà˜Ô#Ü Ð!EÓFÐFð $ô �U˜C Ó#Ð#øô+ ò CÜ Ð!AÓBÐBðCús   ²B0 Â0Cc                 ó   — | j                   S )zReturn raw payload stream.)rh   r¤   s    rJ   ÚcontentzBaseRequest.contentp  r÷   rI   c                 óp   — t        j                  dt        d¬«       | j                  j	                  «        S )ú@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r³   r¬   )r®   r¯   r°   rh   Úat_eofr¤   s    rJ   Úhas_bodyzBaseRequest.has_bodyu  s1   € ô 	�‰Ø2Ô4FÐSTõ	
ð —=‘=×'Ñ'Ó)Ð)Ð)rI   c                 ó8   — | j                   j                  «        S )r-  )rh   r.  r¤   s    rJ   Úcan_read_bodyzBaseRequest.can_read_body}  s   € ð —=‘=×'Ñ'Ó)Ð)Ð)rI   c                 ó8   — t        | j                  «      t        uS )z6Return True if request has HTTP BODY, False otherwise.)Útyperh   r)   r¤   s    rJ   Úbody_existszBaseRequest.body_exists‚  s   € ô �D—M‘MÓ"Ô*;Ð;Ð;rI   c              ƒ   óÀ   K  — | j                   j                  «       s>| j                   j                  «       ƒ d{  –—†  | j                   j                  «       sŒ=yy7 Œ!­w)zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)rh   r.  Úreadanyr¤   s    rJ   ÚreleasezBaseRequest.release‡  sC   è ø€ ð
 —-‘-×&Ñ&Ô(Ø—-‘-×'Ñ'Ó)×)Ð)ð —-‘-×&Ñ&×(Ø)ús   ‚8AºA»AÁAc              ƒ   ó\  K  — | j                   €�t        «       }	 | j                  j                  «       ƒ d{  –—† }|j	                  |«       | j
                  r1t        |«      }|| j
                  k\  rt        | j
                  |¬«      ‚|snŒtt        |«      | _         | j                   S 7 Œr­w)z_Read request body if present.

        Returns bytes object with full request content.
        N©Úmax_sizeÚactual_size)	rn   Ú	bytearrayrh   r6  Úextendrr   r¿   r0   Úbytes)r�   ÚbodyÚchunkÚ	body_sizes       rJ   ÚreadzBaseRequest.read�  s£   è ø€ ð
 ×ÑÐ#Ü“;ˆDØØ"Ÿm™m×3Ñ3Ó5×5�Ø—‘˜EÔ"Ø×(Ò(Ü # D£	�IØ  D×$9Ñ$9Ò9Ü7Ø%)×%:Ñ%:È	ôð ñ Øð ô  % T›{ˆDÔØ×ÑÐð 6ús   ‚5B,·B*¸A3B,c              ƒ   ó€   K  — | j                  «       ƒ d{  –—† }| j                  xs d}|j                  |«      S 7 Œ%­w)z1Return BODY as text using encoding from .charset.Nr”   )rB  ÚcharsetÚdecode)r�   Ú
bytes_bodyÚencodings      rJ   ÚtextzBaseRequest.text¤  s8   è ø€ àŸ9™9›;×&ˆ
Ø—<‘<Ò* 7ˆØ× Ñ  Ó*Ð*ð 'ús   ‚>–<—&>)ÚloadsrI  c             ƒ   óN   K  — | j                  «       ƒ d{  –—† } ||«      S 7 Œ­w)zReturn BODY as JSON.N)rH  )r�   rI  r?  s      rJ   ÚjsonzBaseRequest.jsonª  s#   è ø€ à—Y‘Y“[× ˆÙ�T‹{Ðð !ús   ‚%–#—%c              ƒ   óJ   K  — t        | j                  | j                  «      S ­w)z3Return async iterator to process BODY as multipart.)r(   ri   rh   r¤   s    rJ   Ú	multipartzBaseRequest.multipart¯  s   è ø€ ä˜tŸ}™}¨d¯m©mÓ<Ð<ùs   ‚!#c              ƒ   óz  K  — | j                   �| j                   S | j                  | j                  vr$t        t	        «       «      | _         | j                   S | j
                  }|dvr$t        t	        «       «      | _         | j                   S t	        «       }|dk(  �r�| j                  «       ƒ d{  –—† }| j                  }|j                  «       ƒ d{  –—† }|��²d}|j                  j                  t        j                  «      }t        |t        «      �rê|j                  €J ‚|j                   �rt#        j$                  «       }|j'                  d¬«      ƒ d{  –—† }	|	rx|j)                  |	«      }	|j+                  |	«       |t-        |	«      z  }d|cxk  r|k  r n n|j/                  «        t1        ||¬«      ‚|j'                  d¬«      ƒ d{  –—† }	|	rŒx|j3                  d«       |€d}t5        |j                  |j                   t7        t8        j:                  |«      ||j                  «      }
|j=                  |j                  |
«       n»|j?                  d	¬
«      ƒ d{  –—† }|�|jA                  d«      r>|jC                  d¬«      }|j=                  |j                  |j)                  |«      «       n|j=                  |j                  |«       |t-        |«      z  }d|cxk  r|k  rn nt1        ||¬«      ‚tE        d«      ‚|j                  «       ƒ d{  –—† }|��ŒMnd| j?                  «       ƒ d{  –—† }|rJ| jF                  xs d}|jI                  tK        |jM                  «       j)                  |«      d	|¬«      «       t        |«      | _         | j                   S 7 �Œú7 �ŒÙ7 �ŒT7 �Œà7 �ŒO7 Œ˜7 Œ}­w)zReturn POST parameters.N)rN   z!application/x-www-form-urlencodedúmultipart/form-datarO  r   i   )Úsizer9  zapplication/octet-streamT)rE  ztext/r”   )Údefaultz8To decode nested multipart you need to use custom reader)Úkeep_blank_valuesrG  )'rm   rj   ÚPOST_METHODSr   r   r?   rM  rr   Únextr@   rã   r   ÚCONTENT_TYPErè   r'   r<   r=   ÚtempfileÚTemporaryFileÚ
read_chunkrE  Úwriter¿   Úcloser0   Úseekr3   r   rF   rG   ÚaddrB  Ú
startswithÚget_charsetr"  rD  r=  r   Úrstrip)r�   r?   ÚoutrM  r:  ÚfieldrP  Úfield_ctÚtmpr@  Úffr¹   rD  Údatas                 rJ   ÚpostzBaseRequest.post³  s<  è ø€ à�:‰:Ð!Ø—:‘:ÐØ�<‰<˜t×0Ñ0Ñ0Ü'¬	«Ó4ˆDŒJØ—:‘:Ðà×(Ñ(ˆØð  
ñ 
ô
 (¬	«Ó4ˆDŒJØ—:‘:Ðä7@³{ˆàÐ0Ó0Ø"Ÿn™nÓ.×.ˆIØ×,Ñ,ˆHà#Ÿ.™.Ó*×*ˆEØÑ#Ø�Ø Ÿ=™=×,Ñ,¬T×->Ñ->Ó?�ä˜e¤^Õ4Ø Ÿ:™:Ð1Ð1Ð1ð —~“~ä&×4Ñ4Ó6˜Ø&+×&6Ñ&6¸EÐ&6Ó&B× B˜Ù#Ø$)§L¡L°Ó$7˜EØŸI™I eÔ,Ø ¤C¨£JÑ.˜DØ  8Ô2¨dÕ2Ø #§	¡	¤Ü&?Ø-5À4ô'"ð !"ð +0×*:Ñ*:ÀÐ*:Ó*F×$F˜Eò $ð Ÿ™ œà#Ð+Ø'A˜Hä&Ø!ŸJ™JØ!ŸN™NÜ ¤×!2Ñ!2°CÓ8Ø$Ø!ŸM™Mó˜ð Ÿ™ §
¡
¨BÕ/ð ',§j¡j¸ jÓ&=× =˜Ø#Ð+¨x×/BÑ/BÀ7Ô/KØ&+×&7Ñ&7ÀÐ&7Ó&H˜GØŸG™G E§J¡J°·±¸WÓ0EÕFàŸG™G E§J¡J°Ô6Ø¤ E£
Ñ*˜Ø˜xÔ.¨$Õ.Ü";Ø)1¸tô#ð ô %ØUóð ð (Ÿn™nÓ.×.�ðq Ó#ðt Ÿ™›×$ˆDÙØŸ,™,Ò1¨'�Ø—
‘
ÜØŸ™›×,Ñ,¨WÓ5Ø*.Ø!(ôôô $ CÓ(ˆŒ
Ø�z‰zÐðU /ùð +ùð !Cùð %Gùð  !>ùð  /øà$ús�   ‚B,N;Â.N(Â/#N;ÃN+ÃBN;ÅN.ÅA6N;ÇN1ÇN;ÇBN;É%N4É&B8N;ÌN7ÌN;Ì'N;Ì;N9Ì<A-N;Î+N;Î.N;Î1N;Î4N;Î7N;Î9N;r<   rQ  c                 óf   — | j                   }|€|S |j                  }|€|S |j                  ||«      S )z"Extra info from protocol transport)rf   r‹   rŒ   )r�   r<   rQ  r}   r‹   s        rJ   rŒ   zBaseRequest.get_extra_info  s?   € à—>‘>ˆØÐØˆNà×&Ñ&ˆ	ØÐØˆNà×'Ñ'¨¨gÓ6Ð6rI   c                 óº   — | j                   j                  dd«      j                  d«      }dj                  | j                  j
                  | j                  |«      S )NÚasciiÚbackslashreplacez<{} {} {} >)r’   r•   rE  Úformatr�   rA   rj   )r�   Úascii_encodable_paths     rJ   Ú__repr__zBaseRequest.__repr__  sS   € Ø#Ÿy™y×/Ñ/°Ð9KÓL×SÑSØó 
Ðð ×#Ñ#Ø�N‰N×#Ñ# T§\¡\Ð3Gó
ð 	
rI   Úotherc                 ó0   — t        | «      t        |«      k(  S rP   )Úid)r�   rn  s     rJ   Ú__eq__zBaseRequest.__eq__'  s   € Ü�$‹xœ2˜e›9Ñ$Ð$rI   c                  ó   — y)NTrH   r¤   s    rJ   Ú__bool__zBaseRequest.__bool__*  s   € ØrI   Úresponsec              ƒ   ó   K  — y ­wrP   rH   )r�   rt  s     rJ   Ú_prepare_hookzBaseRequest._prepare_hook-  s	   è ø€ Øùs   ‚Úexcc                 ó:   — | j                   j                  |«       y rP   )rh   Úset_exception)r�   rw  s     rJ   Ú_cancelzBaseRequest._cancel0  s   € Ø�‰×#Ñ# CÕ(rI   )r‚   r€   )r‚   r6   )r‚   zMultiMapping[str])r‚   N)r‚   z,MultiDictProxy[Union[str, bytes, FileField]]rP   )jrA   rB   rC   r   Ú
METH_PATCHÚ	METH_POSTÚMETH_PUTÚ
METH_TRACEÚMETH_DELETErS  r!   ÚATTRSÚ	frozensetr%   r*   r   ÚasyncioÚAbstractEventLoopr#  r   r   rD   r   rŽ   r$   r   r   r/   r-   r¢   Úpropertyr   r}   Ú	Transportr‹   r¨   rv   r#   r{   r   r�   r�   r¸   r»   r½   rÀ   r	   rÃ   r  rÆ   r   r
   rÝ   rx   r‡   r&   rˆ   ry   rz   r„   r’   rï   rñ   ró   rõ   r@   r.   r˜   Údatetimerû   rþ   Ústaticmethodr    r  Úclassmethodr
  r  r  r  r  r  r$  r)  r+  r/  r1  r4  r7  r>  rB  rH  r+   r,   rK  r(   rM  rf  rŒ   rm  Úobjectrq  rs  r1   rv  ÚBaseExceptionrz  rH   rI   rJ   r2   r2   u   s-  „ ð 	�‰Ø�‰Ø�‰Ø�‰Ø×Ñð€Lð ×Ñ¡ò	
ó"ñ €Eð>  'Ø*.Ø $Ø"Ø $ò7+à"ð7+ð ð7+ð #ð	7+ð
 -ð7+ð #ð7+ð ×'Ñ'ð7+ð ð7+ð ˜˜S #˜X™Ñ'ð7+ð ˜‘ð7+ð �s‰mð7+ð ˜‘ð7+ð 
ó7+ðx )1Ø.6Ø2:Ø(0Ø&.Ø(0Ø19ò8
ð �c˜9�nÑ%ð8
ð �x Ð*Ñ+ð	8
ð
 �| YÐ.Ñ/ð8
ð �c˜9�nÑ%ð8
ð �C˜�NÑ#ð8
ð �c˜9�nÑ%ð8
ð ˜s I˜~Ñ.ð8
ð 
ó8
ðt òó ðð òó ðð ð(˜8 G×$5Ñ$5Ñ6ò (ó ð(ð
 ð$Ð,ò $ó ð$ð ð% ò %ó ð%ð ðÐ*ò ó ðð ð˜ò ó ðð ð�g×/Ñ/ò ó ðð ˜sð   só  ð!˜sð !¨3ð !°4ó !ð˜sð  tó ð ˜ó  ð!˜( 3™-ó !ð
 ð&˜ò &ó ð&ð ð:˜5 ¨¨c¨Ñ!2°CÐ!7Ñ8ò :ó ð:ðx ð˜ò ó ðð ð˜ò ó ðð ð˜ò ó ðð ð �cò  ó ð ð ð-˜ ™ò -ó ð-ð ð'�Sò 'ó ð'ð ð"�cò "ó ð"ð ð"˜ò "ó ð"ð ð"˜#ò "ó ð"ð ò3ó ð3ð ð*˜cò *ó ð*ð òó ðð ð)˜Zò )ó ð)ð ðI 8¨H×,=Ñ,=Ñ#>ò Ió ðIð ðK X¨h×.?Ñ.?Ñ%@ò Kó ðKð ð #ð ¨(°4©.ò ó ðð( ð5Ø# C™=ð5à	�%˜˜c˜	Ñ"Ñ	#ò5ó ð5ð ðL˜( 5¨¨s¨Ñ#3Ñ4ò Ló ðLð ðQ˜x¨¨d°C¨iÑ(8Ñ9ò Qó ðQð ð@˜( 8×#4Ñ#4Ñ5ò @ó ð@ð ð.˜Dò .ó ð.ð ðQ˜  c Ñ*ò Qó ðQð ð!$˜Eò !$ó ð!$ðF ð˜ò ó ðð ð*˜$ò *ó ð*ð ð*˜tò *ó ð*ð ð<˜Tò <ó ð<ó*ð ˜Eó  ð*+˜Có +ð 2Fò  ;ð È#ó ð
= ó =ó^ñ@
7 3ð 
7°ð 
7Àó 
7ð
˜#ó 
ð%˜Fð % tó %ð˜$ó ð¨Nð ¸tó ð)˜=ð )¨Tô )rI   r2   c                   óB  ‡ — e Zd Zej                   edg«      z  Zdededdfˆ fd„Zerde	deddfˆ fd	„Z
eeeeeeed
œdee	ef   deeef   deeef   dee	ef   dee	ef   dee	ef   deeef   dd fˆ fd„Zedd„«       Zedd„«       Zedefd„«       Zdeddfd„Zˆ xZS )r4   Ú_match_infoÚargsr¡   r‚   Nc                 ó2   •— t        ‰| �  |i |¤Ž d | _        y rP   )ÚsuperrŽ   rŒ  )r�   r�  r¡   r�   s      €rJ   rŽ   zRequest.__init__8  s   ø€ Ü‰Ñ˜$Ð) &Ò)ð ;?ˆÕrI   r<   r  c                 óÂ   •— || j                   vr@t        j                  dj                  | j                  j
                  |«      t        d¬«       t        ‰| �!  ||«       y )Nz-Setting custom {}.{} attribute is discouragedr³   r¬   )	r€  r®   r¯   rk  r�   rA   r°   r�  Ú__setattr__)r�   r<   r  r�   s      €rJ   r‘  zRequest.__setattr__C  sM   ø€ Ø˜4Ÿ:™:Ñ%Ü—‘ð%ß%+¡V¨D¯N©N×,CÑ,CÀTÓ%JÜ&Ø õ	ô ‰GÑ  cÕ*rI   r�   r‡   r�   r@   rx   ry   rz   rv   c          	      óv   •— t         ‰
| �  |||||||¬«      }t        t        |«      }	| j                  |	_        |	S )Nr�   )r�  r¢   r   r4   rŒ  )r�   r‡   r�   r@   rx   ry   rz   rv   ÚretÚnew_retr�   s             €rJ   r¢   zRequest.cloneM  sN   ø€ ô ‰g‰mØØØØØØØ+ð ó 
ˆô ”w Ó$ˆØ"×.Ñ.ˆÔØˆrI   c                 ó&   — | j                   }|€J ‚|S )zResult of route resolving.)rŒ  ©r�   Ú
match_infos     rJ   r—  zRequest.match_infoe  s!   € ð ×%Ñ%ˆ
ØÐ%Ð%Ð%ØÐrI   c                 ó:   — | j                   }|€J ‚|j                  S )zApplication instance.)rŒ  Úcurrent_appr–  s     rJ   ÚappzRequest.appl  s'   € ð ×%Ñ%ˆ
ØÐ%Ð%Ð%Ø×%Ñ%Ð%rI   c                 ó¾   — | j                   }|€J ‚|j                  }| j                  }|j                  |«      }t	        t        |d |dz    «      «      }t        |«      S )Nr   )rŒ  Úappsrš  Úindexré   Úreversedr   )r�   r—  Úlstrš  ÚidxÚsublists         rJ   Úconfig_dictzRequest.config_dicts  s\   € à×%Ñ%ˆ
ØÐ%Ð%Ð%Ø�o‰oˆØ�h‰hˆØ�i‰i˜‹nˆÜ”x  I c¨A¡g Ó/Ó0ˆÜ˜WÓ%Ð%rI   rt  c              ƒ   ó˜   K  — | j                   }|€y |j                  D ]&  }|j                  j                  | |«      ƒ d {  –—†  Œ( y 7 Œ­wrP   )rŒ  Ú_appsÚon_response_prepareÚsend)r�   rt  r—  rš  s       rJ   rv  zRequest._prepare_hook}  sN   è ø€ Ø×%Ñ%ˆ
ØÐØØ×#Ñ#ò 	?ˆCØ×)Ñ)×.Ñ.¨t°XÓ>×>Ñ>ñ	?Ø>ús   ‚>A
Á AÁA
)r‚   r7   )r‚   r5   )rA   rB   rC   r2   r€  r�  r   rŽ   r   rD   r‘  r$   r   r   r/   r-   r#  r¢   r#   r—  r„  rš  r   r¢  r1   rv  Ú__classcell__)r�   s   @rJ   r4   r4   4  sV  ø„ à×Ñ¡	¨=¨/Ó :Ñ:€Eð?˜cð ?¨Sð ?°Tõ ?ñ ð	+ Cð 	+¨cð 	+°dõ 	+ð )1Ø.6Ø2:Ø(0Ø&.Ø(0Ø19òð �c˜9�nÑ%ðð �x Ð*Ñ+ð	ð
 �| YÐ.Ñ/ðð �c˜9�nÑ%ðð �C˜�NÑ#ðð �c˜9�nÑ%ðð ˜s I˜~Ñ.ðð 
õð0 òó ðð ò&ó ð&ð ð&˜]ò &ó ð&ð?¨Nð ?¸t÷ ?rI   r4   )cr‚  r†  rF   r  rå   ÚstringrV  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   rN   r   Úabcr   Úhelpersr   r   r   r   r   r    r!   r"   r#   r$   Úhttp_parserr%   Úhttp_writerr&   rM  r'   r(   Ústreamsr)   r*   Útypedefsr+   r,   r-   r.   r/   Úweb_exceptionsr0   Úweb_responser1   Ú__all__Úweb_appr5   Úweb_protocolr6   Úweb_urldispatcherr7   Úsr3   ÚdigitsÚascii_lettersrK   rD   rE   rM   rk  rì   rš   ÚrangerZ   r[   r^   ra   Úcompilerb   rc   r2   r4   rH   rI   rJ   ú<module>rÀ     s	  ðÜ Û Û 	Û 	Û Û Û Û Û Ý %Ý "÷÷ ÷ ó õ #ã ÷õ õ å Ý %÷÷ ÷ õ +Ý $ß 6ß 4÷õ õ 6Ý (à
1€ñ Ý$Ý,Ý6ð €‡��T $¨dÔ3÷%ð %ó 4ð%ð —]‘] V×%9Ñ%9Ñ9Ð<NÑN€ˆˆc‰
Ó Nð ˜&˜ �_€ˆˆc‰
Ó $à—n‘nØ‡H�HÑKÐ/±%¹¸dÀDÓ8IÓ2JÑJÔKÓKó€ˆˆs‰ó ð )€ˆe�C‰jÓ (à=×DÑDØ ð Eó €��c‘
ó ð 8×>Ñ>Ø
 ð ?ó ð �Øñó ð 0:¨r¯z©z¸/Ó/JÐ ˜˜w s™|Ñ,Ó Jð +5¨"¯*©*°_Ó*EÐ �E˜' #™,Ñ'Ó Eô|
)�.  c Ñ*¨Lô |
)ô~N?ˆkõ N?rI   