Ë
    g^(h'J  ã                   óz  — d dl Z d dlZd dl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Zd dlmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZ e
eef   Ze
eeedf   f   Zd„ Zd	ee	e      d
edefd„Zde
eeedf   f   defd„Z dededeg e!f   defd„Z"dedededeeee   ee   ef   fd„Z#d	ee   d
ee   dedefd„Z$d„ Z%de
eeedf   f   dededededefd„Z&d„ Z'dededdfd„Z(defd„Z)d a* ejV                  «       Z,da-d!„ Z.d"„ Z/d#„ Z0d$„ Z1d%„ Z2d&„ Z3d'„ Z4d(„ Z5e jl                  d)„ «       Z7d*„ Z8d+„ Z9d,„ Z:d-„ Z;y).é    N)Úpartial)ÚAnyÚCallableÚOptionalÚUnion)ÚTensor)Ú_add_batch_dimÚ_remove_batch_dimÚ_vmap_decrement_nestingÚ_vmap_increment_nestingÚis_batchedtensor)Ú_broadcast_to_and_flattenÚtree_flattenÚ	tree_map_Útree_unflattenÚTreeSpec.c                 óJ   ‡ ‡— dŠt        j                  ‰ «      ˆ ˆfd„«       }|S )Nzvtorch.func.{grad, vjp, jacrev, hessian} don't yet support saved tensor hooks. Please open an issue with your use case.c                  ó’   •— t         j                  j                  j                  ‰«      5   ‰| i |¤Žcd d d «       S # 1 sw Y   y xY w©N)ÚtorchÚautogradÚgraphÚdisable_saved_tensors_hooks)ÚargsÚkwargsÚfÚmessages     €€úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_functorch/vmap.pyÚfnz.doesnt_support_saved_tensors_hooks.<locals>.fn-   s=   ø€ ä�^‰^×!Ñ!×=Ñ=¸gÓFñ 	&Ù�dÐ%˜fÑ%÷	&÷ 	&ò 	&ús	   «=½A)Ú	functoolsÚwraps)r   r   r   s   ` @r   Ú"doesnt_support_saved_tensors_hooksr"   '   s1   ù€ ð	3ð ô
 ‡_�_�QÓô&ó ð&ð €Ió    Úflat_in_dimsÚ	flat_argsÚreturnc                 óö   ‡— t        | |«      D ��cg c]  \  }}|�|j                  |«      ‘Œ c}}Št        ‰«      dk(  rt        d«      ‚‰r#t	        ˆfd„‰D «       «      rt        d‰› d�«      ‚‰d   S c c}}w )Nr   z/vmap: Expected at least one Tensor to vmap overc              3   ó.   •K  — | ]  }|‰d    k7  –— Œ y­w)r   N© )Ú.0ÚsizeÚbatch_sizess     €r   ú	<genexpr>z/_validate_and_get_batch_size.<locals>.<genexpr>@   s   øè ø€ ÒJ°d˜4 ;¨q¡>Õ1ÑJùs   ƒzTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimension)Úzipr+   ÚlenÚ
ValueErrorÚany)r$   r%   Úin_dimÚargr,   s       @r   Ú_validate_and_get_batch_sizer4   6   s“   ø€ ô
 ˜|¨YÓ7÷áˆF�CØÐð 	�‰�Õó€Kô
 ˆ;Ó˜1ÒÜÐJÓKÐKÙ”sÓJ¸kÔJÔJÜð$Ø$/ =Ð0IðKó
ð 	
ð �q‰>Ðùós   ‘A5Úbatched_outputsc                 ó:   — t        | t        «      rt        | «      S y)Né   )Ú
isinstanceÚtupler/   )r5   s    r   Ú_num_outputsr:   H   s   € Ü�/¤5Ô)Ü�?Ó#Ð#Ør#   ÚvalueÚnum_elementsÚerror_message_lambdac                 ón   — t        | t        «      s| f|z  S t        | «      |k7  rt         |«       «      ‚| S r   )r8   r9   r/   r0   )r;   r<   r=   s      r   Ú	_as_tupler?   R   s;   € ô �eœUÔ#Øˆx˜,Ñ&Ð&Ü
ˆ5ƒz�\Ò!ÜÑ-Ó/Ó0Ð0Ø€Lr#   Úin_dimsr   Úfuncc                 óü  — t        | t        «      s7t        | t        «      s't        dt	        |«      › d| › dt        | «      › d�«      ‚t        |«      dk(  rt        dt	        |«      › d�«      ‚t        |«      \  }}t        | |«      }|€-t        dt	        |«      › d| › dt        | «      d   › d	|› d�	«      ‚t        t        ||«      «      D �]  \  }\  }}t        |t        «      s |�t        dt	        |«      › d| › d
|› d�«      ‚t        |t        «      r:t        |t        «      s*t        dt	        |«      › d| › d
|› dt        |«      › d�	«      ‚|�x||j                  «        k  s||j                  «       k\  rQt        dt	        |«      › d| › d
|› d|j                  «       › d|j                  «       › d|j                  «       › d�«      ‚|€�Œ|dk  s�Œ	||j                  «       z  ||<   �Œ! t        ||«      |||fS )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 r7   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 < )r8   Úintr9   r0   Ú	_get_nameÚtyper/   r   r   Ú	enumerater.   r   Údimr4   )	r@   r   rA   r%   Ú	args_specr$   Úir3   r2   s	            r   Ú_process_batched_inputsrL   \   sa  € ô �gœsÔ#¬J°wÄÔ,FÜØ”I˜d“OÐ$ J¨w¨ið 86ä6:¸7³m°_ÀAðGó
ð 	
ô
 ˆ4ƒy�A‚~ÜØ”I˜d“OÐ$ð %)ð *ó
ð 	
ô (¨Ó-Ñ€IˆyÜ,¨W°iÓ@€LØÐÜØ”I˜d“OÐ$ J¨w¨ið 8%ä%1°'Ó%:¸1Ñ%=Ð$>ð ?Ø&˜K qð*ó
ð 	
ô &¤c¨)°\Ó&BÓCó 1Ñˆ‰=ˆC�Ü˜&¤#Ô&¨6Ð+=ÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &0ð1óð ô
 �fœcÔ"¬:°c¼6Ô+BÜØœ	 $›Ð(¨
°7°)ð <Ø$˜XÐ%LÜ˜“9�+ð ;ð<óð ð Ð 6¨S¯W©W«Y¨JÒ#6¸&ÀCÇGÁGÃIÒ:MÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &%Ø%(§W¡W£Y Kð 0Ø—G‘G“I�;˜m¨C¯G©G«I¨;°að9óð ð Ò &¨1¤*Ø$ s§w¡w£yÑ0ˆL˜‹Oð-1ô2 	% \°9Ó=ØØØð	ð r#   Ú
vmap_levelc           	      ó€   — t        | |«      D ��cg c]  \  }}|€|nt        |||«      ‘Œ }}}t        ||«      S c c}}w r   )r.   r	   r   )r$   r%   rM   rJ   r2   r3   Úbatched_inputss          r   Ú_create_batched_inputsrP   š   sR   € ô ˜|¨YÓ7÷áˆF�Cð ˆ~‰¤>°#°v¸zÓ#JÑJð€Nñ ô ˜.¨)Ó4Ð4ùó	s   �:c           
      ó  — |€9t        |t        j                  «      rt        |«      rt	        d| › d| › d�«      ‚|S t        |t        j                  «      st	        d| › d| › dt        |«      › d�«      ‚t        ||||«      S )NrC   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?)r8   r   r   r   r0   rG   r
   )ÚnameÚbatched_outputrM   Ú
batch_sizeÚout_dims        r   Ú_maybe_remove_batch_dimrV   ¥   s§   € Ø€Ü�n¤e§l¡lÔ3Ô8HØô9
ô Ø˜�v˜Y t fð -5ð 6óð ð Ðô �n¤e§l¡lÔ3ÜØ�D�6˜ 4 &ð )!Ü!% nÓ!5Ð 6ð 7@ð@ó
ð 	
ô ˜^¨Z¸ÀWÓMÐMr#   Úout_dimsrT   c                 ó¢  ‡‡‡— t        | «      \  }Šˆˆˆfd„}t        | t        j                  «      rCt        ‰t        «      r‰g}nDt        ‰t
        «      rt        ‰«      dk(  r‰}n#‰€‰g}n |«        nt        ‰‰«      }|€ |«        t        |«      D ��	cg c]  \  }}	t        t        ‰«      ||||	«      ‘Œ }
}}	t        |
‰«      S c c}	}w )Nc                  ó^   •— t        dt        ‰ «      › d‰› dt        ‰«      d   › d‰› d�	«      ‚)NrC   ú, ..., out_dims=z`)(<inputs>): out_dims is not compatible with the structure of `outputs`. out_dims has structure r7   z but outputs has structure rD   )r0   rF   r   )rA   rW   Úoutput_specs   €€€r   Úincompatible_errorz+_unwrap_batched.<locals>.incompatible_errorÅ   sJ   ø€ ÜØ”I˜d“OÐ$Ð$4°X°Jð ?&ä&2°8Ó&<¸QÑ&?Ð%@ð AØ(˜M¨ð,ó
ð 	
r#   r7   )r   r8   r   r   rE   r9   r/   r   r.   rV   rF   r   )r5   rW   rM   rT   rA   Úflat_batched_outputsr\   Úflat_out_dimsrS   rU   Úflat_outputsr[   s    `  `      @r   Ú_unwrap_batchedr`   ¼   s×   ú€ ô )5°_Ó(EÑ%Ð˜+ö
ô �/¤5§<¡<Ô0ô �h¤Ô$Ø%˜J‰MÜ˜¤%Ô(¬S°«]¸aÒ-?Ø$‰MØÐØ%˜J‰MáÕ ä1°(¸KÓHˆØÐ ÙÔ ô (+Ð+?ÀÓ'O÷	ñ $ˆN˜Gô 	 Ü�d‹O˜^¨Z¸ÀWõ	
ð€Lñ ô ˜,¨Ó4Ð4ùós   Â"Cc                 ó`   — t        | t        «      ry | €y t        dt        |«      › d|› d�«      ‚)NrC   rZ   zˆ): `out_dims` must be an int, None or a python collection of ints representing where in the outputs the vmapped dimension should appear.)r8   rE   r0   rF   )ÚxrA   rW   s      r   Ú_check_int_or_nonerc   æ   sA   € Ü�!”SÔØØ€yØÜ
Ø
”	˜$“Ð Ð 0°°
ð ;+ð 	,óð r#   c                 ó^   — t        | t        «      ry t        t        t        || ¬«      | «       y )N)rA   rW   )r8   rE   r   r   rc   )rW   rA   s     r   Ú$_check_out_dims_is_int_or_int_pytreere   ò   s#   € Ü�(œCÔ ØÜŒgÔ(¨t¸hÔGÈÕRr#   c                 ó®   — t        | d«      r| j                  S t        | t        j                  «      rdt        | j                  «      › d�S t        | «      S )NÚ__name__zfunctools.partial(z, ...))Úhasattrrg   r8   r    r   rF   rA   Úrepr)rA   s    r   rF   rF   ø   sK   € Üˆt�ZÔ Ø�}‰}Ðä�$œ	×)Ñ)Ô*Ø#¤I¨d¯i©iÓ$8Ð#9¸Ð@Ð@ô
 �‹:Ðr#   Fc                  óf  ‡— t         ry t        5  t         r
	 d d d «       y t        j                  j	                  dd«      dk(  rnda 	 d d d «       y t
        j                  j                  ddd«      addl	m
Š ˆfd	„}  | t
        j                  j                  j                  j                  «        | t
        j                  j                  j                  j                  «        | t
        j                  j                  j                   j                  «        | t
        j                  j                  j"                  j                  «        | t
        j                  j                  j$                  j                  «        | t
        j                  j                  j&                  j                  «        | t
        j                  j                  j(                  j                  «        | t
        j                  j                  j*                  j                  «       da d d d «       y # 1 sw Y   y xY w)
NÚPYTORCH_JITÚ1TÚatenÚIMPLÚFuncTorchBatchedr   )Údecomposition_tablec                 ó\   •— | ‰v rt         j                  | ‰|    «       y t        d| › �«      ‚)Nz!could not find decomposition for )ÚVMAP_DECOMPOSITIONS_LIBÚimplÚRuntimeError)Údecomprp   s    €r   Ú#_register_python_decomposition_vmapzElazy_load_decompositions.<locals>._register_python_decomposition_vmap$  s5   ø€ ØÐ,Ñ,Ü'×,Ñ,¨VÐ5HÈÑ5PÕQä"Ð%FÀvÀhÐ#OÓPÐPr#   )ÚDECOMPOSITIONS_LOADEDÚDECOMPOSITIONS_LOCKÚosÚenvironÚgetr   ÚlibraryÚLibraryrr   Útorch._decomprp   Úopsrm   Úmse_loss_backwardÚdefaultÚsmooth_l1_loss_backwardÚhuber_loss_backwardÚnll_loss_forwardÚnll_loss2d_forwardÚnll_loss_backwardÚnll_loss2d_backwardÚaddr)rv   rp   s    @r   Úlazy_load_decompositionsr‰     sw  ø€ åØä	ñ $%Ý Ø÷$%ð $%ô —
‘
—‘˜}¨cÓ2°cÒ9¸iØ$(Ð!Ø÷$%ð $%ô #(§-¡-×"7Ñ"7Ø�FÐ.ó#
Ðõ 	6ô	Qñ 	,¬E¯I©I¯N©N×,LÑ,L×,TÑ,TÔUÙ+Ü�I‰I�N‰N×2Ñ2×:Ñ:ô	
ñ 	,¬E¯I©I¯N©N×,NÑ,N×,VÑ,VÔWÙ+¬E¯I©I¯N©N×,KÑ,K×,SÑ,SÔTÙ+¬E¯I©I¯N©N×,MÑ,M×,UÑ,UÔVÙ+¬E¯I©I¯N©N×,LÑ,L×,TÑ,TÔUÙ+¬E¯I©I¯N©N×,NÑ,N×,VÑ,VÔWÙ+¬E¯I©I¯N©N×,?Ñ,?×,GÑ,GÔHà $Ð÷I$%÷ $%ñ $%ús   �H' 'H'ÁGH'È'H0c           	      ó¸   — t        «        t        || «       t        ||| «      \  }}}	}
|�t        |	|||«      }t	        | |||
||fi |¤ŽS t        | |||	|
||fi |¤ŽS r   )r‰   re   rL   Ú_get_chunked_inputsÚ_chunked_vmapÚ
_flat_vmap)rA   r@   rW   Ú
randomnessÚ
chunk_sizer   r   rT   r$   r%   rJ   Úchunks_flat_argss               r   Ú	vmap_implr‘   8  s¡   € ÜÔÜ(¨°4Ô8Ü5LØ��tó6Ñ2€J�˜i¨ð ÐÜ.Ø�| Z°ó
Ðô ØØØØØØñ
ð ñ
ð 	
ô ØØØØØØØñ	ð ñ	ð 	r#   c                 óV   — | |z  x}}|g|z  }| |z  }|dk7  r|j                  |«       |S )Nr   )Úappend)Útotal_elemsr�   Ún_chunksÚchunk_sizesÚ	remainders        r   Úget_chunk_sizesr˜   Z  sB   € Ø%¨Ñ3Ð3€HˆxØ�, Ñ)€Kà˜jÑ(€IØ�A‚~Ø×Ñ˜9Ô%ØÐr#   c                 ó²   ‡— |fŠ|�*t        ||«      }t        t        j                  |«      «      Št        ˆfd„t	        | |«      D «       «      }t	        |Ž }|S )Nc              3   ól   •K  — | ]+  \  }}|�|j                  ‰|¬«      n|gt        ‰«      z  –— Œ- y ­w©N)rI   )Útensor_splitr/   )r*   Útr2   Ú
split_idxss      €r   r-   z&_get_chunked_inputs.<locals>.<genexpr>j  sQ   øè ø€ ò 
ñ ˆAˆvð Ð!ð �N‰N˜:¨6ˆNÔ2ð ðô �*‹oñóñ
ùs   ƒ14)r˜   r9   Ú	itertoolsÚ
accumulater.   )r%   r$   rT   r�   r–   Úflat_args_chunksr�   rž   s          @r   r‹   r‹   d  sf   ø€ Ø�€JØÐÜ% j°*Ó=ˆÜœ9×/Ñ/°Ó<Ó=ˆ
äó 
ô ˜Y¨Ó5ô
ó 
Ðô Ð,Ð-ÐØÐr#   c                 óŠ   — g }d }| D ]&  }t        |«      \  }}|j                  |«       |�Œ%|}Œ( t        t        |Ž «      }||fS r   )r   r“   Úlistr.   )Úchunks_output_Úflat_chunks_outputÚarg_specÚoutputÚflat_outputÚ	arg_specsÚflat_output_chunkss          r   Ú_flatten_chunks_outputr«   |  sd   € ð ÐØ€HØ ò !ˆÜ!-¨fÓ!5Ñˆ�YØ×!Ñ! +Ô.ØÑØ ‰Hð	!ô œcÐ#5Ð6Ó7ÐØ˜xÐ'Ð'r#   c                 óÖ   — t        | |«      }t        |«      t        |«      k(  sJ ‚g }t        |«      D ]3  \  }}|j                  t	        j
                  ||   |¬«      «       d ||<   Œ5 |S r›   )r   r/   rH   r“   r   Úcat)rW   r¦   rª   r^   r¨   ÚidxrU   s          r   Ú_concat_chunked_outputsr¯   �  sv   € ä-¨h¸ÓA€MÜˆ}Ó¤Ð%7Ó!8Ò8Ð8Ð8Ø€KÜ! -Ó0ò '‰ˆˆWØ×Ñœ5Ÿ9™9Ð%7¸Ñ%<À'ÔJÔKà"&Ð˜3Òð'ð
 Ðr#   c                 ó.  — g }|dk(  rt        j                  «       nd }|D ]L  }	t        ||	«      }
|
dk(  rŒ|�t        j                  |«       |j	                  t        | |
||	|||fi |¤Ž«       ŒN t        |«      \  }}~t        |||«      }t        ||«      S )NÚsamer   )	r   Úget_rng_stater4   Úset_rng_stater“   r�   r«   r¯   r   )rA   r$   r�   rJ   rW   rŽ   r   Úchunks_outputÚrsr%   rT   rª   r¦   r¨   s                 r   rŒ   rŒ   ›  sÆ   € ð €MØ",°Ò"6Œ×	Ñ	Ô	¸D€BØ%ò 
ˆ	Ü1°,À	ÓJˆ
ð ˜Š?Øàˆ>Ü×Ñ Ô#Ø×ÑÜØØØØØØØñ	ð ñ	õ	
ð%
ô> $:¸-Ó#HÑ Ð˜ð 	ô *¨(°HÐ>PÓQ€Kô ˜+ xÓ0Ð0r#   c                 ó(   — | dvrt        d| › �«      ‚y )N)ÚerrorÚ	differentr±   zLOnly allowed values for randomness are 'error', 'different', or 'same'. Got )rt   )rŽ   s    r   Ú_check_randomness_argr¹   Í  s)   € ØÐ7Ñ7ÜØZÐ[eÐZfÐgó
ð 	
ð 8r#   c              #   ó`   K  — 	 t        | |«      }|–— t        «        y # t        «        w xY w­wr   )r   r   )rT   rŽ   rM   s      r   Úvmap_increment_nestingr»   Ô  s*   è ø€ ð"Ü,¨Z¸ÓDˆ
ØÒäÕ!øÔÕ!üs   ‚.„ ”.Ÿ+«.c                 ó�   — t        ||«      5 }t        ||||«      }	 | |	i |¤Ž}
t        |
|||| «      cd d d «       S # 1 sw Y   y xY wr   )r»   rP   r`   )rA   rT   r$   r%   rJ   rW   rŽ   r   rM   rO   r5   s              r   r�   r�   Ý  s^   € ô 
  
¨JÓ	7ð X¸:Ü/Ø˜) Z°ó
ˆñ  Ð9°&Ñ9ˆÜ˜°¸*ÀjÐRVÓW÷X÷ Xò Xús	   �%<¼Ac                 ó   ‡ ‡‡‡— ˆˆ ˆˆfd„}|S )Nc                  óŠ   •— t        ‰‰«      5 }t        | ‰|«      } ‰|i |¤Ž}t        ||«      cd d d «       S # 1 sw Y   y xY wr   )r»   Úwrap_batchedÚunwrap_batched)	r   r   rM   rO   r5   rT   rA   r@   rŽ   s	        €€€€r   Úinnerzrestore_vmap.<locals>.innerý  sK   ø€ Ü# J°
Ó;ð 	?¸zÜ)¨$°¸ÓDˆNÙ" NÐ=°fÑ=ˆOÜ! /°:Ó>÷	?÷ 	?ò 	?ús	   Ž!9¹Ar)   )rA   r@   rT   rŽ   rÁ   s   ```` r   Úrestore_vmaprÂ   ü  s   û€ ÷?ð €Lr#   c                 ó^   — t        | «      \  }}t        ||«      }|€J ‚t        ||||«      }|S r   )r   r   rP   )r   ÚbdimsÚlevelr%   ÚspecÚ
flat_bdimsÚresults          r   r¿   r¿     s=   € Ü" 4Ó(�O€IˆtÜ*¨5°$Ó7€JØÐ!Ð!Ð!Ü# J°	¸5À$ÓG€FØ€Mr#   c                 ó<  — t        | «      \  }}t        |«      dk(  r| dfS |D �cg c]J  }t        |t        j                  «      r*t        j
                  j                  j                  ||«      n|d f‘ŒL }}t        |Ž \  }}t        ||«      t        ||«      fS c c}w )Nr   r)   )
r   r/   r8   r   r   Ú_CÚ
_functorchr`   r.   r   )r   rÅ   r%   rÆ   r3   rÈ   r§   rÄ   s           r   rÀ   rÀ     s¦   € Ü" 4Ó(�O€IˆtÜ
ˆ9ƒ~˜ÒØ�Rˆxˆð öð ô ˜#œuŸ|™|Ô,ô �H‰H×Ñ×/Ñ/°°UÔ;à�t�ñð€Fð ô ˜�L�M€FˆEÜ˜& $Ó'¬¸¸tÓ)DÐDÐDùòs   ¥AB)<Ú
contextlibr    rŸ   ry   Ú	threadingr   Útypingr   r   r   r   r   r   Útorch._C._functorchr	   r
   r   r   r   Útorch.utils._pytreer   r   r   r   r   rE   r9   Ú	in_dims_tÚ
out_dims_tr"   r£   r4   r:   Ústrr?   rL   rP   rV   r`   rc   re   rF   rw   ÚLockrx   rr   r‰   r‘   r˜   r‹   r«   r¯   rŒ   r¹   Úcontextmanagerr»   r�   rÂ   r¿   rÀ   r)   r#   r   ú<module>rÖ      sG  ðó Û Û Û 	Û Ý ß 1Ó 1ã Ý ÷õ ÷õ ð �#�u�*Ñ€	Ø�3˜˜c 3˜h™Ð'Ñ(€
òðØ�x ‘}Ñ%ðØ26ðàóð$ %¨°°f¸c°kÑ0BÐ(BÑ"Cð Èó ðØðØ!ðØ9AÀ"ÀcÀ'Ñ9Jðà
óð7Øð7Ø#ð7Ø+3ð7à
ˆ3��S‘	˜4 ™9 hÐ.Ñ/ó7ð|5Ø�s‘)ð5Ø(,¨S©	ð5Ø?Bð5à
ó5òNð.'5Ø˜6 5¨°¨Ñ#5Ð5Ñ6ð'5àð'5ð ð'5ð ð	'5ð
 ð'5ð ó'5òT	ðS°:ð SÀXð SÐRVó Sð
�Hó 
ð Ð Ø$�i—n‘nÓ&Ð ØÐ ò
)%òXòDòò0(ò"
ò.1òd
ð ×Ññ"ó ð"òXò>òóEr#   