Ë
    âQ(h8  ã                   ó  — d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZ  G d„ d«      Z G d„ d	e	«      Zej$                  j'                  d
eeg«      ej$                  j'                  dddg«      d„ «       «       Zy)é    N)Údeepcopy)Únorm)ÚTestCaseÚassert_array_almost_equalÚassert_array_equalÚassert_array_less)ÚBFGSÚSR1c                   ó*   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zy)Ú
Rosenbrockz�Rosenbrock function.

    The following optimization problem:
        minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
    c                 ó¦   — t         j                  j                  |«      }|j                  dd|«      | _        t        j
                  |«      | _        y )Néÿÿÿÿé   )ÚnpÚrandomÚRandomStateÚuniformÚx0ÚonesÚx_opt)ÚselfÚnÚrandom_stateÚrngs       úo/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_hessian_update_strategy.pyÚ__init__zRosenbrock.__init__   s9   € Ü�i‰i×#Ñ# LÓ1ˆØ—+‘+˜b ! QÓ'ˆŒÜ—W‘W˜Q“Zˆ�
ó    c                 óš   — t        j                  |«      }t        j                  d|dd  |d d dz  z
  dz  z  d|d d z
  dz  z   d¬«      }|S )Ng      Y@r   r   g       @r   )Úaxis)r   ÚasarrayÚsum)r   ÚxÚrs      r   ÚfunzRosenbrock.fun   sZ   € Ü�J‰J�q‹MˆÜ�F‰F�5˜A˜a˜b˜E A c r F¨C¡KÑ/°#Ñ5Ñ5¸¸Q¸sÀ¸V¹ÀcÑ8IÑIØôˆàˆr   c                 ó8  — t        j                  |«      }|dd }|d d }|dd  }t        j                  |«      }d||dz  z
  z  d||dz  z
  z  |z  z
  dd|z
  z  z
  |dd d|d   z  |d   |d   dz  z
  z  dd|d   z
  z  z
  |d<   d|d   |d   dz  z
  z  |d<   |S )	Nr   r   éþÿÿÿé   éÈ   é�  épþÿÿr   )r   r    Ú
zeros_like)r   r"   ÚxmÚxm_m1Úxm_p1Úders         r   ÚgradzRosenbrock.grad   sÛ   € Ü�J‰J�q‹MˆØˆq�ˆWˆØ�#�2�ˆØ�!�"�ˆÜ�m‰m˜AÓˆØ˜B ¨¡™MÑ*Ø˜E B¨¡E™MÑ*¨RÑ/ñ0Ø23°q¸2±v±,ñ?ˆˆAˆbˆ	à˜˜!™‘  !¡ q¨¡t¨Q¡w¡Ñ/°!°q¸1¸Q¹4±x±.Ñ@ˆˆA‰Ø˜˜2™  2¡¨¡Ñ)Ñ*ˆˆB‰Øˆ
r   c                 ó˜  — t        j                  |«      }t        j                  d|d d z  d«      t        j                  d|d d z  d«      z
  }t        j                  t	        |«      |j
                  ¬«      }d|d   dz  z  d|d   z  z
  dz   |d<   d	|d<   d
d|dd dz  z  z   d|dd  z  z
  |dd |t        j                  |«      z   }|S )Nr*   r   r   r)   )Údtypei°  r   r'   r(   éÊ   )r   Ú
atleast_1dÚdiagÚzerosÚlenr2   )r   r"   ÚHÚdiagonals       r   ÚhesszRosenbrock.hess*   sÒ   € Ü�M‰M˜!ÓˆÜ�G‰G�D˜1˜S˜b˜6‘M 1Ó%¬¯©°°a¸¸°f±¸bÓ(AÑAˆÜ—8‘8œC ›F¨!¯'©'Ô2ˆØ˜Q˜q™T 1™W‘n s¨Q¨q©T¡zÑ1°AÑ5ˆ�‰Øˆ�‰Ø˜t a¨¨" g¨q¡jÑ0Ñ0°3¸¸1¸2¸±;Ñ>ˆ��2ˆØ”—‘˜Ó!Ñ!ˆØˆr   N)r'   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r0   r:   © r   r   r   r      s   „ ñó ò
ò
ór   r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestHessianUpdateStrategyc           	      ó:  — d}t        j                  g d¢g d¢g d¢g d¢g d¢g«      }dt        j                  |«      fdt        j                  |«      dz  ft        j                  d	|d	z   «      t        j                  |«      z  t        j                  d	|d	z   «      t        j                  |«      z  f||ff}d
D ]ß  }|D ]Ø  \  }}t	        |dd¬«      t        |d¬«      f}|D ]³  }|j                  ||«       |j                  «       }	t        |	t        j                  |«      «       t        |t        «      r|dk(  rŒZ|j                  t        j                  |«      dz  t        j                  |«      dz   «       |j                  «       }	t        |	|«       Œµ ŒÚ Œá y )Né   )é+   é   é!   é"   é1   )rE   é$   é,   é   rJ   )rF   rJ   é%   r   é   )rG   rK   r   rC   é.   )rH   rJ   rM   rN   é   Úautor'   r   ©r:   Úinv_hessgšd~ÅQJÚskip_update)Ú
init_scaleÚmin_curvatureÚexception_strategy©rT   Úmin_denominatorgñhãˆµøä>gš™™™™™É?)r   ÚarrayÚeyeÚaranger	   r
   Ú
initializeÚ
get_matrixr   Ú
isinstanceÚstrÚupdater   )
r   ÚndimsÚsymmetric_matrixÚinit_scalesÚapprox_typerT   Útrue_matrixÚquasi_newtonÚqnÚBs
             r   Útest_hessian_initializationz5TestHessianUpdateStrategy.test_hessian_initialization8   s€  € àˆÜŸ8™8Ò%9Ú%9Ú%8Ú%7Ú%9ð	%;ó <Ðð ”R—V‘V˜E“]Ð#Ø”—‘�u“ Ñ!Ð"Ü�Y‰Y�q˜% !™)Ó$¤r§v¡v¨e£}Ñ4Ü�Y‰Y�q˜% !™)Ó$¤r§v¡v¨e£}Ñ4ð6àÐ/Ð0ð3ˆð 0ò 	7ˆKØ+6ò 7Ñ'�
˜Kô !%°
Ø37Ø8Eô!Gô !$¨zØ48ô!:ð ;�ð 'ò 7�BØ—M‘M %¨Ô5ØŸ™›�Aä& q¬"¯&©&°«-Ô8ä! *¬cÔ2°zÀVÒ7KØ à—I‘IœbŸg™g e›n¨tÑ3´R·Y±Y¸uÓ5EÈÑ5KÔLØŸ™›�AÜ& q¨+Õ6ñ7ñ7ñ	7r   c           
      óB  — d}t        d«      dt        ft        j                  g d¢«      j	                  t        j
                  «      dt        ft        j                  g d¢g d¢g d¢g«      j	                  t        j
                  «      dt        ft        j                  g d	¢g«      t        j                  d
«      t        ft        j                  g d¢g d¢g d¢g«      t        j                  d«      t        ff}dD ]–  }|D ]�  \  }}}t        |¬«      t        |¬«      f}|D ]l  }|j                  ||«       t        j                  ||¬«      5  |j                  t        j                  |«      t        j                   |«      «       d d d «       Œn Œ‘ Œ˜ y # 1 sw Y   Œ}xY w)Né   g…ëQ¸	@zFfloat\(\) argument must be a string or a (real )?number, not 'complex')gš™™™™™	@gffffff@g333333ó?z3init_scale contains complex elements, must be real.)rD   rE   rF   )rE   rI   rJ   )rF   rJ   rL   )rD   é7   éB   z`If init_scale is an array, it must have the dimensions of the hess/inv_hess: (3, 3). Got (1, 3).)gš™™™™8@rI   rJ   z}If init_scale is an array, it must be symmetric (passing scipy.linalg.issymmetric) to be an approximation of a hess/inv_hess.rQ   ©rT   )Úmatch)ÚcomplexÚ	TypeErrorr   rY   ÚastypeÚ
complex128ÚreÚescapeÚ
ValueErrorr	   r
   r\   ÚpytestÚraisesr`   r   r[   )	r   ra   Úinits_msg_errtyperd   rT   ÚmessageÚ	errortyperf   rg   s	            r   Útest_initialize_catch_illegalz7TestHessianUpdateStrategy.test_initialize_catch_illegalc   sš  € Øˆä% d›mð?ä'ð)ô
 !Ÿh™h¢Ó7×>Ñ>¼r¿}¹}ÓMð.ä'ð)ô
 !Ÿh™hªÚ(6Ú(6ð(8ó 9ç9?¹ÄÇÁÓ9Nð.ä'ð)ô !Ÿh™hª ~Ó6Ü Ÿi™ið#1ó2ô )ð*ô !Ÿh™hªÚ(8Ú(6ð(8ó 9ô !Ÿi™ið )Vó Wô )ð*ð5!ÐðD 0ò 
	DˆKØ2Cò 	DÑ.�
˜G Yô !%°
Ô ;Ü #¨zÔ :ð <�ð 'ò D�BØ—M‘M %¨Ô5ÜŸ™ y¸Ô@ñ DØŸ	™	¤"§'¡'¨%£.´"·)±)¸EÓ2BÔC÷Dð DñDñ	Dñ
	D÷Dð Dús   Å9F	ÆFc                 ó�  — t        d¬«      }g g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d	¢‘g d
¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d ¢‘g d!¢‘g d"¢‘g d#¢‘g d$¢‘g d%¢‘g d&¢‘g d'¢‘g d(¢‘}|D �cg c]  }|j                  |«      ‘Œ }}t        t        |«      d)z
  «      D �cg c]6  }t	        j
                  ||d)z      «      t	        j
                  ||   «      z
  ‘Œ8 }}t        t        |«      d)z
  «      D �cg c]  }||d)z      ||   z
  ‘Œ }}t        ||«      D ](  \  }}	t	        j                  ||	«      d*k  sŒ t        «       ‚ t        d)d+¬,«      t        d)¬-«      fD �]  }
t        |
«      }t        |
«      }|j                  t        |d*   «      d.«       |j                  t        |d*   «      d/«       t        ||«      D ]t  \  }}	|j                  ||	«       |j                  ||	«       |j                  «       }|j                  «       }t        t        j                   j#                  |«      |d0¬1«       Œv |j%                  |t        |«         «      }t'        t)        |z
  «      t)        |«      z  d2«       �Œ y c c}w c c}w c c}w )3NrC   ©r   ©g7ã4Dþ¸?gšGYS‹Û?gþ6zë²NÊ?gÂmÈšìú¶?g`â4é[‹Ã¿©gÆ¥b¥Ç?g@Òñâå©?gL#i_/Ë?gVä!�Ëš?gUž';‰JK?©gZW–‰lË?gÇIaÞãL“¿g:ß™²Ë©?gÑe …¡Ä¡?gîë~Q¡?©g—Œc${„Ê?g §ùt†ó’¿g
	bêøy¡?gÅÀ„:‡Œ¿gQ½5°U‚�?©g½f¾ƒŸÃ?g$+¿Æˆ ¿g~¯Wý¶œ?gº=÷Ô �¿gð>¢¶ËŽ?©g)	·Æ±Á?g�]³¦ÃTœ¿g÷10<@A›?gåñ´üÀU~¿g£½¥@°œ?©gBLxø!%Å?gÓ–„Ut¿gŸ¯Y.�›?giÆ¢éìdp¿gäûþå•?©gBí·v¢$Î?g`lÆÏ·¦?gšƒV;Ð‘?g¾-ýð˜&q?gëøgÌE€?©g§�ef­Ú?gé6—Ñ~ZÂ?gaK4íá†?gÉè€$ìÛ‰?gØPƒÌBùz¿©g–
…cñöÝ?g8Î·OØ�Ë?gl÷asÄ—?g6SÆdF�?gÓ¾ÚÍcÿr¿©g¸éFã?gÛàDôkkÕ?gnü®c·²?g®ë¼2“?g;‘ŽÇon¿©gî‡ŽÓÆ‡ä?gž:ûoÊ�Ù?gÎ²ÝóÀ?g£Íqnî•?gµ›lE“rD¿©gÇÔ]Ùè?gv»á¯ná?gÿÜáÀõòÑ?gßLñ]ï£«?gÇþhî×c?©g^Ò½ó0Ùç?gÛnÝ(â?g-^q'GÕ?gk‡àÝ%¶?gÏ¬[ó™¢r?©g?IË’Êé?gÍõlðå?g(ÙE,½Û?gÎ’Z(™Â?gÄÕ;» „?©g±}éÈ[ë?ge(åÿç?g1ûºÂñß?g÷i&)úÎ?gÄ=·L]dœ?©gBÊš¢më?gåÍ†¡zPç?gJê©zžäà?g«†·½Ò?gŽøÜ à®?©gLD®Š&Fì?g’Á›ºè?gÃJ`ÎÇã?gÆ-‹.ÕÕ?gosí§µ¸?©g¬™kí?gKû0Œ�ê?g³Z�!«å?g61n´-Ü?gä¾öHZ\Æ?)gAÇýýií?gºÙ(ë?g¶?aš3ìæ?g<0€ð¡Dà?g5Œí{µÐ?)gFÛççüí?g’¤µ³ù	ì?gÄ§J¥é}è?g{úcµTyâ?g*—�°Š˜Ô?)g#ÿ‚“#“î?go©9//í?g*�Y\-�ê?g¿ÿE†¯å?gÌ¶²ÈŸÛ?)gŽ)³œß‹î?gb‹8øí?gÏßßûvê?g%“S;ÃÔå?gžUn»óÜ?)gÖóX€ ï?g]¥»ëìí?g|x;gðë?g*#ð,&è?gjmùÌ‚â?)goˆÌ¦-ï?g„Š`ÒÎ_î?gŒÖQÕÑì?g_ríUuàé?gWéI¤ä?)g›âqQ-bï?guü%Øî?gAÍÚ·¤´í?gå
ïrŸë?gƒÉºžç?)g$Y,ê8£ï?gÌ	ÚäðIï?gm±–î?gŠÝˆ8ç1í?gÐ¨Ž�õxê?)gÙâ¿åV­ï?g÷òñ¿K_ï?g _¥ÌÅî?gY‹O0ží?gÐÇêŒvë?)g'Ý–Èçï?g¶GÿËï?g„ ‘ï?gãÂ��, ï?g_™–Ü1î?)gÊíMÂ;ïï?gèo�Útßï?guÍ?Uà¿ï?gºùFtÏzï?gm
ž! ëî?)g€™”'µüï?gI}þ ÷ï?g8Xî»Øêï?g;tÕ— ×ï?g¿@sJþ¯ï?)gºÛõÒð?gfÃõƒð?gt§…ÜVð?g—¸Däªð?g,ÔýÙð?)çÛÍBñÿï?gE1Ô¼þï?gjÂö“1þï?g¯œíLüï?gAäãÉ$ùï?)gÖ”¿Ö  ð?g(ñ¹ìÿï?g—Pf(“ÿï?r’   gW‹ºœ3þï?)gkÊ_k  ð?gsÇQoüÿï?ç›ò×  ð?g½`&@ ð?g�Ø@ ð?)gõ…�óþÿï?gÐ×‡P  ð?g½7†  ð?r“   g‰;æU  ð?)çËPÊÿÿï?g`Pð^ÿÿï?g¿ à½þÿï?g´&q±ýÿï?g»£ƒûÿï?)r”   r”   r”   r”   gƒ~®Ïÿÿï?r   r   g-Cëâ6?©rT   rU   rn   r:   rR   é
   )Údecimalgš™™™™™¹?)r   r0   Úranger7   r   rY   ÚzipÚdotÚArithmeticErrorr	   r
   r   r\   r`   r]   r   ÚlinalgÚinvr:   r   r   )r   ÚprobÚx_listr"   Ú	grad_listÚiÚdelta_xÚ
delta_gradÚsÚyrf   r:   rR   rh   r8   ÚB_trues                   r   Ú!test_rosenbrock_with_no_exceptionz;TestHessianUpdateStrategy.test_rosenbrock_with_no_exception”   sÖ  € ä˜AŒˆð%LÒKð %LÚJð%LâKð%Lò Mð%Lò Mð	%Lò
 Mð%Lò Mð%Lò Kð%Lò Lð%Lò Lð%Lò Lð%Lò Lð%Lò Kð%Lò Kð%Lò Kð%Lò Kð%Lò  Kð!%Lò" Kð#%Lò$ Kð%%Lò& Kð'%Lò( Kð)%Lò* Kð+%Lò, Kð-%Lò. Kð/%Lò0 Kð1%Lò2 Kð3%Lò4 Kð5%Lò6 Kð7%Lò8 Kð9%Lò: Kð;%Lò< Kð=%Lò> Kð?%Lò@ KðA%LòB KðC%LòD KðE%LòF KðG%LòH KðI%LòJ KðK%LˆðN ,2Ö2 a�T—Y‘Y˜q•\Ð2ˆ	Ð2ä!¤# f£+¨a¡-Ó0ö2Øô —8‘8˜F 1 Q¡3™KÓ(¬¯©°&¸±)Ó)<Ó<ð 2ˆð 2ô  %¤S¨£^°AÑ%5Ó6ö8Øð    !¡‘n Y¨q¡\Ó1ð 8ˆ
ð 8ô ˜ Ó,ò 	(‰DˆAˆqÜ�v‰v�a˜‹|˜qÓ Ü%Ó'Ð'ð	(ô "¨Q¸dÔCÜ ¨AÔ.ð0ó 	BˆLä˜LÓ)ˆDÜ Ó-ˆHØ�O‰OœC  q¡	›N¨FÔ3Ø×Ñ¤ F¨1¡I£°
Ô;ä˜G ZÓ0ò K‘��1Ø—‘˜A˜qÔ!Ø—‘  1Ô%Ø—O‘OÓ%�Ø×'Ñ'Ó)�Ü)¬"¯)©)¯-©-¸Ó*:¸AÀrÖJðKð —Y‘Y˜v¤c¨'£lÑ3Ó4ˆFÜœd 1 v¡:Ó.¬t°F«|Ñ;¸SÖAñ	Bùò 3ùò2ùò8s   Â+J9Ã;J>Ä4Kc                 óš  — t        d¬«      }g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}|D �cg c]  }|j                  |«      ‘Œ }}t        t        |«      dz
  «      D �cg c]6  }t	        j
                  ||dz      «      t	        j
                  ||   «      z
  ‘Œ8 }}t        t        |«      dz
  «      D �cg c]  }||dz      ||   z
  ‘Œ }}t        dd¬«      }|j                  t        |d   «      d«       t        t        |«      dz
  «      D ]  }||   }	||   }
|j                  |	|
«       Œ  t	        j                  |j                  «       «      }|d   }	|d   }
|j                  |	|
«       t	        j                  |j                  «       «      }t        ||«       y c c}w c c}w c c}w )NrC   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r   g{®Gáz„?rW   r   r:   é   )r   r0   r˜   r7   r   rY   r
   r\   r`   Úcopyr]   r   ©r   rž   rŸ   r"   r    r¡   r¢   r£   r:   r¤   r¥   rh   Ú	B_updateds                r   Útest_SR1_skip_updatez.TestHessianUpdateStrategy.test_SR1_skip_updateÙ   s·  € ä˜AŒˆâKÚJÚKÚLÚLÚLÚLÚJÚKÚKÚKÚKÚJÚJÚJÚJÚJÚJÚJð%Lˆð( ,2Ö2 a�T—Y‘Y˜q•\Ð2ˆ	Ð2ä!¤# f£+¨a¡-Ó0ö2Øô —8‘8˜F 1 Q¡3™KÓ(¬¯©°&¸±)Ó)<Ó<ð 2ˆð 2ô  %¤S¨£^°AÑ%5Ó6ö8Øð    !¡‘n Y¨q¡\Ó1ð 8ˆ
ð 8ä˜a°Ô6ˆØ�‰œ˜F 1™I›¨Ô/ä”s˜7“| A‘~Ó&ò 	ˆAØ˜‘
ˆAØ˜1‘ˆAØ�K‰K˜˜1Õð	ô
 �G‰G�D—O‘OÓ%Ó&ˆØ�B‰KˆØ�r‰NˆØ�‰�A�qÔÜ—G‘G˜DŸO™OÓ-Ó.ˆ	Ü˜1˜iÕ(ùò% 3ùò2ùò8s   ÁF>Á?;GÃGc                 óR  — t        d¬«      }g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g}|D �cg c]  }|j                  |«      ‘Œ }}t        t        |«      d
z
  «      D �cg c]6  }t	        j
                  ||d
z      «      t	        j
                  ||   «      z
  ‘Œ8 }}t        t        |«      d
z
  «      D �cg c]  }||d
z      ||   z
  ‘Œ }}t        d
d¬«      }|j                  t        |d   «      d«       t        t        |«      d
z
  «      D ]  }||   }	||   }
|j                  |	|
«       Œ  t	        j                  |j                  «       «      }|d   }	|d   }
|j                  |	|
«       t	        j                  |j                  «       «      }t        ||«       y c c}w c c}w c c}w )NrC   r~   r   r€   r�   r‚   rƒ   r„   r…   r   r–   r•   r   r:   )r   r0   r˜   r7   r   rY   r	   r\   r`   rª   r]   r   r«   s                r   Útest_BFGS_skip_updatez/TestHessianUpdateStrategy.test_BFGS_skip_update  s“  € ä˜AŒˆâKÚJÚKÚLÚLÚLÚLðNˆð ,2Ö2 a�T—Y‘Y˜q•\Ð2ˆ	Ð2ä!¤# f£+¨a¡-Ó0ö2Øô —8‘8˜F 1 Q¡3™KÓ(¬¯©°&¸±)Ó)<Ó<ð 2ˆð 2ô  %¤S¨£^°AÑ%5Ó6ö8Øð    !¡‘n Y¨q¡\Ó1ð 8ˆ
ð 8ä˜q°Ô3ˆØ�‰œ˜F 1™I›¨Ô/ä”s˜7“| A‘~Ó&ò 	ˆAØ˜‘
ˆAØ˜1‘ˆAØ�K‰K˜˜1Õð	ô
 �G‰G�D—O‘OÓ%Ó&ˆØ�A‰JˆØ�q‰MˆØ�‰�A�qÔÜ—G‘G˜DŸO™OÓ-Ó.ˆ	Ü˜1˜iÕ(ùò% 3ùò2ùò8s   ¨FÁ;FÂ1F$N)r;   r<   r=   ri   r|   r§   r­   r¯   r?   r   r   rA   rA   5   s"   „ ò#7òV/DòbCBòJ*)óX)r   rA   Ústrategyrd   r:   rR   c                 ó¤   —  | d¬«      }|j                  d|«       t        j                  ddg«      }t        ||z  |j	                  |«      «       y )Nr   rn   r'   )r\   r   rY   r   rš   )r°   rd   r8   Úvs       r   Útest_matmul_equals_dotr³   &  sD   € ñ 	˜AÔ€AØ‡L�L��KÔ Ü
�‰�!�Q�Ó€AÜ�q˜1‘u˜aŸe™e A›hÕ'r   )rt   rª   r   Únumpyr   rw   Únumpy.linalgr   Únumpy.testingr   r   r   r   Úscipy.optimizer	   r
   r   rA   ÚmarkÚparametrizer³   r?   r   r   ú<module>rº      s„   ðÛ 	Ý ã Û Ý ÷Bó Bç &÷&ñ &ôRn) ô n)ðb ‡�×Ñ˜ d¨C [Ó1Ø‡�×Ñ˜¨°Ð(<Ó=ñ(ó >ó 2ñ(r   