Ë
    [üàg6t  ã                   ó  — 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/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)Ú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                   ó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   © ó    úQ/var/www/skyplay_api_hub/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.                  }|€J ‚|j1                  d«      | _        |j1                  d«      | _        |�|| j                  d<   y y )NÚurlrz   ry   Ú
sslcontextÚpeernamer{   )rf   rg   rh   ri   rA   rj   Úmethodrk   Úversionrl   rq   r…   ÚabsoluteÚwith_schemeÚ	with_hostrz   ry   Úrelativerm   rp   rr   rs   rt   Ú	transportÚget_extra_inforu   rv   )Úselfr|   r}   r~   r   r€   r‚   rw   rx   ry   rz   r{   r…   rŽ   s                 rK   Ú__init__zBaseRequest.__init__˜   sj  € ð  ˆŒØ!ˆŒØ-ˆÔàˆŒØ/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ˆŒØˆŒ
Ø /ˆÔØˆŒ
à×&Ñ&ˆ	ØÐ$Ð$Ð$Ø%.×%=Ñ%=¸lÓ%KˆÔ"Ø#,×#;Ñ#;¸JÓ#GˆÔ àÐØ$*ˆ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   rŽ   r§   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__4  s   € Ø�{‰{˜3ÑÐrJ   Úvaluec                 ó"   — || j                   |<   y rQ   r¹   )r�   r·   r¼   s      rK   Ú__setitem__zBaseRequest.__setitem__7  s   € Ø ˆ�‰�CÒrJ   c                 ó   — | j                   |= y rQ   r¹   rº   s     rK   Ú__delitem__zBaseRequest.__delitem__:  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.secureE  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.forwardedJ  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_match7  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_aliveG  s   € ð —=‘=×-Ñ-Ð-Ð-rJ   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.
        rO   )rA   ræ   r   ÚCOOKIEr   r   rž   r¼   )r�   ÚrawÚparsedr·   Úvals        rK   ÚcookieszBaseRequest.cookiesL  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)
rj   ræ   r   ÚRANGEÚreÚfindallÚ
IndexErrorÚ
ValueErrorÚintÚslice)r�   ÚrngÚstartÚendÚpatterns        rK   Ú
http_rangezBaseRequest.http_rangeV  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.)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 )r1  )ri   r2  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   r2  Ú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   r:  Ú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—   )rF  ÚcharsetÚdecode)r�   Ú
bytes_bodyÚencodings      rK   ÚtextzBaseRequest.text®  s8   è ø€ àŸ9™9›;×&ˆ
Ø—<‘<Ò* 7ˆØ× Ñ  Ó*Ð*ð 'ús   ‚>–<—&>)ÚloadsrM  c             ƒ   óN   K  — | j                  «       ƒ d{  –—† } ||«      S 7 Œ­w)zReturn BODY as JSON.N)rL  )r�   rM  rC  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                  }|j                  «       ƒ d{  –—† }|��*d}|j                  j                  t        j                  «      }t        |t        «      �rb|j                  €J ‚|j                   �r—| j"                  j%                  dt&        j(                  «      ƒ d{  –—† }|j+                  d¬«      ƒ d{  –—† }	|	r´|j-                  |	«      }	| j"                  j%                  d|j.                  |	«      ƒ d{  –—†  |t1        |	«      z  }d|cxk  r|k  r>n n;| j"                  j%                  d|j2                  «      ƒ d{  –—†  t5        ||¬«      ‚|j+                  d¬«      ƒ d{  –—† }	|	rŒ´| j"                  j%                  d|j6                  d«      ƒ d{  –—†  |€d}t9        |j                  |j                   t;        t<        j>                  |«      ||j                  «      }
|jA                  |j                  |
«       n»|jC                  d	¬
«      ƒ d{  –—† }|�|jE                  d«      r>|jG                  d¬«      }|jA                  |j                  |j-                  |«      «       n|jA                  |j                  |«       |t1        |«      z  }d|cxk  r|k  rn nt5        ||¬«      ‚tI        d«      ‚|j                  «       ƒ d{  –—† }|��ŒÅnd| jC                  «       ƒ d{  –—† }|rJ| jJ                  xs d}|jM                  tO        |jQ                  «       j-                  |«      d	|¬«      «       t        |«      | _         | j                   S 7 �Œr7 �ŒQ7 �ŒÈ7 �Œ±7 �Œr7 �Œ+7 �Œ7 �ŒØ7 �Œ[7 Œ¤7 Œ‰­w)zReturn POST parameters.N)rO   z!application/x-www-form-urlencodedúmultipart/form-datarS  r   i   )Úsizer=  zapplication/octet-streamT)rI  ztext/r—   )Údefaultz8To decode nested multipart you need to use custom reader)Úkeep_blank_valuesrK  ))rn   rk   ÚPOST_METHODSr   r   r@   rQ  rs   ÚnextrA   ræ   r   ÚCONTENT_TYPErë   r(   r=   r>   rt   Úrun_in_executorÚtempfileÚTemporaryFileÚ
read_chunkrI  ÚwriterÂ   Úcloser1   Úseekr4   r   rG   rH   ÚaddrF  Ú
startswithÚget_charsetr&  rH  rA  r   Úrstrip)r�   r@   ÚoutrQ  r>  ÚfieldrT  Úfield_ctÚtmprD  Úffr¼   rH  Údatas                 rK   Ú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ð —~“~à$(§J¡J×$>Ñ$>Ø ¤(×"8Ñ"8ó%÷ ˜ð ',×&6Ñ&6¸EÐ&6Ó&B× B˜Ù#Ø$)§L¡L°Ó$7˜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óð ð (Ÿn™nÓ.×.�ðu Ó#ðx Ÿ™›×$ˆDÙØŸ,™,Ò1¨'�Ø—
‘
ÜØŸ™›×,Ñ,¨WÓ5Ø*.Ø!(ôôô $ CÓ(ˆŒ
Ø�z‰zÐðY /ùð +ùðùð !Cùð Uùð !Rùð %GùØKùð !>ùð  /øà$úsØ   ‚B,P?Â.P Â/#P?ÃP#ÃBP?ÅP&ÅP?Å8P)Å9AP?Æ:P,Æ;A	P?ÈP/È&P?È+P2È,P?È3*P?ÉP5ÉA?P?ËP8ËB8P?ÎP;ÎP?ÎP?Î3P=Î4A-P?Ð#P?Ð&P?Ð)P?Ð,P?Ð/P?Ð2P?Ð5P?Ð8P?Ð;P?Ð=P?r=   rU  c                 óf   — | j                   }|€|S |j                  }|€|S |j                  ||«      S )z"Extra info from protocol transport)rg   rŽ   r�   )r�   r=   rU  r~   rŽ   s        rK   r�   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˜   rI  Ú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__3  s   € Ü�$‹xœ2˜e›9Ñ$Ð$rJ   c                  ó   — y)NTrI   r§   s    rK   Ú__bool__zBaseRequest.__bool__6  s   € ØrJ   Úresponsec              ƒ   ó   K  — y ­wrQ   rI   )r�   ry  s     rK   Ú_prepare_hookzBaseRequest._prepare_hook9  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 )NrS  )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_DELETErW  r!   ÚATTRSÚ	frozensetrn   r   r   r   rE   rB  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/  r3  r5  r8  r;  rF  rL  r,   r-   rO  r)   rQ  rk  r�   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�˜%‘Ó'ð  'Ø*.Ø $Ø"Ø $ò7+à"ð7+ð ð7+ð #ð	7+ð
 -ð7+ð #ð7+ð ×'Ñ'ð7+ð ð7+ð ˜˜S #˜X™Ñ'ð7+ð ˜‘ð7+ð �s‰mð7+ð ˜‘ð7+ð 
ó7+ðx )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ò  ;ð È#ó ð
= ó =ó`ñD
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=   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²   rp  r    rB   r³   ÚsuperÚ__setattr__)r�   r=   r  r    s      €rK   r—  zRequest.__setattr__T  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_infov  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   L  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è   Ú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   rO   r   Úabcr   Úhelpersr   r   r   r   r   r    r!   r"   r#   r$   r%   Úhttp_parserr&   Úhttp_writerr'   rQ  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
  ðÜ Û Û 	Û 	Û Û Û Û Û Ý %Ý "÷÷ ÷ ó õ #ã ÷õ õ å Ý %÷÷ ÷ ñ õ +Ý $ß 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ôS/�.  c Ñ*¨Lô S/ôlH?ˆkõ H?rJ   