§
    Ë²Åj’@  ã            "       ó¬  — d dl mZmZmZmZmZ d dl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mZmZ ddgZ G d„ de¦  «        Zd	e› d
e› de› de› de	› d�e_        dee         dee         dee         dee         dee         dee         dededededededededefd„Zdee         dee         dee         dee         dee         dee         dededededededededefd„Z ee¬¦  «        	 	 	 	 	 d"dee         dee         dee         dee         dee         dee         d ee         dededededededededef d!„¦   «         ZdS )#é    )ÚcastÚListÚOptionalÚTupleÚUnionN)ÚTensoré   )Ú_capturable_docÚ_default_to_fused_or_foreachÚ_differentiable_docÚ_disable_dynamo_if_unsupportedÚ_foreach_docÚ!_get_capturable_supported_devicesÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚASGDÚasgdc                   ó    ‡ — e Zd Z	 	 	 	 	 	 	 	 	 dded	eeef         d
ededededee         dededefˆ fd„Z	ˆ fd„Z
d„ Zedd„¦   «         Zˆ xZS )r   ç{®Gáz„?ç-Cëâ6?ç      è?ç    €„.Ar   NFÚparamsÚlrÚlambdÚalphaÚt0Úweight_decayÚforeachÚmaximizeÚdifferentiableÚ
capturablec                 óT  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚t	          ||||||||	|
¬¦	  «	        }t          ¦   «                              ||¦  «         d S )Nr	   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid weight_decay value: )	r    r!   r"   r#   r$   r%   r&   r'   r(   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__)Úselfr   r    r!   r"   r#   r$   r%   r&   r'   r(   ÚdefaultsÚ	__class__s               €úAC:\Projects\Historical\venv\Lib\site-packages\torch/optim/asgd.pyr/   zASGD.__init__   sÉ   ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<Ø�lÒ"Ð"ÝÐJ¸LÐJÐJÑKÔKÐKåØØØØØ%ØØØ)Ø!ð

ñ 

ô 

ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*Ð*Ð*ó    c                 óh  •— t          ¦   «                              |¦  «         | j        D �]†}|                     dd ¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |d         D �]!}| j                             |g ¦  «        }t          |¦  «        dk    rðt          j        |d         ¦  «        s@t          |d         ¦  «        }t          j
        |t          ¦   «         |j        ¬	¦  «        |d<   t          j        |d
         ¦  «        s1t          j
        |d
         t          ¦   «         |j        ¬	¦  «        |d
<   t          j        |d         ¦  «        s1t          j
        |d         t          ¦   «         |j        ¬	¦  «        |d<   �Œ#�Œˆd S )Nr%   r&   Fr'   r(   r   r   Ústep)ÚdtypeÚdeviceÚetaÚmu)r.   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r8   )r0   r>   ÚgroupÚpÚp_stateÚstep_valr2   s         €r3   r;   zASGD.__setstate__?   s¬  ø€ Ý‰Œ×Ò˜UÑ#Ô#Ð#ØÔ&ð 	ñ 	ˆEØ×Ò˜Y¨Ñ-Ô-Ð-Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×ÒÐ-¨uÑ5Ô5Ð5Ø×Ò˜\¨5Ñ1Ô1Ð1Ø˜8”_ð ñ �Øœ*Ÿ.š.¨¨BÑ/Ô/�Ý�w‘<”< 1Ò$Ð$Ý œ?¨7°6¬?Ñ;Ô;ð Ý#(¨°¬Ñ#9Ô#9˜Ý*/¬,Ø$Õ,=Ñ,?Ô,?ÈÌð+ñ +ô +˜ ™õ !œ?¨7°5¬>Ñ:Ô:ð Ý).¬Ø# EœNÕ2CÑ2EÔ2EÈaÌhð*ñ *ô *˜ ™õ !œ?¨7°4¬=Ñ9Ô9ð Ý(-¬Ø# DœMÕ1BÑ1DÔ1DÈQÌXð)ñ )ô )˜ ™ùñð	ð 	r4   c                 óª  — d}|d         D �]Æ}	|	j         ��»|t          j        |	¦  «        z  }|                     |	¦  «         |	j         j        rt          d¦  «        ‚|                     |	j         ¦  «         | j        |	         }
t          |
¦  «        dk    rÎt          j        d|	j	        t          ¦   «         ¬¦  «        |
d<   t          j        |d         |	j	        t          ¦   «         ¬¦  «                             ¦   «                              ¦   «         |
d	<   t          j        d|	j	        t          ¦   «         ¬¦  «        |
d
<   t          j        |	t          j        ¬¦  «        |
d<   |                     |
d
         ¦  «         |                     |
d         ¦  «         |                     |
d	         ¦  «         |                     |
d         ¦  «         �ŒÈ|S )NFr   z&ASGD does not support sparse gradientsr   © )r8   r7   r6   r    r9   r:   )Úmemory_formatÚax)ÚgradrA   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr>   r@   Úzerosr8   r   Ú	as_tensorÚcloneÚdetachÚonesÚ
zeros_likeÚpreserve_format)r0   rE   Úparams_with_gradÚgradsÚmusÚaxsÚetasÚstate_stepsÚhas_complexrF   r>   s              r3   Ú_init_groupzASGD._init_groupW   s»  € ØˆØ�x”ð 	2ñ 	2ˆAØŒvÑ!Ø�uÔ/°Ñ2Ô2Ñ2�Ø ×'Ò'¨Ñ*Ô*Ð*Ø”6Ô#ð QÝ&Ð'OÑPÔPÐPØ—’˜QœVÑ$Ô$Ð$àœ
 1œ�å�u‘:”: ’?�?Ý$)¤KØ 1¤8Õ3DÑ3FÔ3Fð%ñ %ô %�E˜&‘Mõ œØ! $œK°´Õ@QÑ@SÔ@Sðñ ô ÷ š™œßš™œð ˜%‘Lõ #(¤*Ø 1¤8Õ3DÑ3FÔ3Fð#ñ #ô #�E˜$‘Kõ #(Ô"2Ø­Ô)>ð#ñ #ô #�E˜$‘Kð —
’
˜5 œ;Ñ'Ô'Ð'Ø—
’
˜5 œ;Ñ'Ô'Ð'Ø—’˜E %œLÑ)Ô)Ð)Ø×"Ò" 5¨¤=Ñ1Ô1Ð1ùØÐr4   c                 ó¬  — |                       ¦   «          d}|�5t          j        ¦   «         5   |¦   «         }ddd¦  «         n# 1 swxY w Y   | j        D ]~}g }g }g }g }g }g }	|                      |||||||	¦  «        }
t          ||||||	|d         |d         |d         |d         |d         |d         |d         |d	         |d
         |
¬¦  «         Œ|S )z°Perform a single optimization step.

        Args:
            closure (Callable, optional): A closure that reevaluates the model
                and returns the loss.
        Nr!   r    r#   r"   r$   r%   r&   r'   r(   )
r!   r    r#   r"   r$   r%   r&   r'   r(   r_   )Ú _cuda_graph_capture_health_checkrA   Úenable_gradr<   r`   r   )r0   ÚclosureÚlossrE   rY   rZ   r[   r\   r]   r^   r_   s              r3   r6   z	ASGD.step{   sg  € ð 	×-Ò-Ñ/Ô/Ð/àˆØÐÝÔ"Ñ$Ô$ð !ð !Ø�w‘y”y�ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð Ô&ð 	ð 	ˆEØ-/ÐØ"$ˆEØ "ˆCØ "ˆCØ!#ˆDØ(*ˆKà×*Ò*ØÐ'¨°°S¸$Àñô ˆKõ Ø ØØØØØØ˜G”nØ˜”;Ø˜”;Ø˜G”nØ" >Ô2Ø˜iÔ(Ø˜zÔ*Ø$Ð%5Ô6Ø  Ô.Ø'ð!ñ ô ð ð ð& ˆs   ¬AÁAÁ
A)	r   r   r   r   r   NFFF©N)Ú__name__Ú
__module__Ú__qualname__r   r   rC   r   r   Úboolr/   r;   r`   r   r6   Ú__classcell__)r2   s   @r3   r   r      s  ø€ € € € € ð $(ØØØØØ"&ØØ$Ø ð+ð +àð+ð �%˜�-Ô ð+ð ð	+ð
 ð+ð ð+ð ð+ð ˜$”ð+ð ð+ð ð+ð ð+ð +ð +ð +ð +ð +ðBð ð ð ð ð0"ð "ð "ðH "ð-ð -ð -ñ "Ô!ð-ð -ð -ð -ð -r4   zŸImplements Averaged Stochastic Gradient Descent.

    It has been proposed in `Acceleration of stochastic approximation by
    averaging`_.

    Args:
        am  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        lambd (float, optional): decay term (default: 1e-4)
        alpha (float, optional): power for eta update (default: 0.75)
        t0 (float, optional): point at which to start averaging (default: 1e6)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        z	
        zx

    .. _Acceleration of stochastic approximation by averaging:
        https://dl.acm.org/citation.cfm?id=131098

    r   rZ   r\   r[   r]   r^   r!   r    r#   r"   r$   r&   r'   r(   r_   c       	   
      ó&  — t          | ¦  «        D �]ÿ\  }}||         }|s|n| }||         }||         }||         }||         }t          j                             ¦   «         sk|rit	          ¦   «         }|j        j        |j        j        cxk    r!|j        j        cxk    r|j        j        k    rn n|j        j        |v sJ d|› d�¦   «         ‚t          j        |¦  «        r<t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|dz  }|
dk    r| 	                    ||
¬¦  «        }|r4| 
                    d||z  z
  ¦  «         |                     ||d¬¦  «         nBt          |¦  «        }| 
                    d||z  z
  ¦  «         |                     || ¬¦  «         |s|                     ¦   «         dk    r<|                     |                     |¦  «         
                    |¦  «        ¦  «         n|                     |¦  «         |rf|                     |d||z  |z  z   |	z  z  ¦  «         |                     dt          j        ||z
  t          j        |¦  «        ¦  «        z  ¦  «         �Œ{t          |¦  «        }t          j        |d||z  |z  z   |	z  z  ¦  «        }|                     |¦  «         t          j        dt)          d||z
  ¦  «        z  ¦  «        }|                     |¦  «         �Œd S )NúUIf capturable=True, params, mus, etas, and state_steps must be on supported devices: ú.r	   r   ©r"   éÿÿÿÿ©Úvalue)Ú	enumeraterA   ÚcompilerÚis_compilingr   r8   ÚtyperN   Úview_as_realÚaddÚmul_Úaddcmul_r   Úadd_ÚitemÚsubÚcopy_ÚmaximumÚ	ones_likerS   Úmax)r   rZ   r\   r[   r]   r^   r!   r    r#   r"   r$   r&   r'   r(   r_   ÚiÚparamrM   r:   rL   r9   Ústep_tÚcapturable_supported_devicesÚ	eta_valuer6   Únew_etaÚnew_mus                              r3   Ú_single_tensor_asgdr‰   Ã   sX  € õ$ ˜fÑ%Ô%ð 7ñ 7‰ˆˆ5Ø�QŒxˆØ#Ð.ˆtˆt¨$¨ˆØ�ŒVˆØ�ŒVˆØ�1ŒgˆØ˜Q”ˆõ Œ~×*Ò*Ñ,Ô,ð 	°ð 	Ý+LÑ+NÔ+NÐ(à”Ô!Ø”9”>ð&ð &ò &ð &à”:”?ð&ð &ò &ð &ð ”=Ô%ò&ð &ð &ð &ð &ð ”LÔ%Ð)EÐEÐEÐEðIØ)EðIð Ið Iñ FÔEð	Fõ Ô˜EÑ"Ô"ð 	(ÝÔ% dÑ+Ô+ˆDÝÔ& uÑ-Ô-ˆEÝÔ# BÑ'Ô'ˆBð 	�!‰ˆà˜1ÒÐØ—8’8˜E¨�8Ñ6Ô6ˆDàð 	/Ø�JŠJ�q˜5 3™;‘Ñ'Ô'Ð'Ø�NŠN˜4 ¨BˆNÑ/Ô/Ð/Ð/å" 3™œˆIØ�JŠJ�q˜5 9Ñ,Ñ,Ñ-Ô-Ð-Ø�JŠJ�t I :ˆJÑ.Ô.Ð.ð ð 	˜Ÿš™œ aš˜Ø�GŠG�E—I’I˜b‘M”M×&Ò& rÑ*Ô*Ñ+Ô+Ð+Ð+à�HŠH�U‰OŒOˆOàð 	Ø�IŠI�b˜Q ¨¡¨fÑ!4Ñ4¸Ñ>Ñ?Ñ@Ô@Ð@Ø�HŠH�Q�œ v°¡{µE´OÀFÑ4KÔ4KÑLÔLÑLÑMÔMÐMÑMå˜fÑ%Ô%ˆDÝ”o b¨Q°¸±¸dÑ1BÑ-BÀuÑ,LÑ&MÑNÔNˆGØ�IŠI�gÑÔÐÝ”_ Q­¨Q°°r±	Ñ):Ô):Ñ%:Ñ;Ô;ˆFØ�HŠH�VÑÔÐÑðo7ð 7r4   c       	   	      ó  ‡‡‡‡	‡ ‡!— t          | ¦  «        dk    rd S |r
J d¦   «         ‚t          j                             ¦   «         sK|rIt	          d¬¦  «        Š t          ˆ fd„t          | |||¦  «        D ¦   «         ¦  «        sJ d‰ › d�¦   «         ‚t          j        | |||||g¦  «        }| 	                    ¦   «         D �]I\  \  Š!}\  \  }}}}}}}t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }|rt          |||¦  «         |rt          j        |¦  «        }t          j                             ¦   «         s9|d         j        r,t          j        |t          j        dd	¬
¦  «        d¬¦  «         nt          j        |d¦  «         |
dk    rK|rt          j        |||
¬¦  «         |}nt          j        |||
¬¦  «        }t          j        ||‰¬¦  «         nt          j        ||‰¬¦  «        }t          j        |||d¬¦  «         ~t          j        ||¦  «        }t          j        |||¦  «         ~|rèt          j        |‰¦  «        }t          j        |d¦  «         t          j        |¦  «         t          j        ||¦  «         ~t          j        |‰¦  «        }t          j        |‰¦  «         t          j        |d¦  «         t          j        |‰	¦  «         t          j        |¦  «         t          j        |‰¦  «         t          j        ||¦  «         �Œÿˆ	ˆ!ˆˆfd„|D ¦   «         }ˆ!ˆfd„|D ¦   «         }t          j        ||¦  «         t          j        ||¦  «         �ŒKd S )Nr   z#_foreach ops don't support autogradF)Úsupports_xlac              3   ó¼   •K  — | ]V\  }}}}|j         j        |j         j        cxk    o |j         j        cxk    o|j         j        k    nc o|j         j        ‰v V — ŒWd S rf   )r8   rv   )Ú.0rF   r:   r9   r6   r…   s        €r3   ú	<genexpr>z%_multi_tensor_asgd.<locals>.<genexpr>+  sŽ   øè è € ð 
ð 
ñ !��2�s˜Dð ŒHŒM˜RœYœ^ÐRÐRÒRÐR¨s¬z¬ÐRÐRÒRÐRÀ$Ä+ÔBRÒRÐRÐRÐRð >Ø””Ð!=Ð=ð
ð 
ð 
ð 
ð 
ð 
r4   rm   rn   g      ð?Úcpu©r8   ro   r	   rp   rq   c                 óZ   •— g | ]'}t          j        ‰d ‰‰z  |z  z   ‰z  z  ‰¬¦  «        ‘Œ(S ©r	   r�   )rA   rS   )r�   r6   r"   r8   r!   r    s     €€€€r3   ú
<listcomp>z&_multi_tensor_asgd.<locals>.<listcomp>Ž  sQ   ø€ ð ð ð àõ ”  q¨5°2©:¸Ñ+<Ñ'<ÀÑ&FÑ GÐPVÐWÑWÔWðð ð r4   c                 ó~   •— g | ]9}t          j        d t          d t          |¦  «        ‰z
  ¦  «        z  ‰¬¦  «        ‘Œ:S r’   )rA   rS   r�   r   )r�   r6   r8   r#   s     €€r3   r“   z&_multi_tensor_asgd.<locals>.<listcomp>’  sT   ø€ ð ð ð àõ ” ¥C¨­:°dÑ+;Ô+;¸bÑ+@Ñ$AÔ$AÑ AÈ&ÐQÑQÔQðð ð r4   )r@   rA   rt   ru   r   ÚallÚzipr   Ú"_group_tensors_by_device_and_dtypeÚitemsr   r   r   r   Ú_foreach_negÚis_cpuÚ_foreach_add_rD   Ú_foreach_addÚ_foreach_addcmul_Ú_foreach_subÚ_foreach_maximum_Ú_foreach_reciprocal_Ú_foreach_copy_Ú_foreach_mulÚ_foreach_mul_Ú_foreach_pow_)"r   rZ   r\   r[   r]   r^   r!   r    r#   r"   r$   r&   r'   r(   r_   Úgrouped_tensorsÚ_Úgrouped_params_Úgrouped_grads_Úgrouped_axs_Úgrouped_mus_Úgrouped_etas_Úgrouped_state_steps_Úgrouped_paramsÚgrouped_gradsÚgrouped_axsÚgrouped_musÚgrouped_etasÚgrouped_state_stepsÚintermediateÚnew_musÚnew_etasr…   r8   s"         ````                      @@r3   Ú_multi_tensor_asgdr¶     sÄ  øøøøøø€ õ$ ˆ6�{„{�aÒÐØˆàÐDÐDÐDÑDÔDÐõ Œ>×&Ò&Ñ(Ô(ð C¨Zð CÝ'HØð(
ñ (
ô (
Ð$õ ð 
ð 
ð 
ð 
õ %(¨°°T¸;Ñ$GÔ$Gð
ñ 
ô 
ñ 
ô 
ð 	Cð 	Cð CÐcð  Cð  Cð  Cñ		Cô 	Cð 
õ  ÔBØ	�˜˜S $¨Ð4ñô €Oð 
×	Ò	Ñ	 Ô	 ðc7ñ c7ñ 
	‰ˆ�ñ 
ñ	
ØØØØØØ à	å�d¥6œl¨OÑ<Ô<ˆÝ�T¥&œ\¨>Ñ:Ô:ˆÝ�4¥œ<¨Ñ6Ô6ˆÝ�4¥œ<¨Ñ6Ô6ˆÝ�D¥œL¨-Ñ8Ô8ˆÝ"¥4­¤<Ð1EÑFÔFÐàð 	FÝ˜.¨-¸ÑEÔEÐEàð 	>Ý!Ô.¨}Ñ=Ô=ˆMõ Œ~×*Ò*Ñ,Ô,ð 	8Ð1DÀQÔ1GÔ1Nð 	8ÝÔØ#¥U¤\°#¸eÐ%DÑ%DÔ%DÈCðñ ô ð ð õ ÔÐ 3°QÑ7Ô7Ð7ð ˜1ÒÐØð ÝÔ# M°>ÈÐVÑVÔVÐVØ,��å$Ô1Ø! >¸ð ñ  ô  �õ Ô ¨nÀEÐJÑJÔJÐJÐJå Ô-Ø˜~°Uðñ ô ˆLõ 	Ô °¸lÐRTÐUÑUÔUÐUØõ Ô)¨.¸+ÑFÔFˆÝÔ ¨\¸;ÑGÔGÐGØð ð 	7åÔ(Ð)<¸bÑAÔAˆGÝÔ# G¨SÑ1Ô1Ð1ÝÔ& wÑ/Ô/Ð/ÝÔ  ¨gÑ6Ô6Ð6Øõ Ô)Ð*=¸uÑEÔEˆHÝÔ ¨"Ñ-Ô-Ð-ÝÔ ¨!Ñ,Ô,Ð,ÝÔ ¨%Ñ0Ô0Ð0ÝÔ& xÑ0Ô0Ð0ÝÔ ¨"Ñ-Ô-Ð-ÝÔ  ¨xÑ8Ô8Ð8Ñ8ðð ð ð ð ð ð à/ðñ ô ˆHðð ð ð ð à/ðñ ô ˆGõ Ô  ¨xÑ8Ô8Ð8ÝÔ  ¨gÑ6Ô6Ð6Ñ6ðGc7ð c7r4   )Úsingle_tensor_fnFr%   c                ó$  — |€t          | |d¬¦  «        \  }}|r-t          j                             ¦   «         rt	          d¦  «        ‚|r&t          j                             ¦   «         st
          }nt          } || |||||||||||||	|
¬¦  «         dS )znFunctional API that performs asgd algorithm computation.

    See :class:`~torch.optim.ASGD` for details.
    NF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizers)	r!   r    r#   r"   r$   r&   r'   r(   r_   )r   rA   ÚjitÚis_scriptingrQ   r¶   r‰   )r   rZ   r\   r[   r]   r^   r%   r&   r'   r(   r_   r!   r    r#   r"   r$   r¦   Úfuncs                     r3   r   r   š  sÑ   € ð4 €Ý1Ø�N¨eð
ñ 
ô 
‰
ˆˆ7ð ð U•5”9×)Ò)Ñ+Ô+ð UÝÐSÑTÔTÐTàð #•u”y×-Ò-Ñ/Ô/ð #Ý!ˆˆå"ˆà€DØØØØØØØØØØØ!ØØ%ØØðñ ô ð ð ð r4   )NFFFF)Útypingr   r   r   r   r   rA   r   Ú	optimizerr
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rC   rj   r‰   r¶   r   rJ   r4   r3   ú<module>rÁ      s1  ðð 6Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ �6Ð
€ðLð Lð Lð Lð Lˆ9ñ Lô Lð Lð^ð 
ðð ð 
ðð ð 
ðð ð 
ðð ð 
ðð ð €„ð.IØ�ŒLðIà�Œ<ðIð 
ˆfŒðIð 
ˆfŒð	Ið
 ˆvŒ,ðIð �f”ðIð ðIð 	ðIð 	ðIð ðIð ðIð ðIð ðIð ðIð  ð!Ið Ið Ið IðXH7Ø�ŒLðH7à�Œ<ðH7ð 
ˆfŒðH7ð 
ˆfŒð	H7ð
 ˆvŒ,ðH7ð �f”ðH7ð ðH7ð 	ðH7ð 	ðH7ð ðH7ð ðH7ð ðH7ð ðH7ð ðH7ð  ð!H7ð H7ð H7ð H7ðV  ÐÐ1DÐEÑEÔEð #ØØ ØØð6ð 6Ø�ŒLð6à�Œ<ð6ð 
ˆfŒð6ð 
ˆfŒð	6ð
 ˆvŒ,ð6ð �f”ð6ð �dŒ^ð6ð ð6ð ð6ð ð6ð ð6ð ð6ð  	ð!6ð" 	ð#6ð$ ð%6ð& ð'6ð 6ð 6ñ FÔEð6ð 6ð 6r4   