Ë
    ÖÉ�j2  ã                   óÐ  — U 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	 d dl
mZmZ ddlmZ dZdZd	Zd
ZdZdZdZdZdZdededefd„Zdedefd„Zdededefd„Zdededefd„Zd„ fdeeef   deegef   defd„Z dedefd„Z!deeef   defd„Z"dddefd„Z#dedefd„Z$dedefd „Z%dedefd!„Z&dedefd"„Z'deeef   dedefd#„Z(d$„ fdedeegef   deeef   fd%„Z)dededeeef   fd&„Z*dedefd'„Z+dedeeef   fd(„Z,deddfd)„Z-dedefd*„Z.dedefd+„Z/dedefd,„Z0dedefd-„Z1eeeeef   Z2dd.e e)fd/d0e%e/fd1d2e e)fd3d4e e)fdd5e$e.fdd6e!e+fd7d8e"e,fd9d:e&e0fd;d<e%e/fd=d>e(e*fd
d?e$e.fd@dAe!e+fdBdCe(e*fdDdEe%e/fdFdGe(e*fdHdIe%e/fdJdKe#e-fdLdMe$e.fdNdOe%e/fdPdQe'e1fdRdSe'e1fdTdUe e)fdVdWe e)fgZ3e4e2   e5dX<   i Z6e7ee2f   e5dY<   i Z8e7ee2f   e5dZ<   e3D ]  Z9e9e6e9d    <   e9e8e9d   <   Œ  G d[„ d\ejt                  «      Z; G d]„ d^ejt                  «      Z< G d_„ d`«      Z= G da„ dbe>«      Z? G dc„ dde?«      Z@ G de„ dfe?«      ZA G dg„ dhe«      ZB G di„ dj«      ZCdedefdk„ZDdndedlee   de=fdm„ZEy)oé    N)ÚCallable)ÚpackÚunpack)ÚOptionalÚProtocolé   )Úrandom_transaction_idiB¤!é   iNUTSé   é   é   é   g      à?ÚdataÚlengthÚreturnc                 ó2   — | dd t        d|«      z   | dd  z   S )Nr   r   ú!Hé   ©r   )r   r   s     úL/home/uftp/webrtc-recorder/.venv/lib/python3.12/site-packages/aioice/stun.pyÚset_body_lengthr      s%   € Ø��!ˆ9”t˜D &Ó)Ñ)¨D°°¨HÑ4Ð4ó    c                 ó€   — t        | t        | «      t        z
  t        z   «      }t	        j
                  |«      t        z  S ©N)r   ÚlenÚHEADER_LENGTHÚFINGERPRINT_LENGTHÚbinasciiÚcrc32ÚFINGERPRINT_XOR)r   Ú
check_datas     r   Úmessage_fingerprintr"      s1   € Ü  ¤s¨4£y´=Ñ'@ÔCUÑ'UÓV€JÜ�>‰>˜*Ó%¬Ñ7Ð7r   Úkeyc                 ó’   — t        | t        | «      t        z
  t        z   «      }t	        j
                  ||d«      j                  «       S )NÚsha1)r   r   r   ÚINTEGRITY_LENGTHÚhmacÚnewÚdigest)r   r#   r!   s      r   Úmessage_integrityr*   !   s9   € Ü  ¤s¨4£y´=Ñ'@ÔCSÑ'SÓT€JÜ�8‰8�C˜ VÓ,×3Ñ3Ó5Ð5r   Útransaction_idc                 ó¼   — t        dt        dz	  t        «      |z   }d}t        t        | «      «      D ]'  }|t        j                  | |   ||   z  ddd¬«      z  }Œ) |S )Nz!HIé   r   r   ÚbigF)Úsigned)r   ÚCOOKIEÚranger   ÚintÚto_bytes)r   r+   ÚxpadÚxdataÚis        r   Úxor_datar7   &   se   € Ü�”v ‘|¤VÓ,¨~Ñ=€DØ€EÜ”3�t“9Óò IˆØ”—‘˜d 1™g¨¨Q©Ñ/°°EÀ%�ÓHÑH‰ðIà€Lr   c                 ó   — | S r   © ©Úxs    r   ú<lambda>r<   0   ó   € ¨a€ r   ÚvalueÚxorc                 óà   — t        j                  | d   «      }t        |t         j                  «      rt        }nt
        }t        dd|«       |t        d| d   «      |j                  z   «      z   S )Nr   ú!BBr   r   )Ú	ipaddressÚ
ip_addressÚ
isinstanceÚIPv4AddressÚIPV4_PROTOCOLÚIPV6_PROTOCOLr   Úpacked)r>   r?   rC   Úprotocols       r   Úpack_addressrJ   .   sa   € ô ×%Ñ% e¨A¡hÓ/€JÜ�*œi×3Ñ3Ô4Ü ‰ä ˆÜ��q˜(Ó#¡c¬$¨t°U¸1±XÓ*>À×ARÑARÑ*RÓ&SÑSÐSr   c                 ó   — | S r   r9   ©r>   s    r   Ú
pack_bytesrM   :   s   € Ø€Lr   c                 ó`   — t        dd| d   dz  | d   dz  «      | d   j                  d«      z   S )Nú!HBBr   éd   r   Úutf8)r   ÚencoderL   s    r   Úpack_error_coderS   >   s5   € Ü�˜˜5 ™8 s™?¨E°!©H°s©NÓ;¸eÀA¹h¿o¹oÈfÓ>UÑUÐUr   c                  ó   — y)Nr   r9   rL   s    r   Ú	pack_nonerU   B   s   € Ør   c                 ó$   — | j                  d«      S ©NrQ   )rR   rL   s    r   Úpack_stringrX   F   s   € Ø�<‰<˜ÓÐr   c                 ó   — t        d| «      S )Nú!Ir   rL   s    r   Úpack_unsignedr[   J   ó   € Ü��eÓÐr   c                 ó    — t        d| «      dz   S )Nr   s     r   rL   s    r   Úpack_unsigned_shortr^   N   s   € Ü��eÓ˜{Ñ*Ð*r   c                 ó   — t        d| «      S )Nú!Qr   rL   s    r   Úpack_unsigned_64ra   R   r\   r   c                 ó"   ‡— t        | ˆfd„«      S )Nc                 ó   •— t        | ‰«      S r   ©r7   ©r;   r+   s    €r   r<   z"pack_xor_address.<locals>.<lambda>W   s   ø€ ¬°!°^Ó)D€ r   )rJ   )r>   r+   s    `r   Úpack_xor_addressrf   V   s   ø€ Ü˜ÓDÓEÐEr   c                 ó   — | S r   r9   r:   s    r   r<   r<   \   r=   r   c                 óì  — t        | «      dk  rt        d«      ‚t        d| dd «      \  }}| dd  }|t        k(  rTt        |«      dk7  rt        d«      ‚ ||«      }t	        t        j                  |dd  «      «      t        d|dd «      d   fS |t        k(  rTt        |«      d	k7  rt        d
«      ‚ ||«      }t	        t        j                  |dd  «      «      t        d|dd «      d   fS t        d«      ‚)Nr   z(STUN address length is less than 4 bytesrA   r   r   r   z(STUN address has invalid length for IPv4r   é   z(STUN address has invalid length for IPv6z!STUN address has unknown protocol)	r   Ú
ValueErrorr   rF   ÚstrrB   rE   rG   ÚIPv6Address)r   r?   ÚreservedrI   Úport_addresss        r   Úunpack_addressro   Z   s  € ô ˆ4ƒy�1‚}ÜÐCÓDÐDô    t¨A¨a yÓ1Ñ€Hˆhð ˜˜�8€LØ”=Ò äˆ|Ó Ò!ÜÐGÓHÐHÙ˜<Ó(ˆä”	×%Ñ% l°1°2Ð&6Ó7Ó8Ü�4˜ a¨Ð*Ó+¨AÑ.ð
ð 	
ð 
”]Ò	"äˆ|Ó Ò"ÜÐGÓHÐHÙ˜<Ó(ˆä”	×%Ñ% l°1°2Ð&6Ó7Ó8Ü�4˜ a¨Ð*Ó+¨AÑ.ð
ð 	
ô
 Ð<Ó=Ð=r   c                 ó"   ‡— t        | ˆfd„«      S )Nc                 ó   •— t        | ‰«      S r   rd   re   s    €r   r<   z$unpack_xor_address.<locals>.<lambda>}   s   ø€ ¬(°1°nÓ*E€ r   )ro   )r   r+   s    `r   Úunpack_xor_addressrr   |   s   ø€ Ü˜$Ó EÓFÐFr   c                 ó   — | S r   r9   ©r   s    r   Úunpack_bytesru   €   s   € Ø€Kr   c                 ó–   — t        | «      dk  rt        d«      ‚t        d| dd «      \  }}}| dd  j                  d«      }|dz  |z   |fS )Nr   z$STUN error code is less than 4 bytesrO   r   rQ   rP   )r   rj   r   Údecode)r   rm   Ú	code_highÚcode_lowÚreasons        r   Úunpack_error_coder{   „   sZ   € Ü
ˆ4ƒy�1‚}ÜÐ?Ó@Ð@Ü$*¨6°4¸¸!°9Ó$=Ñ!€Hˆi˜Ø�!�"ˆX�_‰_˜VÓ$€FØ˜‰O˜hÑ&¨Ð/Ð/r   c                  ó   — y r   r9   rt   s    r   Úunpack_noner}   Œ   s   € Ør   c                 ó$   — | j                  d«      S rW   )rw   rt   s    r   Úunpack_stringr   �   s   € Ø�;‰;�vÓÐr   c                 ó    — t        d| «      d   S )NrZ   r   ©r   rt   s    r   Úunpack_unsignedr‚   ”   ó   € Ü�$˜Ó˜aÑ Ð r   c                 ó&   — t        d| dd «      d   S )Nr   r   r   r�   rt   s    r   Úunpack_unsigned_shortr…   ˜   s   € Ü�$˜˜Q˜q˜	Ó" 1Ñ%Ð%r   c                 ó    — t        d| «      d   S )Nr`   r   r�   rt   s    r   Úunpack_unsigned_64r‡   œ   rƒ   r   zMAPPED-ADDRESSé   zCHANGE-REQUESTr   zSOURCE-ADDRESSé   zCHANGED-ADDRESSÚUSERNAMEúMESSAGE-INTEGRITYé	   ú
ERROR-CODEé   zCHANNEL-NUMBERé   ÚLIFETIMEri   zXOR-PEER-ADDRESSÚREALMé   ÚNONCEé   zXOR-RELAYED-ADDRESSé   zREQUESTED-TRANSPORTé    zXOR-MAPPED-ADDRESSé$   ÚPRIORITYé%   zUSE-CANDIDATEi"€  ÚSOFTWAREi(€  ÚFINGERPRINTi)€  zICE-CONTROLLEDi*€  zICE-CONTROLLINGi+€  zRESPONSE-ORIGINi,€  zOTHER-ADDRESSÚ
ATTRIBUTESÚATTRIBUTES_BY_TYPEÚATTRIBUTES_BY_NAMEc                   ó   — e Zd ZdZdZdZdZy)ÚClassr   r-   é   é  N)Ú__name__Ú
__module__Ú__qualname__ÚREQUESTÚ
INDICATIONÚRESPONSEÚERRORr9   r   r   r    r    Ã   s   „ Ø€GØ€JØ€HØ�Er   r    c                   ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
ÚMethodr   r   rˆ   r   r   é   r
   rŒ   N)r£   r¤   r¥   ÚBINDINGÚSHARED_SECRETÚALLOCATEÚREFRESHÚSENDÚDATAÚCREATE_PERMISSIONÚCHANNEL_BINDr9   r   r   r«   r«   Ê   s+   „ Ø€GØ€MØ€HØ€GØ€DØ€DØÐØ�Lr   r«   c                   ób   — e Zd Z	 	 ddededee   dee   ddf
d„Zdeddfd	„Z	defd
„Z
defd„Zy)ÚMessageNÚmessage_methodÚmessage_classr+   Ú
attributesr   c                 ó\   — || _         || _        |xs
 t        «       | _        |xs i | _        y r   )r·   r¸   r	   r+   r¹   )Úselfr·   r¸   r+   r¹   s        r   Ú__init__zMessage.__init__Ö   s1   € ð -ˆÔØ*ˆÔØ,ÒGÔ0EÓ0GˆÔØ$Ò*¨ˆ�r   r#   c                 óú   — | j                   j                  dd«       | j                   j                  dd«       t        t        | «      |«      | j                   d<   t	        t        | «      «      | j                   d<   y)z–
        Add MESSAGE-INTEGRITY and FINGERPRINT attributes to the message.

        This must be the last step before sending out the message.
        r‹   Nr›   )r¹   Úpopr*   Úbytesr"   )r»   r#   s     r   Úadd_message_integrityzMessage.add_message_integrityâ   s^   € ð 	�‰×ÑÐ/°Ô6Ø�‰×Ñ˜M¨4Ô0Ü/@ÄÀtÃÈcÓ/Rˆ�‰Ð+Ñ,Ü)<¼UÀ4»[Ó)Iˆ�‰˜Ò&r   c                 óš  — d}| j                   j                  «       D ]m  \  }}t        |   \  }}}}|t        k(  r ||| j                  «      }n ||«      }t        |«      }	t        |	«      }
|t        d||	«      |z   t        |
«      z   z  }Œo t        d| j                  | j                  z  t        |«      t        | j                  «      |z   S )Nr   ú!HHú!HHI12s)r¹   Úitemsrž   rf   r+   r   Úpadding_lengthr   r¿   r·   r¸   r0   )r»   r   Ú	attr_nameÚ
attr_valueÚ	attr_typeÚ_Ú	attr_packÚattr_unpackÚvÚattr_lenÚpad_lens              r   Ú	__bytes__zMessage.__bytes__í   sÙ   € ØˆØ%)§_¡_×%:Ñ%:Ó%<ò 		JÑ!ˆI�zÜ3EÀiÑ3PÑ0ˆI�q˜) [ØÔ,Ò,Ù˜j¨$×*=Ñ*=Ó>‘á˜jÓ)�ä˜1“vˆHÜ$ XÓ.ˆGØ”D˜ 	¨8Ó4°qÑ8¼5À»>ÑIÑI‰Dð		Jô ØØ×#Ñ# d×&8Ñ&8Ñ8Ü�D“	ÜØ×#Ñ#óð ñð		
r   c                 ó�   — d| j                   j                  › d| j                  j                  › dt        | j                  «      › d�S )NzMessage(message_method=Method.z, message_class=Class.z, transaction_id=ú))r·   Únamer¸   Úreprr+   ©r»   s    r   Ú__repr__zMessage.__repr__  sP   € à,¨T×-@Ñ-@×-EÑ-EÐ,Fð G#Ø#'×#5Ñ#5×#:Ñ#:Ð";ð <Ü" 4×#6Ñ#6Ó7Ð8¸ð;ð	
r   )NN)r£   r¤   r¥   r«   r    r   r¿   Údictr¼   rÀ   rÏ   rk   rÕ   r9   r   r   r¶   r¶   Õ   su   „ ð
 +/Ø%)ñ
+àð
+ð ð
+ð ! ™ð	
+ð
 ˜T‘Nð
+ð 
ó
+ð	J¨ð 	J°4ó 	Jð
˜5ó 
ð.
˜#ô 
r   r¶   c                   ó"   — e Zd ZU dZee   ed<   y)ÚTransactionErrorNÚresponse)r£   r¤   r¥   rÙ   r   r¶   Ú__annotations__r9   r   r   rØ   rØ     s   … Ø"&€Hˆh�wÑÔ&r   rØ   c                   ó(   — e Zd Zdeddfd„Zdefd„Zy)ÚTransactionFailedrÙ   r   Nc                 ó   — || _         y r   )rÙ   )r»   rÙ   s     r   r¼   zTransactionFailed.__init__  s	   € Ø ˆ�r   c                 óx   — d}d| j                   j                  v r|d| j                   j                  d   z  z  }|S )NzSTUN transaction failedr�   z
 (%s - %s))rÙ   r¹   )r»   Úouts     r   Ú__str__zTransactionFailed.__str__  s<   € Ø'ˆØ˜4Ÿ=™=×3Ñ3Ñ3Ø�< $§-¡-×":Ñ":¸<Ñ"HÑHÑHˆCØˆ
r   )r£   r¤   r¥   r¶   r¼   rk   rà   r9   r   r   rÜ   rÜ     s!   „ ð! ð !¨Tó !ð˜ô r   rÜ   c                   ó   — e Zd Zdefd„Zy)ÚTransactionTimeoutr   c                  ó   — y)NzSTUN transaction timed outr9   rÔ   s    r   rà   zTransactionTimeout.__str__  s   € Ø+r   N)r£   r¤   r¥   rk   rà   r9   r   r   râ   râ     s   „ ð,˜ô ,r   râ   c                   ó*   — e Zd Zdedeeef   ddfd„Zy)ÚTransactionSenderÚmessageÚaddrr   Nc                  ó   — y r   r9   ©r»   ræ   rç   s      r   Ú	send_stunzTransactionSender.send_stun!  s   � r   )r£   r¤   r¥   r¶   Útuplerk   r2   rê   r9   r   r   rå   rå      s   „ ØM ÐM°°c¸3°h±ÐMÀDÔMr   rå   c                   ó‚   — e Zd Z	 ddedeeef   dedee   ddf
d„Z	dedeeef   ddfd	„Z
deeeeef   f   fd
„Zdd„Zy)ÚTransactionNÚrequestrç   rI   Úretransmissionsr   c                 óÆ   — || _         t        j                  «       | _        || _        t
        | _        d | _        || _        d| _	        d|�
|z   | _        y t        z   | _        y )Nr   r   )Ú_Transaction__addrÚasyncioÚFutureÚ_Transaction__futureÚ_Transaction__requestÚ	RETRY_RTOÚ_Transaction__timeout_delayÚ_Transaction__timeout_handleÚ_Transaction__protocolÚ_Transaction__triesÚ	RETRY_MAXÚ_Transaction__tries_max)r»   rî   rç   rI   rï   s        r   r¼   zTransaction.__init__%  se   € ð ˆŒä�N‰NÓð 	Œð !ˆŒÜ(ˆÔØ?CˆÔØ"ˆŒØˆŒØØ.Ð:ˆOñ
ˆÕÜ@Iñ
ˆÕr   ræ   c                 óø   — | j                   j                  «       s`|j                  t        j                  k(  r| j                   j                  ||f«       y | j                   j                  t        |«      «       y y r   )rô   Údoner¸   r    r¨   Ú
set_resultÚset_exceptionrÜ   ré   s      r   Úresponse_receivedzTransaction.response_received9  sW   € Ø�}‰}×!Ñ!Ô#Ø×$Ñ$¬¯©Ò6Ø—‘×(Ñ(¨'°4¨Õ9à—‘×+Ñ+Ô,=¸gÓ,FÕGð	 $r   c              ƒ   óþ   K  — 	 | j                  «        | j                  ƒ d {  –—† | j                  r| j                  j                  «        S S 7 Œ+# | j                  r| j                  j                  «        w w xY w­wr   )Ú_Transaction__retryrô   rø   ÚcancelrÔ   s    r   ÚrunzTransaction.run@  sd   è ø€ ð	/Ø�L‰LŒNØŸ™×&à×$Ò$Ø×%Ñ%×,Ñ,Õ.ð %ð 'ùà×$Ò$Ø×%Ñ%×,Ñ,Õ.ð %üs+   ‚A=„A £A¤A §(A=ÁA Á)A:Á:A=c                 ó°  — | j                   | j                  k\  r$| j                  j                  t	        «       «       y | j
                  j                  | j                  | j                  «       t        j                  «       }|j                  | j                  | j                  «      | _        | xj                  dz  c_        | xj                   dz  c_         y )Nr   r   )rú   rü   rô   r   râ   rù   rê   rõ   rñ   rò   Úget_event_loopÚ
call_laterr÷   r  rø   )r»   Úloops     r   Ú__retryzTransaction.__retryH  s“   € Ø�<‰<˜4×+Ñ+Ò+Ø�M‰M×'Ñ'Ô(:Ó(<Ô=Øà�‰×!Ñ! $§.¡.°$·+±+Ô>ä×%Ñ%Ó'ˆØ $§¡°×0DÑ0DÀdÇlÁlÓ SˆÔØ×Ò Ñ!ÕØ�Š˜ÑŽr   r   )r   N)r£   r¤   r¥   r¶   rë   rk   r2   rå   r   r¼   r  r  r  r9   r   r   rí   rí   $  s‘   „ ð *.ñ
àð
ð �C˜�H‰oð
ð $ð	
ð
 " #™ð
ð 
ó
ð(H¨ð H¸¸cÀ3¸h¹ð HÈDó Hð/˜5 ¨%°°S°©/Ð!9Ñ:ó /ô
r   rí   c                 ó"   — | dz  }|dk(  ryd|z
  S )zB
    STUN message attributes are padded to a 4-byte boundary.
    r   r   r9   )r   Úrests     r   rÅ   rÅ   U  s    € ð �A‰:€DØˆq‚yØà�4‰xˆr   Úintegrity_keyc                 óÈ  — t        | «      t        k  rt        d«      ‚t        d| dt         «      \  }}}}t        | «      t        |z   k7  rt        d«      ‚i }t        }|t        | «      dz
  k  rÎt        d| ||dz    «      \  }}	| |dz   |dz   |	z    }
t	        |	«      }|t
        v r{t
        |   \  }}}}|t        k(  r ||
|¬«      ||<   n ||
«      ||<   |dk(  r||   t        | d| «      k7  r2t        d	«      ‚|d
k(  r"|� ||   t        | d| |«      k7  rt        d«      ‚|d|	z   |z   z  }|t        | «      dz
  k  rŒÎt        t        |dz  «      t        |dz  «      ||¬«      S )zw
    Parses a STUN message.

    If the ``integrity_key`` parameter is given, the message's HMAC will be verified.
    z)STUN message length is less than 20 bytesrÃ   r   z"STUN message length does not matchr   rÂ   )r+   r›   z'STUN message fingerprint does not matchr‹   z%STUN message integrity does not matchiï>  r¢   )r·   r¸   r+   r¹   )r   r   rj   r   rÅ   r�   rr   r"   r*   r¶   r«   r    )r   r  Úmessage_typer   Úcookier+   r¹   ÚposrÈ   rÍ   rÌ   rÎ   rÉ   rÆ   rÊ   rË   s                   r   Úparse_messager  `  sµ  € ô ˆ4ƒy”=Ò ÜÐDÓEÐEÜ39Ø�4˜œ-Ð(ó4Ñ0€L�&˜& .ô ˆ4ƒy”M FÑ*Ò*ÜÐ=Ó>Ð>à€JÜ
€CØ
”�T“˜Q‘Ò
Ü$ U¨D°°s¸Q±wÐ,?Ó@Ñˆ	�8Ø��q‘˜3 ™7 XÑ-Ð.ˆÜ  Ó*ˆØÔ*Ñ*Ü3EÀiÑ3PÑ0ˆAˆy˜) [ØÔ0Ò0Ù(3°AÀnÔ(U�
˜9Ò%á(3°A«�
˜9Ñ%à˜MÒ)Ø˜iÑ(Ô,?ÀÀQÀsÀÓ,LÒLÜ$Ð%NÓOÐOØÐ1Ò1Ø Ð,°Øñ2ä& t¨A¨c {°MÓBò2Cô %Ð%LÓMÐMàˆq�8‰|˜gÑ%Ñ%ˆð) ”�T“˜Q‘Ó
ô, ä˜l¨VÑ3Ó4ä˜L¨6Ñ1Ó2Ø%Øôð r   r   )Frò   r   Úenumr'   rB   Úcollections.abcr   Ústructr   r   Útypingr   r   Úutilsr	   r0   r   r    r   r&   rF   rG   rû   rö   r¿   r2   r   r"   r*   r7   rë   rk   rJ   rM   rS   rU   rX   r[   r^   ra   rf   ro   rr   ru   r{   r}   r   r‚   r…   r‡   ÚAttributeEntryrœ   ÚlistrÚ   r�   rÖ   rž   ÚattrÚIntEnumr    r«   r¶   Ú	ExceptionrØ   rÜ   râ   rå   rí   rÅ   r  r9   r   r   ú<module>r     sØ  ðÜ Û Û Û Û Ý $ß ß %å (à	€ØÐ Ø€Ø€ØÐ Ø€Ø€à€	Ø€	ð5˜%ð 5¨ð 5°ó 5ð8˜eð 8¨ó 8ð
6˜Eð 6¨ð 6°%ó 6ð
�5ð ¨%ð °Eó ñ %0ñ	TØ��c�‰?ð	Tà	�5�'˜5�.Ñ	!ð	Tð ó	Tð�eð  ó ðV˜5  c ™?ð V¨uó Vð�Tð ˜eó ð �sð  ˜uó  ð˜ð  ó ð+˜sð + uó +ð˜Cð  Eó ðF˜E # s (™Oð F¸Uð FÀuó Fñ %0ñ>Ø
ð>à	�5�'˜5�.Ñ	!ð>ð ˆ3�ˆ8�_ó>ðDG˜Uð G°Eð G¸eÀCÈÀH¹oó Gð�uð  ó ð0˜Eð 0 e¨C°¨H¡oó 0ð�eð  ó ð˜ð  #ó ð!˜%ð ! Có !ð& ð &¨#ó &ð!˜Uð ! só !ð �s˜C ¨8Ð3Ñ4€ð Ð˜|¨^Ð<ØÐ˜}¨oÐ>ØÐ˜|¨^Ð<ØÐ ¨nÐ=ØˆZ˜ mÐ4ØÐ  *¨lÐ;Øˆ\˜?Ð,=Ð>ØÐÐ2Ð4IÐJØˆZ˜¨Ð8ØÐÐ!1Ð3EÐFØˆW�k =Ð1ØˆW�j ,Ð/ØÐ"Ð$4Ð6HÐIØÐ" M°?ÐCØÐ!Ð#3Ð5GÐHØˆZ˜¨Ð8Øˆ_˜i¨Ð5ØˆZ˜ mÐ4Øˆ]˜M¨?Ð;ØÐÐ/Ð1CÐDØÐÐ 0Ð2DÐEØÐ ¨nÐ=Øˆ_˜l¨NÐ;ð/$€
ˆD�Ñ ó ð4 13Ð �D˜˜nÐ,Ñ-Ó 2Ø02Ð �D˜˜nÐ,Ñ-Ó 2Øò '€DØ"&Ð�t˜A‘wÑØ"&Ð�t˜A‘wÒð'ô
ˆD�L‰Lô ôˆT�\‰\ô ÷4
ñ 4
ôn'�yô 'ôÐ(ô ô,Ð)ô ,ô
N˜ô N÷.ñ .ðb˜3ð  3ó ñ-˜ð -¨h°u©oð -Èô -r   