Ë
    W¸‘i™t  ã                   ó  — 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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' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZE ddlFmGZG dZHerddlImJZJ ddlKmLZL ddlMmNZN  ejž                  ddd¬«       G d„ d«      «       ZPej¢                  ej¤                  z   dz   ZSeeT   eUd<   deS› d�ZVeeT   eUd<   d j¯                  d!j±                  d"„ d# eY eZd$d%«      «      z   D «       «      «      Z[eeT   eUd&<   d'Z\eeT   eUd(<   d)j¯                  e[e\¬*«      Z]eeT   eUd+<   d,j¯                  eVe]¬-«      Z^eeT   eUd.<    ej¾                  d/«      Z`eeeT      eUd0<    ej¾                  e^«      ZaeeeT      eUd1<    G d2„ d3eeTef   e/«      Zb G d4„ d5eb«      Zcy)6é    N)ÚMappingProxyType)ÚTYPE_CHECKINGÚAnyÚDictÚFinalÚIteratorÚMappingÚMutableMappingÚOptionalÚPatternÚTupleÚUnionÚcast)Ú	parse_qsl)ÚCIMultiDictÚCIMultiDictProxyÚ	MultiDictÚMultiDictProxyÚMultiMapping)ÚURLé   )Úhdrs)Úparse_cookie_header)Ú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                   óZ   — e Zd ZU eed<   eed<   ej                  ed<   eed<   ee   ed<   y)r4   ÚnameÚfilenameÚfileÚcontent_typeÚheadersN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚioÚBufferedReaderr   © ó    úJ/var/www/telegram/venv/lib/python3.12/site-packages/aiohttp/web_request.pyr4   r4   L   s)   … à
ƒIØƒMØ
×
Ñ
ÓØÓØ˜cÑ"Ô"rJ   r4   z!#$%&'*+.^_`|~-Ú_TCHARú[z]+Ú_TOKENz[{}]Ú c              #   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úchr)Ú.0Úcs     rK   ú	<genexpr>rU   [   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U ej                  ej
                  ej                  ej                  ej                  hZ	e
j                   eg d¢«      z  ZdZeeeeeef         ed<   dZee   ed<   ddddddœdeded	d
dedddej4                  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jN                     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j4                  fd"„«       Z/d#edefd$„Z0d#ed%eddfd&„Z1d#eddfd'„Z2defd(„Z3de4e   fd)„Z5e+de6fd*„«       Z7e+de8e9eef   d+f   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d0„«       Z?e+dee   fd1„«       Z@e+de-fd2„«       ZAe+defd3„«       ZBe+defd4„«       ZCe+defd5„«       ZDe+d`d6„«       ZEe+defd7„«       ZFe+deGe   fd8„«       ZHe+deIfd9„«       ZJe+deeKj–                     fd:„«       ZLe+deeKj–                     fd;„«       ZMeNd<ede4eO   fd=„«       ZPeQd>ee   dee8eOd+f      fd?„«       ZRe+dee8eOd+f      fd@„«       ZSe+dee8eOd+f      fdA„«       ZTe+deeKj–                     fdB„«       ZUe+de6fdC„«       ZVe+de9eef   fdD„«       ZWe+deXfdE„«       ZYe+defdF„«       ZZe$de6fdG„«       Z[e$de6fdH„«       Z\e+de6fdI„«       Z]dadJ„Z^defdK„Z_defdL„Z`eadMœdNebdefdO„ZcdedfdP„ZedbdQ„ZfdcdRedSedefdT„ZgdefdU„ZhdVeide6fdW„Zjde6fdX„ZkdYelddfdZ„Zmd[enddfd\„Zodad]„Zpy)dr3   )Ú_messageÚ	_protocolÚ_payload_writerÚ_payloadÚ_headersÚ_methodÚ_versionÚ_rel_urlÚ_postÚ_read_bytesÚ_stateÚ_cacheÚ_taskÚ_client_max_sizeÚ_loopÚ_transport_sslcontextÚ_transport_peernameNrn   ro   i   )Úclient_max_sizeÚstateÚschemeÚhostÚremoteÚmessageÚpayloadÚprotocolr7   Úpayload_writerÚtaskúasyncio.Task[None]Úlooprw   rx   ry   rz   r{   Úreturnc                óÔ  — || _         || _        || _        || _        |j                  | _        |j                  | _        |j                  | _	        i | _
        |j                  }|j                  r}|	�|j                  |	«      }|
�|j                  |
«      }|| j                  d<   |j                  | j                  d<   |j                   | j                  d<   |j#                  «       | _        n)|| _        |	�|	| j                  d<   |
�|
| j                  d<   |€i n|| _        || _        || _        || _        |j.                  | _        |j2                  | _        |�|| j                  d<   y y )NÚurlrz   ry   r{   )rf   rg   rh   ri   rA   rj   Úmethodrk   Úversionrl   rq   r…   ÚabsoluteÚwith_schemeÚ	with_hostrz   ry   Úrelativerm   rp   rr   rs   rt   Ússl_contextru   Úpeernamerv   )Úselfr|   r}   r~   r   r€   r‚   rw   rx   ry   rz   r{   r…   s                rK   Ú__init__zBaseRequest.__init__˜   sI  € ð  ˆŒØ!ˆŒØ-ˆÔàˆŒØ/6¯©ˆŒØ—~‘~ˆŒØŸ™ˆŒØ&(ˆŒØ�k‰kˆØ�<Š<ØÐ!Ø—o‘o fÓ-�ØÐØ—m‘m DÓ)�ð "%ˆD�K‰K˜ÑØ"%§(¡(ˆD�K‰K˜ÑØ$'§J¡JˆD�K‰K˜Ñ!ØŸL™L›NˆD�MàˆDŒMØÐ!Ø(.�—‘˜HÑ%ØÐØ&*�—‘˜FÑ#à!˜M‘b¨uˆŒØˆŒ
Ø /ˆÔØˆŒ
à%-×%9Ñ%9ˆÔ"Ø#+×#4Ñ#4ˆÔ àÐØ$*ˆD�K‰K˜Ò!ð rJ   ©r†   Úrel_urlrA   ry   rz   r{   rw   r†   r‘   rA   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„ |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…   ÚpathrA   c              3   óf   K  — | ])  \  }}|j                  d «      |j                  d «      f–— Œ+ y­w)úutf-8N)Úencode)rS   ÚkÚvs      rK   rU   z$BaseRequest.clone.<locals>.<genexpr>í   s3   è ø€ ò 'á�A�qð —‘˜'Ó" A§H¡H¨WÓ$5Ô6ñ'ùs   ‚/1Úraw_headersry   rz   r{   )rw   rx   rI   )ro   ÚRuntimeErrorr$   r   rE   r   r   ÚtupleÚitemsrf   Ú_replacers   Ú	__class__ri   rg   rh   rr   rt   rp   Úcopy)rŽ   r†   r‘   rA   ry   rz   r{   rw   ÚdctÚnew_urlr|   Úkwargss               rK   ÚclonezBaseRequest.cloneÏ   sa  € ð" ×ÒÜÐOÓPÐPà ˆØœÑ!Ø"ˆC�‰MØœ(Ñ"Ü˜w›<ˆGØ ˆC�‰JÜ˜g›,ˆC�‰KØœ(Ñ"ä-¬k¸'Ó.BÓCˆC�	‰NÜ!&ñ 'à 	™N×0Ñ0Ó2ô'ó "ˆC�Ñð
 )�$—-‘-×(Ñ(Ñ/¨3Ñ/ˆàˆØœÑ!Ø%ˆF�8ÑØ”xÑØ!ˆF�6‰NØœÑ!Ø%ˆF�8ÑØœhÑ&Ø"×3Ñ3ˆOàˆt�~‰~ØØ�M‰MØ�N‰NØ× Ñ Ø�J‰JØ�J‰Jð

ð ,Ø—+‘+×"Ñ"Ó$ñ

ð ñ

ð 
	
rJ   c                 ó   — | j                   S rQ   )rr   ©rŽ   s    rK   r€   zBaseRequest.task
  s   € à�z‰zÐrJ   c                 ó   — | j                   S rQ   )rg   r¥   s    rK   r~   zBaseRequest.protocol  s   € à�~‰~ÐrJ   c                 óH   — | j                   €y | j                   j                  S rQ   )rg   Ú	transportr¥   s    rK   r¨   zBaseRequest.transport  s   € à�>‰>Ð!ØØ�~‰~×'Ñ'Ð'rJ   c                 ó   — | j                   S rQ   )rh   r¥   s    rK   ÚwriterzBaseRequest.writer  s   € à×#Ñ#Ð#rJ   c                 ó   — | j                   S rQ   )rs   r¥   s    rK   rw   zBaseRequest.client_max_size  s   € à×$Ñ$Ð$rJ   c                 óR   — t        j                  dt        d¬«       | j                  S )NzRequest.message is deprecatedé   ©Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningrf   r¥   s    rK   r|   zBaseRequest.message   s   € ä�‰Ð5Ô7IÐVWÕXØ�}‰}ÐrJ   c                 ó   — | j                   S rQ   )rm   r¥   s    rK   r‘   zBaseRequest.rel_url%  s   € à�}‰}ÐrJ   c                 óR   — t        j                  dt        d¬«       | j                  S )Nz#request.loop property is deprecatedé   r®   )r°   r±   r²   rt   r¥   s    rK   r‚   zBaseRequest.loop)  s#   € ä�‰Ø1Ô3EÐRSõ	
ð �z‰zÐrJ   Úkeyc                 ó    — | j                   |   S rQ   ©rp   ©rŽ   r¶   s     rK   Ú__getitem__zBaseRequest.__getitem__2  s   € Ø�{‰{˜3ÑÐrJ   Úvaluec                 ó"   — || j                   |<   y rQ   r¸   )rŽ   r¶   r»   s      rK   Ú__setitem__zBaseRequest.__setitem__5  s   € Ø ˆ�‰�CÒrJ   c                 ó   — | j                   |= y rQ   r¸   r¹   s     rK   Ú__delitem__zBaseRequest.__delitem__8  s   € Ø�K‰K˜ÑrJ   c                 ó,   — t        | j                  «      S rQ   )Úlenrp   r¥   s    rK   Ú__len__zBaseRequest.__len__;  s   € Ü�4—;‘;ÓÐrJ   c                 ó,   — t        | j                  «      S rQ   )Úiterrp   r¥   s    rK   Ú__iter__zBaseRequest.__iter__>  s   € Ü�D—K‘KÓ Ð rJ   c                 ó    — | j                   dk(  S )z5A bool indicating if the request is handled with SSL.Úhttps)ry   r¥   s    rK   ÚsecurezBaseRequest.secureC  s   € ð �{‰{˜gÑ%Ð%rJ   .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
        rI   r   Fú,ú"z\1r   éÿÿÿÿTú;z 	)rf   rA   Úgetallr   Ú	FORWARDEDrÁ   ÚappendÚtypesr   rd   ÚmatchÚfindÚgroupsrc   ÚsubÚlowerÚgroupr›   )rŽ   ÚelemsÚfield_valueÚlengthÚposÚneed_separatorÚelemrÒ   r=   r»   Úports              rK   Ú	forwardedzBaseRequest.forwardedH  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‹|ÐrJ   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)ru   r¥   s    rK   ry   zBaseRequest.scheme…  s   € ð ×%Ò%ØàrJ   c                 ó   — | j                   S )zyRead only property for getting HTTP method.

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

        Returns aiohttp.protocol.HttpVersion instance.
        )rl   r¥   s    rK   r‡   zBaseRequest.version�  s   € ð �}‰}ÐrJ   c                 ó˜   — | j                   j                  j                  t        j                  «      }|�|S t        j                  «       S )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.
        )rf   rA   Úgetr   ÚHOSTÚsocketÚgetfqdn)rŽ   rz   s     rK   rz   zBaseRequest.host¥  s:   € ð �}‰}×$Ñ$×(Ñ(¬¯©Ó3ˆØÐØˆKÜ�~‰~ÓÐrJ   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   )rv   Ú
isinstanceÚlistr›   rE   r¥   s    rK   r{   zBaseRequest.remote¸  sN   € ð ×#Ñ#Ð+ØÜ�d×.Ñ.´´u°Ô>Ü�t×/Ñ/°Ñ2Ó3Ð3Ü�4×+Ñ+Ó,Ð,rJ   c                 óŠ   — t        j                  | j                  | j                  ¬«      j	                  | j
                  «      S )zThe full URL of the request.)ry   Ú	authority)r   Úbuildry   rz   Újoinrm   r¥   s    rK   r…   zBaseRequest.urlÇ  s,   € ô
 �y‰y §¡°t·y±yÔA×FÑFÀtÇ}Á}ÓUÐUrJ   c                 ó.   — | j                   j                  S )z_The URL including *PATH INFO* without the host or scheme.

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

        E.g, /app/blog?id=10
        )rE   rm   r¥   s    rK   Úpath_qszBaseRequest.path_qsÖ  s   € ô �4—=‘=Ó!Ð!rJ   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``
        )rf   r“   r¥   s    rK   Úraw_pathzBaseRequest.raw_pathÞ  s   € ð �}‰}×!Ñ!Ð!rJ   c                 ó.   — | j                   j                  S )z7A multidict with all the variables in the query string.)rm   Úqueryr¥   s    rK   rö   zBaseRequest.queryè  s   € ð �}‰}×"Ñ"Ð"rJ   c                 ó.   — | j                   j                  S )z:The query string in the URL.

        E.g., id=10
        )rm   Úquery_stringr¥   s    rK   rø   zBaseRequest.query_stringí  s   € ð �}‰}×)Ñ)Ð)rJ   c                 ó   — | j                   S )z4A case-insensitive multidict proxy with all headers.)rj   r¥   s    rK   rA   zBaseRequest.headersõ  ó   € ð �}‰}ÐrJ   c                 ó.   — | j                   j                  S )z$A sequence of pairs for all headers.)rf   r™   r¥   s    rK   r™   zBaseRequest.raw_headersú  s   € ð �}‰}×(Ñ(Ð(rJ   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"   rA   rå   r   ÚIF_MODIFIED_SINCEr¥   s    rK   Úif_modified_sincezBaseRequest.if_modified_sinceÿ  s$   € ô ˜tŸ|™|×/Ñ/´×0FÑ0FÓGÓHÐHrJ   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"   rA   rå   r   ÚIF_UNMODIFIED_SINCEr¥   s    rK   Úif_unmodified_sincezBaseRequest.if_unmodified_since  s$   € ô ˜tŸ|™|×/Ñ/´×0HÑ0HÓIÓJÐJrJ   Ú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        rK   Ú_etag_valueszBaseRequest._etag_values  sw   è ø€ ð œ(Ò"ÜØÜôó ô
 -×5Ñ5°kÓBò 
�Ø*/¯+©+°a¸¸AÓ*>Ñ'�˜ ñ ÙäÜ  ›MØôó ñ
ùs   ‚A,A.Úheader_valuec                 ó<   — |sy t        | j                  |«      «      S rQ   )r›   r	  )Úclsr
  s     rK   Ú_if_match_or_none_implz"BaseRequest._if_match_or_none_impl$  s    € ñ Øä�S×%Ñ% lÓ3Ó4Ð4rJ   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  rA   rå   r   ÚIF_MATCHr¥   s    rK   Úif_matchzBaseRequest.if_match-  s(   € ð ×*Ñ*¨4¯<©<×+;Ñ+;¼D¿M¹MÓ+JÓKÐKrJ   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  rA   rå   r   ÚIF_NONE_MATCHr¥   s    rK   Úif_none_matchzBaseRequest.if_none_match5  s*   € ð ×*Ñ*¨4¯<©<×+;Ñ+;¼D×<NÑ<NÓ+OÓPÐPrJ   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"   rA   rå   r   ÚIF_RANGEr¥   s    rK   Úif_rangezBaseRequest.if_range=  s"   € ô ˜tŸ|™|×/Ñ/´·±Ó>Ó?Ð?rJ   c                 ó0   — | j                   j                   S )zIs keepalive enabled by client?)rf   Úshould_closer¥   s    rK   Ú
keep_alivezBaseRequest.keep_aliveE  s   € ð —=‘=×-Ñ-Ð-Ð-rJ   c                 óÆ   — t        | j                  j                  t        j                  d«      «      }t        |D ��ci c]  \  }}||j                  “Œ c}}«      S c c}}w )zMReturn request cookies.

        A read-only dictionary-like object.
        rO   )r   rA   rå   r   ÚCOOKIEr   r»   )rŽ   Úparsedr=   Úmorsels       rK   ÚcookieszBaseRequest.cookiesJ  sI   € ô % T§\¡\×%5Ñ%5´d·k±kÀ2Ó%FÓGˆäÈ× O¹¸¸f  v§|¡|Ñ!3Ó OÓPÐPùÓ Os   ¾A
c                 ó®  — | j                   j                  t        j                  «      }d\  }}|��	 d}t	        j
                  ||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)rj   rå   r   ÚRANGEÚreÚfindallÚASCIIÚ
IndexErrorÚ
ValueErrorÚintÚslice)rŽ   ÚrngÚstartÚendÚpatterns        rK   Ú
http_rangezBaseRequest.http_rangeV  sô   € ð �m‰m×Ñ¤§
¡
Ó+ˆØ‰
ˆˆsØˆ?ðCØ0�ÜŸZ™Z¨°´b·h±hÓ?ÀÑB‘
��sñ "”#�c”( tˆCÙ"'”C˜”J¨TˆEàˆ}  à˜�Ø�àÐ  S _à�q‘�à˜C’<Ü$Ð%@ÓAÐAà˜Ô#Ü Ð!EÓFÐFð $ô �U˜C Ó#Ð#øô+ ò CÜ Ð!AÓBÐBðCús   ²-B? Â?Cc                 ó   — | j                   S )zReturn raw payload stream.)ri   r¥   s    rK   ÚcontentzBaseRequest.contentz  rú   rJ   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²   ri   Úat_eofr¥   s    rK   Úhas_bodyzBaseRequest.has_body  s1   € ô 	�‰Ø2Ô4FÐSTõ	
ð —=‘=×'Ñ'Ó)Ð)Ð)rJ   c                 ó8   — | j                   j                  «        S )r0  )ri   r1  r¥   s    rK   Úcan_read_bodyzBaseRequest.can_read_body‡  s   € ð —=‘=×'Ñ'Ó)Ð)Ð)rJ   c                 ó8   — t        | j                  «      t        uS )z6Return True if request has HTTP BODY, False otherwise.)Útyperi   r*   r¥   s    rK   Úbody_existszBaseRequest.body_existsŒ  s   € ô �D—M‘MÓ"Ô*;Ð;Ð;rJ   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)ri   r1  Úreadanyr¥   s    rK   Ú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)	ro   Ú	bytearrayri   r9  Úextendrs   rÁ   r1   Úbytes)rŽ   ÚbodyÚchunkÚ	body_sizes       rK   Ú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•   )rE  ÚcharsetÚdecode)rŽ   Ú
bytes_bodyÚencodings      rK   ÚtextzBaseRequest.text®  s8   è ø€ àŸ9™9›;×&ˆ
Ø—<‘<Ò* 7ˆØ× Ñ  Ó*Ð*ð 'ús   ‚>–<—&>)ÚloadsrL  c             ƒ   óN   K  — | j                  «       ƒ d{  –—† } ||«      S 7 Œ­w)zReturn BODY as JSON.N)rK  )rŽ   rL  rB  s      rK   Ú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)   rj   ri   r¥   s    rK   Ú	multipartzBaseRequest.multipart¹  s   è ø€ ä˜tŸ}™}¨d¯m©mÓ<Ð<ùs   ‚!#c              ƒ   óª  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                  }d}|j                  «       ƒ d{  –—† x}��9|j                  j                  t        j                  «      }t        |t        «      �rs|j                  €t!        d«      ‚|j"                  �rŸ| j$                  j'                  dt(        j*                  «      ƒ d{  –—† }|j-                  d¬«      ƒ d{  –—† }	|	r¼|j/                  |	«      ƒ d{  –—† }	| j$                  j'                  d|j0                  |	«      ƒ d{  –—†  |t3        |	«      z  }d|cxk  r|k  r>n n;| j$                  j'                  d|j4                  «      ƒ d{  –—†  t7        ||¬«      ‚|j-                  d¬«      ƒ d{  –—† }	|	rŒ¼| j$                  j'                  d|j8                  d«      ƒ d{  –—†  |€d	}t;        |j                  |j"                  t=        t>        j@                  |«      ||j                  «      }
|jC                  |j                  |
«       n»|jE                  d
¬«      ƒ d{  –—† }|�|jG                  d«      r>|jI                  d¬«      }|jC                  |j                  |j/                  |«      «       n|jC                  |j                  |«       |t3        |«      z  }d|cxk  r|k  rn nt7        ||¬«      ‚t!        d«      ‚|j                  «       ƒ d{  –—† x}��ŒÔnd| jE                  «       ƒ d{  –—† }|rJ| jJ                  xs d}|jM                  tO        |jQ                  «       j/                  |«      d
|¬«      «       t        |«      | _         | j                   S 7 �Œƒ7 �Œ`7 �ŒÐ7 �Œ¹7 �Œ¡7 �Œu7 �Œ.7 �Œ
7 �ŒÛ7 �Œ^7 Œ§7 ŒŒ­w)zReturn POST parameters.N)rO   z!application/x-www-form-urlencodedúmultipart/form-datarR  r   zMultipart field missing name.i   )Úsizer<  zapplication/octet-streamT)rH  ztext/r•   )Údefaultz8To decode nested multipart you need to use custom reader)Úkeep_blank_valuesrJ  ))rn   rk   ÚPOST_METHODSr   r   r@   rP  rs   ÚnextrA   rå   r   ÚCONTENT_TYPErê   r(   r=   r%  r>   rt   Úrun_in_executorÚtempfileÚTemporaryFileÚ
read_chunkrH  ÚwriterÁ   Úcloser1   Úseekr4   r   rG   rH   ÚaddrE  Ú
startswithÚget_charsetrG  r@  r   Úrstrip)rŽ   r@   ÚoutrP  r=  rS  ÚfieldÚfield_ctÚtmprC  Úffr»   rG  Údatas                 rK   ÚpostzBaseRequest.post½  s¶  è ø€ à�:‰:Ð!Ø—:‘:ÐØ�<‰<˜t×0Ñ0Ñ0Ü'¬	«Ó4ˆDŒJØ—:‘:Ðà×(Ñ(ˆØð  
ñ 
ô
 (¬	«Ó4ˆDŒJØ—:‘:Ðä7@³{ˆàÐ0Ó0Ø"Ÿn™nÓ.×.ˆIØ×,Ñ,ˆHàˆDØ"+§.¡.Ó"2×2Ð2�5Ñ?Ø Ÿ=™=×,Ñ,¬T×->Ñ->Ó?�ä˜e¤^Õ4Ø—z‘zÐ)Ü(Ð)HÓIÐIð —~“~à$(§J¡J×$>Ñ$>Ø ¤(×"8Ñ"8ó%÷ ˜ð ',×&6Ñ&6¸EÐ&6Ó&B× B˜Ù#Ø*/¯,©,°uÓ*=×$=˜EØ"&§*¡*×"<Ñ"<¸TÀ3Ç9Á9ÈeÓ"T×TÐTØ ¤C¨£JÑ.˜DØ  8Ô2¨dÕ2Ø&*§j¡j×&@Ñ&@ÀÀsÇyÁyÓ&Q× QÐ QÜ&?Ø-5À4ô'"ð !"ð +0×*:Ñ*:ÀÐ*:Ó*F×$F˜Eò $ð #Ÿj™j×8Ñ8¸¸s¿x¹xÈÓK×KÐKà#Ð+Ø'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ô#ð ô %ØRóð ðm #,§.¡.Ó"2×2Ð2�5Ó?ðt Ÿ™›×$ˆDÙØŸ,™,Ò1¨'�Ø—
‘
ÜØŸ™›×,Ñ,¨WÓ5Ø*.Ø!(ôôô $ CÓ(ˆŒ
Ø�z‰zÐðU /ùð 3ùðùð !Cùà$=ùØTùð !Rùð %GùØKùð !>ùðU 3øðt %úsé   ‚B,QÂ.P1Â/%QÃP4ÃBQÅ'P7Å(QÆP:ÆQÆP=Æ.QÇQ ÇA	QÈQÈ&QÈ<QÈ=QÉ*QÉ.Q	É/A?QË.QË/B8QÎ'QÎ(QÎ0QÏQÏA-QÐ4QÐ7QÐ:QÐ=QÑ QÑQÑQÑ	QÑQÑQÑQr=   rT  c                 óf   — | j                   }|€|S |j                  }|€|S |j                  ||«      S )z"Extra info from protocol transport)rg   r¨   Úget_extra_info)rŽ   r=   rT  r~   r¨   s        rK   rl  zBaseRequest.get_extra_info  s?   € à—>‘>ˆØÐØˆNà×&Ñ&ˆ	ØÐØˆNà×'Ñ'¨¨gÓ6Ð6rJ   c                 óº   — | j                   j                  dd«      j                  d«      }dj                  | j                  j
                  | j                  |«      S )NÚasciiÚbackslashreplacez<{} {} {} >)r“   r–   rH  Úformatrž   rB   rk   )rŽ   Úascii_encodable_paths     rK   Ú__repr__zBaseRequest.__repr__)  sS   € Ø#Ÿy™y×/Ñ/°Ð9KÓL×SÑSØó 
Ðð ×#Ñ#Ø�N‰N×#Ñ# T§\¡\Ð3Gó
ð 	
rJ   Úotherc                 ó0   — t        | «      t        |«      k(  S rQ   )Úid)rŽ   rs  s     rK   Ú__eq__zBaseRequest.__eq__1  s   € Ü�$‹xœ2˜e›9Ñ$Ð$rJ   c                  ó   — y)NTrI   r¥   s    rK   Ú__bool__zBaseRequest.__bool__4  s   € ØrJ   Úresponsec              ƒ   ó   K  — y ­wrQ   rI   )rŽ   ry  s     rK   Ú_prepare_hookzBaseRequest._prepare_hook7  s	   è ø€ Øùs   ‚Úexcc                 ó0   — t        | j                  |«       y rQ   )r%   ri   )rŽ   r|  s     rK   Ú_cancelzBaseRequest._cancel:  s   € Ü�d—m‘m SÕ)rJ   c                 óÖ   — | j                   �| j                  dk7  ry | j                   j                  «       D ]0  \  }}t        |t        «      sŒ|j
                  j                  «        Œ2 y )NrR  )rn   r@   rœ   rê   r4   r?   r^  )rŽ   Ú	file_nameÚfile_field_objects      rK   Ú_finishzBaseRequest._finish=  s^   € Ø�:‰:Ð ×!2Ñ!2Ð6KÒ!KØð -1¯J©J×,<Ñ,<Ó,>ò 	/Ñ(ˆIÐ(ÜÐ+¬YÕ7Ø!×&Ñ&×,Ñ,Õ.ñ	/rJ   )rƒ   r�   )rƒ   r7   )rƒ   zMultiMapping[str])rƒ   N)rƒ   z,MultiDictProxy[Union[str, bytes, FileField]]rQ   )qrB   rC   rD   r   Ú
METH_PATCHÚ	METH_POSTÚMETH_PUTÚ
METH_TRACEÚMETH_DELETErV  r!   ÚATTRSÚ	frozensetrn   r   r   r   rE   rA  r4   rF   ro   r&   r+   r   ÚasyncioÚAbstractEventLoopr&  r   r   r�   r$   r   r0   r.   r£   Úpropertyr€   r~   Ú	Transportr¨   rª   rw   r#   r|   r   r‘   r‚   rº   r½   r¿   rÂ   r   rÅ   r  rÈ   r   r	   rß   ry   r†   r'   r‡   rz   r{   r…   r“   rò   rô   rö   rø   r   rA   r/   r™   Údatetimerþ   r  Ústaticmethodr    r	  Úclassmethodr  r  r  r  r  r  r'  r,  r.  r2  r4  r7  r:  rE  rK  r,   r-   rN  r)   rP  rj  rl  rr  Úobjectrv  rx  r2   r{  ÚBaseExceptionr~  r‚  rI   rJ   rK   r3   r3   v   st  … ð 	�‰Ø�‰Ø�‰Ø�‰Ø×Ñð€Lð ×Ñ¡ò	
ó"ñ €Eð* EI€Eˆ8�N 5¨¨e°YÐ)>Ñ#?Ñ@ÑAÓHØ#'€K�˜%‘Ó'ð  'Ø*.Ø $Ø"Ø $ò5+à"ð5+ð ð5+ð #ð	5+ð
 -ð5+ð #ð5+ð ×'Ñ'ð5+ð ð5+ð ˜˜S #˜X™Ñ'ð5+ð ˜‘ð5+ð �s‰mð5+ð ˜‘ð5+ð 
ó5+ðt )1Ø.6Ø2:Ø(0Ø&.Ø(0Ø19ò9
ð �c˜9�nÑ%ð9
ð �x Ð*Ñ+ð	9
ð
 �| YÐ.Ñ/ð9
ð �c˜9�nÑ%ð9
ð �C˜�NÑ#ð9
ð �c˜9�nÑ%ð9
ð ˜s I˜~Ñ.ð9
ð 
ó9
ðv òó ðð òó ðð ð(˜8 G×$5Ñ$5Ñ6ò (ó ð(ð
 ð$Ð,ò $ó ð$ð ð% ò %ó ð%ð ðÐ*ò ó ðð ð˜ò ó ðð ð�g×/Ñ/ò ó ðð ˜sð   só  ð!˜sð !¨3ð !°4ó !ð˜sð  tó ð ˜ó  ð!˜( 3™-ó !ð
 ð&˜ò &ó ð&ð ð:˜5 ¨¨c¨Ñ!2°CÐ!7Ñ8ò :ó ð:ðx ð˜ò ó ðð ð˜ò ó ðð ð˜ò ó ðð ð �cò  ó ð ð$ ð-˜ ™ò -ó ð-ð ðV�Sò Vó ðVð ð"�cò "ó ð"ð ð"˜ò "ó ð"ð ð"˜#ò "ó ð"ð ò#ó ð#ð ð*˜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ó *ô
/rJ   r3   c                   ó@  ‡ — e Zd ZU ej                   edg«      z  ZdZed   ed<   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 )r5   Ú_match_infoNr8   r=   Úvalrƒ   c                 óÂ   •— || j                   vr@t        j                  dj                  | j                  j
                  |«      t        d¬«       t        ‰| �!  ||«       y )Nz-Setting custom {}.{} attribute is discouragedrµ   r®   )	rˆ  r°   r±   rp  rž   rB   r²   ÚsuperÚ__setattr__)rŽ   r=   r•  rž   s      €rK   r˜  zRequest.__setattr__R  sM   ø€ Ø˜4Ÿ:™:Ñ%Ü—‘ð%ß%+¡V¨D¯N©N×,CÑ,CÀTÓ%JÜ&Ø õ	ô ‰GÑ  cÕ*rJ   r�   r†   r‘   rA   ry   rz   r{   rw   c          	      óv   •— t         ‰
| �  |||||||¬«      }t        t        |«      }	| j                  |	_        |	S )Nr�   )r—  r£   r   r5   r”  )rŽ   r†   r‘   rA   ry   rz   r{   rw   ÚretÚnew_retrž   s             €rK   r£   zRequest.clone\  sN   ø€ ô ‰g‰mØØØØØØØ+ð ó 
ˆô ”w Ó$ˆØ"×.Ñ.ˆÔØˆrJ   c                 ó&   — | j                   }|€J ‚|S )zResult of route resolving.)r”  ©rŽ   Ú
match_infos     rK   rž  zRequest.match_infot  s!   € ð ×%Ñ%ˆ
ØÐ%Ð%Ð%ØÐrJ   c                 ó:   — | j                   }|€J ‚|j                  S )zApplication instance.)r”  Úcurrent_appr�  s     rK   ÚappzRequest.app{  s'   € ð ×%Ñ%ˆ
ØÐ%Ð%Ð%Ø×%Ñ%Ð%rJ   c                 ó¾   — | j                   }|€J ‚|j                  }| j                  }|j                  |«      }t	        t        |d |dz    «      «      }t        |«      S )Nr   )r”  Úappsr¡  Úindexrë   Úreversedr   )rŽ   rž  Úlstr¡  ÚidxÚsublists         rK   Úconfig_dictzRequest.config_dict‚  s\   € à×%Ñ%ˆ
ØÐ%Ð%Ð%Ø�o‰oˆØ�h‰hˆØ�i‰i˜‹nˆÜ”x  I c¨A¡g Ó/Ó0ˆÜ˜WÓ%Ð%rJ   ry  c              ƒ   ó¢   K  — | j                   }|€y |j                  D ]+  }|j                  x}sŒ|j                  | |«      ƒ d {  –—†  Œ- y 7 Œ­wrQ   )r”  Ú_appsÚon_response_prepareÚsend)rŽ   ry  rž  r¡  r¬  s        rK   r{  zRequest._prepare_hookŒ  sZ   è ø€ Ø×%Ñ%ˆ
ØÐØØ×#Ñ#ò 	?ˆCØ&)×&=Ñ&=Ð=Ð"Ñ=Ø)×.Ñ.¨t°XÓ>×>Ñ>ñ	?à>ús   ‚-A°AÁAÁA)rƒ   r8   )rƒ   r6   )rB   rC   rD   r3   rˆ  r‰  r”  r   rF   r   rE   r   r˜  r$   r   r   r0   r.   r&  r£   r#   rž  rŒ  r¡  r   r©  r2   r{  Ú__classcell__)rž   s   @rK   r5   r5   J  sJ  ø… à×Ñ¡	¨=¨/Ó :Ñ:€Eà37€K�Ð/Ñ0Ó7áð	+ 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÷ ?rJ   r5   )drŠ  rŽ  rG   r!  rç   ÚstringrZ  rÑ   r°   r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   Úurllib.parser   ÚattrÚ	multidictr   r   r   r   r   Úyarlr   rO   r   Ú_cookie_helpersr   Úabcr   Úhelpersr   r   r   r   r   r    r!   r"   r#   r$   r%   Úhttp_parserr&   Úhttp_writerr'   rP  r(   r)   Ústreamsr*   r+   Útypedefsr,   r-   r.   r/   r0   Úweb_exceptionsr1   Úweb_responser2   Ú__all__Úweb_appr6   Úweb_protocolr7   Úweb_urldispatcherr8   Úsr4   ÚdigitsÚascii_lettersrL   rE   rF   rN   rp  rï   r›   Úranger[   r\   r_   rb   Úcompilerc   rd   r3   r5   rI   rJ   rK   ú<module>rÇ     s
  ðÜ Û Û 	Û 	Û Û Û Û Û Ý "÷÷ ÷ ó õ #ã ÷õ õ å Ý 0Ý %÷÷ ÷ ñ õ +Ý $ß 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×>Ñ>Ø Nð ?ó ð ��s‘ó ð 0:¨r¯z©z¸/Ó/JÐ ˜˜w s™|Ñ,Ó Jð +5¨"¯*©*°_Ó*EÐ �E˜' #™,Ñ'Ó EôQ/�.  c Ñ*¨Lô Q/ôhH?ˆkõ H?rJ   