
    gO1                       d Z ddlmZ ddl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/d0 d1fgd2d3 d(fgd4d5 d6fgd7d8 d9fgi d:d; d<fgd=d> d?fgd@dA dBfgdCdD dEfgdFdG dHfgdIdJ dKfgdLdM dNfgdOdP dQfgdRdS dTfgdUdV dWfgdXdY dZfgd[d\ d]fgd^d_ d^fgd`da d`fgdbdc ddfgdedf ddfgdgdh difgi djdk dlfgdmdn dofgdpdq drfgdsdt dofgdudv dwfgdxdy dzfgd{d| d}fgd~d 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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 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-d. d/fgd0 d1fgd2 d3fgd4Z G d5 d6e          Zd7 Zd8S (9  z
Mathematica code printer
    )annotations)Any)BasicExprFloat)default_sort_key)CodePrinter)
precedenceexpc                    dS NT xs    V/var/www/html/ai-engine/env/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   &   rU   r   ArcCoshatanhc                    dS r   r   r   s    r   r   r   '   rU   r   ArcTanhacothc                    dS r   r   r   s    r   r   r   (   rU   r   ArcCothasechc                    dS r   r   r   s    r   r   r   )   rU   r   ArcSechacschc                    dS r   r   r   s    r   r   r   *   rU   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   0   rU   r   erfcc                    dS r   r   r   s    r   r   r   1   r-   r   Erfcerfic                    dS r   r   r   s    r   r   r   2   r-   r   Erfierfinvc                    dS r   r   r   s    r   r   r   3   r@   r   
InverseErferfcinvc                    dS r   r   r   s    r   r   r   4       4 r   InverseErfcerf2invc                     dS r   r   r   s    r   r   r   5       D r   expintc                     dS r   r   r   s    r   r   r   6   r   r   ExpIntegralEEic                    dS r   r   r   s    r   r   r   7       d r   ExpIntegralEifresnelcc                    dS r   r   r   s    r   r   r   8   r   r   FresnelCfresnelsc                    dS r   r   r   s    r   r   r   9   r   r   FresnelSgammac                    dS r   r   r   s    r   r   r   :   rU   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   >   rU   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   A   r   r   CoshIntegralShic                    dS r   r   r   s    r   r   r   B   r   r   SinhIntegrallic                    dS r   r   r   s    r   r   r   C   r   r   LogIntegral	factorialc                    dS r   r   r   s    r   r   r   D   rk   r   	Factorial
factorial2c                    dS r   r   r   s    r   r   r   E   r   r   
Factorial2subfactorialc                    dS r   r   r   s    r   r   r   F        r   Subfactorialcatalanc                    dS r   r   r   s    r   r   r   G   r   r   CatalanNumberharmonicc                     dS r   r   r   s    r   r   r   H   rk   r   HarmonicNumberlucasc                    dS r   r   r   s    r   r   r   I   rU   r   LucasLRisingFactorialc                     dS r   r   r   s    r   r   r   J   s    D r   
PochhammerFallingFactorialc                     dS r   r   r   s    r   r   r   K   s    T r   FactorialPowerlaguerrec                     dS r   r   r   s    r   r   r   L   rk   r   	LaguerreLassoc_laguerrec                     dS r   r   r   s    r   r   r   M       4 r   hermitec                     dS r   r   r   s    r   r   r   N   r   r   HermiteHjacobic                     dS r   r   r   s    r   r   r   O   r   r   JacobiP
gegenbauerc                     dS r   r   r   s    r   r   r   P   r   r   GegenbauerC
chebyshevtc                     dS r   r   r   s    r   r   r   Q   r   r   
ChebyshevT
chebyshevuc                     dS r   r   r   s    r   r   r   R   r   r   
ChebyshevUlegendrec                     dS r   r   r   s    r   r   r   S   rk   r   	LegendrePassoc_legendrec                     dS r   r   r   s    r   r   r   T   r   r   mathieucc                     dS r   r   r   s    r   r   r   U   rk   r   MathieuCmathieusc                     dS r   r   r   s    r   r   r   V   rk   r   MathieuSmathieucprimec                     dS r   r   r   s    r   r   r   W       $ r   MathieuCPrimemathieusprimec                     dS r   r   r   s    r   r   r   X   r   r   MathieuSPrime	stieltjesc                    dS r   r   r   s    r   r   r   Y   rk   r   StieltjesGamma
elliptic_ec                     dS r   r   r   s    r   r   r   Z   r   r   	EllipticE
elliptic_fc                     dS r   r   r   s    r   r   r   [   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   ^   rU   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   a   r   r   BesselIbesseljc                     dS r   r   r   s    r   r   r   b   r   r   BesselJbesselkc                     dS r   r   r   s    r   r   r   c   r   r   BesselKbesselyc                     dS r   r   r   s    r   r   r   d   r   r   BesselYhankel1c                     dS r   r   r   s    r   r   r   e   r   r   HankelH1hankel2c                     dS r   r   r   s    r   r   r   f   r   r   HankelH2airyaic                    dS r   r   r   s    r   r   r   g   r@   r   AiryAiairybic                    dS r   r   r   s    r   r   r   h   r@   r   AiryBiairyaiprimec                    dS r   r   r   s    r   r   r   i   r   r   AiryAiPrimeairybiprimec                    dS r   r   r   s    r   r   r   j   r   r   AiryBiPrimepolylogc                     dS r   r   r   s    r   r   r   k   r   r   PolyLoglerchphic                     dS r   r   r   s    r   r   r   l   rk   r   LerchPhigcdc                     dS r   r   r   s    r   r   r   m   r-   r   GCDlcmc                     dS r   r   r   s    r   r   r   n   r-   r   LCMjnc                     dS r   r   r   s    r   r   r   o   r   r   SphericalBesselJync                     dS r   r   r   s    r   r   r   p   r   r   SphericalBesselYhyperc                     dS r   r   r   s    r   r   r   q   r@   r   HypergeometricPFQmeijergc                     dS r   r   r   s    r   r   r   r   r   r   MeijerGappellf1c                     dS r   r   r   s    r   r   r   s   rk   r   AppellF1
DiracDeltac                    dS r   r   r   s    r   r   r   t   r   r   	Heavisidec                    dS r   r   r   s    r   r   r   u   rk   r   HeavisideThetac                     dS r   r   r   s    r   r   r   v   r   r   KroneckerDeltac                    dS r   r   r   s    r   r   r   w   r-   r   Sqrt)rH  sqrtc                  X    e Zd ZU dZdZdZ eej        fi di dZde	d<    e
            Zde	d	<    e
            Zd
e	d<   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 Language   )	precisionuser_functionszdict[str, Any]_default_settingszset[tuple[Expr, Float]]_number_symbolsz
set[Basic]_not_supportedc                V   t          j        | |           t          t                    | _        |                    di                                           }|                                D ]#\  }}t          |t                    s	d |fg||<   $| j        	                    |           dS )z+Register function mappings supplied by userrQ  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   rW  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   )r`  liness     r   _format_codezMCodePrinter._format_code   s    r   c                    t          |          }|                     |j        |          d|                     |j        |          S )N^)r
   parenthesizebaser   )r`  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 rf  )rk  ).0arn  r`  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)r`  rm  cncresrn  	__class__s   `    @r   rx  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)r`  rm  lhs_coderhs_codeops        r   _print_RelationalzMCodePrinter._print_Relational   sG    ;;tx((;;tx(([  2x888r   c                    dS )N0r   r`  rm  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)ry  )expandr
   rk  )r`  rm  expandedrn  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 rf  doprintrs  rt  r`  s     r   ru  z+MCodePrinter._print_list.<locals>.<genexpr>   s-      ==1t||A======r   }rz  r  s   ` r   _print_listzMCodePrinter._print_list   s4    TYY==========CCr   c                P    |                      |                                          S rf  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valr`  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 rf  r   )rs  rc  rd  r  s      r   ru  zPMCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data.<locals>.<genexpr>   s3      ==tq!**Q**======r   r  )sortedtodokr\  r   rz  )r\  rm  r  s    r   
print_dataz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data   sc    4::<<--//5EFFFE		====u=====> r   c                 8                          j                  S rf  r  shaperm  r`  s   r   
print_dimsz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dims   s    <<
+++r   SparseArray[{}, {}]r  )r`  rm  r  r  r  s   ``  @r   _print_ImmutableSparseMatrixz)MCodePrinter._print_ImmutableSparseMatrix   s    	C 	C 	C 	C 	C	 	 	 	 	 		, 	, 	, 	, 	, 	, %++JJLL**,,GGGr   c                P    |                      |                                          S rf  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 rf  r   )rs  rt  s     r   ru  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   rs  is     r   ru  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)rs  r  valuerm  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\  )rm  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  )r`  rm  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 rf  )
_can_print)rs  fr`  s     r   ru  z/MCodePrinter._print_Function.<locals>.<genexpr>3  s/      0Y0Y1C1C0Y0Y0Y0Y0Y0Yr   z[%s])
ry  __name__rY  r  	stringify_rewriteable_functionsr  allr  rewrite)r`  rm  
cond_mfunccondmfunctarget_frequired_fss   `      r   _print_FunctionzMCodePrinter._print_Function*  s-   9!5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_LambertW9  s    ty>>Q#**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 rf  r  r  s     r   ru  z/MCodePrinter._print_Integral.<locals>.<genexpr>D  s-      ,K,KT\\!__,K,K,K,K,K,Kr   ]])r  	variableslimitsr  rz  )r`  rm  r  s   `  r   _print_IntegralzMCodePrinter._print_Integral?  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 rf  r  r  s     r   ru  z*MCodePrinter._print_Sum.<locals>.<genexpr>G  s-      &J&J1t||A&J&J&J&J&J&Jr   r
  )rz  r  r  s   ` r   
_print_SumzMCodePrinter._print_SumF  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>K  s,    GGGa11GGGr   zHold[D[r  c              3  B   K   | ]}                     |          V  d S rf  r  r  s     r   ru  z1MCodePrinter._print_Derivative.<locals>.<genexpr>L  s-      $N$NT\\!__$N$N$N$N$N$Nr   r
  )rm  variable_countrz  )r`  rm  dexprdvarss   `   r   _print_DerivativezMCodePrinter._print_DerivativeI  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  )r`  texts     r   _get_commentzMCodePrinter._get_commentO  s      &&&r   )0r  
__module____qualname____doc__printmethodlanguagerX  r	   rR  __annotations__setrS  rT  rW  rh  ro  rx  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   rM  rM  {   s          K!H(,[-J ) )O O ) )    
 03suuO4444!$N&&&& " / / / /  = = =
    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   rM  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'
    )rM  r  )rm  ra  s     r   mathematica_coder'  S  s      !!))$///r   N)r  
__future__r   typingr   
sympy.corer   r   r   sympy.core.sortingr   sympy.printing.codeprinterr	   sympy.printing.precedencer
   rY  rM  r'  r   r   r   <module>r.     s    # " " " " "       ) ) ) ) ) ) ) ) ) ) / / / / / / 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U' U' U' U' U'; U' U' U'p0 0 0 0 0r   