
    Ed1                        d Z ddlmZmZmZmZ ddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZ i dd d	fgd
d dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd  d!fgd"d# d$fgd%d& d'fgd(d) d*fgd+d, d-fgd.d/ d0fgd1d2 d'fgd3d4 d5fgd6d7 d8fgi d9d: d;fgd<d= d>fgd?d@ dAfgdBdC dDfgdEdF dGfgdHdI dJfgdKdL dMfgdNdO dPfgdQdR dSfgdTdU dVfgdWdX dYfgdZd[ d\fgd]d^ d]fgd_d` d_fgdadb dcfgddde dcfgdfdg dhfgi didj dkfgdldm dnfgdodp dqfgdrds dnfgdtdu dvfgdwdx dyfgdzd{ d|fgd}d~ dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgi dd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgddĄ dfgddǄ dfgddʄ dfgi dd̈́ dfgddτ dfgdd҄ dfgddՄ dfgdd؄ dfgddۄ dfgddބ dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgi dd dfgd d dfgdd dfgdd dfgd	d
 dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd d fgd!d" d#fgd$d% d&fgd'd( d)fgd*d+ d*fgd,d- d.fgd/ d0fgd1 d2fgd3Z G d4 d5e          Zd6 Zd7S (8  z
Mathematica code printer
    )AnyDictSetTuple)BasicExprFloat)default_sort_key)CodePrinter)
precedenceexpc                     dS NT xs    :lib/python3.11/site-packages/sympy/printing/mathematica.py<lambda>r          t     Explogc                     dS r   r   r   s    r   r   r      r   r   Logsinc                     dS r   r   r   s    r   r   r      r   r   Sincosc                     dS r   r   r   s    r   r   r      r   r   Costanc                     dS r   r   r   s    r   r   r      r   r   Tancotc                     dS r   r   r   s    r   r   r      r   r   Cotsecc                     dS r   r   r   s    r   r   r      r   r   Seccscc                     dS r   r   r   s    r   r   r      r   r   Cscasinc                     dS r   r   r   s    r   r   r           r   ArcSinacosc                     dS r   r   r   s    r   r   r      r/   r   ArcCosatanc                     dS r   r   r   s    r   r   r      r/   r   ArcTanacotc                     dS r   r   r   s    r   r   r      r/   r   ArcCotasecc                     dS r   r   r   s    r   r   r      r/   r   ArcSecacscc                     dS r   r   r   s    r   r   r      r/   r   ArcCscatan2c                      dS r   r   r   s    r   r   r          $ r   sinhc                     dS r   r   r   s    r   r   r      r/   r   Sinhcoshc                     dS r   r   r   s    r   r   r      r/   r   Coshtanhc                     dS r   r   r   s    r   r   r       r/   r   Tanhcothc                     dS r   r   r   s    r   r   r   !   r/   r   Cothsechc                     dS r   r   r   s    r   r   r   "   r/   r   Sechcschc                     dS r   r   r   s    r   r   r   #   r/   r   Cschasinhc                     dS r   r   r   s    r   r   r   $        r   ArcSinhacoshc                     dS r   r   r   s    r   r   r   %   rW   r   ArcCoshatanhc                     dS r   r   r   s    r   r   r   &   rW   r   ArcTanhacothc                     dS r   r   r   s    r   r   r   '   rW   r   ArcCothasechc                     dS r   r   r   s    r   r   r   (   rW   r   ArcSechacschc                     dS r   r   r   s    r   r   r   )   rW   r   ArcCschsincc                     dS r   r   r   s    r   r   r   *   r/   r   Sinc	conjugatec                     dS r   r   r   s    r   r   r   +       T r   	ConjugateMaxc                      dS r   r   r   s    r   r   r   ,   r/   r   Minc                      dS r   r   r   s    r   r   r   -   r/   r   erfc                     dS r   r   r   s    r   r   r   .   r   r   Erferf2c                      dS r   r   r   s    r   r   r   /   rW   r   erfcc                     dS r   r   r   s    r   r   r   0   r/   r   Erfcerfic                     dS r   r   r   s    r   r   r   1   r/   r   Erfierfinvc                     dS r   r   r   s    r   r   r   2   rB   r   
InverseErferfcinvc                     dS r   r   r   s    r   r   r   3       4 r   InverseErfcerf2invc                      dS r   r   r   s    r   r   r   4       D r   expintc                      dS r   r   r   s    r   r   r   5   r   r   ExpIntegralEEic                     dS r   r   r   s    r   r   r   6       d r   ExpIntegralEifresnelcc                     dS r   r   r   s    r   r   r   7   r   r   FresnelCfresnelsc                     dS r   r   r   s    r   r   r   8   r   r   FresnelSgammac                     dS r   r   r   s    r   r   r   9   rW   r   Gamma
uppergammac                      dS r   r   r   s    r   r   r   :       t r   	polygammac                      dS r   r   r   s    r   r   r   ;       d r   	PolyGammaloggammac                     dS r   r   r   s    r   r   r   <   r   r   LogGammabetac                      dS r   r   r   s    r   r   r   =   rW   r   BetaCic                     dS r   r   r   s    r   r   r   >   r   r   CosIntegralSic                     dS r   r   r   s    r   r   r   ?   r   r   SinIntegralChic                     dS r   r   r   s    r   r   r   @   r   r   CoshIntegralShic                     dS r   r   r   s    r   r   r   A   r   r   SinhIntegrallic                     dS r   r   r   s    r   r   r   B   r   r   LogIntegral	factorialc                     dS r   r   r   s    r   r   r   C   rm   r   	Factorial
factorial2c                     dS r   r   r   s    r   r   r   D   r   r   
Factorial2subfactorialc                     dS r   r   r   s    r   r   r   E        r   Subfactorialcatalanc                     dS r   r   r   s    r   r   r   F   r   r   CatalanNumberharmonicc                      dS r   r   r   s    r   r   r   G   rm   r   HarmonicNumberlucasc                     dS r   r   r   s    r   r   r   H   rW   r   LucasLRisingFactorialc                      dS r   r   r   s    r   r   r   I   s    D r   
PochhammerFallingFactorialc                      dS r   r   r   s    r   r   r   J   s    T r   FactorialPowerlaguerrec                      dS r   r   r   s    r   r   r   K   rm   r   	LaguerreLassoc_laguerrec                      dS r   r   r   s    r   r   r   L       4 r   hermitec                      dS r   r   r   s    r   r   r   M   r   r   HermiteHjacobic                      dS r   r   r   s    r   r   r   N   r   r   JacobiP
gegenbauerc                      dS r   r   r   s    r   r   r   O   r   r   GegenbauerC
chebyshevtc                      dS r   r   r   s    r   r   r   P   r   r   
ChebyshevT
chebyshevuc                      dS r   r   r   s    r   r   r   Q   r   r   
ChebyshevUlegendrec                      dS r   r   r   s    r   r   r   R   rm   r   	LegendrePassoc_legendrec                      dS r   r   r   s    r   r   r   S   r   r   mathieucc                      dS r   r   r   s    r   r   r   T   rm   r   MathieuCmathieusc                      dS r   r   r   s    r   r   r   U   rm   r   MathieuSmathieucprimec                      dS r   r   r   s    r   r   r   V       $ r   MathieuCPrimemathieusprimec                      dS r   r   r   s    r   r   r   W   r   r   MathieuSPrime	stieltjesc                     dS r   r   r   s    r   r   r   X   rm   r   StieltjesGamma
elliptic_ec                      dS r   r   r   s    r   r   r   Y   r   r   	EllipticE
elliptic_fc                      dS r   r   r   s    r   r   r   Z   r   r   
elliptic_kc                     dS r   r   r   s    r   r   r   [   r   r   	EllipticKelliptic_pic                      dS r   r   r   s    r   r   r   \   r   r   
EllipticPizetac                      dS r   r   r   s    r   r   r   ]   rW   r   Zetadirichlet_etac                     dS r   r   r   s    r   r   r   ^   s     r   DirichletEta
riemann_xic                     dS r   r   r   s    r   r   r   _   r   r   	RiemannXibesselic                      dS r   r   r   s    r   r   r   `   r   r   BesselIbesseljc                      dS r   r   r   s    r   r   r   a   r   r   BesselJbesselkc                      dS r   r   r   s    r   r   r   b   r   r   BesselKbesselyc                      dS r   r   r   s    r   r   r   c   r   r   BesselYhankel1c                      dS r   r   r   s    r   r   r   d   r   r   HankelH1hankel2c                      dS r   r   r   s    r   r   r   e   r   r   HankelH2airyaic                     dS r   r   r   s    r   r   r   f   rB   r   AiryAiairybic                     dS r   r   r   s    r   r   r   g   rB   r   AiryBiairyaiprimec                     dS r   r   r   s    r   r   r   h   r   r   AiryAiPrimeairybiprimec                     dS r   r   r   s    r   r   r   i   r   r   AiryBiPrimepolylogc                      dS r   r   r   s    r   r   r   j   r   r   PolyLoglerchphic                      dS r   r   r   s    r   r   r   k   rm   r   LerchPhigcdc                      dS r   r   r   s    r   r   r   l   r/   r   GCDlcmc                      dS r   r   r   s    r   r   r   m   r/   r   LCMjnc                      dS r   r   r   s    r   r   r   n   r   r   SphericalBesselJync                      dS r   r   r   s    r   r   r   o   r   r   SphericalBesselYhyperc                      dS r   r   r   s    r   r   r   p   rB   r   HypergeometricPFQmeijergc                      dS r   r   r   s    r   r   r   q   r   r   MeijerGappellf1c                      dS r   r   r   s    r   r   r   r   rm   r   AppellF1
DiracDeltac                     dS r   r   r   s    r   r   r   s   r   r   	Heavisidec                     dS r   r   r   s    r   r   r   t   rm   r   HeavisideThetac                      dS r   r   r   s    r   r   r   u   r   r   KroneckerDeltac                     dS r   r   r   s    r   r   r   v   r/   r   Sqrt)rJ  sqrtc                   (    e Zd ZdZdZdZdddi ddd	Z e            Z e            Z	i fd
Z
d Zd Z fdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZeZ d Z!d  Z"d! Z#d" Z$d# Z%e%Z&d$ Z'd% Z(d& Z)d' Z*d( Z+ xZ,S ))MCodePrinterz]A printer to convert Python expressions to
    strings of the Wolfram's Mathematica code
    _mcodezWolfram LanguageNauto   TF)order	full_prec	precisionuser_functionshumanallow_unknown_functionsc                 V   t          j        | |           t          t                    | _        |                    di                                           }|                                D ]#\  }}t          |t                    s	d |fg||<   $| j        	                    |           dS )z+Register function mappings supplied by userrV  c                      dS r   r   r   s    r   r   z'MCodePrinter.__init__.<locals>.<lambda>   s    D r   N)
r   __init__dictknown_functionsgetcopyitems
isinstancelistupdate)selfsettings	userfuncskvs        r   r[  zMCodePrinter.__init__   s    T8,,,#O44LL!1266;;==	OO%% 	6 	6DAqa&& 6!0! 45	!##I.....r   c                     |S Nr   )rd  liness     r   _format_codezMCodePrinter._format_code   s    r   c                     t          |          }|                     |j        |          d|                     |j        |          S )N^)r   parenthesizebaser   )rd  exprPRECs      r   
_print_PowzMCodePrinter._print_Pow   sL    $++DIt<<<<++DHd;;;= 	=r   c                     t          |          |                                \  }}t                                           |j        |           }|r*|dz  }|d                     fd|D                       z  }|S )N*z**c              3   D   K   | ]}                     |          V  d S rj  )ro  ).0arr  rd  s     r   	<genexpr>z*MCodePrinter._print_Mul.<locals>.<genexpr>   s3      DDAT..q$77DDDDDDr   )r   args_cncsuper
_print_Mulfuncjoin)rd  rq  cncresrr  	__class__s   `    @r   r|  zMCodePrinter._print_Mul   s    $2gg  A// 	E3JC499DDDDDDDDDDDC
r   c                     |                      |j                  }|                      |j                  }|j        }d                    |||          S )Nz{} {} {})_printlhsrhsrel_opformat)rd  rq  lhs_coderhs_codeops        r   _print_RelationalzMCodePrinter._print_Relational   sG    ;;tx((;;tx(([  2x888r   c                     dS )N0r   rd  rq  s     r   _print_ZerozMCodePrinter._print_Zero       sr   c                     dS )N1r   r  s     r   
_print_OnezMCodePrinter._print_One   r  r   c                     dS )Nz-1r   r  s     r   _print_NegativeOnezMCodePrinter._print_NegativeOne       tr   c                     dS )Nz1/2r   r  s     r   _print_HalfzMCodePrinter._print_Half   s    ur   c                     dS )NIr   r  s     r   _print_ImaginaryUnitz!MCodePrinter._print_ImaginaryUnit   r  r   c                     dS )NInfinityr   r  s     r   _print_InfinityzMCodePrinter._print_Infinity   s    zr   c                     dS )Nz	-Infinityr   r  s     r   _print_NegativeInfinityz$MCodePrinter._print_NegativeInfinity   s    {r   c                     dS )NComplexInfinityr   r  s     r   _print_ComplexInfinityz#MCodePrinter._print_ComplexInfinity   s      r   c                     dS )NIndeterminater   r  s     r   
_print_NaNzMCodePrinter._print_NaN   s    r   c                     dS )NEr   r  s     r   _print_Exp1zMCodePrinter._print_Exp1   r  r   c                     dS )NPir   r  s     r   	_print_PizMCodePrinter._print_Pi   r  r   c                     dS )NGoldenRatior   r  s     r   _print_GoldenRatiozMCodePrinter._print_GoldenRatio   s    }r   c                 x    |                     d          }t          |          }|                     ||          S )NT)r}  )expandr   ro  )rd  rq  expandedrr  s       r   _print_TribonacciConstantz&MCodePrinter._print_TribonacciConstant   s8    ;;D;))$  4000r   c                     dS )N
EulerGammar   r  s     r   _print_EulerGammazMCodePrinter._print_EulerGamma   s    |r   c                     dS )NCatalanr   r  s     r   _print_CatalanzMCodePrinter._print_Catalan   s    yr   c                 R     dd                      fd|D                       z   dz   S )N{, c              3   B   K   | ]}                     |          V  d S rj  doprintrw  rx  rd  s     r   ry  z+MCodePrinter._print_list.<locals>.<genexpr>   s-      ==1t||A======r   }r~  r  s   ` r   _print_listzMCodePrinter._print_list   s4    TYY==========CCr   c                 P    |                      |                                          S rj  r  tolistr  s     r   _print_ImmutableDenseMatrixz(MCodePrinter._print_ImmutableDenseMatrix       ||DKKMM***r   c                 v      fdfd} fd}d                      |             |                      S )Nc                     d                                         | d         dz   | d         dz   f                              |                    S )N{} -> {}r      r  r  posvalrd  s     r   
print_rulez=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_rule   sP    $$LL#a&(CF1H-..S0A0AC C Cr   c                      t                                                                          t                    } dd                    fd| D                       z   dz   S )N)keyr  r  c              3   6   K   | ]\  }} ||          V  d S rj  r   )rw  rg  rh  r  s      r   ry  zPMCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data.<locals>.<genexpr>   s3      ==tq!**Q**======r   r  )sortedtodokr`  r
   r~  )r`  rq  r  s    r   
print_dataz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data   sc    4::<<--//5EFFFE		====u=====> r   c                  8                          j                  S rj  r  shaperq  rd  s   r   
print_dimsz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dims   s    <<
+++r   SparseArray[{}, {}]r  )rd  rq  r  r  r  s   ``  @r   _print_ImmutableSparseMatrixz)MCodePrinter._print_ImmutableSparseMatrix   s    	C 	C 	C 	C 	C	 	 	 	 	 		, 	, 	, 	, 	, 	, %++JJLL**,,GGGr   c                 P    |                      |                                          S rj  r  r  s     r   _print_ImmutableDenseNDimArrayz+MCodePrinter._print_ImmutableDenseNDimArray   r  r   c                      d d  fdfd} fd}d                      |             |                      S )Nc                 L    dd                     d | D                       z   dz   S )Nr  r  c              3      K   | ]}|V  d S rj  r   )rw  rx  s     r   ry  zZMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list.<locals>.<genexpr>  s"      ":":1":":":":":":r   r  r  )string_lists    r   print_string_listzGMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list   s-    ":":k":":"::::S@@r   c                  4    t          d | D                       S )zHelper function to change Python style indexing to
            Pathematica indexing.

            Python indexing (0, 1 ... n-1)
            -> Mathematica indexing (1, 2 ... n)
            c              3       K   | ]	}|d z   V  
dS )r  Nr   rw  is     r   ry  z]MCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index.<locals>.<genexpr>
  s&      --1Q------r   )tuple)argss    r   to_mathematica_indexzJMCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index  s!     --------r   c                 |    d                                         |                               |                    S )z.Helper function to print a rule of Mathematicar  r  r  s     r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_rule  s1    $$T\\#%6%6S8I8IJJJr   c                  ~      fdt           j                                                  D                       S )a/  Helper function to print data part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html

            ``data`` must be formatted with rule.
            c           	      Z    g | ]'\  }}                       |           |          (S r   )_get_tuple_index)rw  r  valuerq  r  r  s      r   
<listcomp>zTMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data.<locals>.<listcomp>  s]     F F F C ((4+@+@+E+EG  F F Fr   )r  _sparse_arrayr`  )rq  r  r  r  s   r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data  sl     %$F F F F F F #));)A)A)C)C"D"DF F F  r   c                  8                          j                  S )a  Helper function to print dimensions part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html
            r  r  s   r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_dims!  s     <<
+++r   r  r  )rd  rq  r  r  r  r  r  s   ``  @@@r   _print_ImmutableSparseNDimArrayz,MCodePrinter._print_ImmutableSparseNDimArray   s    	A 	A 	A	. 	. 	.	K 	K 	K 	K 	K	 	 	 	 	 	 	 	"	, 	, 	, 	, 	, 	, %++JJLL**,,GGGr   c                 $    |j         j         j        v rM j        |j         j                 }|D ]2\  }} ||j         r#|d                     |j        d          dc S 3n|j         j         j        v rr j        |j         j                 \  }}                     |          rCt           fd|D                       r(                     |	                    |                    S |j         j        d                     |j        d          z  z   S )N[r  ]c              3   B   K   | ]}                     |          V  d S rj  )
_can_print)rw  frd  s     r   ry  z/MCodePrinter._print_Function.<locals>.<genexpr>6  s/      0Y0Y1C1C0Y0Y0Y0Y0Y0Yr   z[%s])
r}  __name__r]  r  	stringify_rewriteable_functionsr  allr  rewrite)rd  rq  
cond_mfunccondmfunctarget_frequired_fss   `      r   _print_FunctionzMCodePrinter._print_Function-  s1   9!55 		;-di.@AJ) O Oe4# O',uudnnTY.M.M.M.MNNNNOO Y4#>> 	;$($?	@R$S!Hkx(( ;S0Y0Y0Y0Y[0Y0Y0Y-Y-Y ;{{4<<#9#9:::y!FT^^DIt-L-L$LLLr   c                 <   t          |j                  dk    r3d                    |                     |j        d                             S d                    |                     |j        d                   |                     |j        d                             S )Nr  zProductLog[{}]r   zProductLog[{}, {}])lenr  r  r  r  s     r   _print_LambertWzMCodePrinter._print_LambertW<  s    ty>>Q 	F#**4;;ty|+D+DEEE#**KK	!%%t{{49Q<'@'@B B 	Br   c                      t          |j                  dk    r0|j        d         dd          s|j        d         |j        d         g}n|j        }dd                     fd|D                       z   dz   S )Nr  r   zHold[Integrate[r  c              3   B   K   | ]}                     |          V  d S rj  r  r  s     r   ry  z/MCodePrinter._print_Integral.<locals>.<genexpr>G  s-      ,K,KT\\!__,K,K,K,K,K,Kr   ]])r
  	variableslimitsr  r~  )rd  rq  r  s   `  r   _print_IntegralzMCodePrinter._print_IntegralB  s    t~!# 	DKN122,> 	IaL$."34DD9D 499,K,K,K,Kd,K,K,K#K#KKdRRr   c                 \     dd                      fd|j        D                       z   dz   S )Nz	Hold[Sum[r  c              3   B   K   | ]}                     |          V  d S rj  r  r  s     r   ry  z*MCodePrinter._print_Sum.<locals>.<genexpr>J  s-      &J&J1t||A&J&J&J&J&J&Jr   r  )r~  r  r  s   ` r   
_print_SumzMCodePrinter._print_SumI  s6    TYY&J&J&J&J	&J&J&JJJJTQQr   c                      |j         }d |j        D             }dd                     fd|g|z   D                       z   dz   S )Nc                 :    g | ]}|d          d k    r|d         n|S )r  r   r   r  s     r   r  z2MCodePrinter._print_Derivative.<locals>.<listcomp>N  s-    GGGa1)1GGGr   zHold[D[r  c              3   B   K   | ]}                     |          V  d S rj  r  r  s     r   ry  z1MCodePrinter._print_Derivative.<locals>.<genexpr>O  s-      $N$NT\\!__$N$N$N$N$N$Nr   r  )rq  variable_countr~  )rd  rq  dexprdvarss   `   r   _print_DerivativezMCodePrinter._print_DerivativeL  sX    	GG43FGGG499$N$N$N$Nugo$N$N$NNNNQUUUr   c                 ,    d                     |          S )Nz(* {} *)r  )rd  texts     r   _get_commentzMCodePrinter._get_commentR  s      &&&r   )-r  
__module____qualname____doc__printmethodlanguage_default_settingsset_number_symbols_not_supportedr[  rl  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  _print_tuple_print_Tupler  r  r  r  r  _print_MinMaxBaser  r  r  r  r  __classcell__)r  s   @r   rO  rO  z   s|         K!H #(  ceeOSUUN " / / / /  = = =
    9 9 9          
    ! ! !  
      1 1 1
    D D DLL+ + +H H H"+ + +,H ,H ,H\M M M (B B BS S SR R RV V V' ' ' ' ' ' 'r   rO  c                 F    t          |                              |           S )a  Converts an expr to a string of the Wolfram Mathematica code

    Examples
    ========

    >>> from sympy import mathematica_code as mcode, symbols, sin
    >>> x = symbols('x')
    >>> mcode(sin(x).series(x).removeO())
    '(1/120)*x^5 - 1/6*x^3 + x'
    )rO  r  )rq  re  s     r   mathematica_coder-  V  s      !!))$///r   N)r!  typingr   r   tDictr   tSetr   tTuple
sympy.corer   r   r	   sympy.core.sortingr
   sympy.printing.codeprinterr   sympy.printing.precedencer   r]  rO  r-  r   r   r   <module>r6     s    D C C C C C C C C C C C ) ) ) ) ) ) ) ) ) ) / / / / / / 2 2 2 2 2 2 0 0 0 0 0 0i	^^U#$i	^^U#$i 
^^U#$i 
^^U#$	i
 
^^U#$i 
^^U#$i 
^^U#$i 
^^U#$i nnh'(i nnh'(i nnh'(i nnh'(i nnh'(i nnh'(i )*i  nnf%&!i" nnf%&#i i$ nnf%&%i& nnf%&'i( nnf%&)i* nnf%&+i, ~~y)*-i. ~~y)*/i0 ~~y)*1i2 ~~y)*3i4 ~~y)*5i6 ~~y)*7i8 nnf%&9i: >>;/0;i< 
__e$%=i> 
__e$%?i@ 
^^U#$AiB oou%&CiD nnf%&Ei i iF nnf%&GiH -.IiJ /0KiL ,/0MiN 01OiP 	NNO,
-QiR ..*-.SiT ..*-.UiV ~~w'(WiX OOW-.YiZ ??K01[i\ ..*-.]i^ oov&'_i` 	NNM*
+aib 	NNM*
+cid 
^^^,-eif 
^^^,-gi i ih 	NNM*
+iij >>;/0kil NNL12min nnn56oip 12qir //#345sit ~~x()uiv ,78wix //+;<=yiz //;/0{i| 56}i~ *-.i@ +,AiB OO]34CiD OO\23EiF OO\23GiH //;/0Ii i iJ 56KiL //:./MiN //:./OiP 89QiR 89SiT >>#345UiV OO[12WiX OO[12YiZ NNK01[i\ __l34]i^ oov&'_i` ~~~67aib NNK01cid ),-eif ),-gih ),-iij ),-ki i il *-.min *-.oip )*qir )*sit ^^]34uiv ^^]34wix ),-yiz //:./{i| 
__e$%}i~ 
__e$%i@ 	OO/0
1AiB 	OO/0
1CiD  345EiF ),-GiH //:./IiJ NNL12KiL >>#345Mi iN ()9:;nf%&Qi i iXY' Y' Y' Y' Y'; Y' Y' Y'x0 0 0 0 0r   