Ë
    ÌÓ^jÙq  ã                   óŠ   — d dl Z d dlmZ d dlZd dlmZmZ d dlmZ dZ	dZ
dZ G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)é    N)ÚLiteral)Ú
PRECEDENCEÚ
precedence)Ú
StrPrinterÚint64_tl   ÿÿÿÿ ìûÿÿÿ         c                   óÄ  — e Zd ZdZdej
                  defd„Zdej
                  defd„Zd dej
                  dedz  defd„Z	dej
                  defd	„Z
dej
                  defd
„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Z y)!ÚExprPrinterÚ_torch_sympystrÚexprÚreturnc                 óN   — | j                  |j                  dt        |«      «      S )NÚ*©Ú	stringifyÚargsr   ©Úselfr   s     úf/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/utils/_sympy/printers.pyÚ
_print_MulzExprPrinter._print_Mul   s   € Ø�~‰~˜dŸi™i¨¬j¸Ó.>Ó?Ð?ó    c                 óF   — d| j                  |j                  d   «      › d�S )Nznot (r   ú)©Ú_printr   r   s     r   Ú
_print_NotzExprPrinter._print_Not   s#   € à�t—{‘{ 4§9¡9¨Q¡<Ó0Ð1°Ð3Ð3r   NÚorderc                 óN   — | j                  |j                  dt        |«      «      S )Nz + r   )r   r   r   s      r   Ú
_print_AddzExprPrinter._print_Add   s   € Ø�~‰~˜dŸi™i¨´
¸4Ó0@ÓAÐAr   c                 ój   — | j                  |j                  d|j                  › d�t        |«      «      S )Nú )r   r   Úrel_opr   r   s     r   Ú_print_RelationalzExprPrinter._print_Relational   s+   € Ø�~‰~˜dŸi™i¨1¨T¯[©[¨M¸Ð);¼ZÈÓ=MÓNÐNr   c                 óJ   — | j                  |j                  dt        d   «      S )Nz & Ú
BitwiseAnd©r   r   r   r   s     r   Ú_print_BitwiseFn_bitwise_andz(ExprPrinter._print_BitwiseFn_bitwise_and!   ó   € Ø�~‰~˜dŸi™i¨´
¸<Ñ0HÓIÐIr   c                 óJ   — | j                  |j                  dt        d   «      S )Nz | Ú	BitwiseOrr&   r   s     r   Ú_print_BitwiseFn_bitwise_orz'ExprPrinter._print_BitwiseFn_bitwise_or$   s   € Ø�~‰~˜dŸi™i¨´
¸;Ñ0GÓHÐHr   c                 óJ   — | j                  |j                  dt        d   «      S )Nz ^ Ú
BitwiseXorr&   r   s     r   Ú_print_BitwiseFn_bitwise_xorz(ExprPrinter._print_BitwiseFn_bitwise_xor'   r(   r   c                 óP   — | j                  |j                  dt        d   dz
  «      S ©Nú % ÚAtomç      à?r&   r   s     r   Ú
_print_ModzExprPrinter._print_Mod,   ó#   € Ø�~‰~˜dŸi™i¨´
¸6Ñ0BÀSÑ0HÓIÐIr   c                 ó\   — | j                  |j                  dt        d   dz
  «      }d|› d�S )Nú / r2   r3   ú(r   r&   )r   r   Úss      r   Ú_print_FloatTrueDivzExprPrinter._print_FloatTrueDiv/   s/   € Ø�N‰N˜4Ÿ9™9 e¬Z¸Ñ-?À#Ñ-EÓFˆØ�1�#�Qˆxˆr   c                 ó$   — | j                  |«      S ©N)Ú_print_FloorDivr   s     r   Ú_print_CleanDivzExprPrinter._print_CleanDiv3   s   € Ø×#Ñ# DÓ)Ð)r   c                 ó>   — | j                  |j                  d   «      S ©Nr   r   r   s     r   Ú_print_IdentityzExprPrinter._print_Identity6   s   € à�{‰{˜4Ÿ9™9 Q™<Ó(Ð(r   c                 óv   — |j                   dk(  r t        t        j                  |d¬«      «      S t        |«      S )Né5   é   )Údps)Ú_precÚstrÚsympyÚFloatr   s     r   Ú_print_FloatzExprPrinter._print_Float:   s2   € Ø�:‰:˜Òô ”u—{‘{ 4¨RÔ0Ó1Ð1ô �t“9Ðr   c                 óÖ   — |j                   \  }}|t        |«      k7  rt        |«      ‚t        |«      }|dk  rt        d|› �«      ‚|dkD  r| j                  |g|z  dt        d   «      S y)Nr   z#exponent must be non-negative, got r   ÚMulÚ1)r   ÚintÚAssertionErrorr   r   ©r   r   ÚbaseÚexps       r   Ú
_print_PowzExprPrinter._print_PowJ   sp   € Ø—I‘I‰	ˆˆcØ”#�c“(Š?Ü  Ó%Ð%Ü�#‹hˆØ�Š7Ü Ð#FÀsÀeÐ!LÓMÐMØ�Š7Ø—>‘> 4 &¨3¡,°´ZÀÑ5FÓGÐGØr   c                 ó0   — t        dt        | «      › �«      ‚)Nz#_print_ToFloat not implemented for ©ÚNotImplementedErrorÚtyper   s     r   Ú_print_ToFloatzExprPrinter._print_ToFloatZ   s   € Ü!Ð$GÌÈTË
À|Ð"TÓUÐUr   c                 ó0   — t        dt        | «      › �«      ‚)Nz$_print_Infinity not implemented for rU   r   s     r   Ú_print_InfinityzExprPrinter._print_Infinity]   ó   € Ü!Ð$HÌÈdËÈÐ"UÓVÐVr   c                 ó0   — t        dt        | «      › �«      ‚)Nz,_print_NegativeInfinity not implemented for rU   r   s     r   Ú_print_NegativeInfinityz#ExprPrinter._print_NegativeInfinity`   s   € Ü!Ø:¼4À»:¸,ÐGó
ð 	
r   c                 ó0   — t        dt        | «      › �«      ‚)Nz_print_NaN not implemented for rU   r   s     r   Ú
_print_NaNzExprPrinter._print_NaNe   s   € Ü!Ð$CÄDÈÃJÀ<Ð"PÓQÐQr   c                 ó0   — t        dt        | «      › �«      ‚)Nz$_print_FloorDiv not implemented for rU   r   s     r   r=   zExprPrinter._print_FloorDivh   r[   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz%_print_PythonMod not implemented for rU   r   s     r   Ú_print_PythonModzExprPrinter._print_PythonModk   s   € Ü!Ð$IÌ$ÈtË*ÈÐ"VÓWÐWr   c                 ó0   — t        dt        | «      › �«      ‚)Nz&_print_IntTrueDiv not implemented for rU   r   s     r   Ú_print_IntTrueDivzExprPrinter._print_IntTrueDivn   ó   € Ü!Ð$JÌ4ÐPTË:È,Ð"WÓXÐXr   c                 ó0   — t        dt        | «      › �«      ‚)Nú(_print_PowByNatural not implemented for rU   r   s     r   Ú_print_PowByNaturalzExprPrinter._print_PowByNaturalq   ó   € Ü!Ø6´t¸D³z°lÐCó
ð 	
r   c                 ó0   — t        dt        | «      › �«      ‚)Nz$_print_FloatPow not implemented for rU   r   s     r   Ú_print_FloatPowzExprPrinter._print_FloatPowv   r[   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz&_print_TruncToInt not implemented for rU   r   s     r   Ú_print_TruncToIntzExprPrinter._print_TruncToInty   re   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz&_print_RoundToInt not implemented for rU   r   s     r   Ú_print_RoundToIntzExprPrinter._print_RoundToInt|   re   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz(_print_RoundDecimal not implemented for rU   r   s     r   Ú_print_RoundDecimalzExprPrinter._print_RoundDecimal   ri   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz(_print_TruncToFloat not implemented for rU   r   s     r   Ú_print_TruncToFloatzExprPrinter._print_TruncToFloat‰   ri   r   r<   )!Ú__name__Ú
__module__Ú__qualname__ÚprintmethodrH   ÚExprrG   r   r   r   r#   r'   r+   r.   r4   r:   r>   rA   rJ   rS   rX   rZ   r]   r_   r=   rb   rd   rh   rk   rm   ro   rq   rs   © r   r   r
   r
      s™  „ à#€Kð@˜uŸz™zð @¨có @ð4˜uŸz™zð 4¨có 4ñB˜uŸz™zð B°#¸±*ð BÈó BðO e§j¡jð O°Só OðJ°·±ð JÀó JðI°·
±
ð I¸só IðJ°·±ð JÀó Jð
J˜uŸz™zð J¨có Jð¨¯
©
ð °só ð* E§J¡Jð *°3ó *ð) E§J¡Jð )°3ó )ð §¡ð °ó ð 	˜uŸz™zð 	¨có 	ð V 5§:¡:ð V°#ó VðW E§J¡Jð W°3ó Wð
¨E¯J©Jð 
¸3ó 
ð
R˜uŸz™zð R¨có RðW E§J¡Jð W°3ó WðX U§Z¡Zð X°Có XðY e§j¡jð Y°Só Yð
¨¯
©
ð 
°só 
ð
W E§J¡Jð W°3ó WðY e§j¡jð Y°Só YðY e§j¡jð Y°Só Yð
¨¯
©
ð 
°só 
ð
¨¯
©
ð 
°sô 
r   r
   c                   óø  — e Zd Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z	dej                  defd„Z
dej                  defd„Zdej                  defd	„Zdej                  defd
„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z dej                  defd„Z!dej                  defd„Z"dej                  defd „Z#dej                  defd!„Z$dej                  defd"„Z%dej                  defd#„Z&dej                  defd$„Z'dej                  defd%„Z(y&)'ÚPythonPrinterr   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Né   ú$ToFloat expects exactly one argumentztorch.sym_float(r   r   ©Úlenr   rO   r   r   s     r   rX   zPythonPrinter._print_ToFloat�   sA   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHð " $§+¡+¨d¯i©i¸©lÓ";Ð!<¸AÐ>Ð>r   c                 óN   — | j                  |j                  dt        |«      «      S )Nz and r   r   s     r   Ú
_print_AndzPythonPrinter._print_And£   s   € Ø�~‰~˜dŸi™i¨´*¸TÓ2BÓCÐCr   c                 óN   — | j                  |j                  dt        |«      «      S )Nz or r   r   s     r   Ú	_print_OrzPythonPrinter._print_Or¦   ó   € Ø�~‰~˜dŸi™i¨´¸DÓ1AÓBÐBr   c                 ód   ‡ — ˆ fd„|j                   D «       \  }}}|dk7  r	d|› d|› d�}d|› d|› d�S )Nc              3   óV   •K  — | ]   }‰j                  |t        d    dz
  «      –— Œ" y­w©r2   r3   N©Úparenthesizer   ©Ú.0Úargr   s     €r   ú	<genexpr>z7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>ª   s-   øè ø€ ò 
ØADˆD×Ñ˜c¤:¨fÑ#5¸Ñ#;×<ñ
ùó   ƒ&)rM   r8   ú // r   r1   ©r   ©r   r   ÚxÚdivÚmods   `    r   Ú_print_ModularIndexingz$PythonPrinter._print_ModularIndexing©   sN   ø€ ó
ØHLÏ	É	ô
‰ˆˆ3�ð �#Š:Ø�A�3�d˜3˜%˜qÐ!ˆAØ�1�#�S˜˜˜QÐÐr   c                  ó   — y)Nzmath.infry   r   s     r   rZ   zPythonPrinter._print_Infinity±   ó   € Ør   c                  ó   — y)Nz	-math.infry   r   s     r   r]   z%PythonPrinter._print_NegativeInfinity´   s   € Ør   c                  ó   — y)Nzmath.nanry   r   s     r   r_   zPythonPrinter._print_NaN·   r˜   r   c                 óP   — | j                  |j                  dt        d   dz
  «      S r0   r&   r   s     r   rb   zPythonPrinter._print_PythonMod»   r5   r   c                 óB   ‡ — ˆ fd„|j                   D «       \  }}|› d|› �S )Nc              3   óV   •K  — | ]   }‰j                  |t        d    dz
  «      –— Œ" y­wrˆ   r‰   r‹   s     €r   rŽ   z0PythonPrinter._print_FloorDiv.<locals>.<genexpr>À   s(   øè ø€ ÒXÀs�$×#Ñ# C¬°FÑ);¸cÑ)A×BÑXùr�   r�   r‘   ©r   r   r“   r”   s   `   r   r=   zPythonPrinter._print_FloorDiv¿   s%   ø€ ÛXÈdÏiÉiÔX‰ˆˆ3Ø��D˜˜ˆÐr   c                 óP   — | j                  |j                  dt        d   dz
  «      S )Nr7   r2   r3   r&   r   s     r   rd   zPythonPrinter._print_IntTrueDivÅ   r5   r   c                 ó,   — d| j                  |«      › d�S )Nztorch._sym_sqrt(r   )r   r   s     r   Ú_helper_sqrtzPythonPrinter._helper_sqrtÈ   s   € ð " $§+¡+¨dÓ"3Ð!4°AÐ6Ð6r   c                 ó>   — | j                  |j                  d   «      S r@   )r¡   r   r   s     r   Ú_print_OpaqueUnaryFn_sqrtz'PythonPrinter._print_OpaqueUnaryFn_sqrtÕ   s   € Ø× Ñ  §¡¨1¡Ó.Ð.r   c                 óJ   — | j                  |j                  dt        d   «      S ©Nz ** ÚPowr&   r   s     r   rk   zPythonPrinter._print_FloatPowØ   ó   € Ø�~‰~˜dŸi™i¨´¸EÑ1BÓCÐCr   c                 óJ   — | j                  |j                  dt        d   «      S r¥   r&   r   s     r   rh   z!PythonPrinter._print_PowByNaturalÜ   r§   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú"floor expects exactly one argumentúmath.floor(r   r   r   r   s     r   Ú_print_floorzPythonPrinter._print_floorß   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!EÓFÐFà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú'FloorToInt expects exactly one argumentr«   r   r   r   r   s     r   Ú_print_FloorToIntzPythonPrinter._print_FloorToIntå   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú'TruncToInt expects exactly one argumentzmath.trunc(r   r   r   r   s     r   rm   zPythonPrinter._print_TruncToIntë   óA   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKð ˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú$ceiling expects exactly one argumentú
math.ceil(r   r   r   r   s     r   Ú_print_ceilingzPythonPrinter._print_ceilingò   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú&CeilToInt expects exactly one argumentrµ   r   r   r   r   s     r   Ú_print_CeilToIntzPythonPrinter._print_CeilToIntø   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!IÓJÐJà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú Abs expects exactly one argumentzabs(r   r   r   r   s     r   Ú
_print_AbszPythonPrinter._print_Absþ   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!CÓDÐDà�d—k‘k $§)¡)¨A¡,Ó/Ð0°Ð2Ð2r   c                 ó®   — t        |j                  «      dk  rt        d«      ‚ddj                  t	        | j
                  |j                  «      «      › d�S )Né   z"Max expects at least two argumentszmax(ú, r   ©r€   r   rO   ÚjoinÚmapr   r   s     r   Ú
_print_MaxzPythonPrinter._print_Max  óF   € Üˆt�y‰y‹>˜AÒÜ Ð!EÓFÐFà�d—i‘i¤ D§K¡K°·±Ó ;Ó<Ð=¸QÐ?Ð?r   c                 ó®   — t        |j                  «      dk  rt        d«      ‚ddj                  t	        | j
                  |j                  «      «      › d�S )Nr¾   z"Min expects at least two argumentszmin(r¿   r   rÀ   r   s     r   Ú
_print_MinzPythonPrinter._print_Min  rÄ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú cos expects exactly one argumentz	math.cos(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_cosz&PythonPrinter._print_OpaqueUnaryFn_cos  ó?   € Üˆt�y‰y‹>˜QÒÜ Ð!CÓDÐDà˜4Ÿ;™; t§y¡y°¡|Ó4Ð5°QÐ7Ð7r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú!cosh expects exactly one argumentz
math.cosh(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_coshz'PythonPrinter._print_OpaqueUnaryFn_cosh  ó?   € Üˆt�y‰y‹>˜QÒÜ Ð!DÓEÐEà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú!acos expects exactly one argumentz
math.acos(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_acosz'PythonPrinter._print_OpaqueUnaryFn_acos  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S ©Nr}   z sin expects exactly one argumentz	math.sin(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_sinz&PythonPrinter._print_OpaqueUnaryFn_sin%  rÊ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú!sinh expects exactly one argumentz
math.sinh(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_sinhz'PythonPrinter._print_OpaqueUnaryFn_sinh+  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú!asin expects exactly one argumentz
math.asin(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_asinz'PythonPrinter._print_OpaqueUnaryFn_asin1  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú tan expects exactly one argumentz	math.tan(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_tanz&PythonPrinter._print_OpaqueUnaryFn_tan7  rÊ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú!tanh expects exactly one argumentz
math.tanh(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_tanhz'PythonPrinter._print_OpaqueUnaryFn_tanh=  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú!atan expects exactly one argumentz
math.atan(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_atanz'PythonPrinter._print_OpaqueUnaryFn_atanC  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   z!log2 expects exactly one argumentz
math.log2(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_log2z'PythonPrinter._print_OpaqueUnaryFn_log2I  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   ú'RoundToInt expects exactly one argumentúround(r   r   r   r   s     r   ro   zPythonPrinter._print_RoundToIntO  s?   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜Ÿ™ D§I¡I¨a¡LÓ1Ð2°!Ð4Ð4r   c                 óà   — t        |j                  «      dk7  rt        d«      ‚|j                  \  }}t        |t        j
                  «      st        d«      ‚d| j                  |«      › d|› d�S )Nr¾   ú*RoundDecimal expects exactly two argumentsz,ndigits must be an instance of sympy.Integerrè   r¿   r   )r€   r   rO   Ú
isinstancerH   ÚIntegerÚ	TypeErrorr   )r   r   ÚnumberÚndigitss       r   rq   z!PythonPrinter._print_RoundDecimalU  sd   € Üˆt�y‰y‹>˜QÒÜ Ð!MÓNÐNØŸ)™)‰ˆ�Ü˜'¤5§=¡=Ô1ÜÐJÓKÐKà˜Ÿ™ FÓ+Ð,¨B¨w¨i°qÐ9Ð9r   c                 óÂ   — d }t        |j                  «      D ]@  \  }}| j                  |«      }|dk(  r|}Œ| j                  |«      }|€|}Œ5d|› d|› d|› d�}ŒB |r|S dS )NTr8   z if z else r   Ú0)Úreversedr   r   ©r   r   ÚresultÚexpr_iÚcond_iÚexpr_strÚcond_strs          r   Ú_print_PiecewisezPythonPrinter._print_Piecewise^  s„   € ð "ˆÜ& t§y¡yÓ1ò 	I‰NˆF�Fà—{‘{ 6Ó*ˆHØ˜Š~à!‘ð  Ÿ;™; vÓ.�Ø�>Ø%‘Fà   
¨$¨x¨j¸¸v¸hÀaÐH‘Fð	Iñ  ˆvÐ( SÐ(r   N))rt   ru   rv   rH   rx   rG   rX   r‚   r„   r–   rZ   r]   r_   rb   r=   rd   r¡   r£   rk   rh   r¬   r¯   rm   r¶   r¹   r¼   rÃ   rÆ   rÉ   rÍ   rÑ   rÔ   r×   rÚ   rÝ   rà   rã   rå   ro   rq   rù   ry   r   r   r{   r{   �   s?  „ ð? 5§:¡:ð ?°#ó ?ð&D˜uŸz™zð D¨có DðC˜eŸj™jð C¨Só Cð ¨5¯:©:ð  ¸#ó  ð E§J¡Jð °3ó ð¨E¯J©Jð ¸3ó ð˜uŸz™zð ¨có ðJ U§Z¡Zð J°Có Jð E§J¡Jð °3ó ðJ e§j¡jð J°Só Jð7 §¡ð 7°ó 7ð/¨e¯j©jð /¸Só /ðD E§J¡Jð D°3ó DðD¨¯
©
ð D°só Dð: §¡ð :°ó :ð: e§j¡jð :°Só :ð: e§j¡jð :°Só :ð9 5§:¡:ð 9°#ó 9ð9 U§Z¡Zð 9°Có 9ð3˜uŸz™zð 3¨có 3ð@˜uŸz™zð @¨có @ð@˜uŸz™zð @¨có @ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð5 e§j¡jð 5°Só 5ð:¨¯
©
ð :°só :ð) U§Z¡Zð )°Cô )r   r{   c                   óÚ  — e Zd Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z	dej                  defd„Z
dej                  defd„Zdej                  defd	„Zdej                  defd
„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  ded   defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z dej                  defd„Z!dej                  defd „Z"dej                  defd!„Z#dej                  defd"„Z$dej                  defd#„Z%dej                  defd$„Z&dej                  defd%„Z'dej                  defd&„Z(dej                  defd'„Z)dej                  defd(„Z*dej                  defd)„Z+dej                  defd*„Z,dej                  defd+„Z-dej                  defd,„Z.dej                  defd-„Z/y.)/Ú
CppPrinterr   r   c                 óÚ   — t         j                  dv rdnd}t        |«      }|t        kD  s	|t        k  rt        |› dt        › �«      ‚|t        k(  r|dk7  rt        d«      ‚d|› d�S |› |› �S )	N)ÚdarwinÚwin32ÚLLÚLz too big to convert to r   z#unexpected minimum index type valuez(-1z << 63))ÚsysÚplatformrN   ÚINDEX_TYPE_MAXÚINDEX_TYPE_MINÚOverflowErrorÚ
INDEX_TYPErO   )r   r   ÚsuffixÚis       r   Ú_print_IntegerzCppPrinter._print_Integert  s~   € ÜŸ™Ð)<Ñ<‘À#ˆÜ�‹IˆØŒ~Ò ¤^Ò!3Ü 1 #Ð%<¼Z¸LÐ IÓJÐJØ”.Ò Ø�JŠÜ$Ð%JÓKÐKð ˜˜ Ð(Ð(Ø��V�Hˆ~Ðr   c                 óJ   ‡ — ˆ fd„|j                   D «       \  }}}|› d|› d|› �S )Nc              3   óV   •K  — | ]   }‰j                  |t        d    dz
  «      –— Œ" y­wrˆ   r‰   r‹   s     €r   rŽ   z*CppPrinter._print_Where.<locals>.<genexpr>‚  s-   øè ø€ ò 
ØADˆD×Ñ˜c¤:¨fÑ#5¸Ñ#;×<ñ
ùr�   ú ? ú : r‘   )r   r   ÚcÚpÚqs   `    r   Ú_print_WherezCppPrinter._print_Where�  s5   ø€ ó
ØHLÏ	É	ô
‰ˆˆ1ˆað ��C˜�s˜#˜a˜SÐ!Ð!r   c                 óN   — | j                  |j                  dt        |«      «      S )Nz || r   r   s     r   r„   zCppPrinter._print_Or‡  r…   r   c                 óò   — d }t        |j                  «      D ]T  \  }}| j                  |t        d   dz
  «      }|dk(  r|}Œ*| j                  |t        d   dz
  «      }|€|}ŒK|› d|› d|› �}ŒV |rd|› d�S dS )	Nr2   r3   Tr  r  r8   r   rñ   )rò   r   rŠ   r   ró   s          r   rù   zCppPrinter._print_PiecewiseŠ  s¢   € ð "ˆÜ& t§y¡yÓ1ò 
	C‰NˆF�FØ×(Ñ(¨´¸FÑ1CÀcÑ1IÓJˆHØ˜Š~à!‘à×,Ñ,¨V´ZÀÑ5GÈ#Ñ5MÓN�Ø�>Ø%‘Fà (˜z¨¨X¨J°c¸&¸ÐB‘Fð
	Cñ !'��6�(˜!ˆ}Ð/¨CÐ/r   c           	      óþ   — |j                   \  }}}| j                  |«      }|dk7  r0| j                  |«      }|j                  r
d|› d|› d�}n	d|› d|› d�}| j                  |«      }dt        › d|› d	t        › d|› d�	S )
Nr}   ú,c10::div_floor_integer(static_cast<int64_t>(ú), static_cast<int64_t>(ú))ú,c10::div_floor_floating(static_cast<double>(ú), static_cast<double>(ú(static_cast<ú>(z) % static_cast<)r   ÚdoprintÚ
is_integerr  r’   s        r   r–   z!CppPrinter._print_ModularIndexingœ  s›   € Ø—i‘i‰ˆˆ3�Ø�L‰L˜‹OˆØ�!Š8Ø—,‘,˜sÓ#ˆCØ�ŠØBÀ1À#ÐE]Ð^aÐ]bÐbdÐe‘àBÀ1À#ÐE\Ð]`Ð\aÐacÐd�Ø�l‰l˜3ÓˆØœz˜l¨"¨Q¨CÐ/?Ä
¸|È2ÈcÈUÐRTÐUÐUr   c                 ó    — |j                   \  }}| j                  |«      }| j                  |«      }|j                  r	d|› d|› d�S d|› d|› d�S )Nr  r  r  r  r  )r   r  r  rž   s       r   r=   zCppPrinter._print_FloorDiv¨  sc   € Ø—‘‰ˆˆ3Ø�L‰L˜‹OˆØ�l‰l˜3ÓˆØ�?Š?ØAÀ!ÀÐD\Ð]`Ð\aÐacÐdÐdØ=¸a¸SÐ@WÐX[ÐW\Ð\^Ð_Ð_r   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr}   rª   ústd::floor(r   r   ústatic_cast<r  ©r€   r   rO   r   r  r  ©r   r   Úrs      r   r¬   zCppPrinter._print_floor°  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!EÓFÐFà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr}   r®   r   r   r   r!  r  r"  r#  s      r   r¯   zCppPrinter._print_FloorToInt·  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 ó¦   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}dt        › d|› d�S )Nr}   r±   ústd::trunc(r   r   r!  r  )r€   r   rO   r   r  r#  s      r   rm   zCppPrinter._print_TruncToInt¾  sS   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØœj˜\¨¨A¨3¨aÐ0Ð0r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   z)TruncToFloat expects exactly one argumentr'  r   r   r   r   s     r   rs   zCppPrinter._print_TruncToFloatÅ  s?   € Üˆt�y‰y‹>˜QÒÜ Ð!LÓMÐMà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   r~   ústatic_cast<double>(r   r   r   r   s     r   rX   zCppPrinter._print_ToFloatË  s?   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHà% d§k¡k°$·)±)¸A±,Ó&?Ð%@ÀÐBÐBr   c                 óv   — |j                   \  }}| j                  |«      }| j                  |«      }d|› d|› d�S )Nzc10::div_mod(r¿   r   )r   r  rž   s       r   rb   zCppPrinter._print_PythonModÑ  s?   € Ø—‘‰ˆˆ3Ø�L‰L˜‹OˆØ�l‰l˜3ÓˆØ˜q˜c  C 5¨Ð*Ð*r   c                 ón   — |j                   \  }}d| j                  |«      › d| j                  |«      › d�S )Nr*  z) / static_cast<double>(r   ©r   r   )r   r   ÚlhsÚrhss       r   rd   zCppPrinter._print_IntTrueDiv×  s@   € Ø—9‘9‰ˆˆSð & d§k¡k°#Ó&6Ð%7Ð7OÐPT×P[ÑP[Ð\_ÓP`ÐOaÐabÐcÐcr   c                 ó‚   — |j                   \  }}|dk(  rd| j                  |«      › d�S t        dt        | «      › �«      ‚)Nr¾   z(1 << (r  rg   )r   r   rV   rW   rP   s       r   rh   zCppPrinter._print_PowByNaturalß  sJ   € à—I‘I‰	ˆˆcØ�1Š9à˜TŸ[™[¨Ó-Ð.¨bÐ1Ð1Ü!Ø6´t¸D³z°lÐCó
ð 	
r   c                 ón   — |j                   \  }}d| j                  |«      › d| j                  |«      › d�S )Nú	std::pow(r¿   r   r-  rP   s       r   rk   zCppPrinter._print_FloatPowé  s8   € Ø—I‘I‰	ˆˆcà˜4Ÿ;™; tÓ,Ð-¨R°·±¸CÓ0@Ð/AÀÐCÐCr   c                 óæ  — |j                   \  }}|dk(  s|dk(  r"| j                  |«      }|dk(  rd|› d�S d|› d�S |j                  r™t        |«      }|dkD  r| j	                  |g|z  dt
        d   «      }nO|d	k  r.d
| j	                  |gt        |«      z  dt
        d   «      z   dz   }n|d	k(  rd| j                  |«      z   }nd}|j                  rdt        › d|› d�S |S d|› dt        |«      › d�S )Nr3   g      à¿ú
std::sqrt(r   z1.0/std::sqrt(r   r   rL   éÿÿÿÿz1.0/(z1.0/z1.0r!  r  r2  r¿   )	r   r   r  rN   r   r   Úabsr  Úfloat)r   r   rQ   rR   r$  s        r   rS   zCppPrinter._print_Powî  s  € à—I‘I‰	ˆˆcà�#Š:˜ šà—;‘;˜tÓ$ˆDØ+.°#ª:�Z ˜v QÐ'ÐS¸^ÈDÈ6ÐQRÐ;SÐSØ�>Š>Ü�c“(ˆCØ�QŠwØ—N‘N D 6¨C¡<°´jÀÑ6GÓH‘Ø�r’àØ—n‘n d V¬c°#«hÑ%6¸¼ZÈÑ=NÓOñPàññ ð
 ˜’à˜TŸ[™[¨Ó.Ñ.‘à�à8<¿º�\¤* ¨R°¨s°!Ð4ÐNÈQÐNð ˜t˜f B¤u¨S£z l°!Ð4Ð4r   c                 óª   — |j                   dk(  r|j                  › }n|j                  › d|j                   › d�}|j                  rdt        › d|› d�S |S )Nr}   z.0/z.0r!  r  r   )r  r  r  r  r#  s      r   Ú_print_RationalzCppPrinter._print_Rational  sR   € à�6‰6�QŠ;Ø—6‘6�(‰Aà—6‘6�(˜#˜dŸf™f˜X RÐ(ˆAØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr}   r´   ú
std::ceil(r   r   r!  r  r"  r#  s      r   r¶   zCppPrinter._print_ceiling  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHà˜Ÿ™ T§Y¡Y¨q¡\Ó2Ð3°1Ð5ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr}   r¸   r;  r   r   r!  r  r"  r#  s      r   r¹   zCppPrinter._print_CeilToInt  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!IÓJÐJà˜Ÿ™ T§Y¡Y¨q¡\Ó2Ð3°1Ð5ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   Úname)ÚminÚmaxc                 óÎ  — |j                   D �cg c]  }| j                  |«      ‘Œ }}|j                  sS|D �cg c]  }d|› d�‘Œ
 }}t        |«      dk(  rd|› d|d   › d|d   › d�S d	dj	                  |«      z   d
z   }d|› d|› d�S t        |«      dk(  r d|› dt
        › d|d   › dt
        › d|d   › d�S d	dj	                  |«      z   d
z   }d|› dt
        › d|› d�S c c}w c c}w )Nr*  r   r¾   zstd::r8   r   r¿   r}   ú{ú}z	<double>(r  r  z), static_cast<r  ú<)r   r   r  r€   rÁ   r  )r   r   r=  Úar   r�   Úils          r   Ú_print_min_maxzCppPrinter._print_min_max!  s  € à(,¯	©	Ö2 1�—‘˜A•Ð2ˆÐ2Ø�ŠØ=AÖB°cÐ*¨3¨%¨qÒ1ÐBˆDÐBÜ�4‹y˜AŠ~Ø˜t˜f A d¨1¡g Y¨b°°a±°	¸Ð;Ð;à�t—y‘y “Ñ&¨Ñ,ˆBØ˜4˜& 	¨"¨¨QÐ/Ð/äˆt‹9˜Š>Ø˜4˜& ¬j¨\¸¸DÀ¹G¸9ÀOÔT^ÐS_Ð_aÐbfÐghÑbiÐajÐjlÐmÐmð �t—y‘y “Ñ&¨Ñ,ˆBØ˜4˜& ¤* ¨R°¨t°1Ð5Ð5ùò 3ùâBs
   �C¹C"c                 ó&   — | j                  |d«      S )Nr>  ©rF  r   s     r   rÆ   zCppPrinter._print_Min3  ó   € Ø×"Ñ" 4¨Ó/Ð/r   c                 ó&   — | j                  |d«      S )Nr?  rH  r   s     r   rÃ   zCppPrinter._print_Max6  rI  r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   r»   z	std::abs(r   r   r   r   s     r   r¼   zCppPrinter._print_Abs9  rÊ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rÈ   z	std::cos(r   r   r   r   s     r   rÉ   z#CppPrinter._print_OpaqueUnaryFn_cos?  rÊ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rÌ   z
std::cosh(r   r   r   r   s     r   rÍ   z$CppPrinter._print_OpaqueUnaryFn_coshE  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rÐ   z
std::acos(r   r   r   r   s     r   rÑ   z$CppPrinter._print_OpaqueUnaryFn_acosK  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S rÓ   r   r   s     r   rÔ   z#CppPrinter._print_OpaqueUnaryFn_sinQ  rÊ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rÖ   z
std::sinh(r   r   r   r   s     r   r×   z$CppPrinter._print_OpaqueUnaryFn_sinhW  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rÙ   z
std::asin(r   r   r   r   s     r   rÚ   z$CppPrinter._print_OpaqueUnaryFn_asin]  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rÜ   z	std::tan(r   r   r   r   s     r   rÝ   z#CppPrinter._print_OpaqueUnaryFn_tanc  rÊ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rß   z
std::tanh(r   r   r   r   s     r   rà   z$CppPrinter._print_OpaqueUnaryFn_tanhi  rÎ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   râ   z
std::atan(r   r   r   r   s     r   rã   z$CppPrinter._print_OpaqueUnaryFn_atano  rÎ   r   c                 óF   — d| j                  |j                  d   «      › d�S )Nr4  r   r   r   r   s     r   r£   z$CppPrinter._print_OpaqueUnaryFn_sqrtu  ó#   € à˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óF   — d| j                  |j                  d   «      › d�S )Nz
std::log2(r   r   r   r   s     r   rå   z$CppPrinter._print_OpaqueUnaryFn_log2y  rV  r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr}   rç   zstd::lrint(r   r   r   r   s     r   ro   zCppPrinter._print_RoundToInt}  r²   r   c                 ó  — t        |j                  «      dk7  rt        d«      ‚|j                  \  }}|j                  r|dk\  rt        d«      ‚t	        d|› d�«      ‚| j                  |t        d   «      }d|› d	|› d
| › d�S )Nr¾   rê   r   z+ndigits must be negative for integer inputszOFor integer inputs, only non-negative ndigits are currently supported, but got ú.rL   z%static_cast<double>(std::nearbyint(1ez * z) * 1er   )r€   r   rO   r  Ú
ValueErrorrŠ   r   )r   r   rî   rï   Ú
number_strs        r   rq   zCppPrinter._print_RoundDecimal„  s�   € Üˆt�y‰y‹>˜QÒÜ Ð!MÓNÐNØŸ)™)‰ˆ�Ø×Òà˜!Š|Ü$Ð%RÓSÐSÜØaÐbiÐajÐjkÐlóð ð ×&Ñ& v¬z¸%Ñ/@ÓAˆ
Ø6°w°i¸sÀ:À,ÈfÐV]ÐU]ÐT^Ð^_Ð`Ð`r   c                  ó   — y)NÚtruery   r   s     r   Ú_print_BooleanTruezCppPrinter._print_BooleanTrue’  s   € Ør   c                  ó   — y)NÚfalsery   r   s     r   Ú_print_BooleanFalsezCppPrinter._print_BooleanFalse•  s   € Ør   c                  ó   — y)Nz'std::numeric_limits<double>::infinity()ry   r   s     r   rZ   zCppPrinter._print_Infinity˜  s   € Ø8r   c                 ó*   — d| j                  |«      › �S )Nú-)rZ   r   s     r   r]   z"CppPrinter._print_NegativeInfinity›  s   € Ø�4×'Ñ'¨Ó-Ð.Ð/Ð/r   c                  ó   — y)Nz(std::numeric_limits<double>::quiet_NaN()ry   r   s     r   r_   zCppPrinter._print_NaNž  s   € Ø9r   N)0rt   ru   rv   rH   rx   rG   r	  r  r„   rù   r–   r=   r¬   r¯   rm   rs   rX   rb   rd   rh   rk   rS   r9  r¶   r¹   r   rF  rÆ   rÃ   r¼   rÉ   rÍ   rÑ   rÔ   r×   rÚ   rÝ   rà   rã   r£   rå   ro   rq   r_  rb  rZ   r]   r_   ry   r   r   rû   rû   s  sá  „ ð 5§:¡:ð °#ó ð" §¡ð "°ó "ðC˜eŸj™jð C¨Só Cð0 U§Z¡Zð 0°Có 0ð$
V¨5¯:©:ð 
V¸#ó 
Vð` E§J¡Jð `°3ó `ðK §¡ð K°ó KðK e§j¡jð K°Só Kð1 e§j¡jð 1°Só 1ð:¨¯
©
ð :°só :ðC 5§:¡:ð C°#ó Cð+ U§Z¡Zð +°Có +ðd e§j¡jð d°Só dð
¨¯
©
ð 
°só 
ðD E§J¡Jð D°3ó Dð
5˜uŸz™zð 5¨có 5ð:K E§J¡Jð K°3ó KðK 5§:¡:ð K°#ó KðK U§Z¡Zð K°Có Kð6 5§:¡:ð 6°W¸\Ñ5Jð 6Èsó 6ð$0˜uŸz™zð 0¨có 0ð0˜uŸz™zð 0¨có 0ð8˜uŸz™zð 8¨có 8ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð: e§j¡jð :°Só :ða¨¯
©
ð a°só að u§z¡zð °có ð¨¯
©
ð °só ð9 E§J¡Jð 9°3ó 9ð0¨E¯J©Jð 0¸3ó 0ð:˜uŸz™zð :¨cô :r   rû   )r  Útypingr   rH   Úsympy.printing.precedencer   r   Úsympy.printing.strr   r  r  r  r
   r{   rû   ry   r   r   ú<module>rj     sQ   ðÛ 
Ý ã ß <Ý )ð €
Ø€Ø€ô
|
�*ô |
ô~a)�Kô a)ôHl:�õ l:r   