§
    ƒnócö2  ã                  óÂ  — d dl m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	 d dl
Z
 e
j        ¦   «         Ze                     dddd	¬
¦  «         e                     dd¬¦  «         dadZd5d„Zd6d„Zd7d8d„Zd9d„Zd:d „Zd;d#„Zd<d%„Zd<d&„Zd<d'„Zd<d(„Zd<d)„Zd=d+„Zd>d-„Zd>d.„Zd=d/„Zd?d0„Zd@d2„Z e!d3k    r( ej"         e ej#        d4d…         ¦  «        ¦  «         dS dS )Aé    )ÚannotationsNé   )Úmesonlib)Úmlog)Ú
Popen_safez--cross-hostÚ
cross_hostzcross compilation host platform)ÚdefaultÚdestÚhelpÚargsú+)Únargsz/Relinking will always happen on source changes.ÚoutfilenameÚstrÚreturnÚNonec                ó^   — t          | dd¬¦  «        5  	 ddd¦  «         dS # 1 swxY w Y   dS )z*Just touch it so relinking happens always.Úwúutf-8©ÚencodingN)Úopen)r   s    úD/usr/lib/python3/dist-packages/mesonbuild/scripts/symbolextractor.pyÚ
dummy_symsr   (   s~   € å	ˆk˜3¨Ð	1Ñ	1Ô	1ð ð Øðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   “"¢&©&Útextc                ó4  — 	 t          |d¬¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   | |k    rd S n# t          $ r Y nw xY wt          |dd¬¦  «        5 }|                     | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   r   )r   ÚreadÚFileNotFoundErrorÚwrite)r   r   ÚfÚoldtexts       r   Úwrite_if_changedr"   -   s1  € ðÝ�+¨Ð0Ñ0Ô0ð 	°AØ—f’f‘h”hˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�7Š?ˆ?ØˆFð øåð ð ð Øˆðøøøå	ˆk˜3¨Ð	1Ñ	1Ô	1ð °QØ	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s>   ‚A “4¨A ´8¸A »8¼	A Á
AÁAÁ*BÂBÂBÚtoolsúT.List[str]ÚmsgÚstderrúT.Optional[str]c                ó  — t           j                             t          ¦  «        rd S | ›d|› dt          › �}|r|d|z   z  }t          j        |¦  «         t          t          dd¬¦  «        5  	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú z. ú
r   r   r   )ÚosÚpathÚexistsÚTOOL_WARNING_FILEÚRELINKING_WARNINGr   Úwarningr   )r#   r%   r&   Úms       r   Úprint_tool_warningr2   8   sÚ   € Ý	„w‡~‚~Õ'Ñ(Ô(ð ØˆØÐ/Ð/�SÐ/Ð/Õ-Ð/Ð/€AØð Ø	ˆT�F‰]ÑˆÝ„L��O„O€Oå	Õ ¨wÐ	7Ñ	7Ô	7ð ð Øðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á+A:Á:A>ÂA>Únamec                óž   — |                       ¦   «         }|t          j        v r)dd l}|                     t          j        |         ¦  «        S | gS )Nr   )Úupperr+   ÚenvironÚshlexÚsplit)r3   Úevarr7   s      r   Úget_toolr:   C   sE   € Ø�:Š:‰<Œ<€DØ�rŒzÐÐØˆˆˆØ�{Š{�2œ: dÔ+Ñ,Ô,Ð,Øˆ6€Mó    ÚkwargsúT.Anyc                ó  — t          | ¦  «        }	 t          ||z   fi |¤Ž\  }}}n=# t          $ r t          |d¦  «         Y d S t          $ r t          |d¦  «         Y d S w xY w|j        dk    rt          |d|¦  «         d S |S )Nz	not foundz
not usabler   zdoes not work)r:   r   r   r2   ÚPermissionErrorÚ
returncode)r3   r   r<   ÚtoolÚpÚoutputÚes          r   Ú	call_toolrE   J   s¹   € Ý�D‰>Œ>€DðÝ! $¨¡+Ð8Ð8°Ð8Ð8‰ˆˆ6�1�1øÝð ð ð Ý˜4 Ñ-Ô-Ð-ØˆtˆtÝð ð ð Ý˜4 Ñ.Ô.Ð.Øˆtˆtðøøøð 	„|�qÒÐÝ˜4 °!Ñ4Ô4Ð4ØˆtØ€Ms   ‘& ¦A ÁA ÁA rA   úT.Tuple[str, str]c                óø   — 	 t          | fi |¤Ž\  }}}nU# t          $ r  d d                     | d         ¦  «        fcY S t          $ r  d d                     | d         ¦  «        fcY S w xY w|j        dk    rd |fS |d fS )Nz{!r} not found
r   z{!r} not usable
)r   r   Úformatr?   r@   )rA   r<   rB   rC   rD   s        r   Úcall_tool_nowarnrI   Y   s¹   € ð9Ý! $Ð1Ð1¨&Ð1Ð1‰ˆˆ6�1�1øÝð 8ð 8ð 8ØÐ'×.Ò.¨t°A¬wÑ7Ô7Ð7Ð7Ð7Ð7Ýð 9ð 9ð 9ØÐ(×/Ò/°°Q´Ñ8Ô8Ð8Ð8Ð8Ð8ð9øøøà„|�qÒÐØ�QˆwˆØ�4ˆ<Ðs   ‚ ”'A&½&A&Á%A&Úlibfilenamec                ón  — t          dd| g¦  «        }|st          |¦  «         d S d„ |                     d¦  «        D ¦   «         }t          |¦  «        dk    sJ ‚t          dddd	d
| g¦  «        }|st          |¦  «         d S |                     d¦  «        D ]w}|sŒ|                     ¦   «         }|dd…         }|d                              ¦   «         dv rt          |¦  «        dk    r||d         gz  }|d                     |¦  «        gz  }Œxt          d                     |¦  «        dz   |¦  «         d S )NÚreadelfú-dc                ó   — g | ]}d |v ¯|‘Œ	S ©ÚSONAME© ©Ú.0Úxs     r   ú
<listcomp>zgnu_syms.<locals>.<listcomp>j   ó   € Ð=Ð=Ð=�A¨x¸1¨}¨}ˆa¨}¨}¨}r;   r*   é   Únmú	--dynamicú--extern-onlyú--defined-onlyú--format=posixr   r   >   ÚBÚDÚGé   é   r)   )rE   r   r8   Úlenr5   Újoinr"   )rJ   r   rC   ÚresultÚlineÚ
line_splitÚentrys          r   Úgnu_symsrh   d   sa  € å�y 4¨Ð"5Ñ6Ô6€FØð Ý�;ÑÔÐØˆØ=Ð=˜Ÿš dÑ+Ô+Ð=Ñ=Ô=€FÝˆv‰;Œ;˜!ÒÐÐÐå�t˜k¨?Ð<LØ.°ð=ñ >ô >€Fàð Ý�;ÑÔÐØˆØ—’˜TÑ"Ô"ð 
$ð 
$ˆØð 	ØØ—Z’Z‘\”\ˆ
Ø˜1˜Q˜3”ˆð �aŒ=×ÒÑ Ô  OÐ3Ð3½¸J¹¼È1Ò8LÐ8LØ�j ”m�_Ñ$ˆEØ�3—8’8˜E‘?”?Ð#Ñ#ˆˆÝ�T—Y’Y˜vÑ&Ô&¨Ñ-¨{Ñ;Ô;Ð;Ð;Ð;r;   c                ó¶   — t           j        d         }	 d|z   t           j        d<   t          | |¦  «         |t           j        d<   d S # |t           j        d<   w xY w)NÚPATHz/usr/gnu/bin:)r+   r6   rh   )rJ   r   Úorigpaths      r   Úsolaris_symsrl      s^   € åŒz˜&Ô!€Hð&Ø,¨xÑ7�Œ
�6ÑÝ�˜kÑ*Ô*Ð*à%�Œ
�6ÑÐÐø˜X�Œ
�6ÑÐ%Ð%Ð%Ð%s   ”"A ÁAc                ó¾  — t          dd| g¦  «        }|st          |¦  «         d S |                     d¦  «        }t          |¦  «        D ]\  }}d|v r|} nŒ||dz            ||dz            g}t          ddd	d
| g¦  «        }|st          |¦  «         d S |d„ |                     d¦  «        D ¦   «         z  }t	          d                     |¦  «        dz   |¦  «         d S )NÚotoolz-lr*   ÚLC_ID_DYLIBr   é   rX   rZ   r[   r\   c                ól   — g | ]1}d                       |                     ¦   «         dd…         ¦  «        ‘Œ2S ©r)   r   r   ©rc   r8   rR   s     r   rU   zosx_syms.<locals>.<listcomp>š   ó4   € ÐDÐDÐD¨Aˆs�xŠx˜Ÿš™	œ	 ! A #œÑ'Ô'ÐDÐDÐDr;   )rE   r   r8   Ú	enumerater"   rc   )rJ   r   rC   ÚarrÚiÚvalÚmatchrd   s           r   Úosx_symsrz   ˆ   s  € å�w  {Ð 3Ñ4Ô4€FØð Ý�;ÑÔÐØˆØ
�,Š,�tÑ
Ô
€CÝ˜c‘N”Nð ð ‰ˆˆCØ˜CÐÐØˆEØˆEð  ð �%˜!‘)Œn˜c %¨!¡)œnÐ-€Få�t˜oÐ/?Ø.°ð=ñ >ô >€Fàð Ý�;ÑÔÐØˆØ
ÐDÐD°·²¸dÑ1CÔ1CÐDÑDÔDÑD€FÝ�T—Y’Y˜vÑ&Ô&¨Ñ-¨{Ñ;Ô;Ð;Ð;Ð;r;   c                ó–  — t          dd| g¦  «        }|st          |¦  «         d S d„ |                     d¦  «        D ¦   «         }t          |¦  «        dk    sJ ‚t          dddd	| g¦  «        }|st          |¦  «         d S |d
„ |                     d¦  «        D ¦   «         z  }t	          d                     |¦  «        dz   |¦  «         d S )NrL   rM   c                ó   — g | ]}d |v ¯|‘Œ	S rO   rQ   rR   s     r   rU   z openbsd_syms.<locals>.<listcomp>£   rV   r;   r*   rW   rX   z-Dz-Pz-gc                óš   — g | ]H}|¯|                      d ¦  «        °d                     |                     ¦   «         dd…         ¦  «        ‘ŒIS )zU r)   r   r   )Úendswithrc   r8   rR   s     r   rU   z openbsd_syms.<locals>.<listcomp>«   sN   € ÐbÐbÐb¨AÀqÐbÐQR×Q[ÒQ[Ð\`ÑQaÔQaÐbˆs�xŠx˜Ÿš™	œ	 ! A #œÑ'Ô'ÐbÐbÐbr;   ©rE   r   r8   rb   r"   rc   ©rJ   r   rC   rd   s       r   Úopenbsd_symsr�   �   sæ   € å�y 4¨Ð"5Ñ6Ô6€FØð Ý�;ÑÔÐØˆØ=Ð=˜Ÿš dÑ+Ô+Ð=Ñ=Ô=€FÝˆv‰;Œ;˜!ÒÐÐÐå�t˜d D¨$°Ð<Ñ=Ô=€FØð Ý�;ÑÔÐØˆà
ÐbÐb°·²¸dÑ1CÔ1CÐbÑbÔbÑb€FÝ�T—Y’Y˜vÑ&Ô&¨Ñ-¨{Ñ;Ô;Ð;Ð;Ð;r;   c                ó˜  — t          dd| g¦  «        }|st          |¦  «         d S d„ |                     d¦  «        D ¦   «         }t          |¦  «        dk    sJ ‚t          dddd	d
| g¦  «        }|st          |¦  «         d S |d„ |                     d¦  «        D ¦   «         z  }t	          d                     |¦  «        dz   |¦  «         d S )NrL   rM   c                ó   — g | ]}d |v ¯|‘Œ	S rO   rQ   rR   s     r   rU   z freebsd_syms.<locals>.<listcomp>´   rV   r;   r*   rW   rX   rY   rZ   r[   r\   c                ól   — g | ]1}d                       |                     ¦   «         dd…         ¦  «        ‘Œ2S rr   rs   rR   s     r   rU   z freebsd_syms.<locals>.<listcomp>½   rt   r;   r   r€   s       r   Úfreebsd_symsr…   ®   sð   € å�y 4¨Ð"5Ñ6Ô6€FØð Ý�;ÑÔÐØˆØ=Ð=˜Ÿš dÑ+Ô+Ð=Ñ=Ô=€FÝˆv‰;Œ;˜!ÒÐÐÐå�t˜k¨?Ð<LØ.°ð=ñ >ô >€Fàð Ý�;ÑÔÐØˆà
ÐDÐD°·²¸dÑ1CÔ1CÐDÑDÔDÑD€FÝ�T—Y’Y˜vÑ&Ô&¨Ñ-¨{Ñ;Ô;Ð;Ð;Ð;r;   Úimpfilenamec                óˆ  — t          dd| g¦  «        }|st          |¦  «         d S |g}t          dddd| g¦  «        }|st          |¦  «         d S |                     d¦  «        D ]6}d|vrŒ|                     |                     d	¬
¦  «        d         ¦  «         Œ7t	          d                     |¦  «        dz   |¦  «         d S )NÚdlltoolú-IrX   rZ   r[   r\   r*   ú T rW   ©Úmaxsplitr   )rE   r   r8   Úappendr"   rc   )r†   r   rC   rd   re   s        r   Úcygwin_symsrŽ   À   së   € å�y 4¨Ð"5Ñ6Ô6€FØð Ý�;ÑÔÐØˆØˆX€Få�t˜oÐ/?Ø.°ð=ñ >ô >€Fàð Ý�;ÑÔÐØˆØ—’˜TÑ"Ô"ð 1ð 1ˆØ˜ÐÐØØ�Š�d—j’j¨!�jÑ,Ô,¨QÔ/Ñ0Ô0Ð0Ð0Ý�T—Y’Y˜vÑ&Ô&¨Ñ-¨{Ñ;Ô;Ð;Ð;Ð;r;   úT.Tuple[T.List[str], str]c                ó  — d}dgt          d¦  «        fD ]A}t          |d| gz   ¦  «        \  }}|r!|                     d¦  «        dd…         d fc S ||z  }ŒBt          t          d¦  «        d	| gz   ¦  «        \  }}|r|gd fS ||z  }g |fS )
NÚ Úlibúllvm-libz-listr*   éþÿÿÿéÿÿÿÿrˆ   r‰   )r:   rI   r8   )r†   Ú
all_stderrr’   rC   rD   s        r   Ú_get_implib_dllnamer—   Ó   sÈ   € Ø€Jð �� *Ñ-Ô-Ð.ð ð ˆÝ$ S¨G°[Ð+AÑ%AÑBÔB‰	ˆ�Øð 	3ð
 —<’< Ñ%Ô% b¨ eÔ,¨dÐ2Ð2Ð2Ð2Ø�a‰ˆ
ˆ
å ¥¨)Ñ!4Ô!4¸¸kÐ7JÑ!JÑKÔK�I€FˆAØð Øˆx˜ˆ~ÐØ�!�O€JØ�
ÐÐr;   c                óz  — d}t           j                             ¦   «         }d|d<   t          t	          d¦  «        d| gz   |¬¦  «        \  }}|rK|                     d¦  «        }|                     d¦  «        }|                     d	¦  «        }|||…         d fS ||z  }d
D ]˜}t          t	          |¦  «        ddd| gz   ¦  «        \  }}|rig }	|                     d¦  «        D ]K}
d|
vs|
                     d¦  «        rŒ|	                     |
                     d¬¦  «        d         ¦  «         ŒL|	d fc S ||z  }Œ™g |fS )Nr‘   Ú1033ÚVSLANGÚdumpbinz-exports)Úenvr*   zFile Type: LIBRARYz	  Summary)úllvm-nmrX   rZ   r[   r\   rŠ   z.textrW   r‹   r   )	r+   r6   ÚcopyrI   r:   r8   ÚindexÚ
startswithr�   )r†   r–   rœ   rC   rD   ÚlinesÚstartÚendrX   rd   re   s              r   Ú_get_implib_exportsr¤   ë   sz  € Ø€Jå
Œ*�/Š/Ñ
Ô
€CØ€Cˆ�MÝ ¥¨)Ñ!4Ô!4¸
ÀKÐ7PÑ!PÐVYÐZÑZÔZ�I€FˆAØð &Ø—’˜TÑ"Ô"ˆØ—’Ð0Ñ1Ô1ˆØ�kŠk˜+Ñ&Ô&ˆØ�U˜3�YÔ Ð%Ð%Ø�!�O€Jàð 
ð 
ˆÝ$¥X¨b¡\¤\°_ÐFVØ5EÀ{ð5Tñ &Tñ Uô U‰	ˆ�àð 	 ØˆFØŸš TÑ*Ô*ð 9ð 9�Ø Ð$Ð$¨¯ª¸Ñ(@Ô(@Ð$ØØ—’˜dŸjšj°!˜jÑ4Ô4°QÔ7Ñ8Ô8Ð8Ð8Ø˜4�<ÐÐÐØ�a‰ˆ
ˆ
Ø�
ÐÐr;   c                ó<  — t          | ¦  «        \  }}|s$t          g d¢d|¦  «         t          |¦  «         d S t          | ¦  «        \  }}|s$t          g d¢d|¦  «         t          |¦  «         d S ||z  }t	          d                     |¦  «        dz   |¦  «         d S )N)r’   r“   rˆ   zdo not work or were not found)r›   r�   rX   r*   )r—   r2   r   r¤   r"   rc   )r†   r   rd   rD   Úsymbolss        r   Úwindows_symsr§     sÁ   € å# KÑ0Ô0�I€FˆAØð ÝÐ9Ð9Ð9Ð;ZÐ\]Ñ^Ô^Ð^Ý�;ÑÔÐØˆå$ [Ñ1Ô1�J€GˆQØð ÝÐ7Ð7Ð7Ð9XÐZ[Ñ\Ô\Ð\Ý�;ÑÔÐØˆØ
ˆgÑ€FÝ�T—Y’Y˜vÑ&Ô&¨Ñ-¨{Ñ;Ô;Ð;Ð;Ð;r;   c                ó`  — |�t          |¦  «         d S t          j        ¦   «         st          j        ¦   «         rt	          | |¦  «         d S t          j        ¦   «         rt          | |¦  «         d S t          j        ¦   «         rt          | |¦  «         d S t          j	        ¦   «         rt          | |¦  «         d S t          j        ¦   «         rt          | |¦  «         d S t          j        ¦   «         rBt          j                             |¦  «        rt!          ||¦  «         d S t          |¦  «         d S t          j        ¦   «         rBt          j                             |¦  «        rt%          ||¦  «         d S t          |¦  «         d S t          j        ¦   «         rt)          | |¦  «         d S t          j                             t,          ¦  «        sLt/          j        dt2          z   ¦  «         t5          t,          dd¬¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          |¦  «         d S )Nz>Symbol extracting has not been implemented for this platform. r   r   r   )r   r   Úis_linuxÚis_hurdrh   Úis_osxrz   Ú
is_openbsdr�   Ú
is_freebsdr…   Ú	is_netbsdÚ
is_windowsr+   r,   Úisfiler§   Ú	is_cygwinrŽ   Úis_sunosrl   r-   r.   r   r0   r/   r   )rJ   r†   r   r   s       r   Úgen_symbolsr³     sy  € ØÐõ 	�;ÑÔÐÐÐÝ	Ô	Ñ	Ô	ð ! ¥Ô 0Ñ 2Ô 2ð ! Ý�˜kÑ*Ô*Ð*Ð*Ð*Ý	ŒÑ	Ô	ð  Ý�˜kÑ*Ô*Ð*Ð*Ð*Ý	Ô	Ñ	Ô	ð  Ý�[ +Ñ.Ô.Ð.Ð.Ð.Ý	Ô	Ñ	Ô	ð  Ý�[ +Ñ.Ô.Ð.Ð.Ð.Ý	Ô	Ñ	Ô	ð  Ý�[ +Ñ.Ô.Ð.Ð.Ð.Ý	Ô	Ñ	Ô	ð  ÝŒ7�>Š>˜+Ñ&Ô&ð 	$Ý˜ kÑ2Ô2Ð2Ð2Ð2õ �{Ñ#Ô#Ð#Ð#Ð#Ý	Ô	Ñ	Ô	ð  ÝŒ7�>Š>˜+Ñ&Ô&ð 	$Ý˜ [Ñ1Ô1Ð1Ð1Ð1õ �{Ñ#Ô#Ð#Ð#Ð#Ý	Ô	Ñ	Ô	ð 	 Ý�[ +Ñ.Ô.Ð.Ð.Ð.åŒw�~Š~Õ/Ñ0Ô0ð 	ÝŒLð &Ý(9ñ:ñ ;ô ;ð ;õ Õ'¨°wÐ?Ñ?Ô?ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å�;ÑÔÐÐÐs   ÈHÈHÈHÚintc                óÂ  — t                                | ¦  «        }t          |j        ¦  «        dk    r#t	          d¦  «         t          j        d¦  «         t          j         	                    |j        d         d¦  «        }t          j         	                    |d¦  «        a
|j        d         }|j        d         }|j        d         }t          ||||j        ¦  «         dS )	Nr`   zGsymbolextractor.py <shared library file> <import library> <output file>rW   r   zmeson-privateÚ$symbolextractor_tool_warning_printedr   ra   )ÚparserÚ
parse_argsrb   r   ÚprintÚsysÚexitr+   r,   rc   r.   r³   r   )r   ÚoptionsÚprivdirÚlibfileÚimpfileÚoutfiles         r   ÚrunrÁ   >  sµ   € å×Ò Ñ%Ô%€GÝ
ˆ7Œ<ÑÔ˜AÒÐÝÐWÑXÔXÐXÝŒ�‰ŒˆÝŒg�lŠl˜7œ<¨œ?¨OÑ<Ô<€GÝœŸš WÐ.TÑUÔUÐØŒl˜1Œo€GØŒl˜1Œo€GØŒl˜1Œo€GÝ�˜ '¨7Ô+=Ñ>Ô>Ð>Øˆ1r;   Ú__main__rW   )r   r   r   r   )r   r   r   r   r   r   )N)r#   r$   r%   r   r&   r'   r   r   )r3   r   r   r$   )r3   r   r   r$   r<   r=   r   r   )rA   r$   r<   r=   r   rF   )rJ   r   r   r   r   r   )r†   r   r   r   r   r   )r†   r   r   r�   )
rJ   r   r†   r   r   r   r   r   r   r   )r   r$   r   r´   )$Ú
__future__r   ÚtypingÚTr+   rº   r‘   r   r   r   ÚargparseÚArgumentParserr·   Úadd_argumentr.   r/   r   r"   r2   r:   rE   rI   rh   rl   rz   r�   r…   rŽ   r—   r¤   r§   r³   rÁ   Ú__name__r»   ÚargvrQ   r;   r   ú<module>rË      sk  ðð, #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€€€€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø €€€à	 ˆÔ	 Ñ	"Ô	"€à × Ò �N¨D°|Ø:ð ñ <ô <ð <à × Ò �F #Ð Ñ &Ô &Ð &àÐ ØEÐ ðð ð ð ð
	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ðð ð ð ðð ð ð ð	ð 	ð 	ð 	ð<ð <ð <ð <ð6&ð &ð &ð &ð<ð <ð <ð <ð*<ð <ð <ð <ð"<ð <ð <ð <ð$<ð <ð <ð <ð&ð ð ð ð0ð ð ð ð4<ð <ð <ð <ð ' ð ' ð ' ð ' ðRð ð ð ð ˆzÒÐØ€C„HˆSˆS�”˜!˜"˜"”ÑÔÑÔÐÐÐð Ðr;   