+
    ‹°³j}c  ã                  óò  € R t ^ RIHt ^ RIHt ^ RIHtHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt . R	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9Nt/ R:R;bR<R=bR>R?bR@RAbRBRCbRDREbRFRGbRHRIbRJRKbRLRMbRNRObRPRQbRRRSbRTRUbRVRWbRXRYbRZR[bR\R]R^R_R`RaRbRcRdReRfRgRhRi/Ct ! Rj Rk]4      tRoRm ltRn tRl# )pai  
Octave (and Matlab) code printer

The `OctaveCodePrinter` converts SymPy expressions into Octave expressions.
It uses a subset of the Octave language for Matlab compatibility.

A complete code generator, which uses `octave_code` extensively, can be found
in `sympy.utilities.codegen`.  The `codegen` module can be used to generate
complete source code files.

)Úannotations)ÚAny)ÚMulÚPowÚSÚRational)Ú_keep_coeff)Úequal_valued)ÚCodePrinter)Ú
precedenceÚ
PRECEDENCE©ÚsearchÚsinÚcosÚtanÚcotÚsecÚcscÚasinÚacosÚacotÚatanÚatan2ÚasecÚacscÚsinhÚcoshÚtanhÚcothÚcschÚsechÚasinhÚacoshÚatanhÚacothÚasechÚacschÚerfcÚerfiÚerfÚerfinvÚerfcinvÚbesseliÚbesseljÚbesselkÚbesselyÚ	bernoulliÚbetaÚeulerÚexpÚ	factorialÚfloorÚfresnelcÚfresnelsÚgammaÚharmonicÚlogÚpolylogÚsignÚzetaÚlegendreÚAbsÚabsÚargÚangleÚbinomialÚbincoeffÚceilingÚceilÚ
chebyshevuÚ
chebyshevUÚ
chebyshevtÚ
chebyshevTÚChiÚcoshintÚCiÚcosintÚ	conjugateÚconjÚ
DiracDeltaÚdiracÚ	HeavisideÚ	heavisideÚimÚimagÚlaguerreÚ	laguerreLÚLambertWÚlambertwÚliÚlogintÚloggammaÚgammalnÚMaxÚmaxÚMinÚminÚModÚmodÚ	polygammaÚpsiÚreÚrealÚRisingFactorialÚ
pochhammerÚShiÚsinhintÚSiÚsinintc                  óÔ  a € ] tR t^At$ RtRtRtRRRRRR	/t]! ]	P                  3/ R
^R/ RRRR/B t
R]R&   / 3V 3R lltR tR tR tR tR tR tR tR tR tR tR tR tR tR tR  tR! tR" tR# tR$ tR% t R& t!]!t"]!t#]!t$R' t%R( t&R) t'R* t(R+ t)R, t*R- t+R. t,R/ t-R0 t.R1 t/R2 t0R3 t1R4 t2R5 t3R6 t4R7 t5R8 t6R9 t7R: t8R; t9R< t:R= t;R> t<R? t=]=;t>t?R@ t@]@;tAtBRA tCRB tDRC tERDtFV ;tG# )EÚOctaveCodePrinterzD
A printer to convert expressions to strings of Octave/Matlab code.
Ú_octaveÚOctaveÚandÚ&ÚorÚ|ÚnotÚ~Ú	precisionÚuser_functionsÚcontractTÚinlinezdict[str, Any]Ú_default_settingsc                	ó  <€ \         SV `  V4       \        \        \        \        4      4      V n        V P
                  P                  \        \        4      4       VP                  R / 4      pV P
                  P                  V4       R# )r{   N)	ÚsuperÚ__init__ÚdictÚzipÚknown_fcns_src1Úknown_functionsÚupdateÚknown_fcns_src2Úget)ÚselfÚsettingsÚ	userfuncsÚ	__class__s   && €ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/printing/octave.pyr�   ÚOctaveCodePrinter.__init__Y   sb   ø€ Ü‰Ñ˜Ô"Ü#¤C¬¼Ó$IÓJˆÔØ×Ñ×#Ñ#¤D¬Ó$9Ô:Ø—L‘LÐ!1°2Ó6ˆ	Ø×Ñ×#Ñ# IÖ.ó    c                	ó   € V^,          # )é   © )r‰   Úps   &&r�   Ú_rate_index_positionÚ&OctaveCodePrinter._rate_index_positiona   s   € Ø��sˆ
r�   c                	ó   € R V,          # )z%s;r’   )r‰   Ú
codestrings   &&r�   Ú_get_statementÚ OctaveCodePrinter._get_statemente   s   € Ø�zÕ!Ð!r�   c                	ó$   € R P                  V4      # )z% {}©Úformat)r‰   Útexts   &&r�   Ú_get_commentÚOctaveCodePrinter._get_commenti   s   € Ø�}‰}˜TÓ"Ð"r�   c                	ó$   € R P                  W4      # )z{} = {};r›   )r‰   ÚnameÚvalues   &&&r�   Ú_declare_number_constÚ'OctaveCodePrinter._declare_number_constm   s   € Ø× Ñ  Ó-Ð-r�   c                	ó$   € V P                  V4      # ©N)Úindent_code)r‰   Úliness   &&r�   Ú_format_codeÚOctaveCodePrinter._format_codeq   s   € Ø×Ñ Ó&Ð&r�   c                	óL   a€ VP                   w  opV3R  l\        V4       4       # )c              3  óN   <"  € T F  p\        S4       F  q"V3x € K
  	  K  	  R # 5ir¦   )Úrange)Ú.0ÚjÚiÚrowss   &  €r�   Ú	<genexpr>Ú=OctaveCodePrinter._traverse_matrix_indices.<locals>.<genexpr>x   s   øé € ÐA¡˜1´U¸4¶[°�A•±[‘£ùs   ƒ"%)Úshaper­   )r‰   ÚmatÚcolsr±   s   && @r�   Ú_traverse_matrix_indicesÚ*OctaveCodePrinter._traverse_matrix_indicesu   s   ø€ à—Y‘Y‰
ˆˆdÜA¤ d¤ÓAÐAr�   c           	     	ó  € . p. pV Fy  p\        V P                  VP                  VP                  ^,           VP                  ^,           .4      w  rVpVP                  RV: RV: RV: 24       VP                  R4       K{  	  W#3# )é   zfor ú = Ú:Úend)ÚmapÚ_printÚlabelÚlowerÚupperÚappend)r‰   ÚindicesÚ
open_linesÚclose_linesr°   ÚvarÚstartÚstops   &&      r�   Ú_get_loop_opening_endingÚ*OctaveCodePrinter._get_loop_opening_ending{   sw   € Øˆ
ØˆÛˆAä" 4§;¡;Ø—W‘W˜aŸg™g¨�k¨1¯7©7°Q­;Ð7ó 9ÑˆC˜à×Ò³#³uºdÐCÔDØ×Ñ˜uÖ%ñ ð Ð&Ð&r�   c           	     	óÈ  € VP                   '       dh   VP                  '       dV   \        P                  V,          P                  '       d/   R V P                  \        P                  ) V,          4      ,          # \        V4      pVP                  4       w  r4V^ 8  d   \        V) V4      pRpMRp. p. p. pV P                  R9  d   VP                  4       p	M\        P                  ! V4      p	V	 EFÝ  p
V
P                  '       Ed    V
P                  '       Ed   V
P                  P                   '       dñ   V
P                  P"                  '       dÕ   V
P                  R8w  d5   VP%                  \'        V
P(                  V
P                  ) RR7      4       K§  \+        V
P,                  ^ ,          P,                  4      ^8w  d2   \/        V
P(                  \        4      '       d   VP%                  V
4       VP%                  \'        V
P(                  V
P                  ) 4      4       EK6  V
P                   '       d…   V
\        P0                  Jdq   V
P2                  ^8w  d%   VP%                  \5        V
P2                  4      4       V
P6                  ^8w  d(   VP%                  \5        V
P6                  4      4       EKÉ  EKÌ  VP%                  V
4       EKà  	  T;'       g    \        P8                  .pV Uu. uF  q°P;                  W²4      NK  	  ppV Uu. uF  q°P;                  W²4      NK  	  ppV FY  p
V
P(                  V9   g   K  RW×P=                  V
P(                  4      ,          ,          W×P=                  V
P(                  4      &   K[  	  R pV'       g   W^! Wl4      ,           # \+        V4      ^8X  dA   V^ ,          P                   '       d   RMRpW^! Wl4      ,           V,           V^ ,          ,           # \>        ;QJ d    R	 V 4       F  '       d   K   RM	  R
M! R	 V 4       4      '       d   RMRpW^! Wl4      ,           V,           RV! W}4      ,          ,           # u upi u upi )z%siÚ-Ú F)Úevaluatez(%s)c                óÀ   € V^ ,          p\        ^\        V 4      4       F;  pW^,
          ,          P                  '       d   RMRpW$,           W,          ,           pK=  	  V# )é    Ú*ú.*)r­   ÚlenÚ	is_number)ÚaÚa_strÚrr°   Úmulsyms   &&   r�   ÚmultjoinÚ.OctaveCodePrinter._print_Mul.<locals>.multjoin¿   sM   € à�a•ˆAÜ˜1œc !›fÖ%�Ø ! A¥#¥× 0× 0Ð 0™°d�Ø•J ¥Õ)’ñ &ð ˆHr�   Ú/ú./c              3  ó8   "  € T F  qP                   x € K  	  R # 5ir¦   ©rÕ   )r®   Úbis   & r�   r²   Ú/OctaveCodePrinter._print_Mul.<locals>.<genexpr>Í   s   é € Ð9±q°§¦³qùó   ‚T)ÚoldÚnoneéÿÿÿÿ) rÕ   Úis_imaginaryr   ÚImaginaryUnitÚ
is_Integerr¿   r   Úas_coeff_Mulr   ÚorderÚas_ordered_factorsr   Ú	make_argsÚis_commutativeÚis_Powr4   Úis_RationalÚis_negativerÃ   r   ÚbaserÔ   ÚargsÚ
isinstanceÚInfinityr“   r   ÚqÚOneÚparenthesizeÚindexÚall)r‰   ÚexprÚprecÚcÚer=   rÖ   ÚbÚ	pow_parenrò   ÚitemÚxr×   Úb_strrÚ   Údivsyms   &&              r�   Ú
_print_MulÚOctaveCodePrinter._print_Mul‡   s&  € à�N�NˆN˜t×0×0Ð0Ü—‘ Õ%×1×1Ð1Ø˜4Ÿ;™;¬¯©Ð'7¸Õ'<Ó=Õ=Ð=ô ˜$Óˆà× Ñ Ó"‰ˆØˆqŒ5Ü ˜r 1Ó%ˆDØ‰DàˆDàˆØˆàˆ	à�:‰:˜_Ô,Ø×*Ñ*Ó,‰Dô —=’= Ó&ˆDô ˆDØ×#×#Ñ#¨¯¯©¸¿¹×8L×8LÐ8LØŸ™×,×,Ð,Ø—8‘8˜r”>Ø—H‘HœS §¡¨T¯X©X¨IÀÔFÖGä˜4Ÿ9™9 Q�<×,Ñ,Ó-°Ô2´zÀ$Ç)Á)ÌS×7QÒ7QØ!×(Ñ(¨Ô.Ø—H‘HœS §¡¨T¯X©X¨IÓ6×7Ø×!×!Ð! d´!·*±*Ó&<Ø—6‘6˜Q”;Ø—H‘HœX d§f¡fÓ-Ô.Ø—6‘6˜Q”;Ø—H‘HœX d§f¡fÓ-×.ò ð —‘˜—ñ ð" �LˆL”!—%‘%�ˆá56Ó7±Q°×"Ñ" 1Ö+±QˆÐ7Ù56Ó7±Q°×"Ñ" 1Ö+±QˆÐ7ó ˆDØ�y‰y˜AŽ~Ø,2°U¿7¹7À4Ç9Á9Ó;MÕ5NÕ,N�—g‘g˜dŸi™iÓ(Ó)ñ ò
	÷ Ø˜( 1Ó,Õ,Ð,Ü�‹V�qŒ[Ø˜a�DŸNŸN˜N‘S°ˆFØ˜( 1Ó,Õ,¨vÕ5¸¸a½Õ@Ð@ç›CÑ9±qÓ9ŸCŸCšCÑ9±qÓ9×9Ò9‘S¸tˆFØ˜8 AÓ-Õ-ØõØ#¡h¨qÓ&8Õ8õ9ð :ùò1 8ùÚ7s   Ë1QÌQc                	óª   € V P                  VP                  4      pV P                  VP                  4      pVP                  pR P	                  W$V4      # )z{} {} {})r¿   ÚlhsÚrhsÚrel_oprœ   )r‰   rú   Úlhs_codeÚrhs_codeÚops   &&   r�   Ú_print_RelationalÚ#OctaveCodePrinter._print_RelationalÑ   sB   € Ø—;‘;˜tŸx™xÓ(ˆØ—;‘;˜tŸx™xÓ(ˆØ�[‰[ˆØ× Ñ  ¨xÓ8Ð8r�   c                	óŒ  € \         ;QJ d&    R  VP                   4       F  '       d   K   RM	  RM! R  VP                   4       4      '       d   RMRp\        V4      p\        VP                  R4      '       d#   RV P                  VP                  4      ,          # VP                  '       dÚ   \        VP                  R4      '       dQ   VP                  P                  '       d   RMRpR	V,           RV P                  VP                  4      ,          ,           # \        VP                  R4      '       dR   VP                  P                  '       d   RMRpR	V,           R
V P                  VP                  V4      ,          ,           # V P                  VP                  V4      : V: V P                  VP                  V4      : 2# )c              3  ó8   "  € T F  qP                   x € K  	  R # 5ir¦   rß   )r®   r  s   & r�   r²   Ú/OctaveCodePrinter._print_Pow.<locals>.<genexpr>Ø   s   é € Ð>±I¨qŸ{ž{³Iùrâ   FTÚ^z.^g      à?zsqrt(%s)rÜ   rÝ   Ú1ú%sg      à¿rå   )
rù   rò   r   r	   r4   r¿   rñ   rí   rÕ   r÷   )r‰   rú   Ú	powsymbolÚPRECÚsyms   &&   r�   Ú
_print_PowÚOctaveCodePrinter._print_Pow×   s8  € ß›3Ñ>°D·I²IÓ>Ÿ3Ÿ3š3Ñ>°D·I²IÓ>×>Ò>‘CÀDˆ	ä˜$Óˆä˜Ÿ™ #×&Ò&Ø §¡¨D¯I©IÓ 6Õ6Ð6à××ÐÜ˜DŸH™H d×+Ò+Ø!ŸY™Y×0×0Ð0‘c°d�Ø˜S•y :°·±¸D¿I¹IÓ0FÕ#FÕFÐFÜ˜DŸH™H b×)Ò)Ø!ŸY™Y×0×0Ð0‘c°d�Ø˜S•y 4¨$×*;Ñ*;¸D¿I¹IÀtÓ*LÕ#LÕLÐLà×,Ñ,¨T¯Y©Y¸Õ=ºyØ×,Ñ,¨T¯X©X°tÕ<ð>ð 	>r�   c                	ó’   € \        V4      pV P                  VP                  V4      : R V P                  VP                  V4      : 2# )r  )r   r÷   rñ   r4   ©r‰   rú   r  s   && r�   Ú_print_MatPowÚOctaveCodePrinter._print_MatPowë   s>   € Ü˜$ÓˆØ×+Ñ+¨D¯I©I°tÖ<Ø×+Ñ+¨D¯H©H°dÕ;ð=ð 	=r�   c                	ó’   € \        V4      pV P                  VP                  V4      : R V P                  VP                  V4      : 2# )z \ )r   r÷   ÚmatrixÚvectorr  s   && r�   Ú_print_MatrixSolveÚ$OctaveCodePrinter._print_MatrixSolveð   s@   € Ü˜$ÓˆØ!×.Ñ.¨t¯{©{¸DÖAØ!×.Ñ.¨t¯{©{¸DÕAðCð 	Cr�   c                	ó   € R # )Úpir’   ©r‰   rú   s   &&r�   Ú	_print_PiÚOctaveCodePrinter._print_Piõ   ó   € Ùr�   c                	ó   € R # )Ú1ir’   r%  s   &&r�   Ú_print_ImaginaryUnitÚ&OctaveCodePrinter._print_ImaginaryUnitù   r(  r�   c                	ó   € R # )zexp(1)r’   r%  s   &&r�   Ú_print_Exp1ÚOctaveCodePrinter._print_Exp1ý   s   € Ùr�   c                	ó   € R # )z(1+sqrt(5))/2r’   r%  s   &&r�   Ú_print_GoldenRatioÚ$OctaveCodePrinter._print_GoldenRatio  s   € ñ r�   c                	ó¦  € ^ RI Hp ^ RIHp ^ RIHp VP                  pVP                  pV P                  R,          '       g~   \        VP                  V4      '       db   . p. pVP                   F-  w  ršVP                  V! WY4      4       VP                  V
4       K/  	  V! \        Wx4      !  pV P                  V4      # V P                  R,          '       d@   VP                  V4      '       g   VP                  V4      '       d   V P                  We4      # V P                  V4      pV P                  V4      pV P!                  V: RV: 24      # )rÑ   )Ú
Assignment)Ú	Piecewise)ÚIndexedBaser}   r|   r»   )Úsympy.codegen.astr4  Ú$sympy.functions.elementary.piecewiser5  Úsympy.tensor.indexedr6  r  r  Ú	_settingsró   rò   rÃ   rƒ   r¿   ÚhasÚ_doprint_loopsr˜   )r‰   rú   r4  r5  r6  r  r  ÚexpressionsÚ
conditionsrý   rü   Útempr
  r  s   &&            r�   Ú_print_AssignmentÚ#OctaveCodePrinter._print_Assignment  s
  € Ý0ÝBÝ4à�h‰hˆØ�h‰hˆà�~‰~˜h×'Ô'¬J°t·x±xÀ×,KÒ,Kð ˆKØˆJØŸ(œ(‘�Ø×"Ñ"¡:¨cÓ#5Ô6Ø×!Ñ! !Ö$ñ #ñ œc +Ó:Ñ;ˆDØ—;‘;˜tÓ$Ð$Ø�>‰>˜*×%Ô%¨3¯7©7°;×+?Ò+?Ø—‘˜×$Ò$ð ×&Ñ& sÓ0Ð0à—{‘{ 3Ó'ˆHØ—{‘{ 3Ó'ˆHØ×&Ñ&³HºhÐ'GÓHÐHr�   c                	ó   € R # )Úinfr’   r%  s   &&r�   Ú_print_InfinityÚ!OctaveCodePrinter._print_Infinity$  ó   € Ùr�   c                	ó   € R # )z-infr’   r%  s   &&r�   Ú_print_NegativeInfinityÚ)OctaveCodePrinter._print_NegativeInfinity(  ó   € Ùr�   c                	ó   € R # )ÚNaNr’   r%  s   &&r�   Ú
_print_NaNÚOctaveCodePrinter._print_NaN,  rF  r�   c                	óV   a € R RP                  V 3R lV 4       4      ,           R,           # )Ú{ú, c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir¦   ©r¿   )r®   rÖ   r‰   s   & €r�   r²   Ú0OctaveCodePrinter._print_list.<locals>.<genexpr>1  s   øé € Ð<±t°!˜tŸ{™{¨1Ÿ~˜~³tùó   ƒ!Ú})Újoinr%  s   f&r�   Ú_print_listÚOctaveCodePrinter._print_list0  s"   ø€ Ø�T—Y‘YÔ<±tÓ<Ó<Õ<¸sÕBÐBr�   c                	ó   € R # )Útruer’   r%  s   &&r�   Ú_print_BooleanTrueÚ$OctaveCodePrinter._print_BooleanTrue7  rJ  r�   c                	ó   € R # )Úfalser’   r%  s   &&r�   Ú_print_BooleanFalseÚ%OctaveCodePrinter._print_BooleanFalse;  s   € Ùr�   c                	ó4   € \        V4      P                  4       # r¦   )ÚstrrÁ   r%  s   &&r�   Ú_print_boolÚOctaveCodePrinter._print_bool?  s   € Ü�4‹y�‰Ó Ð r�   c                	ó–  a a€ SP                   SP                  3R8X  d   R# \        P                  SP                  9   d    RSP                   : RSP                  : R2# SP                   SP                  3R	8X  d   S P                  SR,          4      # RRP                  VV 3R l\        SP                   4       4       4      ,          # )
rÑ   z[]zzeros(rQ  Ú)z[%s]z; c           	   3  ó    <"  € T F>  pR P                  SVR3,           Uu. uF  pSP                  V4      NK  	  up4      x € K@  	  R# u upi 5i)Ú :NNNN)rW  r¿   )r®   rØ   rÖ   ÚAr‰   s   &  €€r�   r²   Ú6OctaveCodePrinter._print_MatrixBase.<locals>.<genexpr>P  sI   øé € ð ":Ù+8 að #&§(¡(ÀAÀaÈÀdÆGÓ+LÁG¸q¨D¯K©K¸®NÁGÑ+L×"MÐ"MÛ+8ùò ,Mùs   ƒA A	
ºA)rÑ   rÑ   )rº   rº   )r±   r¶   r   ÚZeror´   r¿   rW  r­   )r‰   rj  s   ffr�   Ú_print_MatrixBaseÚ#OctaveCodePrinter._print_MatrixBaseG  s“   ù€ à�F‰F�A—F‘FÐ˜vÔ%ÙÜ�V‰V�q—w‘wÕØ&'§f¤f¨a¯f¬fÐ5Ð5Ø�f‰f�a—f‘fÐ Ô'à—;‘;˜q �wÓ'Ð'Ø˜Ÿ	™	õ ":Ü+0°·±¬=ó":ó :õ :ð 	:r�   c                	óÒ  € ^ RI Hp VP                  4       pT! V Uu. uF  qD^ ,          ^,           NK  	  up.4      pT! V Uu. uF  qD^,          ^,           NK  	  up.4      pT! V Uu. uF  qD^,          NK  	  up.4      pRV P                  V4      : RV P                  V4      : RV P                  V4      : RVP                  : RVP
                  : R2# u upi u upi u upi )rÑ   )ÚMatrixzsparse(rQ  rg  )Úsympy.matricesrp  Úcol_listr¿   r±   r¶   )r‰   rj  rp  ÚLÚkÚIÚJÚAIJs   &&      r�   Ú_print_SparseRepMatrixÚ(OctaveCodePrinter._print_SparseRepMatrixT  s¼   € Ý)Ø�J‰J‹Lˆá¡qÓ)¡q !�q•T˜A—X�X¡qÑ)Ð*Ó+ˆÙ¡qÓ)¡q !�q•T˜A—X�X¡qÑ)Ð*Ó+ˆÙ¡QÓ'¡Q ˜—t�t¡QÑ'Ð(Ó)‰Ø/3¯{©{¸1®~¸t¿{¹{È1¾~Ø,0¯K©K¸Ö,<¸a¿f¼fÀaÇfÄfðNð 	Nùò *ùÚ)ùÚ's   �CÁCÁ)C$c                	ó¸   € V P                  VP                  \        R ,          RR7      RVP                  ^,           : RVP                  ^,           : R2,           # )ÚAtomT)ÚstrictÚ(rQ  rg  )r÷   Úparentr   r°   r¯   r%  s   &&r�   Ú_print_MatrixElementÚ&OctaveCodePrinter._print_MatrixElement_  sF   € Ø× Ñ  §¡¬j¸Õ.@ÈÐ ÔNØ ŸF™F QŸJ˜J¨¯©°¯
¨
Ð3õ4ð 	4r�   c                	ó<  a € V 3R  lpS P                  VP                  4      R,           V! VP                  VP                  P                  ^ ,          4      ,           R,           V! VP                  VP                  P                  ^,          4      ,           R,           # )c                ó>  <€ V ^ ,          ^,           pV ^,          pV ^,          pSP                  V4      pW18X  d   RMSP                  V4      pV^8X  d(   V^8X  d	   W18X  d   R# W#8X  d   V# VR,           V,           # RP                  VSP                  V4      V34      # )rÑ   r½   r¼   )r¿   rW  )r  ÚlimÚlÚhÚstepÚlstrÚhstrr‰   s   &&     €r�   ÚstrsliceÚ6OctaveCodePrinter._print_MatrixSlice.<locals>.strslicee  s�   ø€ Ø�!•�q•ˆAØ�!•ˆAØ�Q•4ˆDØ—;‘;˜q“>ˆDØœH‘5¨$¯+©+°a«.ˆDØ�qŒyØ˜”6˜aœhÙØ”6Ø�Kà #�:¨Õ,Ð,à—x‘x  t§{¡{°4Ó'8¸$Ð ?Ó@Ð@r�   r}  rQ  rg  )r¿   r~  Úrowslicer´   Úcolslice)r‰   rú   r‰  s   f& r�   Ú_print_MatrixSliceÚ$OctaveCodePrinter._print_MatrixSliced  s|   ø€ õ	Að —‘˜DŸK™KÓ(¨3Õ.Ù˜Ÿ™¨¯©×(9Ñ(9¸!Õ(<Ó=õ>Ø@DõEá˜Ÿ™¨¯©×(9Ñ(9¸!Õ(<Ó=õ>à@CõDð 	Er�   c                	óÖ   € VP                    Uu. uF  q P                  V4      NK  	  ppV P                  VP                  P                  4      : R RP	                  V4      : R2# u upi )r}  rQ  rg  )rÄ   r¿   rñ   rÀ   rW  )r‰   rú   r°   Úindss   &&  r�   Ú_print_IndexedÚ OctaveCodePrinter._print_Indexedy  sI   € Ø)-¯ªÓ7© A—‘˜Q–©ˆÐ7ØŸ;™; t§y¡y§¡Ö7¸¿¹À4¾ÐIÐIùò 8s   �A&c                	óÊ   a a€ \         R ,          oR\        ;QJ d(    . VV 3R lVP                   4       F  NK  	  5,          # ! VV 3R lVP                   4       4      ,          # )r   zdouble(%s == %s)c              3  óH   <"  € T F  pSP                  VS4      x € K  	  R # 5ir¦   )r÷   )r®   r  rû   r‰   s   & €€r�   r²   Ú:OctaveCodePrinter._print_KroneckerDelta.<locals>.<genexpr>€  s(   øé € ð *>Ù3<¨að +/×*;Ñ*;¸A¸t×*DÐ*DÛ3<ùs   ƒ")r   Útuplerò   )r‰   rú   rû   s   f&@r�   Ú_print_KroneckerDeltaÚ'OctaveCodePrinter._print_KroneckerDelta~  sS   ù€ Ü˜%Õ ˆØ!§E¤Eõ *>Ø37·9²9ó*>§Eõ >ð 	> Eõ *>Ø37·9²9ó*>ó %>õ >ð 	>r�   c                	ó”   € R P                  VP                   Uu. uF  pV P                  V\        V4      4      NK   	  up4      # u upi )rÓ   )rW  rò   r÷   r   )r‰   rú   rB   s   && r�   Ú_print_HadamardProductÚ(OctaveCodePrinter._print_HadamardProductƒ  sI   € Ø�y‰yØ%)§Y¢Yó0Ù%.˜cð ×+Ñ+¨C´¸DÓ1AÖBÙ%.ñ0ó 1ð 	1ùò 0s   š$Ac                	ó¦   € \        V4      pR P                  V P                  VP                  V4      V P                  VP                  V4      .4      # )z.**)r   rW  r÷   rñ   r4   r  s   && r�   Ú_print_HadamardPowerÚ&OctaveCodePrinter._print_HadamardPower‡  sJ   € Ü˜$ÓˆØ�z‰zØ×Ñ˜dŸi™i¨Ó.Ø×Ñ˜dŸh™h¨Ó-ðó ð 	r�   c                	óÐ   a € VP                   p\        V4      ^8X  d    V^ ,          V^,          8X  d   V^ ,          .pRP                  V 3R lV 4       4      pRV,           R,           # )é   rQ  c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir¦   rS  )r®   Únr‰   s   & €r�   r²   Ú4OctaveCodePrinter._print_Identity.<locals>.<genexpr>’  s   øé € Ð4©e¨�d—k‘k !—n�n«eùrU  zeye(rg  )r´   rÔ   rW  )r‰   rú   r´   Úss   f&  r�   Ú_print_IdentityÚ!OctaveCodePrinter._print_IdentityŽ  sT   ø€ Ø—
‘
ˆÜˆu‹:˜Œ?˜u Q�x¨5°­8Ô3Ø˜1•X�JˆEØ�I‰IÔ4©eÓ4Ó4ˆØ˜�z˜CÕÐr�   c                	ó¦   € R P                  V P                  VP                  ^ ,          4      V P                  VP                  ^,          4      4      # )z (gammainc({1}, {0}).*gamma({0}))©rœ   r¿   rò   r%  s   &&r�   Ú_print_lowergammaÚ#OctaveCodePrinter._print_lowergamma•  s>   € à1×8Ñ8Ø�K‰K˜Ÿ	™	 !�Ó% t§{¡{°4·9±9¸Qµ<Ó'@óBð 	Br�   c                	ó¦   € R P                  V P                  VP                  ^ ,          4      V P                  VP                  ^,          4      4      # )z)(gammainc({1}, {0}, 'upper').*gamma({0}))r¨  r%  s   &&r�   Ú_print_uppergammaÚ#OctaveCodePrinter._print_uppergamma›  s>   € Ø:×AÑAØ�K‰K˜Ÿ	™	 !�Ó% t§{¡{°4·9±9¸Qµ<Ó'@óBð 	Br�   c                	ó~   € R V P                  VP                  ^ ,          \        P                  ,          4      ,          # )zsinc(%s))r¿   rò   r   ÚPir%  s   &&r�   Ú_print_sincÚOctaveCodePrinter._print_sinc   s'   € à˜DŸK™K¨¯	©	°!­´Q·T±TÕ(9Ó:Õ:Ð:r�   c                	ó|   € R V P                  VP                  4      : RV P                  VP                  4      : R2# )úbesselh(z, 1, rg  ©r¿   rê   Úargumentr%  s   &&r�   Ú_print_hankel1Ú OctaveCodePrinter._print_hankel1¥  ó.   � Ø'+§{¡{°4·:±:Ö'>Ø'+§{¡{°4·=±=Ö'AðCð 	Cr�   c                	ó|   € R V P                  VP                  4      : RV P                  VP                  4      : R2# )r³  z, 2, rg  r´  r%  s   &&r�   Ú_print_hankel2Ú OctaveCodePrinter._print_hankel2ª  r¸  r�   c                	óî   € ^ RI HpHp VP                  pV! \        P
                  ^V,          ,          4      V! VP                  \        P                  ,           V4      ,          pV P                  V4      # )rÑ   )Úsqrtr.   )	Úsympy.functionsr½  r.   rµ  r   r¯  rê   ÚHalfr¿   )r‰   rú   r½  r.   r  Úexpr2s   &&    r�   Ú	_print_jnÚOctaveCodePrinter._print_jn°  óL   € ß1Ø�M‰MˆÙ”Q—T‘T˜1˜Q�3•ZÓ ¡¨¯©´a·f±fÕ)<¸aÓ!@Õ@ˆØ�{‰{˜5Ó!Ð!r�   c                	óî   € ^ RI HpHp VP                  pV! \        P
                  ^V,          ,          4      V! VP                  \        P                  ,           V4      ,          pV P                  V4      # )rÑ   )r½  r0   )	r¾  r½  r0   rµ  r   r¯  rê   r¿  r¿   )r‰   rú   r½  r0   r  rÀ  s   &&    r�   Ú	_print_ynÚOctaveCodePrinter._print_yn·  rÃ  r�   c                	óT   € R V P                  VP                  ^ ,          4      ,          # )zairy(0, %s)©r¿   rò   r%  s   &&r�   Ú_print_airyaiÚOctaveCodePrinter._print_airyai¾  ó   € Ø˜tŸ{™{¨4¯9©9°Q­<Ó8Õ8Ð8r�   c                	óT   € R V P                  VP                  ^ ,          4      ,          # )zairy(1, %s)rÈ  r%  s   &&r�   Ú_print_airyaiprimeÚ$OctaveCodePrinter._print_airyaiprimeÂ  rË  r�   c                	óT   € R V P                  VP                  ^ ,          4      ,          # )zairy(2, %s)rÈ  r%  s   &&r�   Ú_print_airybiÚOctaveCodePrinter._print_airybiÆ  rË  r�   c                	óT   € R V P                  VP                  ^ ,          4      ,          # )zairy(3, %s)rÈ  r%  s   &&r�   Ú_print_airybiprimeÚ$OctaveCodePrinter._print_airybiprimeÊ  rË  r�   c                	ó~   € VP                   w  r#V^8w  d   V P                  V4      # RV P                  V4      ,          # )rº   z
expint(%s))rò   Ú_print_not_supportedr¿   )r‰   rú   Úmur  s   &&  r�   Ú_print_expintÚOctaveCodePrinter._print_expintÎ  s8   € Ø—	‘	‰ˆØ�Œ7Ø×,Ñ,¨TÓ2Ð2Ø˜dŸk™k¨!›nÕ,Ð,r�   c                	ó4  € \        VP                  4      ^8:  g   Q hRP                  V P                  VP                  P
                  ,          RP                  \        VP                  4       Uu. uF  q P                  V4      NK  	  up4      R7      # u upi )r   z{name}({args})rQ  )r¡   rò   )	rÔ   rò   rœ   r…   rŒ   Ú__name__rW  Úreversedr¿   )r‰   rú   r  s   && r�   Ú_one_or_two_reversed_argsÚ+OctaveCodePrinter._one_or_two_reversed_argsÕ  sw   € Ü�4—9‘9‹~ Ô"Ð"Ð"Ø×&Ñ&Ø×%Ñ% d§n¡n×&=Ñ&=Õ>Ø—‘´H¸T¿Y¹YÔ4GÓHÑ4G¨qŸK™K¨žNÑ4GÑHÓIð 'ó 
ð 	
ùâHs   Á0Bc           
     	ó  € R P                  V P                  VP                  P                  ,          V P	                  VP
                  ^ ,          4      V P	                  VP                  ! VP
                  R,          !  4      R7      # )z{name}({arg1}, {arg2}):rº   NN)r¡   Úarg1Úarg2)rœ   r…   rŒ   rÛ  r¿   rò   Úfuncr%  s   &&r�   Ú_nested_binary_math_funcÚ*OctaveCodePrinter._nested_binary_math_funcà  sc   € Ø'×.Ñ.Ø×%Ñ% d§n¡n×&=Ñ&=Õ>Ø—‘˜TŸY™Y q�\Ó*Ø—‘˜TŸYšY¨¯	©	°"­Ñ6Ó7ð /ó ð 	r�   c           
     	óR  € VP                   R,          P                  R8w  d   \        R4      h. pV P                  R,          '       dÃ   VP                   RR  UUu. uF5  w  r4RP	                  V P                  V4      V P                  V4      4      NK7  	  pppRV P                  VP                   R,          P                  4      ,          pRP                  V4      V,           R\        V4      ,          ,           pR	V,           R,           # \        VP                   4       Fî  w  pw  r4V^ 8X  d)   VP                  R
V P                  V4      ,          4       MaV\        VP                   4      ^,
          8X  d   VR8X  d   VP                  R4       M'VP                  RV P                  V4      ,          4       V P                  V4      p	VP                  V	4       V\        VP                   4      ^,
          8X  g   KÝ  VP                  R4       Kð  	  RP                  V4      # u uppi )rº   Tz¼All Piecewise expressions must contain an (expr, True) statement to be used as a default condition. Without one, the generated expression may not evaluate to anything under some condition.r}   Nz({0}).*({1}) + (~({0})).*(r  z ...
rg  r}  zif (%s)Úelsezelseif (%s)r½   Ú
rå   )rò   ÚcondÚ
ValueErrorr:  rœ   r¿   rú   rW  rÔ   Ú	enumeraterÃ   )
r‰   rú   r¨   rý   rü   ÚecpairsÚelastÚpwr°   Úcode0s
   &&        r�   Ú_print_PiecewiseÚ"OctaveCodePrinter._print_Piecewiseê  s­  € Ø�9‰9�R�=×Ñ Ô%ô ð /ó 0ð 0ð
 ˆØ�>‰>˜(×#Ô#ð $(§9¡9¨S¨b¡>ô3á#1™4˜1ð 4×:Ñ:ØŸ™ A›¨¯©°A«ö8á#1ð ñ 3ð ˜4Ÿ;™; t§y¡y°¥}×'9Ñ'9Ó:Õ:ˆEØ—‘˜wÓ'¨%Õ/°#´c¸'³lÕ2BÕBˆBð ˜•8˜c•>Ð!ä& t§y¡yÖ1‘	�‘6�AØ˜”6Ø—L‘L ¨T¯[©[¸«^Õ!;Õ<Øœ#˜dŸi™i›.¨1Õ,Ô,°°d´Ø—L‘L Õ(à—L‘L °·±¸Q³Õ!?Ô@ØŸ™ A›�Ø—‘˜UÔ#Øœ˜DŸI™I›¨Õ*Ö*Ø—L‘L Ö'ñ 2ð —9‘9˜UÓ#Ð#ùó)3s   Á;H#c                	óª   € \        VP                  4      ^8X  d*   RV P                  VP                  ^ ,          4      ,          # V P                  V4      # )rº   zzeta(%s))rÔ   rò   r¿   rÖ  r%  s   &&r�   Ú_print_zetaÚOctaveCodePrinter._print_zeta  sA   € Üˆt�y‰y‹>˜QÔØ §¡¨D¯I©I°a­LÓ 9Õ9Ð9ð ×,Ñ,¨TÓ2Ð2r�   c           	     ó&  a€ \        V\        4      '       d2   V P                  VP                  R4      4      pRP	                  V4      # RpRpR	pV Uu. uF  qfP                  R4      NK  	  ppV Uau. uFF  o\        \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      4      NKH  	  ppV Uau. uFF  o\        \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      4      NKH  	  pp. p	^ p
\        V4       F[  w  poSR
9   d   V	P                  S4       K   W¨V,          ,          p
V	P                  W:,          : S: 24       W§V,          ,          p
K]  	  V	# u upi u upi u upi )z0Accepts a string of code or a list of code linesTrÎ   z  z 	c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5ir¦   r   ©r®   rh   Úlines   & €r�   r²   Ú0OctaveCodePrinter.indent_code.<locals>.<genexpr>&  ó   øé € ÐB¹	°"œV B¨×-Ð-»	ùó   ƒFc              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5ir¦   r   rö  s   & €r�   r²   rø  (  rù  rú  )z
^function z^if ú^elseif ú^else$z^for )z^end$rü  rý  )rÎ   rç  )
ró   rc  r§   Ú
splitlinesrW  ÚlstripÚintÚanyrê  rÃ   )r‰   ÚcodeÚ
code_linesÚtabÚ	inc_regexÚ	dec_regexr÷  ÚincreaseÚdecreaseÚprettyÚlevelr¢  s   &&    `     r�   r§   ÚOctaveCodePrinter.indent_code  s`  ø€ ô �dœC× Ò Ø×)Ñ)¨$¯/©/¸$Ó*?Ó@ˆJØ—7‘7˜:Ó&Ð&àˆØIˆ	Ø3ˆ	ñ 15Ó6±¨—‘˜UÖ#±ˆÐ6ñ "&ô(Ù!%˜ô Ÿ›ÔB¹	ÓBŸŸšÔB¹	ÓBÓBÖCÙ!%ð 	ð (ñ "&ô(Ù!%˜ô Ÿ›ÔB¹	ÓBŸŸšÔB¹	ÓBÓBÖCÙ!%ð 	ð (ð ˆØˆÜ  –‰GˆAˆtØ�zÔ!Ø—‘˜dÔ#ÙØ˜a•[Õ ˆEØ�M‰M C§IªtÐ4Ô5Ø˜a•[Õ ŠEñ 'ð ˆùò! 7ùò(ùò(s   ÁFÁ3)F	Â F	Ã)FÃ2 F)r…   )HrÛ  Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚprintmethodÚlanguageÚ
_operatorsr‚   r
   r~   Ú__annotations__r�   r”   r˜   rž   r£   r©   r·   rÊ   r  r  r  r  r!  r&  r+  r.  r1  r@  rD  rH  rM  rX  Ú_print_tupleÚ_print_TupleÚ_print_Listr\  r`  rd  rm  rx  r  r�  r‘  r—  rš  r�  r¥  r©  r¬  r°  r¶  rº  rÁ  rÅ  rÉ  rÍ  rÐ  rÓ  rØ  rÝ  Ú_print_DiracDeltaÚ_print_LambertWrã  Ú
_print_MaxÚ
_print_Minrï  rò  r§   Ú__static_attributes__Ú__classcell__)rŒ   s   @r�   rq   rq   A   s§  ø‡ ñð €KØ€Hð 	ˆsØˆcØˆsð€Jñ )-¨[×-JÑ-Jñ )Ø�RØ˜"Ø�DØ�$ð	Oñ )Ð�~ó ð !#÷ /òò"ò#ò.ò'òBò	'òH:òT9ò>ò(=ò
Cò
òòòòIò:òòòCà€LØ€LØ€Kòòò!ò
:òNò4ò
Eò*Jò
>ò
1òò òBòBò
;ò
Cò
Cò"ò"ò9ò9ò9ò9ò-ò
ð +DÐCÐ˜òð 7Ð6€J�ò"$òJ3÷ð r�   rq   Nc                ó6   € \        V4      P                  W4      # )aÊ  Converts `expr` to a string of Octave (or Matlab) code.

The string uses a subset of the Octave language for Matlab compatibility.

Parameters
==========

expr : Expr
    A SymPy expression to be converted.
assign_to : optional
    When given, the argument is used as the name of the variable to which
    the expression is assigned.  Can be a string, ``Symbol``,
    ``MatrixSymbol``, or ``Indexed`` type.  This can be helpful for
    expressions that generate multi-line statements.
precision : integer, optional
    The precision for numbers such as pi  [default=16].
user_functions : dict, optional
    A dictionary where keys are ``FunctionClass`` instances and values are
    their string representations.  Alternatively, the dictionary value can
    be a list of tuples i.e. [(argument_test, cfunction_string)].  See
    below for examples.
human : bool, optional
    If True, the result is a single string that may contain some constant
    declarations for the number symbols.  If False, the same information is
    returned in a tuple of (symbols_to_declare, not_supported_functions,
    code_text).  [default=True].
contract: bool, optional
    If True, ``Indexed`` instances are assumed to obey tensor contraction
    rules and the corresponding nested loops over indices are generated.
    Setting contract=False will not generate loops, instead the user is
    responsible to provide values for the indices in the code.
    [default=True].
inline: bool, optional
    If True, we try to create single-statement code instead of multiple
    statements.  [default=True].

Examples
========

>>> from sympy import octave_code, symbols, sin, pi
>>> x = symbols('x')
>>> octave_code(sin(x).series(x).removeO())
'x.^5/120 - x.^3/6 + x'

>>> from sympy import Rational, ceiling
>>> x, y, tau = symbols("x, y, tau")
>>> octave_code((2*tau)**Rational(7, 2))
'8*sqrt(2)*tau.^(7/2)'

Note that element-wise (Hadamard) operations are used by default between
symbols.  This is because its very common in Octave to write "vectorized"
code.  It is harmless if the values are scalars.

>>> octave_code(sin(pi*x*y), assign_to="s")
's = sin(pi*x.*y);'

If you need a matrix product "*" or matrix power "^", you can specify the
symbol as a ``MatrixSymbol``.

>>> from sympy import Symbol, MatrixSymbol
>>> n = Symbol('n', integer=True, positive=True)
>>> A = MatrixSymbol('A', n, n)
>>> octave_code(3*pi*A**3)
'(3*pi)*A^3'

This class uses several rules to decide which symbol to use a product.
Pure numbers use "*", Symbols use ".*" and MatrixSymbols use "*".
A HadamardProduct can be used to specify componentwise multiplication ".*"
of two MatrixSymbols.  There is currently there is no easy way to specify
scalar symbols, so sometimes the code might have some minor cosmetic
issues.  For example, suppose x and y are scalars and A is a Matrix, then
while a human programmer might write "(x^2*y)*A^3", we generate:

>>> octave_code(x**2*y*A**3)
'(x.^2.*y)*A^3'

Matrices are supported using Octave inline notation.  When using
``assign_to`` with matrices, the name can be specified either as a string
or as a ``MatrixSymbol``.  The dimensions must align in the latter case.

>>> from sympy import Matrix, MatrixSymbol
>>> mat = Matrix([[x**2, sin(x), ceiling(x)]])
>>> octave_code(mat, assign_to='A')
'A = [x.^2 sin(x) ceil(x)];'

``Piecewise`` expressions are implemented with logical masking by default.
Alternatively, you can pass "inline=False" to use if-else conditionals.
Note that if the ``Piecewise`` lacks a default term, represented by
``(expr, True)`` then an error will be thrown.  This is to prevent
generating an expression that may not evaluate to anything.

>>> from sympy import Piecewise
>>> pw = Piecewise((x + 1, x > 0), (x, True))
>>> octave_code(pw, assign_to=tau)
'tau = ((x > 0).*(x + 1) + (~(x > 0)).*(x));'

Note that any expression that can be generated normally can also exist
inside a Matrix:

>>> mat = Matrix([[x**2, pw, sin(x)]])
>>> octave_code(mat, assign_to='A')
'A = [x.^2 ((x > 0).*(x + 1) + (~(x > 0)).*(x)) sin(x)];'

Custom printing can be defined for certain types by passing a dictionary of
"type" : "function" to the ``user_functions`` kwarg.  Alternatively, the
dictionary value can be a list of tuples i.e., [(argument_test,
cfunction_string)].  This can be used to call a custom Octave function.

>>> from sympy import Function
>>> f = Function('f')
>>> g = Function('g')
>>> custom_functions = {
...   "f": "existing_octave_fcn",
...   "g": [(lambda x: x.is_Matrix, "my_mat_fcn"),
...         (lambda x: not x.is_Matrix, "my_fcn")]
... }
>>> mat = Matrix([[1, x]])
>>> octave_code(f(x) + g(x) + g(mat), user_functions=custom_functions)
'existing_octave_fcn(x) + my_fcn(x) + my_mat_fcn([1 x])'

Support for loops is provided through ``Indexed`` types. With
``contract=True`` these expressions will be turned into loops, whereas
``contract=False`` will just print the assignment expression that should be
looped over:

>>> from sympy import Eq, IndexedBase, Idx
>>> len_y = 5
>>> y = IndexedBase('y', shape=(len_y,))
>>> t = IndexedBase('t', shape=(len_y,))
>>> Dy = IndexedBase('Dy', shape=(len_y-1,))
>>> i = Idx('i', len_y-1)
>>> e = Eq(Dy[i], (y[i+1]-y[i])/(t[i+1]-t[i]))
>>> octave_code(e.rhs, assign_to=e.lhs, contract=False)
'Dy(i) = (y(i + 1) - y(i))./(t(i + 1) - t(i));'
)rq   Údoprint)rú   Ú	assign_torŠ   s   &&,r�   Úoctave_coder   7  s   € ôP ˜XÓ&×.Ñ.¨tÓ?Ð?r�   c                ó0   € \        \        V 3/ VB 4       R# )z„Prints the Octave (or Matlab) representation of the given expression.

See `octave_code` for the meaning of the optional arguments.
N)Úprintr   )rú   rŠ   s   &,r�   Úprint_octave_coder#  Â  s   € ô
 
Œ+�dÑ
'˜hÑ
'Ö(r�   r¦   )r  Ú
__future__r   Útypingr   Ú
sympy.corer   r   r   r   Úsympy.core.mulr   Úsympy.core.numbersr	   Úsympy.printing.codeprinterr
   Úsympy.printing.precedencer   r   rh   r   r„   r‡   rq   r   r#  r’   r�   r�   Ú<module>r+     s  ðñ
õ #Ý ç ,Ó ,Ý &Ý +Ý 2ß <Ý ð:�5ð :˜%ð : ð :¨ð :¨uð :°eð :Øð:Ø!ð:Ø#)ð:Ø+1ð:Ø3:ð:Ø<Bð:ØDJð:àð:à!ð:à#)ð:à+1ð:à39ð:à;Að:ð ð:ð $ð:ð &-ð:ð /6ð:ð 8?ð:ð AHð:ð ð	:ð "ð	:ð $)ð	:ð +3ð	:ð 5>ð	:ð
 ð:ð
 (ð:ð
 *3ð:ð
 5>ð:ð ð:ð !'ð:ð )0ð:ð 27ð:ð 9Dð:ð FMð:ð ð:ð  *ð:ð ,3ð:ð 5?ð:ð AFð:ð ð:ð %ð:ð '-ð:ð /9ð:€ðØ	ˆ5ðà	ˆ7ðð �
ðð ˆvð	ð
 �,ðð �,ðð 
ˆ9ðð 	ˆ(ðð �ðð �'ðð �ðð 	ˆ&ðð �ðð �
ðð 	ˆ(ðð  �	ð!ð" 
ˆ5ð#ð$ 
ˆ5Ø	ˆ5Ø�Øˆ&Ø�|Ø	ˆ9Øˆ(ñ1€ô8s˜ô sôlH@ôV)r�   