Ë
    [^(hÏP  ã            !       ón  — d dl 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 ddgZ G d„ de«      Zd	d
e› de
› de› de	› d�	z   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e   dededededededef d„Z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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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"dfd#„Zy)%é    )ÚcastÚOptionalÚUnionN)ÚTensoré   )Ú_default_to_fused_or_foreachÚ_device_dtype_check_for_fusedÚ_differentiable_docÚ_foreach_docÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚAdagradÚadagradc                   óž   ‡ — e Zd Z	 	 	 	 	 	 dddd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e   fˆ fd„Z	ˆ fd„Z
d„ Zd„ Zedd„«       Zˆ xZS )r   NF)ÚmaximizeÚdifferentiableÚfusedÚparamsÚlrÚlr_decayÚweight_decayÚinitial_accumulator_valueÚepsÚforeachr   r   r   c                óF  •— t        |t        «      r|j                  «       dk7  rt        d«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚t	        ||||||||	|
¬	«	      }t
        ‰| �  ||«       |
r!|	rt        d
«      ‚|rt        d«      ‚d| _        | j                  D ]½  }|d   D ]³  }| j                  |   }|d   r/t        j                  dt        |d   ¬«      |j                  ¬«      nt        j                  dt        «       ¬«      |d<   t        j                   |«      rt#        ||«      n|}t        j$                  ||t        j&                  ¬«      |d<   Œµ Œ¿ y )Nr   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid lr_decay value: zInvalid weight_decay value: z)Invalid initial_accumulator_value value: zInvalid epsilon value: )	r   r   r   r   r   r    r   r   r   z)`fused` does not support `differentiable`z0`fused` and `foreach` cannot be `True` together.Tr   r   © ©Úis_fused)ÚdtypeÚdevice©r%   Ústep)Úmemory_formatÚsum)Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__ÚRuntimeErrorÚ"_need_device_dtype_check_for_fusedÚparam_groupsÚstateÚtorchÚzerosr   r&   ÚtensorÚ
is_complexÚcomplexÚ	full_likeÚpreserve_format)Úselfr   r   r   r   r   r   r    r   r   r   ÚdefaultsÚgroupÚpr4   Ú
init_valueÚ	__class__s                   €úQ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/optim/adagrad.pyr0   zAdagrad.__init__   sÙ  ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�hŠÜÐ7¸°zÐBÓCÐCØ�lÒ"ÜÐ;¸L¸>ÐJÓKÐKØÐ/Ò/ÜØ;Ð<UÐ;VÐWóð ð �cŠzÜÐ6°s°eÐ<Ó=Ð=äØØØØ%Ø&?ØØØ)Øô

ˆô 	‰Ñ˜ Ô*áÙÜ"Ð#NÓOÐOÙÜ"Ð#UÓVÐVØ6:ˆDÔ3à×&Ñ&ò 	ˆEØ˜8‘_ò �ØŸ
™
 1™�ð ˜W’~ô —K‘KØÜ/¸¸w¹ÔHØ Ÿx™xõô Ÿ™ cÔ1BÓ1DÔEð �f‘ô ×'Ñ'¨Ô*ô Ð5Ð7PÔQà2ð ô
  %Ÿ™Ø�z´×1FÑ1Fô ��e’ñ!ñ	ó    c                 óê  •— t         ‰| �  |«       d }| j                  D ]J  }|j                  dd «       |j                  dd«       |j                  dd«       |j                  dd «      }ŒL t	        | j
                  j                  «       «      }t        |«      dk7  xr t        j                  |d   d   «      }|s8|D ]2  }t        j                  t        |d   «      t        |¬«      ¬	«      |d<   Œ4 y y )
Nr    r   Fr   r   r   r(   r#   r'   )r/   Ú__setstate__r3   Ú
setdefaultÚlistr4   ÚvaluesÚlenr5   Ú	is_tensorr7   Úfloatr   )r<   r4   r   r>   Ústate_valuesÚstep_is_tensorÚsrA   s          €rB   rE   zAdagrad.__setstate__a   sò   ø€ Ü‰Ñ˜UÔ#ð ˆØ×&Ñ&ò 	4ˆEØ×Ñ˜Y¨Ô-Ø×Ñ˜Z¨Ô/Ø×ÑÐ-¨uÔ5Ø×$Ñ$ W¨dÓ3‰Eð		4ô ˜DŸJ™J×-Ñ-Ó/Ó0ˆÜ˜lÓ+¨qÑ0ò 
´e·o±oØ˜‰O˜FÑ#ó7
ˆñ Ø!ò �Ü!ŸL™LÜ˜!˜F™)Ó$Ô,=ÀuÔ,Mô��&’	ñð rC   c                 ó~   — | j                   D ].  }|d   D ]$  }| j                  |   }|d   j                  «        Œ& Œ0 y )Nr   r*   )r3   r4   Úshare_memory_)r<   r>   r?   r4   s       rB   Úshare_memoryzAdagrad.share_memoryv   sG   € Ø×&Ñ&ò 	-ˆEØ˜8‘_ò -�ØŸ
™
 1™�Ø�e‘×*Ñ*Õ,ñ-ñ	-rC   c                 ó¶  — d\  }}|d   D ]É  }|j                   €Œ|d   r!t        | dd«      rt        |d¬«       d| _        ||j                   j                  z  }|t        j                  |«      z  }|j                  |«       |j                  |j                   «       | j                  |   }	|j                  |	d   «       |j                  |	d	   «       ŒË ||fS )
N)FFr   r   r2   T)Úcuda_unsupportedFr*   r(   )	ÚgradÚgetattrr	   r2   Ú	is_sparser5   r8   Úappendr4   )
r<   r>   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsÚhas_sparse_gradÚhas_complexr?   r4   s
             rB   Ú_init_groupzAdagrad._init_group|   sÙ   € Ø'3Ñ$ˆ˜Ø�x‘ò 	2ˆAØ�v‰vÑ!Ø˜’>¤gØØ8Øô'ô
 2°!ÀdÕKØ>C�DÔ;Ø 1§6¡6×#3Ñ#3Ñ3�Øœu×/Ñ/°Ó2Ñ2�Ø ×'Ñ'¨Ô*Ø—‘˜QŸV™VÔ$ØŸ
™
 1™�Ø×!Ñ! %¨¡,Ô/Ø×"Ñ" 5¨¡=Õ1ð	2ð"  Ð+Ð+rC   c                 ób  — d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]k  }g }g }g }g }| j                  |||||«      \  }}	t	        |||||d   |d   |d   |d   ||d   |d   |d   |	|d	   t        | d
d«      t        | dd«      ¬«       Œm |S # 1 sw Y   Œ…xY w)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   Ú
grad_scaleÚ	found_inf)r   r   r   r   r\   r    r   r   r]   r   r`   ra   )r5   Úenable_gradr3   r^   r   rU   )
r<   ÚclosureÚlossr>   rX   rY   rZ   r[   r\   r]   s
             rB   r(   zAdagrad.step‘   sþ   € ð ˆàÐÜ×"Ñ"Ó$ñ !Ù“y�÷!ð ×&Ñ&ò 	ˆEØ-/ÐØ"$ˆEØ')ˆJØ(*ˆKà+/×+;Ñ+;ØÐ'¨°
¸Kó,Ñ(ˆO˜[ô Ø ØØØØ˜‘;Ø" >Ñ2Ø˜zÑ*Ø˜%‘LØ /Ø˜iÑ(Ø˜zÑ*Ø$Ð%5Ñ6Ø'Ø˜G‘nÜ" 4¨°tÓ<Ü! $¨°TÓ:ö!ð	ð: ˆ÷A!ð !ús   ™B%Â%B.)g{®Gáz„?r   r   r   g»½×Ùß|Û=N©N)Ú__name__Ú
__module__Ú__qualname__r   r   rK   r   r   Úboolr0   rE   rQ   r^   r   r(   Ú__classcell__)rA   s   @rB   r   r      sÏ   ø„ ð $(ØØØ+,ØØ"&ðDð Ø$Ø $òDàðDð �%˜�-Ñ ðDð ð	Dð
 ðDð $)ðDð ðDð ˜$‘ðDð ðDð ðDð ˜‰~õDôLò*-ò,ð* "ò*ó "ô*rC   a[  Implements Adagrad algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \theta_0 \text{ (params)}, \: f(\theta)
                \text{ (objective)}, \: \lambda \text{ (weight decay)},                          \\
            &\hspace{12mm}    \tau \text{ (initial accumulator value)}, \: \eta\text{ (lr decay)}\\
            &\textbf{initialize} :  state\_sum_0 \leftarrow \tau                          \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm} \tilde{\gamma}    \leftarrow \gamma / (1 +(t-1) \eta)                  \\
            &\hspace{5mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda \theta_{t-1}                             \\
            &\hspace{5mm}state\_sum_t  \leftarrow  state\_sum_{t-1} + g^2_t                      \\
            &\hspace{5mm}\theta_t \leftarrow
                \theta_{t-1}- \tilde{\gamma} \frac{g_t}{\sqrt{state\_sum_t}+\epsilon}            \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to `Adaptive Subgradient Methods for Online Learning
    and Stochastic Optimization`_.
    z
    Args:
        aÙ  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        lr_decay (float, optional): learning rate decay (default: 0)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        initial_accumulator_value (float, optional): initial value of the
            sum of squares of gradients (default: 0)
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-10)
        z	
        aÒ  
        fused (bool, optional): whether the fused implementation (CPU only) is used.
            Currently, `torch.float64`, `torch.float32`, `torch.float16`, and `torch.bfloat16`
            are supported. (default: None). Please note that the fused implementations does not
            support sparse or complex gradients.
    .. _Adaptive Subgradient Methods for Online Learning and Stochastic
        Optimization: http://jmlr.org/papers/v12/duchi11a.html

    r   rY   rZ   r[   r   r`   ra   r\   r    r   r]   r   r   r   r   r   c                óø  — t        d„ |D «       «      st        d«      ‚|€|€t        | |	d¬«      \  }}|€d}|€d}|r)t        j                  j                  «       rt        d«      ‚|r)t        j                  j                  «       rt        d«      ‚|r%t        j                  j                  «       st        }n-|r%t        j                  j                  «       st        }nt        } || ||||||||||	|
||¬«       y)	ztFunctional API that performs Adagrad algorithm computation.

    See :class:`~torch.optim.Adagrad` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wre   )r+   r5   r   )Ú.0Úts     rB   ú	<genexpr>zadagrad.<locals>.<genexpr>  s   è ø€ Ò@¨qŒz˜!œUŸ\™\×*Ñ@ùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers©
r   r   r   r   r\   r   r   r]   r`   ra   )	Úallr1   r   r5   ÚjitÚis_scriptingÚ_fused_adagradÚ_multi_tensor_adagradÚ_single_tensor_adagrad)r   rY   rZ   r[   r   r`   ra   r\   r    r   r]   r   r   r   r   r   Ú_Úfuncs                     rB   r   r   ò   sù   € ô2 Ñ@°KÔ@Ô@ÜØ^ó
ð 	
ð €}˜˜Ü1Ø�N¨eô
‰
ˆˆ7ð €}ØˆØ€Øˆá”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTÙ”—‘×'Ñ'Ô)ÜÐQÓRÐRá”U—Y‘Y×+Ñ+Ô-Ü‰Ù	œŸ™×/Ñ/Ô1Ü$‰ä%ˆáØØØØØØ!ØØØ'ØØ%ØØØörC   c                 óP   — | j                  «       }t        j                  |||«      S re   )Úsizer5   Úsparse_coo_tensor)rT   Úgrad_indicesrH   r{   s       rB   Ú_make_sparser~   <  s"   € Ø�9‰9‹;€DÜ×"Ñ" <°¸Ó>Ð>rC   c          
      óB  — |€|�J ‚t        | |||«      D �]  \  }}}}|dz  }t        |«      }|s|n| }|dk7  r*|j                  rt        d«      ‚|j	                  ||¬«      }|d|dz
  |z  z   z  }|j                  r½|j                  «       }|j                  «       }|j                  «       }|j                  t        |||j                  d«      «      «       |j                  |«      }|j                  «       j                  «       j                  |	«      }|j                  t        ||||z  «      | ¬«       �Œ&t        j                  |«      }|r?t        j                  |«      }t        j                  |«      }t        j                  |«      }|j!                  ||d¬«       |r|j#                  «       |	z   }n|j#                  «       j                  |	«      }|j%                  ||| ¬«       |s�ŒÞt        j&                  |«      }t        j&                  |«      }�Œ
 y )Nr   r   z;weight_decay option is not compatible with sparse gradients©Úalphaé   ©Úvalue)Úzipr   rV   r1   ÚaddÚcoalesceÚ_indicesÚ_valuesÚadd_r~   ÚpowÚsparse_maskÚsqrt_r5   r8   Úview_as_realÚaddcmul_ÚsqrtÚaddcdiv_Úview_as_complex)r   rY   rZ   r[   r`   ra   r   r   r   r   r\   r   r   r]   ÚparamrT   Ú	state_sumÚstep_tr(   Úclrr}   Úgrad_valuesÚstdÚ
std_valuesr8   s                            rB   rw   rw   A  sû  € ð" Ð )Ð"3Ð3Ð3Ü*-¨f°e¸ZÈÓ*Uó (=Ñ&ˆˆt�Y à�!‰ˆÜ˜&Ó!ˆÙ#‰t¨$¨ˆà˜1ÒØ�~Š~Ü"ØQóð ð —8‘8˜E¨�8Ó6ˆDà�A˜ ™ XÑ-Ñ-Ñ.ˆà�>Š>Ø—=‘=“?ˆDØŸ=™=›?ˆLØŸ,™,›.ˆKà�N‰Nœ<¨¨l¸K¿O¹OÈAÓ<NÓOÔPØ×'Ñ'¨Ó-ˆCØŸ™›×,Ñ,Ó.×3Ñ3°CÓ8ˆJØ�J‰JÜ˜T <°¸zÑ1IÓJÐSVÐRVð ö ô ×)Ñ)¨%Ó0ˆJÙÜ×)Ñ)¨$Ó/�Ü!×.Ñ.¨yÓ9�	Ü×*Ñ*¨5Ó1�Ø×Ñ˜t T°ÐÔ3ÙØ—n‘nÓ&¨Ñ,‘à—n‘nÓ&×+Ñ+¨CÓ0�Ø�N‰N˜4 ¨S¨DˆNÔ1ÛÜ×-Ñ-¨eÓ4�Ü!×1Ñ1°)Ó<’	ñQ(=rC   c                óà  — |rJ d«       ‚|€|�J ‚t        | «      dk(  ry t        j                  | |||g«      }|j                  «       D �]  \  \  }}}}}t	        t
        t           |«      }t	        t
        t           |«      }t	        t
        t           |«      }t	        t
        t           |«      }|
xr t        d„ |D «       «      }|rt        ||||||||	d|||||¬«       Œš|rt        |||«       |rt        j                  |«      }t        j                  j                  «       s=|d   j                  r.t        j                  |t        j                   dd¬«      d¬	«       nt        j                  |d
«       |dk7  r3|rt        j                  |||¬	«       nt        j"                  |||¬	«      }|D �cg c]  }| d
t%        |«      d
z
  |z  z   z  ‘Œ }}t        j&                  |||d
¬«       t        j(                  |«      }t        j                  ||	«       |dk7  s|rt        j*                  ||«       |}nt        j,                  ||«      }t        j.                  |||«       �Œ! y c c}w )Nz#_foreach ops don't support autogradr   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wre   )rV   )rm   rT   s     rB   ro   z(_multi_tensor_adagrad.<locals>.<genexpr>¤  s   è ø€ ò 9
Ø#ˆD�N�Nñ9
ùs   ‚Trq   g      ð?Úcpu)r&   r€   r   rƒ   )rI   r   Ú"_group_tensors_by_device_and_dtyperH   r   rG   r   Úanyrw   r   r5   Ú_foreach_negÚcompilerÚis_compilingÚis_cpuÚ_foreach_add_r7   Ú_foreach_addr   Ú_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mul_Ú_foreach_mulÚ_foreach_addcdiv_)r   rY   rZ   r[   r`   ra   r   r   r   r   r\   r   r   r]   Úgrouped_tensorlistsÚdevice_params_Údevice_grads_Údevice_state_sums_Údevice_state_steps_rx   Údevice_paramsÚdevice_gradsÚdevice_state_sumsÚdevice_state_stepsÚdevice_has_sparse_gradr(   Ú	minus_clrr˜   Ú	numerators                                rB   rv   rv   ~  sŒ  € ñ" ÐDÐDÓDÐØÐ )Ð"3Ð3Ð3ô ˆ6ƒ{�aÒØä#×FÑFØ	�˜
 KÐ0óÐð  ×&Ñ&Ó(óM?ñ 		ñ 	ØØØØØÜœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà!0ò "
´Sñ 9
Ø'3ô9
ó 6
Ðñ "Ü"ØØØ!Ø"ØØ)Ø!ØØ $Ø!Ø-Ø'Ø%Ø#õð  ñ Ü˜-¨Ð7HÔIáÜ ×-Ñ-¨lÓ;ˆLô �~‰~×*Ñ*Ô,Ð1CÀAÑ1F×1MÒ1MÜ×ÑØ"¤E§L¡L°¸UÔ$CÈ3öô ×ÑÐ 2°AÔ6à˜1ÒáÜ×#Ñ# L°-À|ÖTä$×1Ñ1Ø  -°|ô �ð
 GYö
Ø>BˆRˆC�1œ
 4Ó(¨1Ñ,°Ñ8Ñ8Ó9ð
ˆ	ð 
ô 	×ÑÐ 1°<ÀÐUVÕWä×!Ñ!Ð"3Ó4ˆÜ×Ñ˜C Ô%à˜1Ò¡ä×Ñ ¨iÔ8Ø$‰Iä×*Ñ*¨<¸ÓCˆIä×Ñ ¨y¸#Ö>ñ[M?ùòz
s   Æ5I+Úreturnc                ó  — | sy |
s|rt        d«      ‚|rt        d«      ‚|�|j                  |ind }|�|j                  |ind }t        j                  | |||g«      }|j	                  «       D �]  \  \  }}\  \  }}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }d\  }}|�!|�||vr|j                  |d¬«      ||<   ||   }|�!|�||vr|j                  |d¬«      ||<   ||   }t        j                  |d«       t        j                  ||||||||	|||¬«       |€Œòt        j                  ||gt        |«      z  «       �Œ y )Nz5`fused` does not support sparse grad or complex paramz<adagrad with fused=True does not support differentiable=True)NNT)Únon_blockingr   )r   r   r   r   r   r`   ra   )r1   r&   r   r�   Úitemsr   rG   r   Útor5   r£   Ú_fused_adagrad_Ú_foreach_sub_rI   )r   rY   rZ   r[   r`   ra   r   r   r   r   r\   r   r   r]   Úgrad_scale_dictÚfound_inf_dictÚgrouped_tensorsr&   rx   r«   r¬   r­   r®   r¯   r°   r±   r²   Údevice_grad_scaleÚdevice_found_infs                                rB   ru   ru   é  sâ  € ñ" ØÙ™+ÜÐRÓSÐSáÜØJó
ð 	
ð
 ,6Ð+Aˆ×	Ñ	˜JÑ'Àtð ð 7@Ð6K�i×&Ñ&¨	Ñ2ÐQU€Nä×BÑBØ	�˜
 KÐ0ó€Oð 
×	Ñ	Ó	 ó(ñ 	‰ˆ�ñ ñ	
ØØØØà	äœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà.8Ñ+ÐÐ+ØÐ! oÐ&AØ˜_Ñ,Ø*4¯-©-¸ÈT¨-Ó*R� Ñ'Ø /°Ñ 7ÐØÐ  ^Ð%?Ø Ñ.Ø)2¯©°fÈ4¨Ó)P�˜vÑ&Ø-¨fÑ5ÐÜ×ÑÐ.°Ô2Ü×ÑØØØØØØØ%ØØØ(Ø&õ	
ð Ñ'Ü×ÑØ"Ð%5Ð$6¼Ð=OÓ9PÑ$PöñM(rC   )NNNFNFF)Útypingr   r   r   r5   r   Ú	optimizerr   r	   r
   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rG   ri   rK   r   r~   rw   rv   ru   r"   rC   rB   ú<module>rÆ      sš  ðç (Ñ (ã Ý ÷÷ ÷ ó ð  �iÐ
 €ôbˆiô bðLð4	à	ˆð 	ð 
ˆð 	Ø	ˆð 	Ø	Ðð ðñ5.ð „ðp !Ø#'Ø"&ð "Ø"Ø ØñGØ�‰LðGà�‰<ðGð �V‘ðGð �f‘ð	Gð
 �D‰>ðGð ˜Ñ ðGð ˜ÑðGð ðGð �d‰^ðGð ðGð ðGð 	ðGð  ð!Gð" ð#Gð$ 
ð%Gð& ó'GòT?ð
:=Ø�‰Lð:=à�‰<ð:=ð �V‘ð:=ð �f‘ð	:=ð
 ˜Ñ ð:=ð ˜Ñð:=ð 	ð:=ð ð:=ð ð:=ð 
ð:=ð ð:=ð ð:=ð ð:=ð ó:=ðzh?Ø�‰Lðh?à�‰<ðh?ð �V‘ðh?ð �f‘ð	h?ð
 ˜Ñ ðh?ð ˜Ñðh?ð 	ðh?ð ðh?ð ðh?ð 
ðh?ð ðh?ð ðh?ð ðh?ð óh?ðVKØ�‰LðKà�‰<ðKð �V‘ðKð �f‘ð	Kð
 ˜Ñ ðKð ˜ÑðKð 	ðKð ðKð ðKð 
ðKð ðKð ðKð ðKð ðKð  
ô!KrC   