§
    �ŠtjõD  ã                    óp  — d Z ddl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
de› de› de
› de› de› d�z   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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 e	e¬¦  «        	 	 	 	 	 d#dee         dee         dee         dee         dee         d!edz  dededededededededdfd"„¦   «         ZdS )$z1Implementation for the Resilient backpropagation.é    )ÚcastN)ÚTensoré   )Ú_capturable_docÚ_default_to_fused_or_foreachÚ_differentiable_docÚ_disable_dynamo_if_unsupportedÚ_foreach_docÚ!_get_capturable_supported_devicesÚ_get_scalar_dtypeÚ_maximize_docÚ_params_docÚ
_to_scalarÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚRpropÚrpropc                   ó¬   ‡ — e Zd Z	 	 	 ddddddœdedeez  d	eeef         d
eeef         dededz  dededdfˆ fd„Zˆ fd„Z	d„ Z
edd„¦   «         Zˆ xZS )r   ç{®Gáz„?©g      à?g333333ó?©g�íµ ÷Æ°>é2   FN)Ú
capturableÚforeachÚmaximizeÚdifferentiableÚparamsÚlrÚetasÚ
step_sizesr   r   r   r   Úreturnc                óŽ  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚d|d         cxk     rdcxk     r|d         k     s#n t          d|d         › d|d         › �¦  «        ‚|||||||d	œ}	t	          ¦   «                              ||	¦  «         d S )
Nr   zTensor lr must be 1-elementg        zInvalid learning rate: r   ç      ð?zInvalid eta values: z, )r    r!   r"   r   r   r   r   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚsuperÚ__init__)Úselfr   r    r!   r"   r   r   r   r   ÚdefaultsÚ	__class__s             €úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/optim/rprop.pyr*   zRprop.__init__   s÷   ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<Ø�T˜!”WÐ,Ð,Ò,Ð,˜sÐ,Ð,Ò,Ð, T¨!¤WÒ,Ð,Ð,Ð,ÝÐH°D¸´GÐHÐH¸tÀA¼wÐHÐHÑIÔIÐIð ØØ$ØØ Ø,Ø$ð
ð 
ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*Ð*Ð*ó    c                 óŒ  •— t          ¦   «                              |¦  «         | j        D �]}|                     dd ¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |d         D ]´}| j                             |g ¦  «        }t          |¦  «        dk    r„t          j        |d         ¦  «        sjt          |d         ¦  «        }|d         r(t          j
        |t          ¦   «         |j        ¬	¦  «        n!t          j
        |t          ¦   «         ¬
¦  «        |d<   Œµ�Œd S )Nr   r   Fr   r   r   r   Ústep©ÚdtypeÚdevice©r3   )r)   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r4   )r+   r9   ÚgroupÚpÚp_stateÚstep_valr-   s         €r.   r6   zRprop.__setstate__=   sO  ø€ Ý‰Œ×Ò˜UÑ#Ô#Ð#ØÔ&ð 	ñ 	ˆEØ×Ò˜Y¨Ñ-Ô-Ð-Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×ÒÐ-¨uÑ5Ô5Ð5Ø×Ò˜\¨5Ñ1Ô1Ð1Ø˜8”_ð 
ð 
�Øœ*Ÿ.š.¨¨BÑ/Ô/�Ý�w‘<”< 1Ò$Ð$­U¬_¸WÀV¼_Ñ-MÔ-MÐ$Ý$ W¨V¤_Ñ5Ô5�Hð
 ! Ô.ðO�œØ$Õ,=Ñ,?Ô,?ÈÌðñ ô ð õ #œ\¨(Õ:KÑ:MÔ:MÐNÑNÔNð ˜F‘Oøñ	
ð	ð 	r/   c           	      ó–  — d}|d         D �]¼}|j         €Œ|t          j        |¦  «        z  }|                     |¦  «         |j         }	|	j        rt          d¦  «        ‚|                     |	¦  «         | j        |         }
t          |
¦  «        dk    râ|d         r(t          j        dt          ¦   «         |j
        ¬¦  «        n!t          j        dt          ¦   «         ¬¦  «        |
d	<   t          j        |t          j        ¬
¦  «        |
d<   |j        j        r3t          j        |	t          |d         |d         ¦  «        ¦  «        |
d<   n+t          j        |	t!          |d         ¦  «        ¦  «        |
d<   |                     |
d         ¦  «         |                     |
d         ¦  «         |                     |
d	         ¦  «         �Œ¾|S )NFr   z'Rprop does not support sparse gradientsr   r   © r2   r5   r1   ©Úmemory_formatÚprevr    Ú	step_size)Úgradr<   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr9   r;   Úzerosr   r4   Ú
zeros_likeÚpreserve_formatr3   Ú	full_likeÚcomplexr   )r+   r@   r   ÚgradsÚprevsr"   Ústate_stepsÚhas_complexrA   rJ   r9   s              r.   Ú_init_groupzRprop._init_groupP   s¾  € ØˆØ�x”ð  	.ñ  	.ˆAØŒvˆ~ØØ�5Ô+¨AÑ.Ô.Ñ.ˆKØ�MŠM˜!ÑÔÐØ”6ˆDØŒ~ð NÝ"Ð#LÑMÔMÐMà�LŠL˜ÑÔÐØ”J˜q”MˆEõ �5‰zŒz˜QŠˆð ˜\Ô*ðD•E”K Õ*;Ñ*=Ô*=ÀaÄhÐOÑOÔOÐOåœ RÕ/@Ñ/BÔ/BÐCÑCÔCð �f‘õ !&Ô 0°Å%ÔBWÐ XÑ XÔ X��f‘Ø”7Ô%ð Xõ */¬Ø�g e¨D¤k°5¸´;Ñ?Ô?ñ*ô *�E˜+Ñ&Ð&õ */¬¸½zÈ%ÐPTÌ+Ñ?VÔ?VÑ)WÔ)W�E˜+Ñ&à�LŠL˜˜vœÑ'Ô'Ð'Ø×Ò˜e KÔ0Ñ1Ô1Ð1Ø×Ò˜u Vœ}Ñ-Ô-Ð-Ñ-àÐr/   c                 óš  — |                       ¦   «          d}|�5t          j        ¦   «         5   |¦   «         }ddd¦  «         n# 1 swxY w Y   | j        D ]u}g }g }g }g }g }|d         \  }	}
|d         \  }}|d         }|d         }|                      ||||||¦  «        }t          ||||||||	|
|||d         |d         |¬¦  «         Œv|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   )	Ústep_size_minÚstep_size_maxÚetaminusÚetaplusr   r   r   r   rW   )Ú'_accelerator_graph_capture_health_checkr<   Úenable_gradr7   rX   r   )r+   ÚclosureÚlossr@   r   rT   rU   r"   rV   r\   r]   rZ   r[   r   r   rW   s                   r.   r1   z
Rprop.stepv   sj  € ð 	×4Ò4Ñ6Ô6Ð6àˆØÐÝÔ"Ñ$Ô$ð !ð !Ø�w‘y”y�ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð Ô&ð 	ð 	ˆEØ#%ˆFØ"$ˆEØ"$ˆEØ')ˆJØ(*ˆKà % f¤ÑˆH�gØ+0°Ô+>Ñ(ˆM˜=Ø˜IÔ&ˆGØ˜ZÔ(ˆHà×*Ò*Ø�v˜u e¨Z¸ñô ˆKõ ØØØØØØ+Ø+Ø!ØØØ!Ø$Ð%5Ô6Ø  Ô.Ø'ðñ ô ð ð ð" ˆs   ¬AÁAÁ
A)r   r   r   ©N)Ú__name__Ú
__module__Ú__qualname__r   r>   r   ÚtupleÚboolr*   r6   rX   r   r1   Ú__classcell__)r-   s   @r.   r   r      s!  ø€ € € € € ð "Ø$.Ø*4ð+ð !Ø#ØØ$ð+ð +ð +àð+ð �F‰Nð+ð �E˜5�LÔ!ð	+ð
 ˜% ˜,Ô'ð+ð ð+ð ˜‘ð+ð ð+ð ð+ð 
ð+ð +ð +ð +ð +ð +ð<ð ð ð ð ð&$ð $ð $ðL "ð/ð /ð /ñ "Ô!ð/ð /ð /ð /ð /r/   a¼
  Implements the resilient backpropagation algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \theta_0 \in \mathbf{R}^d \text{ (params)},f(\theta)
                \text{ (objective)},                                                             \\
            &\hspace{13mm}      \eta_{+/-} \text{ (etaplus, etaminus)}, \Gamma_{max/min}
                \text{ (step sizes)}                                                             \\
            &\textbf{initialize} :   g^0_{prev} \leftarrow 0,
                \: \eta_0 \leftarrow \text{lr (learning rate)}                                   \\
            &\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} \textbf{for} \text{  } i = 0, 1, \ldots, d-1 \: \mathbf{do}            \\
            &\hspace{10mm}  \textbf{if} \:   g^i_{prev} g^i_t  > 0                               \\
            &\hspace{15mm}  \eta^i_t \leftarrow \mathrm{min}(\eta^i_{t-1} \eta_{+},
                \Gamma_{max})                                                                    \\
            &\hspace{10mm}  \textbf{else if}  \:  g^i_{prev} g^i_t < 0                           \\
            &\hspace{15mm}  \eta^i_t \leftarrow \mathrm{max}(\eta^i_{t-1} \eta_{-},
                \Gamma_{min})                                                                    \\
            &\hspace{15mm}  g^i_t \leftarrow 0                                                   \\
            &\hspace{10mm}  \textbf{else}  \:                                                    \\
            &\hspace{15mm}  \eta^i_t \leftarrow \eta^i_{t-1}                                     \\
            &\hspace{5mm}\theta_t \leftarrow \theta_{t-1}- \eta_t \mathrm{sign}(g_t)             \\
            &\hspace{5mm}g_{prev} \leftarrow  g_t                                                \\
            &\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 the paper
    `A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm
    <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.21.1417>`_.z

    Args:
        a{  
        lr (float, optional): learning rate (default: 1e-2)
        etas (Tuple[float, float], optional): pair of (etaminus, etaplus), that
            are multiplicative increase and decrease factors
            (default: (0.5, 1.2))
        step_sizes (Tuple[float, float], optional): a pair of minimal and
            maximal allowed step sizes (default: (1e-6, 50))
        z	
        z

    r   rT   rU   r"   rV   rZ   r[   r\   r]   r   r   r   rW   r#   c                ó¨  — t          | ¦  «        D �]@\  }}||         }|	s|n| }||         }||         }||         }t          j                             ¦   «         sK|
rIt	          ¦   «         }|j        j        |j        j        k    r|j        j        |v st          d|› d�¦  «        ‚|dz  }t          j        |¦  «        rPt          j	        |¦  «        }t          j	        |¦  «        }t          j	        |¦  «        }t          j	        |¦  «        }|r:| 
                    |                     ¦   «         ¦  «                             ¦   «         }n'| 
                    |¦  «                             ¦   «         }|
rµ|                     t          j        |                     d¦  «        ||¦  «        ¦  «         |                     t          j        |                     d¦  «        ||¦  «        ¦  «         |                     t          j        |                     d¦  «        d|¦  «        ¦  «         nH|||                     d¦  «        <   |||                     d¦  «        <   d||                     d¦  «        <   |                     |¦  «                             ||¦  «         |                     t          j        ¬¦  «        }|
r=|                     t          j        |                     |¦  «        d|¦  «        ¦  «         nd||                     |¦  «        <   |                     |                     ¦   «         |d¬¦  «         |                     |¦  «         �ŒBd S )NúIIf capturable=True, params and state_steps must be on supported devices: ú.r   r   rF   éÿÿÿÿ©Úvalue)Ú	enumerater<   ÚcompilerÚis_compilingr   r4   ÚtypeÚAssertionErrorrK   Úview_as_realÚmulÚcloneÚsignÚcopy_ÚwhereÚgtÚltÚeqÚmul_Úclamp_rQ   Úaddcmul_)r   rT   rU   r"   rV   rZ   r[   r\   r]   r   r   r   rW   ÚiÚparamrJ   rH   rI   r1   Úcapturable_supported_devicesrw   s                        r.   Ú_single_tensor_rproprƒ   ß   sý  € õ  ˜fÑ%Ô%ð 4ñ 4‰ˆˆ5Ø�QŒxˆØ#Ð.ˆtˆt¨$¨ˆØ�QŒxˆØ˜q”Mˆ	Ø˜1Œ~ˆõ Œ~×*Ò*Ñ,Ô,ð 	°ð 	Ý+LÑ+NÔ+NÐ(à”Ô! T¤[Ô%5Ò5Ð5Ø”LÔ%Ð)EÐEÐEå$ØÐ`|ÐÐÐñô ð ð 	�‰	ˆåÔ˜EÑ"Ô"ð 	6ÝÔ% dÑ+Ô+ˆDÝÔ% dÑ+Ô+ˆDÝÔ& uÑ-Ô-ˆEÝÔ*¨9Ñ5Ô5ˆIØð 	)Ø—8’8˜DŸJšJ™LœLÑ)Ô)×.Ò.Ñ0Ô0ˆDˆDà—8’8˜D‘>”>×&Ò&Ñ(Ô(ˆDàð 	!Ø�JŠJ•u”{ 4§7¢7¨1¡:¤:¨w¸Ñ=Ô=Ñ>Ô>Ð>Ø�JŠJ•u”{ 4§7¢7¨1¡:¤:¨x¸Ñ>Ô>Ñ?Ô?Ð?Ø�JŠJ•u”{ 4§7¢7¨1¡:¤:¨q°$Ñ7Ô7Ñ8Ô8Ð8Ð8à&ˆD�—’˜‘”ÑØ'ˆD�—’˜‘”ÑØ ˆD�—’˜‘”Ñð 	�Š�tÑÔ×#Ò# M°=ÑAÔAÐAð �zŠz­Ô(=ˆzÑ>Ô>ˆØð 	(Ø�JŠJ•u”{ 4§7¢7¨8Ñ#4Ô#4°a¸Ñ>Ô>Ñ?Ô?Ð?Ð?à&'ˆD�—’˜Ñ"Ô"Ñ#ð 	�Š�t—y’y‘{”{ I°RˆÑ8Ô8Ð8Ø�
Š
�4ÑÔÐÑði4ð 4r/   c          
      ón  ‡— t          | ¦  «        dk    rd S |rt          d¦  «        ‚t          j                             ¦   «         sN|
rLt          ¦   «         Št          ˆfd„t          | |d¬¦  «        D ¦   «         ¦  «        st          d‰› d�¦  «        ‚t          j	        | ||||g¦  «        }| 
                    ¦   «         D �]r\  \  }}}}}}t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          j                             ¦   «         s9|d         j        r,t          j        |t          j        dd	¬
¦  «        d¬¦  «         nt          j        |d¦  «         |rt#          ||||¦  «         t          j        ||¦  «        }|	rt          j        |¦  «         t          j        ||¦  «         |	rt          j        |¦  «         |}t          j        |¦  «         |
rº|D ]¶}|                     t          j        |                     d¦  «        ||¦  «        ¦  «         |                     t          j        |                     d¦  «        ||¦  «        ¦  «         |                     t          j        |                     d¦  «        d|¦  «        ¦  «         Œ·nM|D ]J}|||                     d¦  «        <   |||                     d¦  «        <   d||                     d¦  «        <   ŒKt          j        ||¦  «         |D ]}|                     ||¦  «         Œt          |¦  «        }t;          t          |¦  «        ¦  «        D ]P}||                              t          j        ||                              |¦  «        d||         ¦  «        ¦  «         ŒQ~d„ |D ¦   «         }t          j        |||d¬¦  «         �Œtd S )Nr   z#_foreach ops don't support autogradc              3   ón   •K  — | ]/\  }}|j         j        |j         j        k    o|j         j        ‰v V — Œ0d S rb   )r4   rr   )Ú.0rA   r1   r‚   s      €r.   ú	<genexpr>z&_multi_tensor_rprop.<locals>.<genexpr>?  s]   øè è € ð 
ð 
ñ ��4ð ŒHŒM˜Tœ[Ô-Ò-ð >Ø””Ð!=Ð=ð
ð 
ð 
ð 
ð 
ð 
r/   T)Ústrictrj   rk   r%   Úcpu)r4   )Úalphar   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rE   )rw   )r†   rJ   s     r.   ú
<listcomp>z'_multi_tensor_rprop.<locals>.<listcomp>’  s    € Ð<Ð<Ð< d�d—i’i‘k”kÐ<Ð<Ð<r/   rl   rm   )r;   rs   r<   rp   rq   r   ÚallÚzipr   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   Úlistr   Úis_cpuÚ_foreach_add_r?   r   Ú_foreach_mulÚ_foreach_neg_Ú_foreach_copy_Ú_foreach_sign_rx   ry   rz   r{   r|   Ú_foreach_mul_r~   ÚrangeÚ_foreach_addcmul_)r   rT   rU   r"   rV   rZ   r[   r\   r]   r   r   r   rW   Úgrouped_tensorsÚgrouped_params_Úgrouped_grads_Úgrouped_prevs_Úgrouped_step_sizes_Úgrouped_state_steps_Ú_Úgrouped_paramsÚgrouped_gradsÚgrouped_prevsÚgrouped_step_sizesÚgrouped_state_stepsÚsignsrw   rI   r€   Ú
grad_signsr‚   s                                 @r.   Ú_multi_tensor_rpropr©   &  sƒ  ø€ õ  ˆ6�{„{�aÒÐØˆàð DÝÐBÑCÔCÐCõ Œ>×&Ò&Ñ(Ô(ð 	¨Zð 	Ý'HÑ'JÔ'JÐ$Ýð 
ð 
ð 
ð 
õ ˜v {¸4Ð@Ñ@Ô@ð
ñ 
ô 
ñ 
ô 
ð 	õ
 !Ø{Ð\xÐ{Ð{Ð{ñô ð õ  ÔBØ	�˜˜z¨;Ð7ñô €Oð ×"Ò"Ñ$Ô$ðJ
ñ J
ñ 		ñ 	ØØØØØØÝ�d¥6œl¨OÑ<Ô<ˆÝ�T¥&œ\¨>Ñ:Ô:ˆÝ�T¥&œ\¨>Ñ:Ô:ˆÝ!¥$¥v¤,Ð0CÑDÔDÐÝ"¥4­¤<Ð1EÑFÔFÐõ Œ~×*Ò*Ñ,Ô,ð 	8Ð1DÀQÔ1GÔ1Nð 	8ÝÔØ#¥U¤\°#¸eÐ%DÑ%DÔ%DÈCðñ ô ð ð õ ÔÐ 3°QÑ7Ô7Ð7ð ð 	ÝØ ¨}Ð>Pñô ð õ Ô" =°-Ñ@Ô@ˆØð 	'ÝÔ Ñ&Ô&Ð&õ
 	Ô˜]¨MÑ:Ô:Ð:Øð 	/ÝÔ Ñ.Ô.Ð.Ø%ˆåÔ˜UÑ#Ô#Ð#Øð 		%Øð =ð =�Ø—
’
�5œ; t§w¢w¨q¡z¤z°7¸DÑAÔAÑBÔBÐBØ—
’
�5œ; t§w¢w¨q¡z¤z°8¸TÑBÔBÑCÔCÐCØ—
’
�5œ; t§w¢w¨q¡z¤z°1°dÑ;Ô;Ñ<Ô<Ð<Ð<ð=ð
 ð %ð %�Ø#*��T—W’W˜Q‘Z”ZÑ Ø#+��T—W’W˜Q‘Z”ZÑ Ø#$��T—W’W˜Q‘Z”ZÑ Ð õ 	ÔÐ.°Ñ6Ô6Ð6Ø+ð 	;ð 	;ˆIØ×Ò˜]¨MÑ:Ô:Ð:Ð:õ ˜]Ñ+Ô+ˆÝ•s˜=Ñ)Ô)Ñ*Ô*ð 	ð 	ˆAØ˜!Ô×"Ò"Ý”˜E !œHŸKšK¨Ñ1Ô1°1°mÀAÔ6FÑGÔGñô ð ð ð
 ð =Ð<¨mÐ<Ñ<Ô<ˆ
ÝÔØ˜JÐ(:À"ð	
ñ 	
ô 	
ð 	
ñ 	
ðQJ
ð J
r/   )Úsingle_tensor_fnFr   c
                ó¬  — t           j                             ¦   «         s(t          d„ |D ¦   «         ¦  «        st	          d¦  «        ‚|€t          | |d¬¦  «        \  }}|r-t           j                             ¦   «         rt	          d¦  «        ‚|r&t           j                             ¦   «         st          }nt          } || |||||
|||||||	¬¦  «         dS )zpFunctional API that performs rprop algorithm computation.

    See :class:`~torch.optim.Rprop` for details.
    c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rb   )r&   r<   r   )r†   Úts     r.   r‡   zrprop.<locals>.<genexpr>¶  s?   è è € ð 5ð 5Ø()�
�1•e”lÑ#Ô#ð5ð 5ð 5ð 5ð 5ð 5r/   zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizers)rZ   r[   r\   r]   r   r   r   rW   )
r<   rp   rq   r�   rN   r   ÚjitÚis_scriptingr©   rƒ   )r   rT   rU   r"   rV   r   r   r   r   rW   rZ   r[   r\   r]   r¡   Úfuncs                   r.   r   r   œ  s'  € õ4 Œ>×&Ò&Ñ(Ô(ð 
µð 5ð 5Ø-8ð5ñ 5ô 5ñ 2ô 2ð 
õ Ø^ñ
ô 
ð 	
ð €Ý1Ø�N¨eð
ñ 
ô 
‰
ˆˆ7ð ð U•5”9×)Ò)Ñ+Ô+ð UÝÐSÑTÔTÐTàð $•u”y×-Ò-Ñ/Ô/ð $Ý"ˆˆå#ˆà€DØØØØØØ#Ø#ØØØØØ%Øðñ ô ð ð ð r/   )NFFFF)Ú__doc__Útypingr   r<   r   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ú__all__r   r‘   r>   rg   rƒ   r©   r   rE   r/   r.   ú<module>r¶      s  ðà 8Ð 8à Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ �GÐ
€ðHð Hð Hð Hð HˆIñ Hô Hð HðX!LðDð 
ðð ð 
ðð ð 
ðð ð 
ðð ð 
ðð ð ñE1ð „ðlDØ�ŒLðDà�Œ<ðDð �Œ<ðDð �V”ð	Dð
 �f”ðDð ðDð ðDð ðDð ðDð ðDð ðDð ðDð ðDð 
ðDð Dð Dð DðNo
Ø�ŒLðo
à�Œ<ðo
ð �Œ<ðo
ð �V”ð	o
ð
 �f”ðo
ð ðo
ð ðo
ð ðo
ð ðo
ð ðo
ð ðo
ð ðo
ð ðo
ð 
ðo
ð o
ð o
ð o
ðl  ÐÐ1EÐFÑFÔFð  ØØØ Øð;ð ;Ø�ŒLð;à�Œ<ð;ð �Œ<ð;ð �V”ð	;ð
 �f”ð;ð �D‰[ð;ð ð;ð ð;ð ð;ð ð;ð ð;ð ð;ð  ð!;ð" ð#;ð$ 
ð%;ð ;ð ;ñ GÔFð;ð ;ð ;r/   