Ë
    ÄÓ^jðG  ã                   ó  — d dl Z d dlZd dlZd dlmZ d dlZd dlmZmZmZmZ d dl	m
Z
 ddlmZmZmZ ej                  Z e
d«      ddd	œd
ej                   dedz  dej$                  ej&                  ej$                     z  dz  defd„«       Zdeej,                  z  dedededef
d„Zd„ Zedej4                  e   dee   dedededej<                  diZd„ Z d„ Z! e«       Z"dejF                  defd„Z$d ee%   dee   fd!„Z&y)"é    N)ÚGenericAlias)ÚdeviceÚdtypeÚTensorÚtypes)Ú
exposed_iné   )Ú_resolve_opaque_type_infoÚis_opaque_reference_typeÚis_opaque_typeztorch.library© )Úop_nameÚtagsÚprototype_functionr   r   Úreturnc               ó†  ‡‡‡ ‡!‡"‡#‡$— d}| j                   Š dŠ!t        j                  | «      Š"|€d}nt        |t        j
                  «      r|f}t        j
                  j                  |v }t        j
                  j                  |v }|r|rt        d«      ‚t        |«      t        urt        |«      }ˆ"fd„Šdt        fˆˆ ˆ!fd„Šdt        t        t           t        z  d	f   d
t        t        t        j                  d	f   t        f   fˆ#fd„Š$dt        t           t        z  d
t        t        j                  t        f   fˆˆ$fd„Š#g }t!        «       }d}	d}
d}d}g }g }t#        ‰"j$                  j'                  «       «      D �]<  \  }\  }}t)        |«      s ‰d«       |j*                  t        j,                  j.                  k(  r|	s|j1                  d«       d}	|j2                  t        j,                  j4                  u r ‰d|› d�«        ‰#|j2                  «      \  }}d}|t6        vråt9        |«      rt;        |«      j<                  }nÍ|t        j>                  j@                  k(  r ‰d|› d�«       n£tC        |d«      r_|jD                  t        u rMtG        |«      }d}|t6        v rd|› d�} ‰d|› d|j2                  › d|› dt6        jI                  «       › d�	«       n8 ‰d|› d|j2                  › dt6        jI                  «       › d�«       n	t6        |   }|€t        d|› �«      ‚|j*                  t        j,                  jJ                  k(  r|
€	|}
|}d|› �}d}t        |«      t        u r8||k7  rtM        d «      ‚|jO                  d!«      rNd}d"|› d#|tQ        d!«      d › �}n7||v r3d}|jO                  d!«      s ‰d|› d$�«       d"|› d#|tQ        d!«      d › �}|rg|re|j*                  t        j,                  j.                  k7  r ‰d%«       |d"|› d#�k7  r ‰d&«       |j1                  d|› �«       |j1                  |«       |jS                  |«       |jT                  t        j,                  j4                  u r|j1                  |› d'|› �«       �Œd}|jT                  �%t        |jT                  tV        tX        t        f«      rt        |jT                  «      }nÇt        |jT                  t        t        jZ                  f«      rd(|jT                  › d(�}nŒt        |jT                  t        j\                  «      rFt        |jT                  «      }d)}|jO                  |«      st        d*|›d+�«      ‚|tQ        |«      d }n" ‰d|› d,t        |jT                  «      › d-�«       |j1                  |› d'|› d.|› �«       �Œ? ||k7  r't!        |«      |z
  }tQ        |«      d/kD  r ‰|› d0�«       |rC|
€ ‰d1«       |d!k7  r ‰d2«       t        |«      t        u st!        |«      |
hk7  r ‰d3|› d�«       |rtQ        |«      d/k(  r ‰d4«        ‰#‰"j^                  «      \  }}|rta        |||‰«      }ntc        |‰«      }|r|d!k7  r ‰d5«       d6|› d#�}|�|› d7d8je                  |«      › d9|› �S d7d8je                  |«      › d9|› �S ):a,  Parses the schema of a given function with type hints. The schema is inferred from the
    function's type hints, and can be used to define a new operator.

    We make the following assumptions:

    * None of the outputs alias any of the inputs or each other.
    * | String type annotations "device, dtype, Tensor, types" without library specification are
      | assumed to be torch.*. Similarly, string type annotations "Optional, List, Sequence, Union"
      | without library specification are assumed to be typing.*.
    * | Only the args listed in ``mutates_args`` are being mutated. If ``mutates_args`` is "unknown",
      | it assumes that all inputs to the operator are being mutates.

    Callers (e.g. the custom ops API) are responsible for checking these assumptions.

    Args:
        prototype_function: The function from which to infer a schema for from its type annotations.
        op_name (Optional[str]): The name of the operator in the schema. If ``name`` is None, then the
            name is not included in the inferred schema. Note that the input schema to
            ``torch.library.Library.define`` requires an operator name.
        mutates_args ("unknown" | Iterable[str]): The arguments that are mutated in the function.
        tags (Tag | Sequence[Tag] | None): one or more tags to apply to the
            inferred schema. Use ``torch.Tag.inplace`` or ``torch.Tag.out`` to
            infer the conventional aliasing for those operator kinds.

    Returns:
        The inferred schema.

    Example:
        >>> def foo_impl(x: torch.Tensor) -> torch.Tensor:
        >>>     return x.sin()
        >>>
        >>> infer_schema(foo_impl, op_name="foo", mutates_args={})
        foo(Tensor x) -> Tensor
        >>>
        >>> infer_schema(foo_impl, mutates_args={})
        (Tensor x) -> Tensor
    ÚunknownNr   z:torch.Tag.inplace and torch.Tag.out are mutually exclusivec                 ó(   •— t        d| › d‰› d�«      ‚)Nzinfer_schema(func): z Got func with signature ú))Ú
ValueError)ÚwhatÚsigs    €úf/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_library/infer_schema.pyÚerror_fnzinfer_schema.<locals>.error_fnY   s    ø€ ÜÐ/°¨vÐ5NÈsÈeÐSTÐUÓVÐVó    Úannotation_typec           
      óÖ   •— 	 t        | ‰‰«      S # t        $ r} ‰d| › d|› d�«       Y d }~y d }~wt        $ r/} ‰d| › dt        |«      j                  › d|› d�«       Y d }~y d }~ww xY w)NzUnsupported type annotation z. It is not a type. (zà). If you are using 'from __future__ import annotations', note that annotations are evaluated lazily as strings; make sure all types referenced in annotations are importable at module scope, not only inside a local function.z: r   )ÚevalÚ	NameErrorÚ	ExceptionÚtypeÚ__name__)r   Úer   Ú
pf_globalsÚ	pf_localss     €€€r   Úconvert_type_stringz)infer_schema.<locals>.convert_type_string\   s”   ø€ ð	Ü˜¨°YÓ?Ð?øÜò 	ÙØ.¨Ð.?ð @Ø�3ð +ð,÷ñ ûô ò 	ÙØ.¨Ð.?ð @Ü˜“G×$Ñ$Ð% R¨ s¨!ð-÷ñ ûð	ús   ƒ �	A(™-­A(¹%A#Á#A(Útys.r   c                 ó‚   •— g }d}| D ]#  } ‰|«      \  }}|j                  |«       ||z  }Œ% |rt        |«      dfS | dfS )NFT)ÚappendÚtuple)r'   ÚresÚchangedÚtyÚ
ty_changedÚunstringify_types        €r   Úunstringify_typesz'infer_schema.<locals>.unstringify_typesn   s_   ø€ ð ˆØˆØò 	"ˆBÙ-¨bÓ1‰NˆB�
Ø�J‰J�rŒNØ�zÑ!‰Gð	"ñ Ü˜“:˜tÐ#Ð#à˜�:Ðr   r-   c                 óÊ   •— t        | t        «      r
 ‰| «      dfS t        j                  | «      x}r. ‰t        j                  | «      «      \  }}|rt        ||«      dfS | dfS )NTF)Ú
isinstanceÚstrÚtypingÚ
get_originÚget_argsr   )r-   ÚoriginÚargsÚargs_changedr&   r0   s       €€r   r/   z&infer_schema.<locals>.unstringify_type|   sl   ø€ ô �bœ#ÔÙ& rÓ*¨DÐ0Ð0Ü×(Ñ(¨Ó,Ð,ˆVÐ,Ù!2´6·?±?À2Ó3FÓ!GÑˆD�,ÙÜ# F¨DÓ1°4Ð7Ð7à�5ˆyÐr   Fz>We do not support positional-only args, varargs, or varkwargs.Ú*Tz
Parameter z must have a type annotation.zª's type cannot be inferred from the schema as it is a ScriptObject. Please manually specify the schema using the `schema=` kwarg with the actual type of the ScriptObject.Ú
__origin__z

zFor example, z.

z has unsupported type z]. We do not support Tuple inputs in schema. As a workaround, please try to use List instead. zThe valid types are: ú.ú. The valid types are: zschema_type is None for param Úazomutates_args must either be a sequence of the names of the arguments that are mutated or the string 'unknown'. r   zTensor(aú!)zM is in mutable_args but only Tensors or collections of Tensors can be mutatedz<torch.Tag.out requires mutable arguments to be keyword-only.zBtorch.Tag.out only supports mutable keyword-only Tensor arguments.ú ú"ztorch.zdtype repr z must start with 'torch.'z' has an unsupported default value type z;. Please file an issue on GitHub so we can prioritize this.ú=r   z» in mutates_args were not found in the custom op's signature. mutates_args should contain the names of all args that the custom op mutates, or just the string 'unknown' if you don't know.z8torch.Tag.inplace requires a positional Tensor argument.zHtorch.Tag.inplace requires the first positional argument to be a Tensor.z^torch.Tag.inplace requires mutates_args to contain exactly the first positional argument, got zItorch.Tag.out requires at least one mutable keyword-only Tensor argument.zDtorch.Tag.inplace requires the return annotation to be torch.Tensor.úTensor(ú(ú, z) -> )3Ú__globals__ÚinspectÚ	signaturer2   ÚtorchÚTagÚinplaceÚoutÚAssertionErrorr!   r3   r*   Úobjectr4   ÚAnyÚboolÚsetÚ	enumerateÚ
parametersÚitemsÚsupported_paramÚkindÚ	ParameterÚKEYWORD_ONLYr)   Ú
annotationÚemptyÚSUPPORTED_PARAM_TYPESr   r
   Ú
class_nameÚ_CÚScriptObjectÚhasattrr;   Útuple_to_listÚkeysÚPOSITIONAL_OR_KEYWORDr   Ú
startswithÚlenÚaddÚdefaultÚintÚfloatr   r   Úreturn_annotationÚ_infer_out_return_schemaÚparse_returnÚjoin)%r   Úmutates_argsr   r   ÚUNKNOWN_MUTATESÚ
is_inplaceÚis_outÚparamsÚ	seen_argsÚsaw_kwarg_only_argÚfirst_positional_arg_nameÚ first_positional_arg_schema_typeÚfirst_positional_arg_aliasÚout_arg_aliasesÚout_arg_namesÚidxÚnameÚparamr   Ú_Úschema_typeÚ	list_typeÚexample_type_strÚ
is_mutatedÚdefault_reprÚ
dtype_reprÚ	torch_dotÚmutates_args_not_seenri   Úretr&   r   r$   r%   r   r/   r0   s%                                 @@@@@@@r   Úinfer_schemar†      s5  þ€ ð\  €OØ#×/Ñ/€JØ€Iô ×
Ñ
Ð.Ó
/€CØ€|Ø‰Ü	�Dœ%Ÿ)™)Ô	$ØˆwˆÜ—‘×"Ñ" dÐ*€JÜ�Y‰Y�]‰]˜dÐ"€FÙ‘fÜØHó
ð 	
ô ˆLÓ¤Ñ$Ü˜\Ó*ˆôWð¬S÷ ð$Ü”4œ‘<¤#Ñ% sÐ*Ñ+ðä	Œu”V—Z‘Z �_Ñ%¤tÐ+Ñ	,õðœT¤&™\¬CÑ/ð ´E¼&¿*¹*ÄdÐ:JÑ4Kö ð €FÜ“€IØÐØ $ÐØ'+Ð$Ø!%ÐØ€OØ€MÜ'¨¯©×(<Ñ(<Ó(>Ó?ó oBÑˆ‰]ˆd�EÜ˜uÔ%ÙÐUÔVà�:‰:œ×*Ñ*×7Ñ7Ò7á%Ø—‘˜cÔ"Ø%)Ð"à×Ñœw×0Ñ0×6Ñ6Ñ6Ù�z $ Ð'DÐEÔFñ .¨e×.>Ñ.>Ó?Ñˆ˜àˆØÔ"7Ñ7Ü˜oÔ.Ü7¸ÓH×SÑS‘Ø ¤E§H¡H×$9Ñ$9Ò9ÙØ   ð 'Zð Zõô ˜¨Ô6Ø#×.Ñ.´%Ñ7ä)¨/Ó:�	Ø#)Ð àÔ 5Ñ5Ø)6°y°kÀÐ'GÐ$ÙØ   Ð&<¸U×=MÑ=MÐ<Nð Orà'Ð(Ø+Ô,A×,FÑ,FÓ,HÐ+IÈðLõñ Ø   Ð&<¸U×=MÑ=MÐ<Nð O,Ü,A×,FÑ,FÓ,HÐ+IÈðLõô
 0°Ñ@ˆKàÐÜ Ð#AÀ$ÀÐ!HÓIÐIð �J‰Jœ'×+Ñ+×AÑAÒAØ)Ð1à(,Ð%Ø/:Ð,Ø+,¨S¨E¨Ð&àˆ
Ü�Ó¤Ñ$Ø˜Ò.Ü ðOóð ð ×%Ñ% hÔ/Ø!�
Ø (¨¨¨R°¼CÀ»M¸OÐ0LÐ/MÐN‘Ø�\Ñ!ØˆJØ×)Ñ)¨(Ô3ÙØ   Ð&sÐtôð % S E¨¨K¼¸H»¸Ð,HÐ+IÐJˆKÙ‘jØ�z‰zœW×.Ñ.×;Ñ;Ò;ÙÐWÔXØ ¨¨¨RÐ0Ò0ÙØXôð ×"Ñ" Q s e 9Ô-Ø× Ñ  Ô&Ø�‰�dÔØ�=‰=œG×-Ñ-×3Ñ3Ñ3à�M‰M˜[˜M¨¨4¨&Ð1Ö2àˆLØ�}‰}Ð$¬
°5·=±=Ä3ÌÌtÐBTÔ(UÜ" 5§=¡=Ó1‘Ü˜EŸM™M¬C´·±Ð+>Ô?Ø!" 5§=¡= /°Ð3‘Ü˜EŸM™M¬5¯;©;Ô7Ü  §¡Ó/�
Ø$�	Ø!×,Ñ,¨YÔ7Ü(Ø% j ^Ð3LÐMóð ð  *¬#¨i«.Ð*:Ð;‘áØ   Ð&MÌdÐSX×S`ÑS`ÓNaÐMbð cPð Qôð
 �M‰M˜[˜M¨¨4¨&°°,°Ð@ÖAð_oBð` �Ò&Ü # LÓ 1°IÑ =ÐÜÐ$Ó%¨Ò)ÙØ(Ð)ð *Uð Vôñ Ø$Ð,ÙÐOÔPØ+¨xÒ7ÙØZôô �Ó¤Ñ$¬¨LÓ(9Ø%ð>
ò )
ñ ð6Ø6B°^À1ðFôñ ”#�oÓ&¨!Ò+ÙØWô	
ñ ,¨C×,AÑ,AÓBÑÐ�qÙÜ&Ø˜°¸xó
‰ô Ð,¨hÓ7ˆÙØ�(Š?ÙØVôð Ð2Ð3°2Ð6ˆØÐØ�˜!˜DŸI™I fÓ-Ð.¨e°C°5Ð9Ð9Øˆt�y‰y˜Ó Ð!  s eÐ,Ð,r   Ú	base_typeÚcpp_typeÚ	list_baseÚoptional_base_listÚoptional_list_basec                 ód  ‡— | ‰ft         j                  |    ‰› d�fg}dt        t         j                  z  fd„}|r |j	                  ˆfd„ || «      D «       «       |r1|j	                  ˆfd„ |t         j                  |    «      D «       «       |r |j	                  ˆfd„ || «      D «       «       |S )Nú?Útypc                 ó¶   — t         j                  |    t         j                  |    t        t        j
                  j                  | f«      t        t        | f«      fS ©N)r4   ÚSequenceÚListr   ÚcollectionsÚabcÚlist)rŽ   s    r   Úderived_seq_typesz(derived_types.<locals>.derived_seq_types;  sF   € ä�O‰O˜CÑ Ü�K‰K˜ÑÜœŸ™×1Ñ1°C°6Ó:Üœ ˜vÓ&ð	
ð 	
r   c              3   ó,   •K  — | ]  }|‰› d �f–— Œ y­w)z[]Nr   ©Ú.0Úseq_typrˆ   s     €r   ú	<genexpr>z derived_types.<locals>.<genexpr>D  s!   øè ø€ ò 
Ø+2ˆW˜˜
 "�oÔ&ñ
ùó   ƒc              3   ó,   •K  — | ]  }|‰› d �f–— Œ y­w)z?[]Nr   r˜   s     €r   r›   z derived_types.<locals>.<genexpr>H  s'   øè ø€ ò 
ð ð ˜˜
 #Ð&Ô'ñ
ùrœ   c              3   óN   •K  — | ]  }t         j                  |   ‰› d �f–— Œ y­w)z[]?N)r4   ÚOptionalr˜   s     €r   r›   z derived_types.<locals>.<genexpr>N  s.   øè ø€ ò 
àô �_‰_˜WÑ%¨(¨°3Ð'7Ô8ñ
ùs   ƒ"%)r4   rŸ   r!   Ú_SpecialFormÚextend)r‡   rˆ   r‰   rŠ   r‹   Úresultr–   s    `     r   Úderived_typesr£   .  s¾   ø€ ð 
�HÐä	�‰˜Ñ	#¨ z° ^Ð4ðK€Fð
œt¤f×&9Ñ&9Ñ9ó 
ñ Ø�‰ó 
Ù6GÈ	Ó6Rô
ô 	
ñ Ø�‰ó 
ñ -¬V¯_©_¸YÑ-GÓHô
ô 	
ñ
 Ø�‰ó 
á,¨YÓ7ô
ô 	
ð €Mr   c                  ó´  — t         ddddft        ddddft        ddddft        ddddft        ddddft
        j                  ddddft        d	dddft        d
dddfg} t        j                  j                  «       r4ddlm} | j                  t        j                   t"        |«      ddddf«       g }| D ]  }|j%                  t'        |Ž «       Œ t)        |«      S )Nr   TFÚSymIntrh   rP   r3   ÚScalarÚ
ScalarTypeÚDevicer   )Ú	GroupName)r   rg   rh   rP   r3   r   ÚNumberr   r   rI   ÚdistributedÚis_availableÚ"torch.distributed.distributed_c10dr©   r)   r4   Úcastr!   r¡   r£   Údict)Údatar©   r¢   Úlines       r   Úget_supported_param_typesr²   U  sè   € ô 
�˜4  uÐ-Ü	ˆh˜˜e TÐ*Ü	�˜˜u dÐ+Ü	ˆv�t˜U DÐ)Ü	ˆe�U˜E 5Ð)Ü	�‰�x  u¨eÐ4Ü	�˜e U¨EÐ2Ü	�˜5 %¨Ð/ð
L€Dô ×Ñ×%Ñ%Ô'Ý@à�‰”V—[‘[¤ yÓ1°5¸%ÀÈÐNÔOà€FØò ,ˆØ�‰”m TÐ*Õ+ð,ä�‹<Ðr   r   zTensor[]r¥   rh   rP   r¦   c                 ó  ‡— | €y| t         j                  j                  u r |d«       t        j                  | «      }|t
        urD| t        vr3t        | «      rt        | «      j                  S  |d| › dt        › d�«       t        |    S t        j                  | «      }|D ]*  }|t        vsŒt        |«      rŒ |d| › dt        › d�«       Œ, d„ Šdj                  ˆfd„|D «       «      }t        |«      d	k(  rd
|z   dz   }d
|z   dz   S )Nz()z7No return type annotation was provided. Please add one.zReturn has unsupported type r=   r<   c                 ó^   — t         j                  | «      x}r|S t        | «      j                  S r�   )ÚSUPPORTED_RETURN_TYPESÚgetr
   r\   )Úargr-   s     r   Ú_return_type_strz&parse_return.<locals>._return_type_str“  s.   € Ü'×+Ñ+¨CÓ0Ð0ˆ2Ð0ØˆIÜ(¨Ó-×8Ñ8Ð8r   rE   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr�   r   )r™   r·   r¸   s     €r   r›   zparse_return.<locals>.<genexpr>˜  s   øè ø€ Ò@°CÑ*¨3×/Ñ@ùs   ƒr	   rD   r   )rG   rW   rZ   r4   r5   r*   rµ   r   r
   r\   r6   rl   rd   )rY   r   r7   r8   r·   Ú	output_tyr¸   s         @r   rk   rk   x  s'  ø€ ØÐØà”W×&Ñ&×,Ñ,Ñ,ÙÐJÔKä×Ñ˜zÓ*€FØ”UÑØÔ3Ñ3Ü'¨
Ô3Ü0°Ó<×GÑGÐGÙØ.¨z¨lð ;(Ü(>Ð'?¸qðBôô
 & jÑ1Ð1ä�?‰?˜:Ó&€DØò ˆØÔ,Ò,Ô5MÈcÕ5RÙØ.¨z¨lð ;(Ü(>Ð'?¸qðBõðò9ð
 —	‘	Ó@¸4Ô@Ó@€Iô ˆ4ƒy�A‚~Ø˜)‘O cÑ)ˆ	Ø�‰?˜SÑ Ð r   c                 ój  — t        |«      dk(  r	| t        u }nFt        j                  | «      t        u xr) t        j
                  | «      t        ft        |«      z  k(  }|s |dt	        |«      › d�«       |D �cg c]  }d|› d�‘Œ
 }}t        |«      dk(  r|d   S ddj                  |«      › d	�S c c}w )
Nr	   z`torch.Tag.out requires the return annotation to match the mutable keyword-only Tensor arguments r<   rC   r?   r   rD   rE   r   )rd   r   r4   r5   r*   r6   rl   )ri   rw   rx   r   Ú"return_annotation_matches_out_argsÚout_arg_aliasÚaliased_returnss          r   rj   rj      sá   € ô ˆ?Ó˜qÒ Ø->Ä&Ð-HÑ*ä-3×->Ñ->Øó.
äð.ò .
ä—‘Ð'8Ó9¼f¸YÌØóJ
ñ >
ñ 
ð 	+ñ .Ùð5Ü5:¸=Ó5IÐ4JÈ!ðMô	
ð
 IXÖX°}˜  ¨rÒ2ÐX€OÐXÜ
ˆ?Ó˜qÒ Ø˜qÑ!Ð!Øˆt�y‰y˜Ó)Ð*¨!Ð,Ð,ùò Ys   Á9B0r{   c                 ó‚   — | j                   t        j                  j                  t        j                  j                  fv S r�   )rV   rG   rW   rb   rX   )r{   s    r   rU   rU   ¾  s6   € Ø�:‰:Ü×Ñ×/Ñ/Ü×Ñ×&Ñ&ðð ð r   Ú
tuple_typec                 ó4  — t        j                  | «      }| t         j                  u s
| t        u s|st        S t        |«      dk(  rt        |d      S t        |«      dk(  r|d   t        u rt        |d      S t        t         j                  t        |«            S )z}
    Convert `tuple_type` into a list type with the same type arguments. Assumes that `tuple_type` is typing.Tuple type.
    r	   r   é   )r4   r6   ÚTupler*   r•   rd   ÚEllipsisÚUnion)rÀ   Ú	type_argss     r   r`   r`   Å  sŠ   € ô —‘ 
Ó+€Ià”f—l‘lÑ"ØœÑÙô ˆÜ	ˆY‹˜1Ò	ä�I˜a‘LÑ!Ð!Ü	ˆY‹˜1Ò	 ¨1¡´Ñ!9Ü�I˜a‘LÑ!Ð!ä”F—L‘L¤ yÓ!1Ñ2Ñ3Ð3r   )'r“   rG   r4   r   r   rI   r   r   r   Útorch.utils._exposed_inr   Úopaque_objectr
   r   r   Ú_TestTensorÚCallabler3   rJ   r‘   r†   r!   r    rP   r£   r²   r’   r•   rg   rh   rª   rµ   rk   rj   r[   rW   rU   r*   r`   r   r   r   ú<module>rË      so  ðã Û Û Ý ã ß .Ó .Ý .÷ñ ð �l‰l€ñ ˆOÓð Ø:<òS-ØŸ™ðS-ð
 �4‰ZðS-ð �)‰)�f—o‘o e§i¡iÑ0Ñ
0°4Ñ
7ðS-ð 	òS-ó ðS-ðl$Ø�f×)Ñ)Ñ)ð$àð$ð ð$ð ð	$ð
 ó$òNð2 ˆHØ
‡K�K�Ñ˜Øˆ�L�*ØˆØ	ˆ7Øˆ&Ø	‡L�L�(ðÐ ò%!òP-ñ6 2Ó3Ð ð˜7×,Ñ,ð °ó ð4˜d 5™kð 4¨d°4©jô 4r   