§
    �ŠtjöL  ã                   ób   — d dl Z d dl mZ ddlmZmZmZ dgZdd„Z	 dd„Z G d„ de¦  «        Z	dS )é    N)ÚTensoré   )Ú
_to_scalarÚ	OptimizerÚParamsTÚLBFGSc                 ót  — |�|\  }}n| |k    r| |fn|| f\  }}||z   d||z
  z  | |z
  z  z
  }	|	dz  ||z  z
  }
|
dk    rs|
                      ¦   «         }| |k    r||| z
  ||z   |	z
  ||z
  d|z  z   z  z  z
  }n| | |z
  ||z   |	z
  ||z
  d|z  z   z  z  z
  }t          t          ||¦  «        |¦  «        S ||z   dz  S )Né   é   r   g       @)ÚsqrtÚminÚmax)Úx1Úf1Úg1Úx2Úf2Úg2ÚboundsÚ
xmin_boundÚ
xmax_boundÚd1Ú	d2_squareÚd2Úmin_poss                úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/optim/lbfgs.pyÚ_cubic_interpolater      s  € ð ÐØ!'Ñˆ
�J�Jà-/°2ªX¨X " b  ¸BÀ¸8Ñˆ
�Jð 
ˆb‰�1˜˜R™‘= B¨¡GÑ,Ñ	,€BØ�A‘˜˜R™‘€IØ�A‚~€~Ø�^Š^ÑÔˆØ�Š8ˆ8Ø˜B ™G¨¨b©°2©¸"¸r¹'ÀAÈÁFÑ:JÑ(KÑLÑLˆGˆGà˜B ™G¨¨b©°2©¸"¸r¹'ÀAÈÁFÑ:JÑ(KÑLÑLˆGÝ•3�w 
Ñ+Ô+¨ZÑ8Ô8Ð8à˜ZÑ'¨3Ñ.Ð.ó    ç-Cëâ6?çÍÌÌÌÌÌì?ç•Ö&è.>é   c           
      óô  — |                      ¦   «                              ¦   «         }|                     t          j        ¬¦  «        } | |||¦  «        \  }}d}|                     |¦  «        }d|||f\  }}}}d}d}||
k     �r(||||z  |z  z   k    s|dk    r5||k    r/||g}||g}||                     t          j        ¬¦  «        g}||g}nÞt          |¦  «        | |z  k    r|g}|g}|g}d}n»|dk    r/||g}||g}||                     t          j        ¬¦  «        g}||g}n†|d||z
  z  z   }|dz  }|}t          ||||||||f¬¦  «        }|}|}|                     t          j        ¬¦  «        }|} | |||¦  «        \  }}|dz  }|                     |¦  «        }|dz  }||
k     �°(||
k    rd|g}||g}||g}d}|d         |d	         k    rd
nd\  }}|�s€||
k     �ryt          |d         |d         z
  ¦  «        |z  |	k     r�nRt          |d         |d         |d         |d         |d         |d         ¦  «        }dt          |¦  «        t          |¦  «        z
  z  } t          t          |¦  «        |z
  |t          |¦  «        z
  ¦  «        | k     r“|s&|t          |¦  «        k    s|t          |¦  «        k    rht          |t          |¦  «        z
  ¦  «        t          |t          |¦  «        z
  ¦  «        k     rt          |¦  «        | z
  }nt          |¦  «        | z   }d}nd}nd} | |||¦  «        \  }}|dz  }|                     |¦  «        }|dz  }||||z  |z  z   k    s|||         k    rL|||<   |||<   |                     t          j        ¬¦  «        ||<   |||<   |d         |d         k    rd
nd\  }}n�t          |¦  «        | |z  k    rd}nD|||         ||         z
  z  dk    r,||         ||<   ||         ||<   ||         ||<   ||         ||<   |||<   |||<   |                     t          j        ¬¦  «        ||<   |||<   |s||
k     �°y||         }||         }||         }||||fS )N©Úmemory_formatr   r   FTg{®Gáz„?é
   )r   éÿÿÿÿ)r   r   )r   r   gš™™™™™¹?)Úabsr   ÚcloneÚtorchÚcontiguous_formatÚdotr   r   )!Úobj_funcÚxÚtÚdÚfÚgÚgtdÚc1Úc2Útolerance_changeÚmax_lsÚd_normÚf_newÚg_newÚls_func_evalsÚgtd_newÚt_prevÚf_prevÚg_prevÚgtd_prevÚdoneÚls_iterÚbracketÚ	bracket_fÚ	bracket_gÚbracket_gtdÚmin_stepÚmax_stepÚtmpÚinsuf_progressÚlow_posÚhigh_posÚepss!                                    r   Ú_strong_wolferN   (   sy  € ð �UŠU‰WŒW�[Š[‰]Œ]€FØ	�Š�eÔ5ˆÑ6Ô6€Aà�8˜A˜q !Ñ$Ô$�L€Eˆ5Ø€MØ�iŠi˜‰lŒl€Gð ()¨!¨Q° |Ñ$€FˆF�F˜HØ€DØ€GØ
�FÒ
Ñ
à�A˜˜Q™ ™Ñ$Ò%Ð%¨'°Aª+¨+¸%À6º/¸/Ø˜q�kˆGØ ˜ˆIØ §¢½5Ô;R Ñ!SÔ!SÐTˆIØ# WÐ-ˆKØåˆw‰<Œ<˜B˜3 ™9Ò$Ð$Ø�cˆGØ˜ˆIØ˜ˆIØˆDØà�aŠ<ˆ<Ø˜q�kˆGØ ˜ˆIØ §¢½5Ô;R Ñ!SÔ!SÐTˆIØ# WÐ-ˆKØð �t˜q 6™zÑ*Ñ*ˆØ�r‘6ˆØˆÝØ�F˜H a¨°ÀÈ8Ð@Tð
ñ 
ô 
ˆð
 ˆØˆØ—’­5Ô+B�ÑCÔCˆØˆØ�x  1 aÑ(Ô(‰ˆˆuØ˜ÑˆØ—)’)˜A‘,”,ˆØ�1‰ˆðO �FÒ
Ñ
ðT �&ÒÐØ�a�&ˆØ˜�Jˆ	Ø˜�Jˆ	ð
 €Nà"+¨A¤,°)¸B´-Ò"?Ð"?˜˜ÀVÑ€GˆXØñ X+�w Ò'Ñ'åˆw�qŒz˜G AœJÑ&Ñ'Ô'¨&Ñ0Ð3CÒCÐCÙõ à�AŒJà�aŒLØ˜ŒNà�AŒJà�aŒLà˜ŒNñ
ô 
ˆð, •S˜‘\”\¥C¨¡L¤LÑ0Ñ1ˆå�s�7‰|Œ|˜aÑ ¥S¨¡\¤\Ñ!1Ñ2Ô2°SÒ8Ð8ð ð & ¥c¨'¡l¤lÒ!2Ð!2°a½3¸w¹<¼<Ò6GÐ6Gõ �q�3˜w™<œ<Ñ'Ñ(Ô(­3¨qµ3°w±<´<Ñ/?Ñ+@Ô+@Ò@Ð@å˜G™œ sÑ*�A�Aõ ˜G™œ sÑ*�AØ!&��à!%��à"ˆNð  �x  1 aÑ(Ô(‰ˆˆuØ˜ÑˆØ—)’)˜A‘,”,ˆØ�1‰ˆð �A˜˜Q™ ™Ñ$Ò%Ð%¨°)¸GÔ2DÒ)DÐ)Dð !"ˆG�HÑà"'ˆI�hÑØ"'§+¢+½EÔ<S +Ñ"TÔ"TˆI�hÑà$+ˆK˜Ñ!à*3°A¬,¸)ÀA¼,Ò*FÐ*F  ÈFÑˆG�X�Xå�7‰|Œ| ˜s S™yÒ(Ð(à��à˜G HÔ-°¸Ô0@Ñ@ÑAÀQÒFÐFð %,¨GÔ$4�˜Ñ!à&/°Ô&8�	˜(Ñ#Ø&/°Ô&8�	˜(Ñ#à(3°GÔ(<�˜HÑ%ð  !ˆG�GÑà!&ˆI�gÑØ!&§¢½5Ô;R Ñ!SÔ!SˆI�gÑà#*ˆK˜Ñ ðq ð X+�w Ò'Ñ'ðv 	�Ô€Aà�gÔ€EØ�gÔ€EØ�%˜˜MÐ)Ð)r   c                   óÂ   ‡ — e Zd ZdZ	 	 	 	 	 	 	 dded	eez  d
ededz  dededededz  ddfˆ fd„Z	d„ Z
d„ Zdd„Zd„ Zdd„Zd„ Z ej        ¦   «         d„ ¦   «         Zˆ xZS )r   a¢  Implements L-BFGS algorithm.

    Heavily inspired by `minFunc
    <https://www.cs.ubc.ca/~schmidtm/Software/minFunc.html>`_.

    .. warning::
        This optimizer doesn't support per-parameter options and parameter
        groups (there can be only one).

    .. warning::
        Right now all parameters have to be on a single device. This will be
        improved in the future.

    .. note::
        This is a very memory intensive optimizer (it requires additional
        ``param_bytes * (history_size + 1)`` bytes). If it doesn't fit in memory
        try reducing the history size, or use a different algorithm.

    Args:
        params (iterable): iterable of parameters to optimize. Parameters must be real.
        lr (float, optional): learning rate (default: 1)
        max_iter (int, optional): maximal number of iterations per optimization step
            (default: 20)
        max_eval (int, optional): maximal number of function evaluations per optimization
            step (default: max_iter * 1.25).
        tolerance_grad (float, optional): termination tolerance on first order optimality
            (default: 1e-7).
        tolerance_change (float, optional): termination tolerance on function
            value/parameter changes (default: 1e-9).
        history_size (int, optional): update history size (default: 100).
        line_search_fn (str, optional): either 'strong_wolfe' or None (default: None).
    r   é   NçH¯¼šò×z>r!   éd   ÚparamsÚlrÚmax_iterÚmax_evalÚtolerance_gradr6   Úhistory_sizeÚline_search_fnÚreturnc	                 ó¨  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚|€|dz  dz  }|||||||dœ}	t	          ¦   «                              ||	¦  «         t          | j        ¦  «        dk    rt          d¦  «        ‚| j        d	         d
         | _        d | _	        d S )Nr   zTensor lr must be 1-elementg        zInvalid learning rate: é   é   )rT   rU   rV   rW   r6   rX   rY   z>LBFGS doesn't support per-parameter options (parameter groups)r   rS   )
Ú
isinstancer   ÚnumelÚ
ValueErrorÚsuperÚ__init__ÚlenÚparam_groupsÚ_paramsÚ_numel_cache)ÚselfrS   rT   rU   rV   rW   r6   rX   rY   ÚdefaultsÚ	__class__s             €r   rb   zLBFGS.__init__ð   sö   ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<ØÐØ !‘| qÑ(ˆHàØ Ø Ø,Ø 0Ø(Ø,ð
ð 
ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*åˆtÔ Ñ!Ô! QÒ&Ð&ÝØPñô ð ð Ô(¨Ô+¨HÔ5ˆŒØ ˆÔÐÐr   c                 ód   — | j         €#t          d„ | j        D ¦   «         ¦  «        | _         | j         S )Nc              3   ó”   K  — | ]C}t          j        |¦  «        rd |                     ¦   «         z  n|                     ¦   «         V — ŒDdS )r   N)r*   Ú
is_complexr_   ©Ú.0Úps     r   ú	<genexpr>zLBFGS._numel.<locals>.<genexpr>  s^   è è € ð $ð $àõ "'Ô!1°!Ñ!4Ô!4ÐC��A—G’G‘I”I‘�¸!¿'º'¹)¼)ð$ð $ð $ð $ð $ð $r   )rf   Úsumre   ©rg   s    r   Ú_numelzLBFGS._numel  sF   € ØÔÐ$Ý #ð $ð $àœð$ñ $ô $ñ !ô !ˆDÔð
 Ô Ð r   c                 ó  — g }| j         D ]æ}|j        €:|                     |                     ¦   «         ¦  «                             ¦   «         }nS|j        j        r-|j                             ¦   «                              d¦  «        }n|j                             d¦  «        }t          j	        |¦  «        r't          j
        |¦  «                             d¦  «        }|                     |¦  «         Œçt          j        |d¦  «        S )Nr'   r   )re   ÚgradÚnewr_   Úzero_Ú	is_sparseÚto_denseÚviewr*   rl   Úview_as_realÚappendÚcat)rg   Úviewsro   rz   s       r   Ú_gather_flat_gradzLBFGS._gather_flat_grad  sÝ   € ØˆØ”ð 		ð 		ˆAØŒvˆ~Ø—u’u˜QŸWšW™YœYÑ'Ô'×-Ò-Ñ/Ô/��Ø”Ô!ð 'Ø”v—’Ñ(Ô(×-Ò-¨bÑ1Ô1��à”v—{’{ 2‘”�ÝÔ Ñ%Ô%ð 9ÝÔ)¨$Ñ/Ô/×4Ò4°RÑ8Ô8�Ø�LŠL˜ÑÔÐÐÝŒy˜ Ñ"Ô"Ð"r   c                 óˆ  — d}| j         D ]x}t          j        |¦  «        rt          j        |¦  «        }|                     ¦   «         }|                     ||||z   …                              |¦  «        |¬¦  «         ||z  }Œy||                      ¦   «         k    r't          d|› d|                      ¦   «         › �¦  «        ‚d S )Nr   ©ÚalphazExpected offset z
 to equal )	re   r*   rl   r{   r_   Úadd_Úview_asrs   ÚAssertionError)rg   Ú	step_sizeÚupdateÚoffsetro   r_   s         r   Ú	_add_gradzLBFGS._add_grad+  sÇ   € ØˆØ”ð 	ð 	ˆAÝÔ Ñ"Ô"ð *ÝÔ& qÑ)Ô)�Ø—G’G‘I”IˆEà�FŠF�6˜& 6¨E¡>Ð1Ô2×:Ò:¸1Ñ=Ô=ÀYˆFÑOÔOÐOØ�e‰OˆFˆFØ�T—[’[‘]”]Ò"Ð"Ý Ð!U°FÐ!UÐ!UÀdÇkÂkÁmÄmÐ!UÐ!UÑVÔVÐVð #Ð"r   c                 ó$   — d„ | j         D ¦   «         S )Nc                 óN   — g | ]"}|                      t          j        ¬ ¦  «        ‘Œ#S )r$   )r)   r*   r+   rm   s     r   ú
<listcomp>z&LBFGS._clone_param.<locals>.<listcomp>8  s)   € ÐUÐUÐUÀ1�—’¥eÔ&=�Ñ>Ô>ÐUÐUÐUr   )re   rr   s    r   Ú_clone_paramzLBFGS._clone_param7  s   € ØUÐUÈÌÐUÑUÔUÐUr   c                 ój   — t          | j        |d¬¦  «        D ]\  }}|                     |¦  «         Œd S )NT)Ústrict)Úzipre   Úcopy_)rg   Úparams_dataro   Úpdatas       r   Ú
_set_paramzLBFGS._set_param:  sA   € Ý˜DœL¨+¸dÐCÑCÔCð 	ð 	‰HˆAˆuØ�GŠG�E‰NŒNˆNˆNð	ð 	r   c                 ó¶   — |                       ||¦  «         t           |¦   «         ¦  «        }|                      ¦   «         }|                      |¦  «         ||fS ©N)r‰   Úfloatr   r”   )rg   Úclosurer.   r/   r0   ÚlossÚ	flat_grads          r   Ú_directional_evaluatezLBFGS._directional_evaluate>  sV   € Ø�Š�q˜!ÑÔÐÝ�W�W‘Y”YÑÔˆØ×*Ò*Ñ,Ô,ˆ	Ø�Š˜ÑÔÐØ�YˆÐr   c                 ó˜  ‡ ‡— t          ‰ j        ¦  «        dk    r$t          dt          ‰ j        ¦  «        › �¦  «        ‚ t          j        ¦   «         ‰¦  «        Š‰ j        d         }t          |d         ¦  «        }|d         }|d         }|d         }|d         }|d	         }|d
         }	‰ j        ‰ j        d                  }
|
                     dd¦  «         |
                     dd¦  «          ‰¦   «         }t          |¦  «        }d}|
dxx         dz  cc<   ‰  
                    ¦   «         }|                     ¦   «                              ¦   «         |k    }|r|S |
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }d}||k     �r“|dz  }|
dxx         dz  cc<   |
d         dk    r|                     ¦   «         }g }g }g }d}�nþ|                     |¦  «        }|                     |¦  «        }|                     |¦  «        }|dk    r¬t          |¦  «        |	k    r?|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     |¦  «         |                     |¦  «         |                     d|z  ¦  «         ||                     |¦  «        z  }t          |¦  «        }d|
vr	dg|	z  |
d<   |
d         }|                     ¦   «         }t)          |dz
  dd¦  «        D ]M}||                              |¦  «        ||         z  ||<   |                     ||         ||          ¬¦  «         ŒNt          j        ||¦  «        x}} t)          |¦  «        D ]L}||                              | ¦  «        ||         z  }!|                      ||         ||         |!z
  ¬¦  «         ŒM|€!|                     t          j        ¬¦  «        }n|                     |¦  «         |}|
d         dk    r;t3          dd|                     ¦   «                              ¦   «         z  ¦  «        |z  }n|}|                     |¦  «        }"|"| k    r�nµd}#|��|dk    rt7          d¦  «        ‚‰                      ¦   «         }$ˆˆ fd„}%t;          |%|$|||||"||z
  ¬¦  «        \  }}}}#‰                      ||¦  «         |                     ¦   «                              ¦   «         |k    }n ‰                      ||¦  «         ||k    r„t          j        ¦   «         5   ‰¦   «         }ddd¦  «         n# 1 swxY w Y   t          |¦  «        }‰  
                    ¦   «         }|                     ¦   «                              ¦   «         |k    }d}#||#z  }|
dxx         |#z  cc<   ||k    rnf||k    rn_|rn\|                     |¦  «                             ¦   «                              ¦   «         |k    rnt          ||z
  ¦  «        |k     rn||k     �°“||
d<   ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   |S ) z¦Perform a single optimization step.

        Args:
            closure (Callable): A closure that reevaluates the model
                and returns the loss.
        r   z*Expected exactly one param_group, but got r   rT   rU   rV   rW   r6   rY   rX   Ú
func_evalsÚn_iterr0   r/   Úold_dirsÚold_stpsÚroÚH_diagÚprev_flat_gradÚ	prev_lossg»½×Ùß|Û=g      ð?ÚalNr'   r�   r$   Ústrong_wolfez only 'strong_wolfe' is supportedc                 ó4   •— ‰                      ‰| ||¦  «        S r–   )r›   )r.   r/   r0   r˜   rg   s      €€r   r-   zLBFGS.step.<locals>.obj_funcÔ  s   ø€ Ø#×9Ò9¸'À1ÀaÈÑKÔKÐKr   )r7   )rc   rd   r…   r*   Úenable_gradr   Ústatere   Ú
setdefaultr—   r   r(   r   ÚgetÚnegÚsubÚmulr,   Úpopr|   Úrangerƒ   r)   r+   r‘   r   rq   ÚRuntimeErrorr�   rN   r‰   )&rg   r˜   ÚgrouprT   rU   rV   rW   r6   rY   rX   r©   Ú	orig_lossr™   Úcurrent_evalsrš   Úopt_condr0   r/   rŸ   r    r¡   r¢   r£   r¤   rž   ÚyÚsÚysÚnum_oldr¥   ÚqÚiÚrÚbe_ir3   r;   Úx_initr-   s&   ``                                    r   Ústepz
LBFGS.stepE  s€  øø€ õ ˆtÔ Ñ!Ô! QÒ&Ð&Ý ØU½SÀÔARÑ=SÔ=SÐUÐUñô ð ð
 &•%Ô#Ñ%Ô% gÑ.Ô.ˆàÔ! !Ô$ˆÝ˜˜dœÑ$Ô$ˆØ˜Ô$ˆØ˜Ô$ˆØÐ/Ô0ˆØ Ð!3Ô4ÐØÐ/Ô0ˆØ˜^Ô,ˆð ”
˜4œ<¨œ?Ô+ˆØ×Ò˜ qÑ)Ô)Ð)Ø×Ò˜ 1Ñ%Ô%Ð%ð �G‘I”Iˆ	Ý�YÑÔˆØˆØˆlÐÐÔ˜qÑ ÐÐÑà×*Ò*Ñ,Ô,ˆ	Ø—=’=‘?”?×&Ò&Ñ(Ô(¨NÒ:ˆð ð 	ØÐð �IŠI�c‰NŒNˆØ�IŠI�c‰NŒNˆØ—9’9˜ZÑ(Ô(ˆØ—9’9˜ZÑ(Ô(ˆØ�YŠY�t‰_Œ_ˆØ—’˜8Ñ$Ô$ˆØŸšÐ#3Ñ4Ô4ˆØ—I’I˜kÑ*Ô*ˆ	àˆà�xÒÑà�a‰KˆFØ�(ˆOˆOŒO˜qÑ ˆOˆO‰Oð
 �XŒ !Ò#Ð#Ø—M’M‘O”O�Ø�Ø�Ø�Ø�‘ð —M’M .Ñ1Ô1�Ø—E’E˜!‘H”H�Ø—U’U˜1‘X”X�Ø˜’:�:å˜8‘}”}¨Ò4Ð4à Ÿš Q™œ˜Ø Ÿš Q™œ˜ØŸš˜q™	œ	˜	ð —O’O AÑ&Ô&Ð&Ø—O’O AÑ&Ô&Ð&Ø—I’I˜c B™hÑ'Ô'Ð'ð   !§%¢%¨¡(¤(™]�Fõ ˜h™-œ-�à˜uÐ$Ð$Ø#' &¨<Ñ"7�E˜$‘KØ˜4”[�ð —M’M‘O”O�Ý˜w¨™{¨B°Ñ3Ô3ð 6ð 6�AØ$ QœKŸOšO¨AÑ.Ô.°°A´Ñ6�B�q‘EØ—F’F˜8 Aœ;¨r°!¬u¨f�FÑ5Ô5Ð5Ð5õ œ	 ! VÑ,Ô,Ð,��AÝ˜w™œð <ð <�AØ# Aœ;Ÿ?š?¨1Ñ-Ô-°°1´Ñ5�DØ—F’F˜8 Aœ;¨b°¬e°d©l�FÑ;Ô;Ð;Ð;àÐ%Ø!*§¢½uÔ?V Ñ!WÔ!W��à×$Ò$ YÑ/Ô/Ð/ØˆIð �XŒ !Ò#Ð#Ý˜˜S 9§=¢=¡?¤?×#6Ò#6Ñ#8Ô#8Ñ8Ñ9Ô9¸BÑ>��à�ð —-’- Ñ"Ô"ˆCð Ð&Ð&Ò&Ð&Ùð ˆMØÐ)à! ^Ò3Ð3Ý&Ð'IÑJÔJÐJà!×.Ò.Ñ0Ô0�FðLð Lð Lð Lð Lð Lõ 9FØ ØØØØØ!ØØ'¨-Ñ7ð	9ñ 	9ô 	9Ñ5�D˜) Q¨ð —’˜q !Ñ$Ô$Ð$Ø$Ÿ=š=™?œ?×.Ò.Ñ0Ô0°NÒB��ð —’˜q !Ñ$Ô$Ð$Ø˜XÒ%Ð%õ Ô*Ñ,Ô,ð )ð )Ø&˜w™yœy˜ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )å  ™;œ;�DØ $× 6Ò 6Ñ 8Ô 8�IØ(Ÿ}š}™œ×2Ò2Ñ4Ô4¸ÒF�HØ$%�Mð ˜]Ñ*ˆMØ�,ÐÐÔ =Ñ0ÐÐÑð
 ˜Ò!Ð!Øà Ò(Ð(Øð ð Øð �uŠu�Q‰xŒx�|Š|‰~Œ~×!Ò!Ñ#Ô#Ð'7Ò7Ð7Øå�4˜)Ñ#Ñ$Ô$Ð'7Ò7Ð7ØðU �xÒÑðX ˆˆc‰
Øˆˆc‰
Ø$ˆˆjÑØ$ˆˆjÑØˆˆd‰Ø ˆˆh‰Ø"0ˆÐÑØ&ˆˆkÑàÐs   Ö/W×W
×W
)r   rP   NrQ   r!   rR   N)rZ   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r—   r   ÚintÚstrrb   rs   r   r‰   r�   r”   r›   r*   Úno_gradr¿   Ú__classcell__)ri   s   @r   r   r   Î   s^  ø€ € € € € ðð ðH ØØ#Ø $Ø"&ØØ%)ð"!ð "!àð"!ð �F‰Nð"!ð ð	"!ð
 ˜‘*ð"!ð ð"!ð  ð"!ð ð"!ð ˜d™
ð"!ð 
ð"!ð "!ð "!ð "!ð "!ð "!ðH!ð !ð !ð#ð #ð #ð
Wð 
Wð 
Wð 
WðVð Vð Vðð ð ð ðð ð ð €U„]�_„_ðLð Lñ „_ðLð Lð Lð Lð Lr   r–   )r   r    r!   r"   )
r*   r   Ú	optimizerr   r   r   Ú__all__r   rN   r   © r   r   ú<module>rË      s»   ðð €€€Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð ˆ)€ð/ð /ð /ð /ð: RTðc*ð c*ð c*ð c*ðLDð Dð Dð Dð DˆIñ Dô Dð Dð Dð Dr   