ó
    EñiÍK  ã                  ól  • S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJrJr  S SKrS SKJr  S SKJr  S S	KJrJrJrJrJr  S S
KJrJrJrJrJr  \(       a  S SKJ r J!r!  \" S5      r"\" S5      r#\$\%\	S4   -  r&\$\%\$S4   -  S-  r'S&S jr(      S'S jr)S(S jr*        S)S jr+        S*S jr,          S+S jr-            S,S jr.            S-S jr/S.S jr0      S/S jr1S0S jr2                S1S jr3S2S jr4          S3S jr5    S4S jr6        S5S jr7                S6S jr8S7S  jr9\Rt                        S8S! j5       r;                  S9S" jr<          S:S# jr=        S;S$ jr>S<S% jr?g)=é    )ÚannotationsN)ÚCallable)Úpartial)ÚAnyÚcastÚNoReturnÚTYPE_CHECKING)Ú	ParamSpecÚTypeVar)ÚTensor)Úis_batchedtensor)Ú_add_batch_dimÚ_remove_batch_dimÚ_vmap_decrement_nestingÚ_vmap_increment_nestingÚlazy_load_decompositions)Ú_broadcast_to_and_flattenÚtree_flattenÚ	tree_map_Útree_unflattenÚTreeSpec)Ú	GeneratorÚIterableÚ_PÚ_R.c                óR   ^ ^• Sm[         R                  " T 5      SU U4S jj5       nU$ )Nzvtorch.func.{grad, vjp, jacrev, hessian} don't yet support saved tensor hooks. Please open an issue with your use case.c                 óœ   >• [         R                  R                  R                  T5         T" U 0 UD6sS S S 5        $ ! , (       d  f       g = f©N)ÚtorchÚautogradÚgraphÚdisable_saved_tensors_hooks)ÚargsÚkwargsÚfÚmessages     €€ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_functorch/vmap.pyÚfnÚ.doesnt_support_saved_tensors_hooks.<locals>.fn5   s5   ø€ ä�^‰^×!Ñ!×=Ñ=¸gÕFÙ�dÐ%˜fÑ%÷ G×F×Fús	   «=½
A)r#   ú_P.argsr$   ú	_P.kwargsÚreturnr   )Ú	functoolsÚwraps)r%   r(   r&   s   ` @r'   Ú"doesnt_support_saved_tensors_hooksr/   /   s1   ù€ ð	3ð ô
 ‡_‚_�QÓ÷&ó ð&ð €Ió    c                ó  ^• [        X5       VVs/ s H  u  p#Uc  M
  UR                  U5      PM     snnm[        T5      S:X  a  [        S5      eT(       a)  [	        U4S jT 5       5      (       a  [        ST S35      eTS   $ s  snnf )Nr   z/vmap: Expected at least one Tensor to vmap overc              3  ó2   >#   • U  H  oTS    :g  v •  M     g7f)r   N© )Ú.0ÚsizeÚbatch_sizess     €r'   Ú	<genexpr>Ú/_validate_and_get_batch_size.<locals>.<genexpr>H   s   øé € ÐJºk°d ;¨q¡>Ö1ºkùs   ƒzTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimension)Úzipr5   ÚlenÚ
ValueErrorÚany)Úflat_in_dimsÚ	flat_argsÚin_dimÚargr6   s       @r'   Ú_validate_and_get_batch_sizerA   >   s–   ø€ ô
 ˜|Ô7ôâ7‰KˆFØó 	ˆ�‰�ÖÙ7ò€Kô
 ˆ;Ó˜1ÓÜÐJÓKÐKÞ”sÔJ¹kÓJ×JÑJÜð$Ø$/ =Ð0IðKó
ð 	
ð �q‰>Ðùós
   �	B�Bc                óD   • [        U [        5      (       a  [        U 5      $ g)Né   )Ú
isinstanceÚtupler:   )Úbatched_outputss    r'   Ú_num_outputsrG   P   s   € Ü�/¤5×)Ñ)Ü�?Ó#Ð#Ør0   c                óz   • [        U [        5      (       d  U 4U-  $ [        U 5      U:w  a  [        U" 5       5      eU $ r   )rD   rE   r:   r;   )ÚvalueÚnum_elementsÚerror_message_lambdas      r'   Ú	_as_tuplerL   Z   s>   € ô
 �eœU×#Ñ#Øˆx˜,Ñ&Ð&Ü
ˆ5ƒz�\Ó!ÜÑ-Ó/Ó0Ð0Ø€Lr0   c                ó4  • [        U [        5      (       d<  [        U [        5      (       d'  [        S[	        U5       SU  S[        U 5       S35      e[        U5      S:X  a  [        S[	        U5       S35      e[        U5      u  p4[        X5      nUc-  [        S[	        U5       SU  S[        U 5      S    S	U S3	5      e[        [        X55      5       GH1  u  nu  px[        U[        5      (       d!  Ub  [        S[	        U5       SU  S
U S35      e[        U[        5      (       a?  [        U[        5      (       d*  [        S[	        U5       SU  S
U S[        U5       S3	5      eUbx  X‡R                  5       * :  d  X‡R                  5       :¼  aQ  [        S[	        U5       SU  S
U SUR                  5        SUR                  5        SUR                  5        S35      eUc  GM  US:  d  GM  X‡R                  5       -  XV'   GM4     [        XS5      UUU4$ )Núvmap(z
, in_dims=zv, ...)(<inputs>): expected `in_dims` to be int or a (potentially nested) tuple matching the structure of inputs, got: Ú.r   z�)(<inputs>): got no inputs. Maybe you forgot to add inputs, or you are trying to vmap over a function with no inputs. The latter is unsupported.zb, ...)(<inputs>): in_dims is not compatible with the structure of `inputs`. in_dims has structure rC   z but inputs has structure z, ...)(<inputs>): Got in_dim=zE for an input but in_dim must be either an integer dimension or None.z' for an input but the input is of type zT. We cannot vmap over non-Tensor arguments, please use None as the respective in_dimz> for some input, but that input is a Tensor of dimensionality z  so expected in_dim to satisfy -z <= in_dim < )rD   ÚintrE   r;   Ú	_get_nameÚtyper:   r   r   Ú	enumerater9   r   ÚdimrA   )	Úin_dimsr#   Úfuncr>   Ú	args_specr=   Úir@   r?   s	            r'   Ú_process_batched_inputsrY   f   sZ  € ô �gœs×#Ñ#¬J°wÄ×,FÑ,FÜØ”I˜d“OÐ$ J¨w¨ið 86ä6:¸7³m°_ÀAðGó
ð 	
ô
 ˆ4ƒy�Aƒ~ÜØ”I˜d“OÐ$ð %)ð *ó
ð 	
ô (¨Ó-Ñ€IÜ,¨WÓ@€LØÑÜØ”I˜d“OÐ$ J¨w¨ið 8%ä%1°'Ó%:¸1Ñ%=Ð$>ð ?Ø&˜K qð*ó
ð 	
ô &¤c¨)Ó&B×CÑˆ‰=ˆCÜ˜&¤#×&Ñ&¨6Ñ+=ÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &0ð1óð ô
 �fœc×"Ñ"¬:°c¼6×+BÑ+BÜØœ	 $›Ð(¨
°7°)ð <Ø$˜XÐ%LÜ˜“9�+ð ;ð<óð ð Ñ 6¯W©W«Y¨JÓ#6¸&ÇGÁGÃIÓ:MÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &%Ø%(§W¡W£Y Kð 0Ø—G‘G“I�;˜m¨C¯G©G«I¨;°að9óð ð Ô &¨1¦*Ø$§w¡w£yÑ0ˆLŒOñ- Dô2 	% \Ó=ØØØð	ð r0   c           	     ó€   • [        X5       VVs/ s H  u  pEUc  UO[        XTU5      PM     nnn[        Xc5      $ s  snnf r   )r9   r   r   )r=   r>   Ú
vmap_levelrW   r?   r@   Úbatched_inputss          r'   Ú_create_batched_inputsr]   ¥   sM   € ô ˜|Ô7ôâ7‰KˆFð ‰~‰¤>°#¸zÓ#JÒJÙ7ð ñ ô ˜.Ó4Ð4ùó	s   �:c           
     ó   • UcC  [        U[        R                  5      (       a"  [        U5      (       a  [	        SU  SU  S35      eU$ [        U[        R                  5      (       d  [	        SU  SU  S[        U5       S35      e[        XX45      $ )NrN   z	, ...): `z5` can not return a BatchedTensor when out_dim is Nonez%` must only return Tensors, got type z3. Did you mean to set out_dims= to None for output?)rD   r   r   r   r;   rR   r   )ÚnameÚbatched_outputr[   Ú
batch_sizeÚout_dims        r'   Ú_maybe_remove_batch_dimrc   ³   s°   € ð �Ü�n¤e§l¡l×3Ñ3Ô8HØ÷9
ñ 9
ô Ø˜�v˜Y t fð -5ð 6óð ð Ðô �n¤e§l¡l×3Ñ3ÜØ�D�6˜ 4 &ð )!Ü!% nÓ!5Ð 6ð 7@ð@ó
ð 	
ô ˜^¸ÓMÐMr0   c                óæ  ^^^• [        U 5      u  nmSUUU4S jjn/ n[        U [        R                  5      (       aX  [        T[        5      (       a  T/nOX[        T[
        5      (       a  [        T5      S:X  a  [        T5      nO(Tc  T/nO!U" 5         O[        TT5      nUc  U" 5         OUn[        XW5       V	V
s/ s H  u  pš[        [        T5      X’X:5      PM     nn	n
[        UT5      $ s  sn
n	f )Nc                 ó^   >• [        S[        T 5       ST S[        T5      S    ST S3	5      e)NrN   ú, ..., out_dims=z`)(<inputs>): out_dims is not compatible with the structure of `outputs`. out_dims has structure rC   z but outputs has structure rO   )r;   rQ   r   )rV   Úout_dimsÚoutput_specs   €€€r'   Úincompatible_errorÚ+_unwrap_batched.<locals>.incompatible_errorÙ   sJ   ø€ ÜØ”I˜d“OÐ$Ð$4°X°Jð ?&ä&2°8Ó&<¸QÑ&?Ð%@ð AØ(˜M¨ð,ó
ð 	
r0   rC   )r,   r   )r   rD   r   r   rP   rE   r:   Úlistr   r9   rc   rQ   r   )rF   rg   r[   ra   rV   Úflat_batched_outputsri   Úflat_out_dimsÚbroadcast_resultr`   rb   Úflat_outputsrh   s    `  `       @r'   Ú_unwrap_batchedrp   Ð   sô   ú€ ô )5°_Ó(EÑ%Ð˜+÷
ñ 
ð ')€MÜ�/¤5§<¡<×0Ñ0ô �h¤×$Ñ$Ø%˜J‰MÜ˜¤%×(Ñ(¬S°«]¸aÓ-?Ü  ›N‰MØÑØ%˜J‰MáÕ ä4°X¸{ÓKÐØÑ#ÙÕ à,ˆMô (+Ð+?Ô'Oô	ò (PÑ#ˆNô 	 Ü�d‹O˜^¸ö	
ñ (Pð	 ñ ô ˜,¨Ó4Ð4ùós   Â<"C-c                ól   • [        U [        5      (       a  g U c  g [        S[        U5       SU S35      e)NrN   rf   zˆ): `out_dims` must be an int, None or a python collection of ints representing where in the outputs the vmapped dimension should appear.)rD   rP   r;   rQ   )ÚxrV   rg   s      r'   Ú_check_int_or_noners   ý   sD   € Ü�!”S×ÑØØ�yØÜ
Ø
”	˜$“Ð Ð 0°°
ð ;+ð 	,óð r0   c                ó`   • [        U [        5      (       a  g [        [        [        XS9U 5        g )N)rV   rg   )rD   rP   r   r   rs   )rg   rV   s     r'   Ú$_check_out_dims_is_int_or_int_pytreeru   	  s&   € ô �(œC× Ñ ØÜŒgÔ(¨tÑGÈÕRr0   c                óÂ   • [        U S5      (       a  U R                  $ [        U [        R                  5      (       a  S[        U R                  5       S3$ [        U 5      $ )NÚ__name__zfunctools.partial(z, ...))Úhasattrrw   rD   r-   r   rQ   rV   Úrepr)rV   s    r'   rQ   rQ     sQ   € Üˆt�Z× Ñ Ø�}‰}Ðä�$œ	×)Ñ)×*Ñ*Ø#¤I¨d¯i©iÓ$8Ð#9¸Ð@Ð@ô
 �‹:Ðr0   c           	     ó®   • [        5         [        X 5        [        XU 5      u  pxpšUb  [        X˜Xt5      n[	        U UUU
UU40 UD6$ [        U UUU	U
UU40 UD6$ r   )r   ru   rY   Ú_get_chunked_inputsÚ_chunked_vmapÚ
_flat_vmap)rV   rU   rg   Ú
randomnessÚ
chunk_sizer#   r$   ra   r=   r>   rW   Úchunks_flat_argss               r'   Ú	vmap_implr�     s—   € ô ÔÜ(¨Ô8Ü5LØ�tó6Ñ2€J˜ið ÑÜ.Ø Zó
Ðô ØØØØØØñ
ð ñ
ð 	
ô ØØØØØØØñ	ð ñ	ð 	r0   c                óP   • X-  nU/U-  nX-  nUS:w  a  UR                  U5        U$ )Nr   )Úappend)Útotal_elemsr   Ún_chunksÚchunk_sizesÚ	remainders        r'   Úget_chunk_sizesrˆ   H  s9   € ØÑ(€HØ�, Ñ)€KàÑ(€IØ�Aƒ~Ø×Ñ˜9Ô%ØÐr0   c                ó´   ^• U4mUb*  [        X#5      n[        [        R                  " U5      5      m[        U4S j[	        X5       5       5      n[	        U6 nU$ )Nc              3  ól   >#   • U  H)  u  pUb  UR                  TUS9OU/[        T5      -  v •  M+     g 7f)N©rT   )Útensor_splitr:   )r4   Útr?   Ú
split_idxss      €r'   r7   Ú&_get_chunked_inputs.<locals>.<genexpr>]  sP   øé € ð 
ò 6‰IˆAð Ñ!ð �N‰N˜:¨6ˆNÑ2ð ðô �*‹oñôò 6ùs   ƒ14)rˆ   rE   Ú	itertoolsÚ
accumulater9   )r>   r=   ra   r   r†   Úflat_args_chunksr€   rŽ   s          @r'   r{   r{   R  sd   ø€ ð �€JØÑÜ% jÓ=ˆÜœ9×/Ò/°Ó<Ó=ˆ
äô 
ô ˜YÔ5ó
ó 
Ðô Ð,Ð-ÐØÐr0   c                óª   • / nS nU  H(  n[        U5      u  pEUR                  U5        Ub  M&  UnM*     [        [        U6 5      nUc  [	        S5      eXb4$ )Nzarg_spec must not be None)r   rƒ   rk   r9   ÚAssertionError)Úchunks_output_Úflat_chunks_outputÚarg_specÚoutputÚflat_outputÚ	arg_specsÚflat_output_chunkss          r'   Ú_flatten_chunks_outputrœ   o  sm   € ð
 +-ÐØ $€HÛ ˆÜ!-¨fÓ!5ÑˆØ×!Ñ! +Ô.ØÓØ ŠHñ	 !ô œcÐ#5Ð6Ó7ÐØÑÜÐ8Ó9Ð9ØÐ'Ð'r0   c                óT  • [        X5      nUc  [        S5      e[        U5      [        U5      :w  a#  [        S[        U5       S[        U5       35      e/ n[        U5       HB  u  pVX%   nUc  [        SU S35      eUR	                  [
        R                  " XvS95        S X%'   MD     U$ )Nzflat_out_dims must not be Nonezlen(flat_out_dims)=z != len(flat_output_chunks)=zchunk at index z must not be Noner‹   )r   r”   r:   rS   rƒ   r   Úcat)rg   r—   r›   rm   r™   Úidxrb   Úchunks           r'   Ú_concat_chunked_outputsr¡   „  sÁ   € ô .¨hÓA€MØÑÜÐ=Ó>Ð>Ü
ˆ=ÓœSÐ!3Ó4Ó4ÜØ!¤# mÓ"4Ð!5Ð5QÔRUÐVhÓRiÐQjÐkó
ð 	
ð !#€KÜ! -Ö0‰ˆØ"Ñ'ˆØ‰=Ü  ?°3°%Ð7HÐ!IÓJÐJØ×Ñœ5Ÿ9š9 UÑ8Ô9à"&ÐÓñ 1ð Ðr0   c                óŽ  • / nUS:X  a  [         R                  " 5       OS nU H[  n	[        U	5      n
[        X5      nUS:X  a  M!  Ub  [         R                  " U5        UR                  [        U UUU
UUU40 UD65        M]     [        U5      u  pÍA[        XM[        [        [        [        S4   S -     U5      5      n[        Xí5      $ )NÚsamer   .)r   Úget_rng_staterk   rA   Úset_rng_staterƒ   r}   rœ   r¡   r   rE   r   r   )rV   r=   r€   rW   rg   r~   r$   Úchunks_outputÚrsÚflat_args_tupler>   ra   r›   r—   r™   s                  r'   r|   r|   ž  sà   € ð  "€MØ",°Ó"6Œ×	Ò	Ô	¸D€BÛ+ˆÜ˜Ó)ˆ	Ü1°,ÓJˆ
ð ˜‹?Ùà‰>Ü×Ò Ô#Ø×ÑÜØØØØØØØñ	ð ñ	ö	
ñ' ,ô@ $:¸-Ó#HÑ Ðð 	ô
 *ØœD¤¤e¬C°¨H¡o¸Ñ&<Ñ!=Ð?QÓRó€Kô
 ˜+Ó0Ð0r0   c                ó,   • U S;  a  [        SU  35      eg )N)ÚerrorÚ	differentr£   zLOnly allowed values for randomness are 'error', 'different', or 'same'. Got )ÚRuntimeError)r~   s    r'   Ú_check_randomness_argr­   Û  s)   € ØÐ7Ó7ÜØZÐ[eÐZfÐgó
ð 	
ð 8r0   c              #  ó^   #   •  [        X5      nUv •  [        5         g ! [        5         f = f7fr   )r   r   )ra   r~   r[   s      r'   Úvmap_increment_nestingr¯   â  s'   é € ð"Ü,¨ZÓDˆ
ØÒäÕ!øÔÕ!üs   ‚-„ “-ž*ª-c                ó�   • [        X5       n[        X#X„5      n	U " U	0 UD6n
[        X¥X�U 5      sS S S 5        $ ! , (       d  f       g = fr   )r¯   r]   rp   )rV   ra   r=   r>   rW   rg   r~   r$   r[   r\   rF   s              r'   r}   r}   í  sG   € ô 
  
Ô	7¸:Ü/Ø Zó
ˆñ  Ð9°&Ñ9ˆÜ˜¸*ÐRVÓW÷ 
8×	7×	7ús	   Œ!7·
Ac                ó$   ^ ^^^• SUU UU4S jjnU$ )Nc                 ó’   >• [        TT5       n[        U TU5      nT" U0 UD6n[        XB5      sS S S 5        $ ! , (       d  f       g = fr   )r¯   Úwrap_batchedÚunwrap_batched)	r#   r$   r[   r\   rF   ra   rV   rU   r~   s	        €€€€r'   ÚinnerÚrestore_vmap.<locals>.inner  s@   ø€ Ü# J°
Ô;¸zÜ)¨$°¸ÓDˆNÙ" NÐ=°fÑ=ˆOÜ! /Ó>÷ <×;×;ús	   Ž 8¸
A)r#   r   r$   r   r,   útuple[Any, Any]r3   )rV   rU   ra   r~   rµ   s   ```` r'   Úrestore_vmapr¸     s   û€ ÷?ò ?ð €Lr0   c                ój   • [        U 5      u  p4[        X5      nUc  [        S5      e[        XSX$5      nU$ )Nzflat_bdims must not be None)r   r   r”   r]   )r#   ÚbdimsÚlevelr>   ÚspecÚ
flat_bdimsÚresults          r'   r³   r³     s=   € ô # 4Ó(�O€IÜ*¨5Ó7€JØÑÜÐ:Ó;Ð;Ü# J¸5ÓG€FØ€Mr0   c                óD  • [        U 5      u  p#[        U5      S:X  a  U S4$ U Vs/ s HO  n[        U[        R                  5      (       a)  [        R
                  R                  R                  XA5      OUS 4PMQ     nn[        U6 u  pg[        Xc5      [        Xs5      4$ s  snf )Nr   r3   )
r   r:   rD   r   r   Ú_CÚ
_functorchrp   r9   r   )r#   r»   r>   r¼   r@   r¾   r˜   rº   s           r'   r´   r´   *  s¤   € Ü" 4Ó(�O€IÜ
ˆ9ƒ~˜ÓØ�Rˆxˆñ óò ˆCô ˜#œuŸ|™|×,Ñ,ô �H‰H×Ñ×/Ñ/°Ô;à�t�òñ ð ð ô ˜�L�M€FÜ˜&Ó'¬¸Ó)DÐDÐDùòs   ¥AB)r%   úCallable[_P, _R]r,   rÂ   )r=   úlist[int | None]r>   ú	list[Any]r,   rP   )rF   úTensor | tuple[Tensor, ...]r,   rP   )rI   ztuple[_R, ...] | _RrJ   rP   rK   zCallable[[], str]r,   ztuple[_R, ...])rU   Ú	in_dims_tr#   útuple[Any, ...]rV   úCallable[..., Any]r,   z1tuple[int, list[int | None], list[Any], TreeSpec])
r=   rÃ   r>   rÄ   r[   rP   rW   r   r,   rÇ   )r_   Ústrr`   r   r[   rP   ra   rP   rb   ú
int | Noner,   ztorch.Tensor)rF   rÅ   rg   Ú
out_dims_tr[   rP   ra   rP   rV   rÈ   r,   rÇ   )rr   r   rV   rÈ   rg   rË   r,   ÚNone)rg   rË   rV   rÈ   r,   rÌ   )rV   rÈ   r,   rÉ   )rV   ú)Callable[_P, Tensor | tuple[Tensor, ...]]rU   rÆ   rg   rË   r~   rÉ   r   rÊ   r#   r*   r$   r+   r,   r   )r„   rP   r   rP   r,   z	list[int])
r>   rÄ   r=   rÃ   ra   rP   r   rÊ   r,   úIterable[tuple[Any, ...]])r•   rÄ   r,   z&tuple[list[tuple[Any, ...]], TreeSpec])rg   rË   r—   r   r›   zlist[tuple[Any, ...] | None]r,   zlist[Tensor])rV   rÍ   r=   rÃ   r€   rÎ   rW   r   rg   rË   r~   rÉ   r$   r   r,   r   )r~   rÉ   r,   rÌ   )ra   rP   r~   rÉ   r,   zGenerator[int, None, None])rV   z*Callable[..., Tensor | tuple[Tensor, ...]]ra   rP   r=   rÃ   r>   rÄ   rW   r   rg   rË   r~   rÉ   r$   r   r,   r   )
rV   zCallable[..., _R]rU   rÆ   ra   rP   r~   rÉ   r,   zCallable[..., tuple[Any, Any]])r#   rÇ   rº   rÆ   r»   rP   r,   rÇ   )r#   r   r»   rP   r,   r·   )@Ú
__future__r   Ú
contextlibr-   r�   Úcollections.abcr   r   Útypingr   r   r   r	   Útyping_extensionsr
   r   r   r   Útorch._C._functorchr   Útorch._functorch.predispatchr   r   r   r   r   Útorch.utils._pytreer   r   r   r   r   r   r   r   r   rP   rE   rÆ   rË   r/   rA   rG   rL   rY   r]   rc   rp   rs   ru   rQ   r�   rˆ   r{   rœ   r¡   r|   r­   Úcontextmanagerr¯   r}   r¸   r³   r´   r3   r0   r'   Ú<module>rØ      sé  ðõ #ã Û Û Ý $Ý ß 5Ó 5ß 0ã Ý Ý 0÷õ ÷õ ö ß3ñ ˆtƒ_€ÙˆTƒ]€à�%˜˜S˜‘/Ñ!€	Ø�5˜˜c˜‘?Ñ" TÑ)€
ôðØ"ðØ/8ðàôô$ð	Øð	àð	ð ,ð	ð ô		ð7Øð7Ø-ð7Ø5Gð7à6ô7ð~5Ø"ð5àð5ð ð5ð ð	5ð
 ô5ðNØ
ðNàðNð ðNð ð	Nð
 ðNð ôNð:*5Ø0ð*5àð*5ð ð*5ð ð	*5ð
 ð*5ð ô*5ôZ	ðSØðSØ 2ðSà	ôSô
ð'Ø
3ð'àð'ð ð'ð ð	'ð
 ð'ð ð'ð ð'ð 	ô'ôTðØðà"ðð ðð ð	ð
 ôð:(Øð(à+ô(ð*Øðàðð 5ðð ô	ð491Ø
3ð91à"ð91ð 0ð91ð ð	91ð
 ð91ð ð91ð ð91ð 	ô91ôz
ð ×Ñð"Øð"Ø!$ð"àó"ó ð"ðXØ
4ðXàðXð #ðXð ð	Xð
 ðXð ðXð ðXð ðXð 	ôXðL	Ø
ð	Ø&/ð	Ø=@ð	ØNQð	à#ô	ðØ
ðØ"+ðØ47ðàôõEr0   