§
    dŠtj¡3  ã                   óˆ  — d dl mZmZ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
mZ ddlmZmZ ddlmZmZmZ 	 d dlZd dlZn# e$ r dZdZY nw xY we�;e�9d 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# n# e$ r	 d dl$m"Z# Y nw xY wd„ Z% G d„ d¦  «        Z&d„ Z'd„ Z( G d„ d¦  «        Z)d„ Z* G d„ dee¦  «        Z+dS )é    )Úabsolute_importÚdivisionÚprint_functionN)Úuuid4é   )Ú*_retrieve_traceback_capturing_wrapped_callÚ_TracebackCapturingWrapper)ÚAutoBatchingMixinÚParallelBackendBaseÚparallel_config)ÚClientÚas_completedÚ
get_clientÚrejoinÚsecede)Úsizeof)Úfuncname)Úthread_state)ÚTimeoutErrorc                 óR   — 	 t          j        | ¦  «         dS # t          $ r Y dS w xY w)NTF)ÚweakrefÚrefÚ	TypeError)Úobjs    úJ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/joblib/_dask.pyÚis_weakrefabler   +   s>   € ðÝŒ�CÑÔÐØˆtøÝð ð ð Øˆuˆuðøøøs   ‚ ˜
&¥&c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú_WeakKeyDictionarya¬  A variant of weakref.WeakKeyDictionary for unhashable objects.

    This datastructure is used to store futures for broadcasted data objects
    such as large numpy arrays or pandas dataframes that are not hashable and
    therefore cannot be used as keys of traditional python dicts.

    Furthermore using a dict with id(array) as key is not safe because the
    Python is likely to reuse id of recently collected arrays.
    c                 ó   — i | _         d S ©N©Ú_data©Úselfs    r   Ú__init__z_WeakKeyDictionary.__init__>   s   € ØˆŒ
ˆ
ˆ
ó    c                 óv   — | j         t          |¦  «                 \  }} |¦   «         |urt          |¦  «        ‚|S r    )r"   ÚidÚKeyError)r$   r   r   Úvals       r   Ú__getitem__z_WeakKeyDictionary.__getitem__A   s:   € Ø”:�b ™gœgÔ&‰ˆˆSØˆ3‰5Œ5˜ÐÐå˜3‘-”-ÐØˆ
r&   c                 óð   ‡ ‡— t          |¦  «        Š	 ‰ j        ‰         \  }} |¦   «         |urt          |¦  «        ‚n+# t          $ r ˆˆ fd„}t          j        ||¦  «        }Y nw xY w||f‰ j        ‰<   d S )Nc                 ó   •— ‰j         ‰= d S r    r!   )Ú_Úkeyr$   s    €€r   Ú
on_destroyz2_WeakKeyDictionary.__setitem__.<locals>.on_destroyS   s   ø€ Ø”J˜s�O�O�Or&   )r(   r"   r)   r   r   )r$   r   Úvaluer   r.   r0   r/   s   `     @r   Ú__setitem__z_WeakKeyDictionary.__setitem__H   s¬   øø€ Ý�‰gŒgˆð	/Ø”Z ”_‰FˆC�Øˆs‰uŒu˜CÐÐå˜s‘m”mÐ#ð  øõ ð 	/ð 	/ð 	/ð$ð $ð $ð $ð $ð $õ ”+˜c :Ñ.Ô.ˆCˆCˆCð	/øøøð ˜u˜*ˆŒ
�3‰ˆˆs   “+? ¿%A'Á&A'c                 ó*   — t          | j        ¦  «        S r    )Úlenr"   r#   s    r   Ú__len__z_WeakKeyDictionary.__len__Y   s   € Ý�4”:‰ŒÐr&   c                 ó8   — | j                              ¦   «          d S r    )r"   Úclearr#   s    r   r7   z_WeakKeyDictionary.clear\   s   € ØŒ
×ÒÑÔÐÐÐr&   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r+   r2   r5   r7   © r&   r   r   r   3   si   € € € € € ðð ðð ð ðð ð ð%ð %ð %ð"ð ð ðð ð ð ð r&   r   c                 óŠ   — 	 t          | t          ¦  «        r| d         d         } n# t          $ r Y nw xY wt          | ¦  «        S )Nr   )Ú
isinstanceÚlistÚ	Exceptionr   )Úxs    r   Ú	_funcnamerB   `   sS   € ðÝ�a�ÑÔð 	Ø�!”�Q”ˆAøøÝð ð ð Øˆðøøøå�A‰;Œ;Ðs   ‚#& ¦
3²3c                 óˆ   — d„ | D ¦   «         }t          |¦  «        dk    rd}nd}t          | ¦  «        |t          | ¦  «        fS )z8Summarize of list of (func, args, kwargs) function callsc                 ó   — h | ]\  }}}|’Œ	S r<   r<   )Ú.0ÚfuncÚargsÚkwargss       r   ú	<setcomp>z&_make_tasks_summary.<locals>.<setcomp>k   s   € Ð9Ð9Ð9Ñ/˜T 4¨�DÐ9Ð9Ð9r&   r   FT)r4   rB   )ÚtasksÚunique_funcsÚmixeds      r   Ú_make_tasks_summaryrM   i   sO   € à9Ð9°5Ð9Ñ9Ô9€Lå
ˆ<ÑÔ˜AÒÐØˆˆàˆÝˆu‰:Œ:�u�i¨Ñ.Ô.Ð.Ð.r&   c                   ó&   — e Zd ZdZd„ Zdd„Zd„ ZdS )ÚBatchz6dask-compatible wrapper that executes a batch of tasksc                 óJ   — t          |¦  «        \  | _        | _        | _        d S r    )rM   Ú
_num_tasksÚ_mixedrB   )r$   rJ   s     r   r%   zBatch.__init__w   s#   € õ 8KÈ5Ñ7QÔ7QÑ4ˆŒ˜œ d¤n n nr&   Nc           	      ó¦   — g }t          d¬¦  «        5  |D ]!\  }}}|                      ||i |¤Ž¦  «         Œ"|cd d d ¦  «         S # 1 swxY w Y   d S )NÚdask)Úbackend)r   Úappend)r$   rJ   ÚresultsrF   rG   rH   s         r   Ú__call__zBatch.__call__|   s¹   € ØˆÝ VÐ,Ñ,Ô,ð 	ð 	Ø&+ð 6ð 6Ñ"��d˜FØ—’˜t˜t TÐ4¨VÐ4Ð4Ñ5Ô5Ð5Ð5Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   “&AÁA
ÁA
c                 óD   — d| j         › d| j        › d�}| j        rd|z   }|S )NÚ	batch_of_r.   Ú_callsÚmixed_)rB   rQ   rR   )r$   Údescrs     r   Ú__repr__zBatch.__repr__ƒ   s7   € ØD˜DœNÐDÐD¨T¬_ÐDÐDÐDˆØŒ;ð 	%Ø˜uÑ$ˆEØˆr&   r    )r8   r9   r:   r;   r%   rX   r^   r<   r&   r   rO   rO   t   sO   € € € € € Ø@Ð@ðRð Rð Rð
ð ð ð ðð ð ð ð r&   rO   c                  ó   — d S r    r<   r<   r&   r   Ú_joblib_probe_taskr`   Š   s   € à€Dr&   c                   ó¢   ‡ — e Zd ZdZdZdZdZ	 	 	 	 	 dˆ fd„	Zd„ Zd	„ Z	d
„ Z
dd„Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zdd„Zej        d„ ¦   «         Zˆ xZS )ÚDaskDistributedBackendgš™™™™™É?g      ð?TéÿÿÿÿNé
   c                 óø  •— t          ¦   «                              ¦   «          t          €d}t          |¦  «        ‚|€I|rt	          ||d¬¦  «        }n4	 t          ¦   «         }n$# t          $ r}d}t          |¦  «        |‚d }~ww xY w|| _        |�@t          |t          t          f¦  «        s$t          dt          |¦  «        j        z  ¦  «        ‚|�ct          |¦  «        dk    rPt          |¦  «        | _        | j                             |d¬¦  «        }	d	„ t!          ||	¦  «        D ¦   «         | _        ng | _        i | _        || _        || _        t)          g |j        dd¬
¦  «        | _        i | _        i | _        d S )Nz{You are trying to use 'dask' as a joblib parallel backend but dask is not installed. Please install dask to fix this error.F)ÚloopÚset_as_defaultz¢To use Joblib with Dask first create a Dask Client

    from dask.distributed import Client
    client = Client()
or
    client = Client('scheduler-address:8786')z&scatter must be a list/tuple, got `%s`r   T)Ú	broadcastc                 ó4   — i | ]\  }}t          |¦  «        |“ŒS r<   )r(   )rE   rA   Úfs      r   ú
<dictcomp>z3DaskDistributedBackend.__init__.<locals>.<dictcomp>Ä   s$   € Ð NÐ NÐ N©d¨a°¥ A¡¤¨Ð NÐ NÐ Nr&   )rf   Úwith_resultsÚraise_errors)Úsuperr%   ÚdistributedÚ
ValueErrorr   r   Úclientr>   r?   Útupler   Útyper8   r4   Ú_scatterÚscatterÚzipÚdata_futuresÚwait_for_workers_timeoutÚsubmit_kwargsr   rf   Úwaiting_futuresÚ_resultsÚ
_callbacks)r$   Úscheduler_hostru   rq   rf   rx   ry   ÚmsgÚeÚ	scatteredÚ	__class__s             €r   r%   zDaskDistributedBackend.__init__•   s¢  ø€ õ 	‰Œ×ÒÑÔÐåÐð%ð õ
 ˜S‘/”/Ð!àˆ>Øð 1Ý °TÈ%ÐPÑPÔP��ð1Ý'™\œ\�F�FøÝ!ð 	1ð 	1ð 	1ðHð õ % S™/œ/¨qÐ0øøøøð	1øøøð ˆŒàÐ¥z°'½DÅ%¸=Ñ'IÔ'IÐÝØ8½4À¹=¼=Ô;QÑQñô ð ð Ð¥3 w¡<¤<°!Ò#3Ð#3å  ™MœMˆDŒMØœ×+Ò+¨G¸tÐ+ÑDÔDˆIØ NÐ Nµc¸'À9Ñ6MÔ6MÐ NÑ NÔ NˆDÔÐàˆDŒMØ "ˆDÔØ(@ˆÔ%Ø*ˆÔÝ+Ø�V”[¨tÀ%ð 
ñ  
ô  
ˆÔð ˆŒØˆŒˆˆs   ÁA! Á!
BÁ+A=Á=Bc              ƒ   óz  K  — | j         r±| j        2 3 d {V —†\  }}| j                             |¦  «        }| j                             |¦  «        }|j        dk    r|\  }}}|                     |¦  «         Œe|                     |¦  «          ||¦  «         Œ†6 t          j	        d¦  «        ƒ d {V —† | j         °¯d S d S )NÚerrorç{®Gáz„?)
Ú	_continuerz   r{   Úpopr|   ÚstatusÚset_exceptionÚ
set_resultÚasyncioÚsleep)r$   ÚfutureÚresultÚ	cf_futureÚcallbackÚtypÚexcÚtbs           r   Ú_collectzDaskDistributedBackend._collectÐ   s  è è € ØŒnð 
	&Ø(,Ô(<ð %ð %ð %ð %ð %ð %ð %‘n�f˜fØ œM×-Ò-¨fÑ5Ô5�	Øœ?×.Ò.¨vÑ6Ô6�Ø”= GÒ+Ð+Ø#)‘L�C˜˜bØ×+Ò+¨CÑ0Ô0Ð0Ð0à×(Ò(¨Ñ0Ô0Ð0Ø�H˜VÑ$Ô$Ð$Ð$ð )=õ ”- Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð Œnð 
	&ð 
	&ð 
	&ð 
	&ð 
	&s   ‘Bc                 ó   — t           dfS )Nr<   )rb   r#   s    r   Ú
__reduce__z!DaskDistributedBackend.__reduce__Ý   s   € Ý&¨Ð+Ð+r&   c                 ó0   — t          | j        ¬¦  «        dfS )N)rq   rc   )rb   rq   r#   s    r   Úget_nested_backendz)DaskDistributedBackend.get_nested_backendà   s   € Ý%¨T¬[Ð9Ñ9Ô9¸2Ð=Ð=r&   r   c                 ó:   — || _         |                      |¦  «        S r    )ÚparallelÚeffective_n_jobs)r$   Ún_jobsr™   Úbackend_argss       r   Ú	configurez DaskDistributedBackend.configureã   s   € Ø ˆŒØ×$Ò$ VÑ,Ô,Ð,r&   c                 ó‚   — d| _         | j        j                             | j        ¦  «         t          ¦   «         | _        d S )NT)r…   rq   rf   Úadd_callbackr“   r   Úcall_data_futuresr#   s    r   Ú
start_callz!DaskDistributedBackend.start_callç   s8   € ØˆŒØŒÔ×%Ò% d¤mÑ4Ô4Ð4Ý!3Ñ!5Ô!5ˆÔÐÐr&   c                 ón   — d| _         t          j        d¦  «         | j                             ¦   «          d S )NFr„   )r…   Útimer‹   r    r7   r#   s    r   Ú	stop_callz DaskDistributedBackend.stop_callì   s8   € ð ˆŒõ 	Œ
�4ÑÔÐØÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&r&   c           	      ó  — t          | j                             ¦   «                              ¦   «         ¦  «        }|dk    s| j        s|S 	 | j                             t          ¦  «                             | j        ¬¦  «         nS# t          $ rF}d 	                    | j        t          dd| j        z  ¦  «        ¦  «        }t          |¦  «        |‚d }~ww xY wt          | j                             ¦   «                              ¦   «         ¦  «        S )Nr   )Útimeoutz÷DaskDistributedBackend has no worker after {} seconds. Make sure that workers are started and can properly connect to the scheduler and increase the joblib/dask connection timeout with:

parallel_config(backend='dask', wait_for_workers_timeout={})rd   é   )Úsumrq   ÚncoresÚvaluesrx   Úsubmitr`   r�   Ú_TimeoutErrorÚformatÚmaxr   )r$   r›   rš   r   Ú	error_msgs        r   rš   z'DaskDistributedBackend.effective_n_jobsö   s  € Ý˜tœ{×1Ò1Ñ3Ô3×:Ò:Ñ<Ô<Ñ=Ô=ÐØ˜qÒ Ð ¨Ô(EÐ Ø#Ð#ð
	1ØŒK×ÒÕ1Ñ2Ô2×9Ò9ØÔ5ð :ñ ô ð ð øõ ð 	1ð 	1ð 	1ðO÷
 ŠfØÔ-Ý�B˜˜DÔ9Ñ9Ñ:Ô:ñô ð õ ˜yÑ)Ô)¨qÐ0øøøøð	1øøøõ �4”;×%Ò%Ñ'Ô'×.Ò.Ñ0Ô0Ñ1Ô1Ð1s   Á	8B Â
CÂACÃCc           
   ƒ   ó¦  ‡ ‡‡K  — t          ¦   «         Št          ‰ dd ¦  «        Šˆˆˆ fd„}g }|j        D ]Œ\  }}}t           ||¦  «        ƒ d {V —†¦  «        }t          t	          |                     ¦   «          ||                     ¦   «         ¦  «        ƒ d {V —†¦  «        ¦  «        }|                     |||f¦  «         Œ�t          |¦  «        |fS )Nr    c              “   ó  •K  — g }| D �] }t          |¦  «        }|‰v r|                     ‰|         ¦  «         Œ2‰	j                             |d ¦  «        }|€„‰�‚	 ‰|         ƒ d {V —†}n# t          $ r Y nw xY w|€`t          |¦  «        rQt          |¦  «        dk    r>‰	j                             |dd¬¦  «        }t          j
        |¦  «        }|‰|<   |ƒ d {V —†}|�|                     |¦  «         Œë|                     |¦  «         �Œ|S )Ng     @�@TF)ÚasynchronousÚhash)r(   rV   rw   Úgetr)   r   r   rq   ru   rŠ   ÚTask)
rG   ÚoutÚargÚarg_idrj   Ú_coroÚtr    Úitemgettersr$   s
          €€€r   Úmaybe_to_futuresz>DaskDistributedBackend._to_func_args.<locals>.maybe_to_futures  sT  øè è € ØˆCØð &$ñ &$�Ý˜C™œ�Ø˜[Ð(Ð(Ø—J’J˜{¨6Ô2Ñ3Ô3Ð3ØàÔ%×)Ò)¨&°$Ñ7Ô7�Ø�9Ð!2Ð!>ðØ"3°CÔ"8Ð8Ð8Ð8Ð8Ð8Ð8˜˜øÝ#ð ð ð Ø˜ðøøøà�yÝ)¨#Ñ.Ô.ð (µ6¸#±;´;ÀÒ3DÐ3Dð %)¤K×$7Ò$7Ø #°$¸Uð %8ñ %ô %˜Eõ !(¤¨UÑ 3Ô 3˜AØ56Ð-¨cÑ2à&'      ˜Aà�=Ø—J’J˜q‘M”M�M�Mà—J’J˜s‘O”O�O‘OØˆJs   ÁA)Á)
A6Á5A6)	ÚdictÚgetattrÚitemsr?   rv   Úkeysrª   rV   rO   )	r$   rF   r¼   rJ   rj   rG   rH   r    r»   s	   `      @@r   Ú_to_func_argsz$DaskDistributedBackend._to_func_args  s  øøøè è € Ý‘f”fˆõ $ DÐ*=¸tÑDÔDÐð)	ð )	ð )	ð )	ð )	ð )	ð )	ðV ˆØ#œzð 	,ð 	,‰OˆAˆt�VÝÐ.Ð.¨tÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ñ5Ô5ˆDÝ�#˜fŸkšk™mœmÐ3CÐ3CÀFÇMÂMÁOÄOÑ3TÔ3TÐ-TÐ-TÐ-TÐ-TÐ-TÐ-TÑUÔUÑVÔVˆFØ�LŠL˜!˜T 6Ð*Ñ+Ô+Ð+Ð+å�e‘”˜eÐ$Ð$r&   c                 ó¬   ‡ ‡— t           j                             ¦   «         Š‰j        ‰_        ˆˆ fd„}‰ j        j                             |||¦  «         ‰S )Nc              “   ó>  •K  — ‰                      | ¦  «        ƒ d {V —†\  }}t          |¦  «        › dt          ¦   «         j        › �} ‰j        j        t          |¦  «        f||dœ‰j        ¤Ž}‰j         	                    |¦  «         |‰j
        |<   ‰‰j        |<   d S )Nú-)rJ   r/   )rÁ   Úreprr   Úhexrq   r«   r	   ry   rz   Úaddr|   r{   )rF   r�   ÚbatchrJ   r/   Údask_futurerŽ   r$   s         €€r   rj   z-DaskDistributedBackend.apply_async.<locals>.fN  sÄ   øè è € Ø!%×!3Ò!3°DÑ!9Ô!9Ð9Ð9Ð9Ð9Ð9Ð9‰LˆE�5Ý˜%‘[”[Ð0Ð0¥5¡7¤7¤;Ð0Ð0ˆCà,˜$œ+Ô,Ý*¨5Ñ1Ô1ðàØðð ð Ô$ð	ð ˆKð Ô ×$Ò$ [Ñ1Ô1Ð1Ø+3ˆDŒO˜KÑ(Ø)2ˆDŒM˜+Ñ&Ð&Ð&r&   )Ú
concurrentÚfuturesÚFuturer�   r´   rq   rf   rŸ   )r$   rF   r�   rj   rŽ   s   `   @r   Úapply_asyncz"DaskDistributedBackend.apply_asyncJ  se   øø€ ÝÔ&×-Ò-Ñ/Ô/ˆ	Ø!Ô(ˆ	Œð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	ŒÔ×%Ò% a¨¨xÑ8Ô8Ð8àÐr&   c                 ó    — t          |¦  «        S r    )r   )r$   r¶   s     r   Úretrieve_result_callbackz/DaskDistributedBackend.retrieve_result_callback`  s   € Ý9¸#Ñ>Ô>Ð>r&   c                 ó@  — | j         j        5  | j         j                             ¦   «          | j         j                             ¦   «         s<| j         j                             ¦   «          | j         j                             ¦   «         ¯<ddd¦  «         dS # 1 swxY w Y   dS )z€Tell the client to cancel any task submitted via this instance

        joblib.Parallel will never access those results
        N)rz   ÚlockrË   r7   ÚqueueÚemptyr´   )r$   Úensure_readys     r   Úabort_everythingz'DaskDistributedBackend.abort_everythingc  sÚ   € ð
 Ô!Ô&ð 	1ð 	1ØÔ Ô(×.Ò.Ñ0Ô0Ð0ØÔ*Ô0×6Ò6Ñ8Ô8ð 1ØÔ$Ô*×.Ò.Ñ0Ô0Ð0ð Ô*Ô0×6Ò6Ñ8Ô8ð 1ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1s   �A9BÂBÂBc              #   ó¢   K  — t          t          d¦  «        rt          ¦   «          dV — t          t          d¦  «        rt          ¦   «          dS dS )zÙOverride ParallelBackendBase.retrieval_context to avoid deadlocks.

        This removes thread from the worker's thread pool (using 'secede').
        Seceding avoids deadlock in nested parallelism settings.
        Úexecution_stateN)Úhasattrr   r   r   r#   s    r   Úretrieval_contextz(DaskDistributedBackend.retrieval_contextm  sW   è è € õ •<Ð!2Ñ3Ô3ð 	å‰HŒHˆHàˆˆˆå•<Ð!2Ñ3Ô3ð 	Ý‰HŒHˆHˆHˆHð	ð 	r&   )NNNNrd   )r   Nr    )T)r8   r9   r:   ÚMIN_IDEAL_BATCH_DURATIONÚMAX_IDEAL_BATCH_DURATIONÚsupports_retrieve_callbackÚdefault_n_jobsr%   r“   r•   r—   r�   r¡   r¤   rš   rÁ   rÍ   rÏ   rÕ   Ú
contextlibÚcontextmanagerrÙ   Ú__classcell__)r�   s   @r   rb   rb   �   s:  ø€ € € € € Ø"ÐØ"ÐØ!%ÐØ€Nð ØØØØ!#ð9ð 9ð 9ð 9ð 9ð 9ðv&ð &ð &ð,ð ,ð ,ð>ð >ð >ð-ð -ð -ð -ð6ð 6ð 6ð
'ð 'ð 'ð2ð 2ð 2ð48%ð 8%ð 8%ðtð ð ð ð,?ð ?ð ?ð1ð 1ð 1ð 1ð Ôðð ñ Ôðð ð ð ð r&   rb   ),Ú
__future__r   r   r   rŠ   Úconcurrent.futuresrÊ   rÞ   r£   r   Úuuidr   Ú_utilsr   r	   r™   r
   r   r   rT   ro   ÚImportErrorÚdask.distributedr   r   r   r   r   Údask.sizeofr   Ú
dask.utilsr   Údistributed.utilsr   r   r¬   Útornado.genr   r   rB   rM   rO   r`   rb   r<   r&   r   ú<module>rë      s¡  ðØ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MðØ€K€K€KØÐÐÐÐøØð ð ð Ø€DØ€K€K€Kðøøøð Ð˜Ð/ðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð"Ð"Ð"Ð"Ð"Ø#Ð#Ð#Ð#Ð#Ð#Ø.Ð.Ð.Ð.Ð.Ð.ð>ð 	DÐCÐCÐCÐCÐCÐCøØð >ð >ð >Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð>øøøðð ð ð*ð *ð *ð *ð *ñ *ô *ð *ðZð ð ð/ð /ð /ðð ð ð ð ñ ô ð ð,	ð 	ð 	ð
nð nð nð nð nÐ.Ð0Cñ nô nð nð nð ns#   ¸A Á	AÁAÁ5A< Á<B
Â	B
