Ë
    Eü´jÆ:  ã                  óð  — U d Z ddlm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Zej                  r&ej                  dk\  r	ddlmZmZ nddlmZmZ ded	<   n#	 ej                  dk\  r	ddlmZmZ nddlmZmZ d
ZdZ G d„ dej.                  «      Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ d «      Z! G d!„ d"«      Z" G d#„ d$«      Z# G d%„ d&«      Z$eeeeed'œZ%d(ed)<   e€e%jM                  d*«       ese%jM                  d+«       yy# e$ r 	 ddlZn# e$ r dZY nw xY wY �Œ:w xY w# e$ r dZY Œòw xY w),zq
Handlers for Content-Encoding.

See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
é    )ÚannotationsNé   )ÚDecodingError)é   é   )ÚZstdDecompressorÚ	ZstdErrorÚboolÚ_zstandard_installedTFi   c                  ó.   — e Zd Zedd„«       Zdd„Zdd„Zy)ÚDecompressorc                 ó   — y ©N© ©Úselfs    úN/root/workspace/ytshorts/venv/lib/python3.12/site-packages/httpx2/_decoders.pyÚunconsumed_tailzDecompressor.unconsumed_tail8   s   € Ø(+ó    c                 ó   — y r   r   )r   ÚdataÚ
max_lengths      r   Ú
decompresszDecompressor.decompress;   ó   � r   c                 ó   — y r   r   r   s    r   ÚflushzDecompressor.flush=   r   r   N©ÚreturnÚbytes)r   r   r   Úintr   r   )Ú__name__Ú
__module__Ú__qualname__Úpropertyr   r   r   r   r   r   r   r   7   s   „ ØÚ+ó Ø+ãDä!r   r   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚZlibDecompressorz–
    Drain a `zlib`/`gzip` decompressor in bounded pieces so a small compressed
    input cannot inflate to an unbounded buffer in a single call.
    c                ó   — || _         y r   )Údecompressor)r   r(   s     r   Ú__init__zZlibDecompressor.__init__F   s
   € Ø(ˆÕr   c              #  óÈ   K  — | j                   j                  |t        «      }|r<|–— | j                   j                  | j                   j                  t        «      }|rŒ;y y ­wr   )r(   r   ÚMAX_DECODE_CHUNK_SIZEr   )r   r   Údecompresseds      r   r   zZlibDecompressor.decompressI   sR   è ø€ Ø×(Ñ(×3Ñ3°DÔ:OÓPˆÙØÒØ×,Ñ,×7Ñ7¸×8IÑ8I×8YÑ8YÔ[pÓqˆLô ùs   ‚AA"Á A"c                ó6   — | j                   j                  «       S r   )r(   r   r   s    r   r   zZlibDecompressor.flushO   s   € Ø× Ñ ×&Ñ&Ó(Ð(r   N)r(   r   r   ÚNone©r   r   r   útyping.Iterator[bytes]r   )r!   r"   r#   Ú__doc__r)   r   r   r   r   r   r&   r&   @   s   „ ñó
)órô)r   r&   c                  ó   — e Zd Zdd„Zdd„Zy)ÚContentDecoderc                ó   — t        «       ‚r   ©ÚNotImplementedError©r   r   s     r   ÚdecodezContentDecoder.decodeT   ó   € Ü!Ó#Ð#r   c                ó   — t        «       ‚r   r5   r   s    r   r   zContentDecoder.flushW   r9   r   Nr/   ©r   r0   )r!   r"   r#   r8   r   r   r   r   r3   r3   S   s   „ ó$ô$r   r3   c                  ó    — e Zd ZdZdd„Zdd„Zy)ÚIdentityDecoderz 
    Handle unencoded data.
    c              #  ó   K  — |–— y ­wr   r   r7   s     r   r8   zIdentityDecoder.decode`   s   è ø€ Ø‹
ùs   ‚c              #  ó$   K  — dE d {  –—†  y 7 Œ­w©Nr   r   r   s    r   r   zIdentityDecoder.flushc   s   è ø€ Ø�Šús   ‚ˆ‰Nr/   r;   )r!   r"   r#   r1   r8   r   r   r   r   r=   r=   [   s   „ ñóôr   r=   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚDeflateDecoderzZ
    Handle 'deflate' decoding.

    See: https://stackoverflow.com/questions/1838699
    c                óV   — d| _         t        t        j                  «       «      | _        y )NT)Úfirst_attemptr&   ÚzlibÚdecompressobjr(   r   s    r   r)   zDeflateDecoder.__init__n   s    € Ø!ˆÔÜ,¬T×-?Ñ-?Ó-AÓBˆÕr   c              #  ó†  K  — | j                   }d| _         	 | j                  j                  |«      E d {  –—†  y 7 Œ# t        j                  $ rn}|rMt        t        j                  t        j                   «      «      | _        | j                  |«      E d {  –—†7   nt        t        |«      «      |‚Y d }~y d }~ww xY w­w©NF)rD   r(   r   rE   Úerrorr&   rF   Ú	MAX_WBITSr8   r   Ústr)r   r   Úwas_first_attemptÚexcs       r   r8   zDeflateDecoder.decoder   s•   è ø€ Ø ×.Ñ.ÐØ"ˆÔð	7Ø×(Ñ(×3Ñ3°DÓ9×9Ò9ùÜ�z‰zò 	7Ù Ü$4´T×5GÑ5GÌÏÉÈÓ5XÓ$Y�Ô!ØŸ;™; tÓ,×,Ò,ä#¤C¨£HÓ-°3Ð6ô -ûð	7üsD   ‚C—= µ;¶= ºC»= ½B>ÁAB9ÂBÂB9Â4CÂ9B>Â>Cc              #  ó¦   K  — 	 | j                   j                  «       –— y # t        j                  $ r}t	        t        |«      «      |‚d }~ww xY w­wr   ©r(   r   rE   rI   r   rK   ©r   rM   s     r   r   zDeflateDecoder.flush~   óD   è ø€ ð	3Ø×#Ñ#×)Ñ)Ó+Ó+øÜ�z‰zò 	3Ü¤ C£Ó)¨sÐ2ûð	3üó$   ‚A„!  A¡A´A	Á	AÁAN©r   r.   r/   r;   ©r!   r"   r#   r1   r)   r8   r   r   r   r   rB   rB   g   s   „ ñóCó
7ô3r   rB   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚGZipDecoderzW
    Handle 'gzip' decoding.

    See: https://stackoverflow.com/questions/1838699
    c                ól   — t        t        j                  t        j                  dz  «      «      | _        y )Né   )r&   rE   rF   rJ   r(   r   s    r   r)   zGZipDecoder.__init__Œ   s$   € Ü,¬T×-?Ñ-?ÄÇÁÐQSÑ@SÓ-TÓUˆÕr   c              #  ó¸   K  — 	 | j                   j                  |«      E d {  –—†  y 7 Œ# t        j                  $ r}t	        t        |«      «      |‚d }~ww xY w­wr   )r(   r   rE   rI   r   rK   )r   r   rM   s      r   r8   zGZipDecoder.decode�   sI   è ø€ ð	3Ø×(Ñ(×3Ñ3°DÓ9×9Ò9ùÜ�z‰zò 	3Ü¤ C£Ó)¨sÐ2ûð	3üs0   ‚A„* ¢(£* §A¨* ªA½AÁAÁAc              #  ó¦   K  — 	 | j                   j                  «       –— y # t        j                  $ r}t	        t        |«      «      |‚d }~ww xY w­wr   rO   rP   s     r   r   zGZipDecoder.flush•   rQ   rR   NrS   r/   r;   rT   r   r   r   rV   rV   …   s   „ ñóVó3ô3r   rV   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚBrotliDecoderaT  
    Handle 'brotli' decoding.

    Requires `pip install brotlipy`. See: https://brotlipy.readthedocs.io/
        or   `pip install brotli`. See https://github.com/google/brotli
    Supports both 'brotlipy' and 'Brotli' packages since they share an import
    name. The top branches are for 'brotlipy' and bottom branches for 'Brotli'
    c                ó  — t         €t        d«      d ‚t        j                  «       | _        d| _        |  t        | j                  d«      r| j                  j                  | _        y | j                  j                  | _        y )NzžUsing 'BrotliDecoder', but neither of the 'brotlicffi' or 'brotli' packages have been installed. Make sure to install httpx using `pip install httpx[brotli]`.Fr   )	ÚbrotliÚImportErrorr   r(   Ú	seen_dataÚhasattrr   Ú_decompressÚprocessr   s    r   r)   zBrotliDecoder.__init__¦   sv   € Üˆ>ÜðPóð ð	ô #×/Ñ/Ó1ˆÔØˆŒÙÜ�4×$Ñ$ lÔ3à#×0Ñ0×;Ñ;ˆDÕð  $×0Ñ0×8Ñ8ˆDÕr   c              #  óô   K  — |sy d| _         	 t        dz  }| j                  ||¬«      }|r|–— | j                  d|¬«      }|rŒy y # t        j                  $ r}t        t        |«      «      |‚d }~ww xY w­w)NTé   )Úoutput_buffer_limitr   )r`   r+   rb   r^   rI   r   rK   )r   r   rf   r,   rM   s        r   r8   zBrotliDecoder.decode¸   sƒ   è ø€ ÙØØˆŒð	3ä"7¸1Ñ"<ÐØ×+Ñ+¨DÐFYÐ+ÓZˆLÙØ"Ò"Ø#×/Ñ/°ÐI\Ð/Ó]�ô øô �|‰|ò 	3Ü¤ C£Ó)¨sÐ2ûð	3üs(   ‚A8Ž7A ÁA8ÁA5ÁA0Á0A5Á5A8c              #  ó   K  — | j                   sy 	 t        | j                  d«      r| j                  j                  «        dE d {  –—†  y # t        j
                  $ r}t        t        |«      «      |‚d }~ww xY w7 Œ5­w)NÚfinishr   )r`   ra   r(   rh   r^   rI   r   rK   rP   s     r   r   zBrotliDecoder.flushÆ   sl   è ø€ Ø�~Š~Øð		3Ü�t×(Ñ(¨(Ô3ð ×!Ñ!×(Ñ(Ô*ð �‰øô �|‰|ò 	3Ü¤ C£Ó)¨sÐ2ûð	3úàús4   ‚A>‘0A ÁA>ÁA<ÁA>ÁA9ÁA4Á4A9Á9A>NrS   r/   r;   rT   r   r   r   r\   r\   œ   s   „ ñó9ó$3ôr   r\   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚZStandardDecoderznHandle 'zstd' RFC 8878 decoding.

    On Python 3.13 and below, this requires `pip install httpx2[zstd]`.
    c                óT   — t         st        d«      d ‚t        «       | _        d| _        y )NzXUsing 'ZStandardDecoder', ...Make sure to install httpx using `pip install httpx[zstd]`.F)r   r_   r   r(   r`   r   s    r   r)   zZStandardDecoder.__init__Ý   s,   € Ý#ÜØjóàðô -Ó.ˆÔØˆ�r   c              #  ó|  K  — |sy d| _         	 | j                  j                  r(| j                  j                  |z   }t	        «       | _        	 | j                  j                  |t        «      }|rT|–— | j                  j                  s| j                  j                  rn#| j                  j                  dt        «      }|rŒT| j                  j                  r| j                  j                  sy | j                  j                  }t	        «       | _        ŒÉ# t        $ r}t        t        |«      «      |‚d }~ww xY w­w)NTr   )r`   r(   ÚeofÚunused_datar   r   r+   Úneeds_inputr	   r   rK   )r   r   r,   rM   s       r   r8   zZStandardDecoder.decodeæ   s  è ø€ ÙØØˆŒð	3Ø× Ñ ×$Ò$Ø×(Ñ(×4Ñ4°tÑ;�Ü$4Ó$6�Ô!ØØ#×0Ñ0×;Ñ;¸DÔBWÓX�Ù"Ø&Ò&Ø×(Ñ(×4Ò4¸×8IÑ8I×8MÒ8MØØ#'×#4Ñ#4×#?Ñ#?ÀÔEZÓ#[�Lò	 #ð
 ×)Ñ)×-Ò-°$×2CÑ2C×2OÒ2OØØ×(Ñ(×4Ñ4�Ü$4Ó$6�Ô!ð øô ò 	3Ü¤ C£Ó)¨sÐ2ûð	3üs5   ‚D<ŽB4D Ã,D Ã/D<Ã0&D Ä	D9ÄD4Ä4D9Ä9D<c              #  ó€   K  — | j                   sy | j                  j                  st        d«      ‚dE d {  –—†  y 7 Œ­w)NzZstandard data is incompleter   )r`   r(   rm   r   r   s    r   r   zZStandardDecoder.flushü   s2   è ø€ Ø�~Š~ØØ× Ñ ×$Ò$ÜÐ >Ó?Ð?Ø�Šús   ‚4>¶<·>NrS   r/   r;   rT   r   r   r   rj   rj   Ö   s   „ ñóó3ô,r   rj   c                  óV   — e Zd ZU dZdZded<   d
d„Zdd„Zdd„Ze		 	 	 	 	 	 dd„«       Z
y	)ÚMultiDecoderzE
    Handle the case where multiple encodings have been applied.
    é   ztyping.ClassVar[int]Úmax_decode_linksc                óü   — |D �cg c]  }|t         v sŒ|‘Œ }}t        |«      | j                  kD  rt        d| j                  › d�«      ‚t	        |«      D �cg c]  }t        |   «       ‘Œ c}| _        yc c}w c c}w )zk
        'encodings' should be the content codings in the order in which
        each was applied.
        zCannot apply more than z content encodings.N)ÚSUPPORTED_DECODERSÚlenrt   r   ÚreversedÚchildren)r   Ú	encodingsÚencodingÚcodingsÚcodings        r   r)   zMultiDecoder.__init__  s|   € ð
 -6ÖX ¸ÔEWÒ9W’8ÐXˆÐXÜˆw‹<˜$×/Ñ/Ò/ÜÐ"9¸$×:OÑ:OÐ9PÐPcÐ dÓeÐeäZbÐcjÓZkÖ.lÐPVÔ/AÀ&Ñ/IÕ/KÒ.lˆ�ùò	 Yùò /ms   …A4“A4ÁA9c              #  ó–   K  — t        |f«      }| j                  D ]  }| j                  |j                  |«      }Œ  |E d {  –—†  y 7 Œ­wr   )Úiterry   Ú_piper8   )r   r   ÚstreamsÚchilds       r   r8   zMultiDecoder.decode  sA   è ø€ Ü*.°¨w«-ˆØ—]‘]ò 	8ˆEØ—j‘j §¡¨wÓ7‰Gð	8à×Òús   ‚?A	ÁAÁA	c              #  óØ   K  — t        d«      }| j                  D ]@  }t        j                  | j	                  |j
                  |«      |j                  «       «      }ŒB |E d {  –—†  y 7 Œ­wr@   )r   ry   Ú	itertoolsÚchainr€   r8   r   )r   r�   r‚   s      r   r   zMultiDecoder.flush  sR   è ø€ Ü*.¨r«(ˆØ—]‘]ò 	XˆEÜ—o‘o d§j¡j°·±¸wÓ&GÈÏÉËÓW‰Gð	Xà×Òús   ‚A A*Á"A(Á#A*c              #  ó>   K  — |D ]  } | |«      E d {  –—†  Œ y 7 Œ­wr   r   )r8   ÚupstreamÚchunks      r   r€   zMultiDecoder._pipe"  s'   è ø€ ð
 ò 	%ˆEÙ˜e“}×$Ñ$ñ	%Ø$ús   ‚“”N)rz   ztyping.Sequence[str]r   r.   r/   r;   )r8   z0typing.Callable[[bytes], typing.Iterator[bytes]]r‡   r0   r   r0   )r!   r"   r#   r1   rt   Ú__annotations__r)   r8   r   Ústaticmethodr€   r   r   r   rr   rr     sS   … ñð ./ÐÐ*Ó.ó	móóð ð%Ø@ð%à(ð%ð 
 ò%ó ñ%r   rr   c                  ó*   — e Zd ZdZddd„Zdd„Zd	d„Zy)
ÚByteChunkerz>
    Handles returning byte content in fixed-size chunks.
    Nc                óD   — t        j                  «       | _        || _        y r   )ÚioÚBytesIOÚ_bufferÚ_chunk_size©r   Ú
chunk_sizes     r   r)   zByteChunker.__init__0  s   € Ü—z‘z“|ˆŒØ%ˆÕr   c                ó¾  — | j                   €|r|gS g S | j                  j                  |«       | j                  j                  «       | j                   k\  �r| j                  j	                  «       }t        dt        |«      | j                   «      D �cg c]  }|||| j                   z    ‘Œ }}t        |d   «      | j                   k(  r7| j                  j                  d«       | j                  j                  «        |S | j                  j                  d«       | j                  j                  |d   «       | j                  j                  «        |d d S g S c c}w ©Nr   éÿÿÿÿ©	r‘   r�   ÚwriteÚtellÚgetvalueÚrangerw   ÚseekÚtruncate©r   ÚcontentÚvalueÚiÚchunkss        r   r8   zByteChunker.decode4  ó!  € Ø×ÑÐ#Ù '�G�9Ð/¨RÐ/à�‰×Ñ˜7Ô#Ø�<‰<×ÑÓ $×"2Ñ"2Ó2Ø—L‘L×)Ñ)Ó+ˆEÜ?DÀQÌÈEË
ÐTX×TdÑTdÓ?eÖf¸!�e˜A  D×$4Ñ$4Ñ 4Ò5ÐfˆFÐfÜ�6˜"‘:‹ $×"2Ñ"2Ò2Ø—‘×!Ñ! !Ô$Ø—‘×%Ñ%Ô'Ø�à—‘×!Ñ! !Ô$Ø—‘×"Ñ" 6¨"¡:Ô.Ø—‘×%Ñ%Ô'Ø˜c˜r�{Ð"àˆIùò gó   ÂEc                ó®   — | j                   j                  «       }| j                   j                  d«       | j                   j                  «        |r|gS g S ©Nr   ©r�   rš   rœ   r�   ©r   r    s     r   r   zByteChunker.flushH  óE   € Ø—‘×%Ñ%Ó'ˆØ�‰×Ñ˜!ÔØ�‰×ÑÔÙ�ˆwÐ' RÐ'r   r   ©r“   z
int | Noner   r.   )rŸ   r   r   úlist[bytes])r   r«   rT   r   r   r   rŒ   rŒ   +  ó   „ ñô&óô((r   rŒ   c                  ó*   — e Zd ZdZddd„Zdd„Zd	d„Zy)
ÚTextChunkerz>
    Handles returning text content in fixed-size chunks.
    Nc                óD   — t        j                  «       | _        || _        y r   )rŽ   ÚStringIOr�   r‘   r’   s     r   r)   zTextChunker.__init__T  s   € Ü—{‘{“}ˆŒØ%ˆÕr   c                ó¾  — | j                   €|r|gS g S | j                  j                  |«       | j                  j                  «       | j                   k\  �r| j                  j	                  «       }t        dt        |«      | j                   «      D �cg c]  }|||| j                   z    ‘Œ }}t        |d   «      | j                   k(  r7| j                  j                  d«       | j                  j                  «        |S | j                  j                  d«       | j                  j                  |d   «       | j                  j                  «        |d d S g S c c}w r•   r—   rž   s        r   r8   zTextChunker.decodeX  r£   r¤   c                ó®   — | j                   j                  «       }| j                   j                  d«       | j                   j                  «        |r|gS g S r¦   r§   r¨   s     r   r   zTextChunker.flushl  r©   r   r   rª   )rŸ   rK   r   ú	list[str]©r   r³   rT   r   r   r   r®   r®   O  r¬   r   r®   c                  ó*   — e Zd ZdZddd„Zdd„Zd	d„Zy)
ÚTextDecoderz8
    Handles incrementally decoding bytes into text
    c                óF   —  t        j                  |«      d¬«      | _        y )NÚreplace)Úerrors)ÚcodecsÚgetincrementaldecoderÚdecoder)r   r{   s     r   r)   zTextDecoder.__init__x  s   € Ø=”v×3Ñ3°HÓ=ÀYÔOˆ�r   c                ó8   — | j                   j                  |«      S r   ©r¼   r8   r7   s     r   r8   zTextDecoder.decode{  s   € Ø�|‰|×"Ñ" 4Ó(Ð(r   c                ó:   — | j                   j                  dd«      S )Nr   Tr¾   r   s    r   r   zTextDecoder.flush~  s   € Ø�|‰|×"Ñ" 3¨Ó-Ð-r   N)zutf-8)r{   rK   r   r.   )r   r   r   rK   )r   rK   rT   r   r   r   r¶   r¶   s  s   „ ñôPó)ô.r   r¶   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚLineDecoderz—
    Handles incrementally reading lines from text.

    Has the same behaviour as the stdllib splitlines,
    but handling the input iteratively.
    c                ó    — g | _         d| _        y rH   )ÚbufferÚtrailing_crr   s    r   r)   zLineDecoder.__init__Š  s   € Ø!#ˆŒØ!&ˆÕr   c                ó°  — d}| j                   rd|z   }d| _         |j                  d«      rd| _         |d d }|sg S |d   |v }|j                  «       }t        |«      dk(  r"|s | j                  j                  |d   «       g S | j                  r/dj                  | j                  «      |d   z   g|dd  z   }g | _        |s|j                  «       g| _        |S )	Nu   
Â…â€¨â€©úFTr–   r   r   Ú )rÄ   ÚendswithÚ
splitlinesrw   rÃ   ÚappendÚjoinÚpop)r   ÚtextÚNEWLINE_CHARSÚtrailing_newlineÚliness        r   r8   zLineDecoder.decodeŽ  sâ   € àBˆð ×ÒØ˜$‘;ˆDØ$ˆDÔØ�=‰=˜ÔØ#ˆDÔØ˜˜�9ˆDáð ˆIà ™8 }Ð4ÐØ—‘Ó!ˆäˆu‹:˜Š?Ñ#3à�K‰K×Ñ˜u Q™xÔ(ØˆIà�;Š;ð —W‘W˜TŸ[™[Ó)¨E°!©HÑ4Ð5¸¸a¸b¸	ÑAˆEØˆDŒKáð !Ÿ9™9›;˜-ˆDŒKàˆr   c                óŽ   — | j                   s| j                  sg S dj                  | j                   «      g}g | _         d| _        |S )NrÇ   F)rÃ   rÄ   rË   )r   rÐ   s     r   r   zLineDecoder.flush´  s?   € Ø�{Š{ 4×#3Ò#3ØˆIà—‘˜Ÿ™Ó%Ð&ˆØˆŒØ ˆÔØˆr   NrS   )rÍ   rK   r   r³   r´   rT   r   r   r   rÁ   rÁ   ‚  s   „ ñó'ó$ôLr   rÁ   )ÚidentityÚgzipÚdeflateÚbrÚzstdzdict[str, type[ContentDecoder]]rv   rÕ   rÖ   )'r1   Ú
__future__r   rº   rŽ   r„   ÚsysÚtypingrE   Ú_exceptionsr   r^   r_   Ú
brotlicffiÚTYPE_CHECKINGÚversion_infoÚcompression.zstdr   r	   Úbackports.zstdr‰   r   r+   ÚProtocolr   r&   r3   r=   rB   rV   r\   rj   rr   rŒ   r®   r¶   rÁ   rv   rÌ   r   r   r   ú<module>rá      sª  ðòõ #ã Û 	Û Û 
Û Û å &ð	ãð 
×ÒØ
×Ñ˜7Ò"ß@Ð@ç>àÔð%Ø×Ñ˜wÒ&ßDÐDçBà#Ðð
 Ð ô"�6—?‘?ô "÷)ñ )÷&$ñ $ô	�nô 	ô3�^ô 3ô<3�.ô 3ô.7�Nô 7ôt+�~ô +ô\$%�>ô $%÷N!(ñ !(÷H!(ñ !(÷H.ñ .÷9ñ 9ðz  ØØØ
Øñ7Ð Ð3ó ð 
€>Ø×Ñ˜4Ô ÙØ×Ñ˜6Õ"ð øðg ò ðô 	$øØò ØŠðýðûð4 ò %Ø$Òð%úsG   ©E Á "E+ ÅE(ÅEÅE(ÅE!ÅE(Å E!Å!E(Å'E(Å+E5Å4E5