§
    ÈÁ³gD ã                   óX  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 	 ddlZn# e$ r dZY nw xY wddlmZ ddlT ddlmZ ej        adadadadad	ad
ad
adadadag ad
ad
ada i a!d
a"da#da$da%tJ          g ia&d
a'g a(da)g a*da+da,g a-g a.g a/d„ Z0dÊd„Z1de_2        i Z3dD ]	Z4ddie3e4<   Œ
dD ]	Z4ddie3e4<   Œ
i Z5i Z6dD ]Z7e7dz   e5e7<   e7e6e7dz   <   Œd„ Z8d„ Z9d„ Z:d„ Z; ej<        dej=        ¦  «        j>        Z? ej<        dej=        ¦  «        j>        Z@ ej<        dej=        ¦  «        j>        ZA ej<        dej=        ¦  «        jB        ZCg d¢ZDg d¢ZEd „ ZFd!„ ZGeHdfd"„ZId#ZJd$ZK ej<        eJd
eKeKd%fz  ej=        ¦  «        d&fZL ej<        eJd
eKd'z   eKd'z   d%fz  ej=        ¦  «        ZM ej<        eJd(z  ej=        ¦  «        d)fZN ej<        eJd*z  ej=        ¦  «        d)fZOd+ZP ej<        eJd
ePePd%fz  ej=        ¦  «        d)fZQePd,z   d-z   ZR ej<        eJd
eReRd%fz  ej=        ¦  «        d)fZSd.ZT ej<        eJd
eTeTd%fz  ej=        ¦  «        d/fZUd0ZV ej<        eJd1eVeVd%fz  ej=        ¦  «        d2fZWd3ZX ej<        eJd
eXeXd%fz  ej=        ¦  «        d4fZY ej<        eJd5z  ej=        ¦  «        d6fZZ ej<        eJd7z  ej=        ¦  «        d8fZ[ ej<        eJd9z  ej=        ¦  «        d:fZ\ ej<        eJd;z  ej=        ¦  «        d<fZ] ej<        eJd=z  ej=        ¦  «        d>fZ^ ej<        eJd?z  ej=        ¦  «        d@fZ_ ej<        eJdAz  ej=        ¦  «        dBfZ` ej<        eJdCz  ej=        ¦  «        dDfZa ej<        eJdEz  ej=        ¦  «        dFfZb ej<        eJdGz  ej=        ¦  «        dHfZc ej<        eJdIz  ej=        ¦  «        dJfZd ej<        eJdKz  ej=        ¦  «        dLfZe ej<        eJdMz  ej=        ¦  «        dNfZf ej<        eJdOz  ej=        ¦  «        dPfZg ej<        eJdQz  ej=        ¦  «        dRfZh ej<        eJdSz  ej=        ¦  «        dTfZi ej<        eJdUz  ej=        ¦  «        dVfZj ej<        eJdWz  ej=        ¦  «        dXfZk ej<        eJdYz  ej=        ejl        z  ¦  «        dZfZm ej<        d[ejl        ¦  «        d\fZnd]„ Zod^„ Zp ej<        d_ej=        ¦  «        Zq ej<        d`ej=        ¦  «        Zr ej<        daej=        ¦  «        ZsdËdb„Ztdc„ ZudÌde„Zvdf„ ZwdÊdg„Zx ej<        dhej=        ¦  «        Zy ej<        diej=        ¦  «        Zz ej<        djej=        ¦  «        Z{ ej<        dkej=        ¦  «        Z| ej<        dlej=        ¦  «        Z} ej<        dm¦  «        Z~ ej<        dn¦  «        Z ej<        doej=        ¦  «        Z€dp„ Z�dq„ Z‚dr„ Zƒds„ Z„dt„ Z…du„ Z†dv„ Z‡ ej<        dwej=        ¦  «        Zˆ ej<        dxej=        ¦  «        Z‰ ej<        dyej=        ¦  «        ZŠ ej<        dzej=        ¦  «        Z‹ ej<        d{ej=        ¦  «        ZŒd|„ Z�d}„ ZŽd~„ Z�d„ Z�dËd€„Z‘dËd�„Z’dËd‚„Z“dÍd„„Z”d…„ Z•d†„ Z–dÎd‡„Z—dÏdˆ„Z˜dÐd‰„Z™dŠ„ Zšd‹„ Z›dÑdŒ„Zœd�„ Z�dÒdŽ„Zž ej<        d�ej=        ¦  «        ZŸd�„ Z  ej<        d‘ej=        ¦  «        Z¡d’„ Z¢d“„ Z£d”„ Z¤d•„ Z¥d–„ Z¦dÓd—„Z§i fd˜„Z¨d™„ Z© ej<        dš¦  «        jB        Zªd›„ Z«dœ„ Z¬ ej<        d�ej=        ¦  «        Z­dÎdž„Z®dŸ„ Z¯g fd „Z°d¡„ Z± ej<        d¢ej=        ¦  «        Z² ej<        d£ej=        ¦  «        Z³ ej<        d¤ej=        ¦  «        Z´ ej<        d¥ej=        ¦  «        Zµ ej<        d¦ej=        ¦  «        Z¶d§„ Z·i fd¨„Z¸dÔd«„Z¹dÑd¬„ZºdÑd­„Z»d®„ Z¼dÕd¯„Z½g a¾d°„ Z¿d±„ ZÀd²„ ZÁg dfd³„ZÂd´„ ZÃ�t|           Ä                    eÃ¦  «         eÅdµk    �rög ZÆg ZÇdZÈdZÉdZÊdZËejÌ        dd…         D �]1ZÍeÍd
k    rŒ
eÍd         d¶k    rdZÈŒeÍd·k    rdadaŒ$eÍd¸k    rd¹adaŒ/eÍdºk    rt&          r e1d»d¦  «         dadaŒMeÍd¼k    rdaŒVeÍd½k    rdaŒ_eÍd¾k    rdadaŒjeÍd¿k    rdadÀadaŒweÍdÁk    rdZÉŒ€eÍdÂk    rdZËŒ‰eÍdÃk    rdZÊŒ’eÍd         dÄk    r eÎdÅ eÏeÍ¦  «        z  ¦  «         Œ¶eÉrdZÉeÍaŒ½eÊrdZÊeÍaŒÄeÈrV	  eÐeÍ¦  «         Ñ                    ¦   «          eÆ Ä                    eÍ¦  «         Œú# eÒ$ rZÓ eÎdÆeÓ›d©�¦  «         Y dZÓ[Ó�ŒdZÓ[Óww xY weÇ Ä                    eÍ¦  «         �Œ3t&          st2          rt4          s e1dÇd¦  «          e¿eÆ¦  «        ZÔt0          rf e1dÈ eÏt0          ¦  «        z  d¦  «          eÀeÔ¦  «        ZÕ eÐt0          dÉ¦  «        5 ZÈeÈ Ö                    eÕ¦  «         ddd¦  «         n# 1 swxY w Y   eËr eHeÔ¦  «         dS dS dS )Öa  
crackfortran --- read fortran (77,90) code and extract declaration information.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.


Usage of crackfortran:
======================
Command line keys: -quiet,-verbose,-fix,-f77,-f90,-show,-h <pyffilename>
                   -m <module name for f77 routines>,--ignore-contains
Functions: crackfortran, crack2fortran
The following Fortran statements/constructions are supported
(or will be if needed):
   block data,byte,call,character,common,complex,contains,data,
   dimension,double complex,double precision,end,external,function,
   implicit,integer,intent,interface,intrinsic,
   logical,module,optional,parameter,private,public,
   program,real,(sequence?),subroutine,type,use,virtual,
   include,pythonmodule
Note: 'virtual' is mapped to 'dimension'.
Note: 'implicit integer (z) static (z)' is 'implicit static (z)' (this is minor bug).
Note: code after 'contains' will be ignored until its scope ends.
Note: 'common' statement is extended: dimensions are moved to variable definitions
Note: f2py directive: <commentchar>f2py<line> is read as <line>
Note: pythonmodule is introduced to represent Python module

Usage:
  `postlist=crackfortran(files)`
  `postlist` contains declaration information read from the list of files `files`.
  `crack2fortran(postlist)` returns a fortran code to be saved to pyf-file

  `postlist` has the following structure:
 *** it is a list of dictionaries containing `blocks':
     B = {'block','body','vars','parent_block'[,'name','prefix','args','result',
          'implicit','externals','interfaced','common','sortvars',
          'commonvars','note']}
     B['block'] = 'interface' | 'function' | 'subroutine' | 'module' |
                  'program' | 'block data' | 'type' | 'pythonmodule' |
                  'abstract interface'
     B['body'] --- list containing `subblocks' with the same structure as `blocks'
     B['parent_block'] --- dictionary of a parent block:
                             C['body'][<index>]['parent_block'] is C
     B['vars'] --- dictionary of variable definitions
     B['sortvars'] --- dictionary of variable definitions sorted by dependence (independent first)
     B['name'] --- name of the block (not if B['block']=='interface')
     B['prefix'] --- prefix string (only if B['block']=='function')
     B['args'] --- list of argument names if B['block']== 'function' | 'subroutine'
     B['result'] --- name of the return value (only if B['block']=='function')
     B['implicit'] --- dictionary {'a':<variable definition>,'b':...} | None
     B['externals'] --- list of variables being external
     B['interfaced'] --- list of variables being external and defined
     B['common'] --- dictionary of common blocks (list of objects)
     B['commonvars'] --- list of variables used in common blocks (dimensions are moved to variable definitions)
     B['from'] --- string showing the 'parents' of the current block
     B['use'] --- dictionary of modules used in current block:
         {<modulename>:{['only':<0|1>],['map':{<local_name1>:<use_name1>,...}]}}
     B['note'] --- list of LaTeX comments on the block
     B['f2pyenhancements'] --- optional dictionary
          {'threadsafe':'','fortranname':<name>,
           'callstatement':<C-expr>|<multi-line block>,
           'callprotoargument':<C-expr-list>,
           'usercode':<multi-line block>|<list of multi-line blocks>,
           'pymethoddef:<multi-line block>'
           }
     B['entry'] --- dictionary {entryname:argslist,..}
     B['varnames'] --- list of variable names given in the order of reading the
                       Fortran code, useful for derived types.
     B['saved_interface'] --- a string of scanned routine signature, defines explicit interface
 *** Variable definition is a dictionary
     D = B['vars'][<variable name>] =
     {'typespec'[,'attrspec','kindselector','charselector','=','typename']}
     D['typespec'] = 'byte' | 'character' | 'complex' | 'double complex' |
                     'double precision' | 'integer' | 'logical' | 'real' | 'type'
     D['attrspec'] --- list of attributes (e.g. 'dimension(<arrayspec>)',
                       'external','intent(in|out|inout|hide|c|callback|cache|aligned4|aligned8|aligned16)',
                       'optional','required', etc)
     K = D['kindselector'] = {['*','kind']} (only if D['typespec'] =
                         'complex' | 'integer' | 'logical' | 'real' )
     C = D['charselector'] = {['*','len','kind','f2py_len']}
                             (only if D['typespec']=='character')
     D['='] --- initialization expression string
     D['typename'] --- name of the type if D['typespec']=='type'
     D['dimension'] --- list of dimension bounds
     D['intent'] --- list of intent specifications
     D['depend'] --- list of variable names on which current variable depends on
     D['check'] --- list of C-expressions; if C-expr returns zero, exception is raised
     D['note'] --- list of LaTeX comments on the variable
 *** Meaning of kind/char selectors (few examples):
     D['typespec>']*K['*']
     D['typespec'](kind=K['kind'])
     character*C['*']
     character(len=C['len'],kind=C['kind'], f2py_len=C['f2py_len'])
     (see also fortran type declaration statement formats below)

Fortran 90 type declaration statement format (F77 is subset of F90)
====================================================================
(Main source: IBM XL Fortran 5.1 Language Reference Manual)
type declaration = <typespec> [[<attrspec>]::] <entitydecl>
<typespec> = byte                          |
             character[<charselector>]     |
             complex[<kindselector>]       |
             double complex                |
             double precision              |
             integer[<kindselector>]       |
             logical[<kindselector>]       |
             real[<kindselector>]          |
             type(<typename>)
<charselector> = * <charlen>               |
             ([len=]<len>[,[kind=]<kind>]) |
             (kind=<kind>[,len=<len>])
<kindselector> = * <intlen>                |
             ([kind=]<kind>)
<attrspec> = comma separated list of attributes.
             Only the following attributes are used in
             building up the interface:
                external
                (parameter --- affects '=' key)
                optional
                intent
             Other attributes are ignored.
<intentspec> = in | out | inout
<arrayspec> = comma separated list of dimension bounds.
<entitydecl> = <name> [[*<charlen>][(<arrayspec>)] | [(<arrayspec>)]*<charlen>]
                      [/<init_expr>/ | =<init_expr>] [,<entitydecl>]

In addition, the following attributes are used: check,depend,note

TODO:
    * Apply 'parameter' attribute (e.g. 'integer parameter :: i=2' 'real x(i)'
                                   -> 'real x(2)')
    The above may be solved by creating appropriate preprocessor program, for example.

é    N)ÚPathé   )Ú__version__)Ú*)ÚsymbolicÚfixú    Ú éÿÿÿÿc                  ó|   — da dadadadadadadadada	g a
dat          g iadadadag ai adadadag ag ag ag ad ad S )Nr   r   r   r	   r
   r   )Ú	strictf77ÚsourcecodeformÚquietÚverboseÚtabcharÚpyffilenameÚf77modulenameÚskipemptyendsÚignorecontainsÚdolowercaseÚdebugÚgroupcounterÚ	grouplistÚneededmoduleÚexpectbeginÚskipblocksuntilÚusermodulesÚf90modulevarsÚgotnextfileÚfilepositiontextÚcurrentfilenameÚskipfunctionsÚ	skipfuncsÚ	onlyfuncsÚinclude_pathsÚprevious_context© ó    úU/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/f2py/crackfortran.pyÚreset_global_f2py_varsr*   Å   s“   € ð €IØ€NØ€EØ€GØ€GØ€KØ€MØ€MØ€NØ€KØ€Eà€LÝ˜rÐ"€IØ€LØ€KØ€OØ€KØ€MØ€KØÐØ€OØ€MØ€IØ€IØ€MØÐÐÐr(   c                 ó´   — t           sd S t          sG|r$t          j                             t
          ¦  «         t          j                             | ¦  «         d S d S ©N)r   r   ÚsysÚstdoutÚwriter    )ÚlineÚflags     r)   Úoutmessr2   ë   s^   € õ ð ØˆÝð Øð 	/ÝŒJ×ÒÕ-Ñ.Ô.Ð.ÝŒ
×Ò˜ÑÔÐÐÐðð r(   é2   zabcdefghopqrstuvwxyz$_ÚtypespecÚrealÚijklmnÚinteger)3ÚintÚdoubleÚfloatÚcharÚshortÚlongÚvoidÚcaseÚwhileÚreturnÚsignedÚunsignedÚifÚforÚtypedefÚsizeofÚunionÚstructÚstaticÚregisterÚnewÚbreakÚdoÚgotoÚswitchÚcontinueÚelseÚinlineÚexternÚdeleteÚconstÚautoÚlenÚrankÚshapeÚindexÚslenÚsizeÚ_iÚmaxÚminÚflenÚfshapeÚstringÚcomplex_doubleÚfloat_doubleÚstdinÚstderrr.   ÚtypeÚdefaultÚ_bnc                 ót   — | t           v r.t          d| ›dt           |          ›d�¦  «         t           |          S | S )Nzrmbadname1: Replacing "ú" with "ú".
)ÚbadnamesÚerrmess©Únames    r)   Ú
rmbadname1rr   
  sF   € Ø�xÐÐÝˆØ��•x ”~�~�~ð'ñ 	(ô 	(ð 	(å˜Œ~ÐØ€Kr(   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r'   )rr   ©Ú.0Ú_ms     r)   ú
<listcomp>zrmbadname.<locals>.<listcomp>  s   € Ð+Ð+Ð+˜r�J�r‰NŒNÐ+Ð+Ð+r(   r'   ©Únamess    r)   Ú	rmbadnamer{     s   € Ø+Ð+ UÐ+Ñ+Ô+Ð+r(   c                 ót   — | t           v r.t          d| ›dt           |          ›d�¦  «         t           |          S | S )Nzundo_rmbadname1: Replacing "rl   rm   )Úinvbadnamesro   rp   s    r)   Úundo_rmbadname1r~     sJ   € Ø�{ÐÐÝˆØ�4�4� TÔ*Ð*Ð*ð,ñ 	-ô 	-ð 	-å˜4Ô Ð Ø€Kr(   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r'   )r~   ru   s     r)   rx   z"undo_rmbadname.<locals>.<listcomp>  s    € Ð0Ð0Ð0 B�O˜BÑÔÐ0Ð0Ð0r(   r'   ry   s    r)   Úundo_rmbadnamer�     s   € Ø0Ð0¨%Ð0Ñ0Ô0Ð0r(   z-\*-\s*fortran\s*-\*-z-\*-\s*f90\s*-\*-z-\*-\s*fix\s*-\*-z[^c*]\s*[^\s\d\t])z.f90z.f95z.f03z.f08)z.forz.ftnz.f77z.fc                 ó`  — t           �,t          j        | ¦  «                             ¦   «         j        }nêt	          dt
          j                             | ¦  «        ¦  «        }t          | d¦  «        5 }| 	                    |¦  «        }| 
                    t          j        ¦  «        rd}n^| 
                    t          j        t          j        f¦  «        rd}n0| 
                    t          j        t          j        f¦  «        rd}nd}ddd¦  «         n# 1 swxY w Y   t          | ||¬¦  «        S )	aN  Ensures that filename is opened with correct encoding parameter.

    This function uses charset_normalizer package, when available, for
    determining the encoding of the file to be opened. When charset_normalizer
    is not available, the function detects only UTF encodings, otherwise, ASCII
    encoding is used as fallback.
    Né    Úrbz	UTF-8-SIGzUTF-32zUTF-16Úascii)Úencoding)Úcharset_normalizerÚ	from_pathÚbestr†   r`   ÚosÚpathÚgetsizeÚopenÚreadÚ
startswithÚcodecsÚBOM_UTF8ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_LEÚBOM_BE)ÚfilenameÚmoder†   ÚnbytesÚfhandleÚraws         r)   Úopenhookr›   ,  sB  € õ Ð%Ý%Ô/°Ñ9Ô9×>Ò>Ñ@Ô@ÔIˆˆõ �R�œŸš¨Ñ2Ô2Ñ3Ô3ˆÝ�(˜DÑ!Ô!ð 
	# WØ—,’,˜vÑ&Ô&ˆCØ�~Š~�fœoÑ.Ô.ð #Ø&��Ø—’¥Ô!4µfÔ6IÐ JÑKÔKð #Ø#��Ø—’¥¤µ´Ð >Ñ?Ô?ð #Ø#��ð #�ð
	#ð 
	#ð 
	#ñ 
	#ô 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#øøøð 
	#ð 
	#ð 
	#ð 
	#õ �˜$¨Ð2Ñ2Ô2Ð2s   Á1BDÄDÄDc                 ó(  — d}t          | ¦  «        j                             ¦   «         t          v rd}t	          | d¦  «        5 }|                     ¦   «         }d}t          |¦  «        rd}nt          |¦  «        rd}d}|dk    rw|ru|d         dk    rM|                     ¦   «         r9|dz  }|d         dk    rt          |d	d
…         ¦  «        s|dd…         dk    rd}n|                     ¦   «         }|dk    r|°ud	d	d	¦  «         n# 1 swxY w Y   |S )z(Check if file is in free format Fortran.FTÚré   r   ú!r   ú	Né   éþÿÿÿr   ú&)
r   ÚsuffixÚlowerÚCOMMON_FREE_EXTENSIONSr›   ÚreadlineÚ_has_f_headerÚ_has_f90_headerÚstripÚ_free_f90_start)ÚfnameÚresultr™   r0   Úns        r)   Úis_free_formatr¯   K  sj  € ð €FÝˆE�{„{Ô×ÒÑ!Ô!Õ%;Ð;Ð;ØˆÝ	�%˜Ñ	Ô	ð & Ø×ÒÑ!Ô!ˆØˆÝ˜ÑÔð 	ØˆAˆAÝ˜TÑ"Ô"ð 	ØˆAØˆFØ�!Šeˆe˜ˆeØ�AŒw˜#Š~ˆ~ $§*¢*¡,¤,ˆ~Ø�Q‘�Ø˜”G˜t’O�O­¸¸R¸a¸R¼Ñ(AÔ(A�OÀdÈ2ÈbÈ5ÄkÐUXÒFXÐFXØ!�FØØ×#Ò#Ñ%Ô%ˆDð �!Šeˆe˜ˆeð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð €Ms   ÁB9DÄDÄDc           
      óâ  — |s8t           t          t          t          t          t
          t          t          t          f	}| g k    rdS t          }d}d}d}t          j
        dt          j        ¦  «        }t          j
        d¦  «        }	t          j
        d¦  «        }
t          j
        d¦  «        }|r |dd¦  «         d	\  }}d
gd„ t          d¦  «        D ¦   «         z   }dat          j        | t          ¬¦  «        }	 	 |                     ¦   «         }nO# t"          $ rB}t%          d|                     ¦   «         › d|                     ¦   «         › d|› d�¦  «        ‚d}~ww xY w|s�nè|                     ¦   «         �rda|                     ¦   «         ada |}dadat,          j                             t          ¦  «        d         }t3          t          ¦  «        j                             ¦   «         t8          v r!t;          |¦  «        st=          |¦  «        sdan%t?          t          ¦  «        rt=          |¦  «        sdat          rt@          antB          atE          dtG          t          ¦  «        ›dt          ›t          rdpd›d�¦  «         | $                    ¦   «          %                    dd
¦  «        }|dk    s|d         dvrn|dd…         }|dk    ¯d}tM          |d¦  «        \  }}|d
z  }|dd…                              ¦   «         dk    r#tM          |d z   |dd…         z   d¦  «        \  }}d}| '                    ¦   «         dk    rt          dk    rnd}�Œ[t          dk    �rS|d         d!v r6|dd…                              ¦   «         d"k    rd#|dd…         z   }d}n*d}d}�Œ§t          rtQ          |¦  «        d$k    r
|dd$…         }|d         |vrt%          d%tG          |¦  «        z  ¦  «        ‚|rt          r2tQ          |¦  «        dk    r|d         d
k    s||d&d…         z   }d}d}�nÇ|	 )                    |¦  «        }|r| *                    d'¦  «        }|r1||
 )                    |¦  «         *                    d'¦  «        z   }d}d}�nhd#|dd…         z   }|r|                     ¦   «         }n|}|}|}�n<t          dk    �r|sw|d(k    rq| )                    |¦  «        r\|d)z   }	 |                     ¦   «         }|stW          d*¦  «         n||z   }| )                    |¦  «        rnŒB| ,                    ¦   «         }|	 )                    |¦  «        }|r| *                    d'¦  «        }|r0||
 )                    |¦  «         *                    d'¦  «        z   }d}d}n0|r(|rt[          |¦  «        s|                     ¦   «         n|}n|}|}|}|du}n$t]          d+tG          t          ¦  «        z  ¦  «        ‚d,| /                    ¦   «         dz
  t          |fz  a| )                    |¦  «        }|�r| *                    d-¦  «        }t,          j         0                    |¦  «        rtc          ||d¬.¦  «         n×t,          j         2                    t          ¦  «        gtf          z   }d}|D ]W}t,          j         4                    ||¦  «        }t,          j         0                    |¦  «        rd}tc          ||d¬.¦  «          nŒX|s@tE          d/tG          |¦  «        ›d0t,          j5         4                    |¦  «        ›d1�¦  «         n ||¦  «         |}�ŒQ|r|                     ¦   «         }n|}|}d,| /                    ¦   «         dz
  t          |fz  a| )                    |¦  «        }|�r| *                    d-¦  «        }t,          j         0                    |¦  «        rtc          ||d¬.¦  «         n×t,          j         2                    t          ¦  «        gtf          z   }d}|D ]W}t,          j         4                    ||¦  «        }t,          j         0                    |¦  «        rd}tc          ||d¬.¦  «          nŒX|s@tE          d/tG          |¦  «        ›d0t,          j5         4                    |¦  «        ›d1�¦  «         n ||¦  «         da| 6                    ¦   «          |r |dd¦  «         dS |\	  a aaaaaaaadS )2zõ
    Read fortran codes from files and
     1) Get rid of comments, line continuations, and empty lines; lower cases.
     2) Call dowithline(line) on every line.
     3) Recursively call itself when statement "include '<filename>'" is met.
    NFr
   z*\s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")z(?P<line>.*)&\s*\Zz(\s*&|)(?P<line>.*)z.*?'''r   )r
   r
   ú c                 ó,   — g | ]}t          |¦  «        ‘ŒS r'   )Ústrru   s     r)   rx   z#readfortrancode.<locals>.<listcomp>‚  s   € Ð7Ð7Ð7 r�3˜r™7œ7Ð7Ð7Ð7r(   é
   )r›   Tzreadfortrancode: reading ú#z failed with
zu.
It is likely that installing charset_normalizer package will help f2py determine the input file encoding correctly.r   r   r   Úfreez	Reading file z	 (format:z,strictú)
õ   Â z
rŸ   r¡   z!f2pyr	   )r   ÚcrŸ   ÚCrµ   Úf2pyz     éH   zxreadfortrancode: Found non-(space,digit) char in the first column.
	Are you sure that this code is in fix form?
	line=%sé   r0   ú.pyfú
z.Unexpected end of file when reading multiline
z6Flag sourcecodeform must be either 'fix' or 'free': %szLine #%d in %s:"%s"
	rq   )Ú
dowithlineÚistopz-readfortrancode: could not find include file z in ú. Ignoring.
)7r   r    r!   r   r   Úbeginpatternr   r   r   ÚreÚcompileÚIÚrangeÚ	fileinputÚ	FileInputr›   r§   ÚUnicodeDecodeErrorÚ	Exceptionr–   ÚlinenoÚisfirstlinerŠ   r‹   Úsplitextr   r¤   r¥   ÚCOMMON_FIXED_EXTENSIONSr©   Ú_has_fix_headerr¯   Úbeginpattern77Úbeginpattern90r2   ÚreprÚ
expandtabsÚreplaceÚsplit_by_unquotedrª   rX   ÚmatchÚgroupro   ÚrstripÚiscstyledirectiveÚ
ValueErrorÚ
filelinenoÚisfileÚreadfortrancodeÚdirnamer%   ÚjoinÚpathsepÚclose)ÚffilerÀ   rÁ   ÚsaveglobalsÚlocaldolowercaseÚcontÚ	finallineÚllÚincludelineÚcont1Úcont2Ú
mline_markÚl1ÚspacedigitsÚfinÚlÚmsgÚextÚis_f2py_directiveÚrlÚ_Úorigfinalliner�   ÚlcÚmÚfnÚinclude_dirsÚ	foundfileÚinc_dirÚfn1s                                 r)   rÞ   rÞ   e  sÒ	  € ð ð 6Ý!Õ#3µ_ÅnÕV_Ý�%¥­+ð6ˆà�‚{€{ØˆÝ"Ðð €DØ€IØ	€BÝ”*Ø5µr´tñ=ô =€KåŒJÐ,Ñ-Ô-€EÝŒJÐ-Ñ.Ô.€EÝ”˜IÑ&Ô&€JØð Øˆ
�2�rÑÔÐØ�F€BˆØ�%Ð7Ð7­U°2©Y¬YÐ7Ñ7Ô7Ñ7€KØÐÝ
Ô
˜e­hÐ
7Ñ
7Ô
7€Cð]ð	Ø—’‘”ˆAˆAøÝ!ð 	ð 	ð 	Ýð¨C¯LªL©N¬Nð ð ¸S¿ZºZ¹\¼\ð ð Ø!$ðð ð ñô ð øøøøð	øøøð ð 	ÙØ�?Š?ÑÔñ 	7Ø!ÐØ!Ÿlšl™nœnˆOØˆKØˆBØˆIØ"ˆNÝ”'×"Ò"¥?Ñ3Ô3°AÔ6ˆCÝ•OÑ$Ô$Ô+×1Ò1Ñ3Ô3Õ7NÐNÐNÝ(¨Ñ+Ô+ð OÝ/>¸qÑ/AÔ/Að Oà�	�	Ý¥Ñ0Ô0ð (½ÈÑ9KÔ9Kð (Ø!'�Ýð .Ý-��å-�ÝˆGÝ�OÑ,Ô,Ð,Ð,­n¨nÝ Ð. YÐ4°"Ð4Ð4ð6ñ 7ô 7ð 7ð �LŠL‰NŒN×"Ò" 6¨3Ñ/Ô/ˆà�r’'�'Ø�Œu˜HÐ$Ð$ØØ�#�2�#”ˆAð �r’'�'ð
 "Ðå# A sÑ+Ô+‰ˆˆBØ	ˆS‰ˆØˆbˆqˆbŒ6�<Š<‰>Œ>˜WÒ$Ð$Ý$ Q¨¡[°2°a°b°b´6Ñ%9¸3Ñ?Ô?‰DˆAˆqØ $ÐØ�7Š7‰9Œ9˜Š?ˆ?Ý Ò'Ð'ð
 ð �ÙÝ˜UÒ"Ñ"Ø�ŒtÐ0Ð0Ð0Ø�Q�q�S”6—<’<‘>”> VÒ+Ð+Ø ! A B B¤%™�AØ(,Ð%Ð%à �DØ(-Ð%ÙÝð Ý�q‘6”6˜B’;�;Ø˜#˜2˜#œ�AØ�Œt˜;Ð&Ð&Ýð !GåIMÈaÉÌñ!Qñ Rô Rð Rð ð �Ið ­C°©F¬F°QªJ¨J¸qÀ¼tÀsº{¸{à˜!˜A˜B˜Bœ%‘Z�Ø�	Ø "�‘à—K’K ‘N”N�Øð (ØŸš ™œ�AØð Ø˜eŸkšk¨!™nœn×2Ò2°6Ñ:Ô:Ñ:�BØ "�IØ$&�M‘Mð   ! A B B¤%™�Aà'ð 'Ø$&§H¢H¡J¤J˜	˜	à$&˜	Ø$&�MØ�B‘Bå˜vÒ%Ñ%Øð ˜C 6šM˜M¨j×.>Ò.>¸qÑ.AÔ.A˜MØ˜‘H�ðØŸš™œ�BØð ÝØMñOô Oð OàØ˜B™�AØ!×'Ò'¨Ñ+Ô+ð Øðð —H’H‘J”J�Ø—’˜A‘”ˆAØð $Ø—G’G˜F‘O”O�Øð Ø˜%Ÿ+š+ a™.œ.×.Ò.¨vÑ6Ô6Ñ6�Ø�	Ø "��à#ð #ð 4EÐ gÕIZÐ[]ÑI^ÔI^Ð g §¢¡
¤
 
Ðeg�I�Ià "�IØ "�Ø�Ø˜T�MˆDˆDåØHÍ4ÕP^ÑK_ÔK_Ñ_ñaô að aà4Ø�NŠNÑÔ˜qÑ ¥/°2ð87ñ 7Ðà×Ò˜mÑ,Ô,ˆØñ 	"Ø—’˜‘”ˆBÝŒw�~Š~˜bÑ!Ô!ð BÝ ¨zÀÐCÑCÔCÐCÐCõ ”G—O’O¥OÑ4Ô4ð 6Ý8Eñ F�à�	Ø+ð ð �GÝœ'Ÿ,š, w°Ñ3Ô3�CÝ”w—~’~ cÑ*Ô*ð Ø$%˜	Ý'¨¸
È!ÐLÑLÔLÐLØ˜ðð !ð BÝ�GÝ˜R™œ˜˜¥"¤*§/¢/°,Ñ"?Ô"?Ð"?Ð"?ðAñ Bô Bð Bøð ˆJ�yÑ!Ô!Ð!Øˆñ{]ð~ ð Ø—H’H‘J”Jˆ	ˆ	àˆ	Ø€MØ0Ø�ŠÑÔ˜1Ñ�o¨rð43ñ 3Ðà×Ò˜-Ñ(Ô(€AØñ Ø�WŠW�V‰_Œ_ˆÝŒ7�>Š>˜"ÑÔð 	>Ý˜B¨:¸QÐ?Ñ?Ô?Ð?Ð?åœGŸOšO­OÑ<Ô<Ð=ÅÑMˆLØˆIØ'ð ð �Ý”g—l’l 7¨BÑ/Ô/�Ý”7—>’> #Ñ&Ô&ð Ø !�IÝ# C°JÀaÐHÑHÔHÐHØ�Eðð ð >Ý�Ý˜‘H”H�H�H�bœjŸošo¨lÑ;Ô;Ð;Ð;ð=ñ >ô >ð >øð 	ˆ
�9ÑÔÐØÐØ‡I‚I�K„K€KØð DØˆ
�2�qÑÔÐÐÐð 9Dñ	6ˆÐ% ¸È	Ø˜% ¨+¨+¨+s   Ã:D Ä
EÄ=EÅEzN\s*(?P<before>%s(?=\s*(\b(%s)\b)))\s*(?P<this>(\b(%s)\b))\s*(?P<after>%s)\s*\Zzqcharacter|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|byteú.*rh   z|static|automatic|undefined)z([a-z]+[\w\s(=*+-/)]*?|)Úfunctionrÿ   rþ   Úbegin)z	[a-z\s]*?Ú
subroutiner  rþ   zprogram|block\s*dataz@|module(?!\s*procedure)|python\s*module|(abstract|)\s*interface|ztype(?!\s*\()z\end|endprogram|endblockdata|endmodule|endpythonmodule|endinterface|endsubroutine|endfunctionÚendzDend\s*(if|do|where|select|while|forall|associate|critical|enum|team)z[\w]*?Úendifzmodule\s*procedureÚmoduleprocedure)r
   Úimplicitr  rþ   r  )r
   údimension|virtualr  rþ   Ú	dimension)r
   Úexternalr  rþ   r  )r
   Úoptionalr	  rþ   r	  )r
   Úrequiredr
  rþ   r
  )r
   Úpublicr  rþ   r  )r
   Úprivater  rþ   r  )r
   Ú	intrinsicr  rþ   r  )r
   úintent|depend|note|checkr  z\s*\(.*?\).*Úintent)r
   Ú	parameterr  z\s*\(.*r  )r
   Údatar  rþ   r  )r
   Úcallr  rþ   r  )r
   Úentryr  rþ   r  )r
   Úcallfunr  rþ   r  )r
   Úcommonr  rþ   r  )r
   Úuser  rþ   r  )r
   Úcontainsr  r
   r  )r
   Úformatr  rþ   r  )r
   úKthreadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddefr  rþ   Úf2pyenhancementsz2\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\ZÚ	multilinec           
      ó¼  — t          d¦  «        t          |¦  «        z  r
J d¦   «         ‚t          j        d                     d                     t          j        |¦  «        ¦  «        d                     t          j        |¦  «        ¦  «        dd¬¦  «        ¦  «        }|                     | ¦  «        }|r$|                     ¦   «         }|d	         |d
         fS | dfS )z¶
    Splits the line into (line[:i], line[i:]),
    where i is the index of first occurrence of one of the characters
    not within quotes, or len(line) if no such index exists
    z"'zcannot split by unquoted quoteszR\A(?P<before>({single_quoted}|{double_quoted}|{not_quoted})*)(?P<after>{char}.*)\Zz[^"'{}]z[{}]z('([^'\\]|(\\.))*')z("([^"\\]|(\\.))*"))Ú
not_quotedr;   Úsingle_quotedÚdouble_quotedÚbeforeÚafterr
   )ÚsetrÄ   rÅ   r  Úescaper×   Ú	groupdict)r0   Ú
charactersr�   rø   Úds        r)   rÖ   rÖ   ˜  sÑ   € õ �E‘
”
�S ™_œ_Ñ,ÐPÐPÐ/PÑPÔPÐPÝ
Œ
ð	!ß!'¢Ø!×(Ò(­¬°:Ñ)>Ô)>Ñ?Ô?Ø—’�rœy¨Ñ4Ô4Ñ5Ô5Ø0Ø0ð	 "(ñ "2ô "2ñ	3ô 	3€Að 	
�Š�‰Œ€AØð )Ø�KŠK‰MŒMˆØ�(”˜Q˜wœZÐ(Ð(Ø�"ˆ:Ðr(   c                 óÚ   — g }t          | ¦  «                             d¦  «        D ]2}dD ]}|                     |d¦  «        }Œ|                     |¦  «         Œ3d                     |¦  «        S )Nú@,@z(),rõ   ú,)ÚmarkoutercommaÚsplitrÕ   Úappendrà   )ÚargslineÚar®   r�   s       r)   Ú_simplifyargsr/  ¬  sq   € Ø
€AÝ˜HÑ%Ô%×+Ò+¨EÑ2Ô2ð ð ˆØð 	"ð 	"ˆAØ—	’	˜!˜SÑ!Ô!ˆAˆAØ	�Š�‰ŒˆˆØ�8Š8�A‰;Œ;Ðr(   z"\s*(?P<result>\b[a-z]+\w*\b)\s*=.*z \s*(?P<bind>\b[a-z]+\w*\b)\s*=.*zH\s*bind\(\s*(?P<lang>[^,]+)\s*,\s*name\s*=\s*"(?P<lang_name>[^"]+)"\s*\)c                 ón  — t          | d¦  «        \  }}|r±t          d                              | ¦  «        s‘t          d                              | ¦  «        sq|dk    sJ t	          |¦  «        ¦   «         ‚t          | d¦  «        \  } }|r-t          | |¦  «         t          |dd…         d¦  «        \  } }|°-t          | |¦  «         dS |dk     rwdat          diat          i iat          g ia	g t          t                   d<   i t          t                   d<   dt          t                   d<   dt          t                   d	<   d
a
d
adS |dk    �rd}t          rt          t          k    rd}t          |k    rÑt          dt	          t          ¦  «        ›dt	          t          ¦  «        ›d�¦  «         t          d¦  «         t          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  at          |k    °Ñt          �rt          t          k    rüt          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  at          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  ad
a
dS | dk    rdS d}t          t           t"          t$          t&          t(          t*          t,          t.          t0          t2          t4          t6          t8          t:          t<          t>          t@          tB          tD          tF          tH          tJ          t          t          tL          fD ]&}|d                              | ¦  «        }|r n|dz   }Œ'|�sötN          }	dt          cxk    rt          k    rn ndS dt          t                   v �rat          t                   d         D �]G}
|
tP          v rtP          |
         }
dt          t                   v r|
t          t                   d         v rŒHtS          j        d|
z  tU          | ¦  «        tR          j+        ¦  «        }|rÍ|	                     | ,                    d¦  «        ¦  «        }t[          | ,                    d¦  «        ¦  «        }|r d|
›d|›d| ,                    d¦  «        ›d�} n	d|
›d|›d�} t\          d                              | ¦  «        }|s"t          dt	          | ¦  «        z  ¦  «          dS t_          |d| ¦  «          dS �ŒIt`          dk    s7t`          dk    rEtb           2                    ¦   «          3                    d¦  «        rda4t          dt          z  ¦  «         dS |d         dk    �r™dt          cxk    rt          k     rn nt          dz
  at          t          k    rdS t          dk    rtk          dt          z  ¦  «        ‚t8          d                              | ¦  «        }|rƒ| ,                    d ¦  «        t          t                   k    sZtk          d!t	          | ,                    d ¦  «        ¦  «        ›d"t	          t          t                   ¦  «        ›d#tl          ›�¦  «        ‚t          t          k    rd
at          t          dz
                                t          t                   ¦  «         t          t                   t          t          dz
           d
         d<   t          t          = t          dz
  atn          sda8dS dS |d         d$k    rCdt          cxk    rt          k    rn nt          dz   adS da9t_          ||d         | ¦  «         da8dS |d         d%k    rdS |d         d&k    rt_          ||d         | ¦  «         dS |d         d'k    r.tt          rdS dt          cxk    rt          k    rn ndS t          adS dt          cxk    rt          k    rn ndS t_          ||d         | ¦  «         dS )(z¬
    reset=-1  --- initialize
    reset=0   --- crack the line
    reset=1   --- final check if mismatch of blocks occurred

    Cracked data is saved in grouplist[0].
    ú;r   r   Nr
   ÚbodyÚvarsÚblockrq   r   é   zcrackline: groupcounter=z groupname=r¿   zYcrackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.
Ú	externalsÚ
interfacedz5(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Zr   Úargszcallfun ú(z
) result (r­   ú)z8crackline: could not resolve function call for line=%s.
r  r¾   z"crackline:%d: No pattern for line
r  z>crackline: groupcounter(=%s) is nonpositive. Check the blocks.Úthiszcrackline: End group z* does not match with previous Begin group z
	r   r  r  r  );rÖ   Úf2pyenhancementspatternr×   ÚmultilinepatternrÓ   Ú	crackliner   Ú	groupnameÚ
groupcacher   r   r   r   r2   r,  ÚdimensionpatternÚexternalpatternÚintentpatternÚoptionalpatternÚrequiredpatternÚparameterpatternÚdatapatternÚpublicpatternÚprivatepatternÚintrinsicpatternÚendifpatternÚ
endpatternÚformatpatternrÃ   ÚfunctionpatternÚsubroutinepatternÚimplicitpatternÚtypespatternÚcommonpatternÚcallpatternÚ
usepatternÚcontainspatternÚentrypatternÚmoduleprocedurepatternÚcrackline_re_1r}   rÄ   ÚmarkouterparenrÆ   rØ   r/  ÚcallfunpatternÚanalyzeliner   r!   r¥   Úendswithr&   rË   r    r   r   r   r   )r0   Úresetrõ   Úhas_semicolonÚsemicolon_lineÚflr1   Úpatrø   Úre_1rq   Úm1Úm2r.  s                 r)   r>  r>  ¸  sQ  € õ )¨¨sÑ3Ô3Ñ€A€}Øð 
Õ5°aÔ8×>Ò>¸tÑDÔDð 
Ý/°Ô2×8Ò8¸Ñ>Ô>ð
ð ˜Šzˆzˆz�4 ™;œ;‰zŒzˆzå0°°sÑ;Ô;ÑˆˆnØð 	NÝ�d˜EÑ"Ô"Ð"Ý#4°^ÀAÀBÀBÔ5GÈÑ#MÔ#MÑ ˆD�.ð ð 	Nõ 	�$˜ÑÔÐØˆØˆq‚y€yØˆÝ! 2Ð&ˆ	Ý" BÐ'ˆ
Ý! 2Ð&ˆ	Ø+-�
•<Ô  Ñ(Ø+-�
•<Ô  Ñ(Ø,.�
•<Ô  Ñ)Ø+-�
•<Ô  Ñ(ØˆØˆØˆØˆq‚y�yØˆÝð 	�\­\Ò9Ð9ØˆBÝ˜RÒÐÝˆGÝ�,Ñ'Ô'Ð'Ð'­­i©¬¨¨ð:ñ ;ô ;ð ;åØlñnô nð nå•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLõ ˜RÒÐõ ñ 		�\­\Ò9Ð9Ý•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLÝ•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLØˆLØˆØˆr‚z€zØˆØ€DÝ ¥/µ=Å/ÝÝ ¥+­}½nÝ Ý�jÝÝ�oÕ/@Ý¥­}Ý�Z­ÝÝ'Ý Ý&ðð ð ˆð �ŒF�LŠL˜ÑÔˆØð 	ØˆEØ�a‰xˆˆØñ K%ÝˆØ•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/ØˆFØ�*¥\Ô2Ð2Ñ2Ý"¥<Ô0°Ô=ð ñ �Ø�;Ð&Ð&Ý& tÔ,�DØ¥:­lÔ#;Ð;Ð;ÀÍ
ÕS_ÔH`ÐamÔHnÐ@nÐ@nØÝ”XØLÈtÑSÕUcÐdhÑUiÔUiÕkmÔkoñqô q�àð ØŸš B§H¢H¨XÑ$6Ô$6Ñ7Ô7�BÝ% b§h¢h¨vÑ&6Ô&6Ñ7Ô7�AØð <ð <à ˜D˜D ! ! ! R§X¢X¨hÑ%7Ô%7Ð%7Ð%7ð 9˜˜ð<ð 48°4°4¸¸¸Ð;˜Ý& qÔ)×/Ò/°Ñ5Ô5�AØð ÝØWÕZ^Ð_cÑZdÔZdÑdñfô fð fà˜˜Ý  9¨dÑ3Ô3Ð3Ø�F�Fñõ �QŠ;ˆ;�7 aš<˜<­O×,AÒ,AÑ,CÔ,C×,LÒ,LÈVÑ,TÔ,T˜<Ø#ÐÝÐ9½\ÑJÑKÔKÐKØˆØ	ˆQŒ�5Š‰Ø•Ð.Ð.Ò.Ð.¥,Ò.Ð.Ð.Ð.Ð.Ý'¨!Ñ+ˆLÝ¥,Ò.Ð.Ø�Ý˜1ÒÐÝð 0å+ñ-ñ .ô .ð .õ ˜!Œ_×"Ò" 4Ñ(Ô(ˆØð 	˜Ÿš &Ñ)Ô)­Yµ|Ô-DÒDÐDÝ�)å! "§(¢(¨6Ñ"2Ô"2Ñ3Ô3Ð3Ð3µT½)ÅLÔ:QÑ5RÔ5RÐ5RÐ5RÝ-Ð-ð/ñ ô ð õ
 �lÒ*Ð*Ø ˆOÝ•, Ñ"Ô#×*Ò*­:µlÔ+CÑDÔDÐDÝ2;½LÔ2I�	•, Ñ"Ô# BÔ'¨Ñ/Ý•lÐ#Ý# aÑ'ˆÝð 	ØˆKˆKˆKð	ð 	à	ˆQŒ�7Ò	Ð	Ø•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/Ý'¨!Ñ+ˆLØˆFØˆÝ�A�s˜1”v˜tÑ$Ô$Ð$ØˆˆˆØ	ˆQŒ�7Ò	Ð	ØˆØ	ˆQŒÐ$Ò	$Ð	$Ý�A�s˜1”v˜tÑ$Ô$Ð$Ð$Ð$Ø	ˆQŒ�:Ò	Ð	Ýð 	ØˆFØ•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/ØˆFÝ&ˆˆˆà•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/ØˆFÝ�A�s˜1”v˜tÑ$Ô$Ð$Ð$Ð$r(   c                 ó€   — d}d}| D ]6}|dk    r|dz   }|dk    r|dz   }Œn|dk    r|dz
  }|dk    r|dz   }Œ1||z   }Œ7|S )Nr
   r   r9  r   ú@(@r:  ú@)@r'   )r0   rð   Úfr¹   s       r)   rY  rY  W  s€   € Ø
€AØ	€AØð ð ˆØ�Š8ˆ8Ø�A‘ˆAØ�AŠvˆvØ˜‘I�Øð ð �#ŠXˆXØ�A‘ˆAØ�AŠvˆvØ˜‘I�ØØ�‰EˆˆØ€Hr(   r)  c                 ób  — d}d}t          | |dz   ¦  «        \  }}||z  }|rq|d         |k    r|dk    r|d|z   dz   z  }n.||d         z  }|d         dk    r|dz  }n|d         dk    r|dz  }t          |dd …         |dz   ¦  «        \  }}||z  }|°q|rJ t          || |f¦  «        ¦   «         ‚|S )Nr
   r   ú()ú@r9  r   r:  )rÖ   rÓ   )r0   Úcommarð   rh  r   r!  s         r)   r*  r*  i  sö   € Ø
€AØ	€AÝ% d¨E°D©LÑ9Ô9�M€FˆEØˆ�K€AØ
ð 
Ø�!ŒH˜ÒÐ A¨¢F FØ��u‘˜sÑ"Ñ"ˆAˆAà��q”‰MˆAØ�QŒx˜3ŠˆØ�Q‘��Ø�q”˜S’�Ø�Q‘�Ý)¨%°°°¬)°U¸T±\ÑBÔB‰ˆ�Ø	ˆV‰ˆð ð 
ð Ð$Ð$•$˜˜4 �|Ñ$Ô$Ñ$Ô$Ð$Ø€Hr(   c                 óZ   — |                       dd¦  «                              dd¦  «        }|S )Nrf  r9  rg  r:  )rÕ   )r0   r�   s     r)   Úunmarkouterparenrn  |  s*   € Ø�Š�U˜CÑ Ô ×(Ò(¨°Ñ4Ô4€AØ€Hr(   c                 óü  — | si } |s| S | |u r| S t          |                     ¦   «         ¦  «        D ]Ë}|dk    r|s|| vr||         | |<   Œ|dk    r||         D ]}t          | ||¦  «        } ŒŒ=|dk    rt          | ||         |¦  «        } Œ[|dk    rt	          | ||         |¦  «        } Œy|dv r|s|| vr||         | |<   Œ�|dk    rŒ–|dv rt          d|z  ¦  «         Œ­t          d	t          |¦  «        z   ¦  «        ‚| S )
Nr4   ÚattrspecÚkindselectorÚcharselector)ú=ÚtypenameÚnote)r  Úcheckr  r	  r
  Údependz"appenddecl: "%s" not implemented.
z-appenddecl: Unknown variable definition key: )ÚlistÚkeysÚsetattrspecÚsetkindselectorÚsetcharselectorro   rË   r³   )ÚdeclÚdecl2ÚforceÚkrð   s        r)   Ú
appenddeclr�  �  so  € Øð ØˆØð ØˆØˆu€}€}ØˆÝ�%—*’*‘,”,ÑÔð $ð $ˆØ�
Š?ˆ?Øð #˜ ˜˜Ø œ(��Q‘øØ�*Š_ˆ_Ø˜1”Xð 3ð 3�Ý" 4¨¨EÑ2Ô2��ð3à�.Ò Ð Ý" 4¨¨q¬°5Ñ9Ô9ˆDˆDØ�.Ò Ð Ý" 4¨¨q¬°5Ñ9Ô9ˆDˆDØÐ#Ð#Ð#Øð #˜ ˜˜Ø œ(��Q‘øØ�&Š[ˆ[ØØð )ð )ð )åÐ9¸AÑ=Ñ>Ô>Ð>Ð>åÐKÝ ™FœFñ#ñ $ô $ð $à€Kr(   zD\s*(?P<this>(@\(@.*?@\)@|\*[\d*]+|\*\s*@\(@.*?@\)@|))(?P<after>.*)\Zz[(?:,(?P<attributes>[\w(),]+))?(::)?(?P<name>\b[a-z$_][\w$]*\b)(?:\((?P<params>[\w,]*)\))?\Zzª\s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>(?:(?!@\)@).)*)\s*@\)@))*\s*\ZzF\s*(?P<scheme>(operator|assignment))@\(@\s*(?P<name>[^)]+)\s*@\)@\s*\Zz9\s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Zz4([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)zA([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))zintent\s*\(.*?\bcallback\bc                 ór   — |                       dg ¦  «        D ]}t                               |¦  «        r dS Œ dS )Nrp  r   r   )ÚgetÚ_intentcallbackpatternr×   )Úvdeclr.  s     r)   Ú_is_intent_callbackr†  ´  sF   € Ø�YŠY�z 2Ñ&Ô&ð ð ˆÝ!×'Ò'¨Ñ*Ô*ð 	Ø�1�1ð	àˆ1r(   c                 óx  — d                      |                      ¦   «         ¦  «        } t                               | ¦  «        }t	          | |¦  «         |rc|                     d¦  «        }|rd„ |                     d¦  «        D ¦   «         ng }|                     d¦  «        ||                     d¦  «        fS d g d fS )Nr
   Ú
attributesc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   )r¥   )rv   r.  s     r)   rx   z*_resolvetypedefpattern.<locals>.<listcomp>Á  s    € Ð5Ð5Ð5˜q�—’‘”Ð5Ð5Ð5r(   r)  rq   Úparams)rà   r+  Útypedefpatternr×   ÚprintrØ   )r0   rc  Úattrss      r)   Ú_resolvetypedefpatternrŽ  »  s¯   € Ø�7Š7�4—:’:‘<”<Ñ Ô €DÝ	×	Ò	˜dÑ	#Ô	#€BÝ	ˆ$��O„O€OØ	ð ;Ø—’˜Ñ&Ô&ˆØ9>ÐFÐ5Ð5 E§K¢K°Ñ$4Ô$4Ð5Ñ5Ô5Ð5ÀBˆØ�xŠx˜ÑÔ ¨¯ª°Ñ(:Ô(:Ð:Ð:Ø��Tˆ>Ðr(   c                 ó  — t          j        dt           j        ¦  «        }|                     | ¦  «        }d }|rN|                     d¦  «        }| d |                     ¦   «         …         | |                     ¦   «         d …         z   } | |fS )NzObind\(\s*(?P<lang>[^,]+)(?:\s*,\s*name\s*=\s*["\'](?P<name>[^"\']+)["\']\s*)?\)r   )rÄ   rÅ   rÆ   ÚsearchrØ   Ústartr  )r0   Úpatternr×   Úbind_statements       r)   Úparse_name_for_bindr”  Å  s|   € ÝŒjÐkÕmoÔmqÑrÔr€GØ�NŠN˜4Ñ Ô €EØ€NØð 9ØŸš Q™œˆà�N�U—[’[‘]”]�NÔ# d¨5¯9ª9©;¬;¨<¨<Ô&8Ñ8ˆØ�ÐÐr(   c                 ó<  — t          | ¦  «        \  } }t          | ¦  «        } t                               | ¦  «        }|r?|                     d¦  «        |                     d¦  «        |                     d¦  «        |fS t
                               | ¦  «        }|r7|                     d¦  «        dz   |                     d¦  «        z   dz   }|g d d fS t                               | ¦  «        }|r,|                     d¦  «        |                     d¦  «        d d fS d g d d fS )Nrq   r8  r­   Úschemer9  r:  )r”  rY  Únameargspatternr×   rØ   ÚoperatorpatternÚcallnameargspattern)r0   Ú
bind_cnamerc  rq   s       r)   Ú_resolvenameargspatternr›  Ï  s  € Ý*¨4Ñ0Ô0Ñ€Dˆ*Ý˜$ÑÔ€DÝ	×	Ò	˜tÑ	$Ô	$€BØ	ð RØ�xŠx˜ÑÔ §¢¨&Ñ!1Ô!1°2·8²8¸HÑ3EÔ3EÀzÐQÐQÝ	×	Ò	˜tÑ	$Ô	$€BØ	ð $Ø�xŠx˜Ñ!Ô! CÑ'¨"¯(ª(°6Ñ*:Ô*:Ñ:¸SÑ@ˆØ�R˜˜tÐ#Ð#Ý	×	"Ò	" 4Ñ	(Ô	(€BØ	ð >Ø�xŠx˜ÑÔ §¢¨&Ñ!1Ô!1°4¸Ð=Ð=Ø��T˜4ÐÐr(   c                 óðF  — |                       d¦  «        }|dk    rdat          �r
|dv�rt          sþt          dk     rót
          j                             t          ¦  «         	                    d¦  «        d         }t          d|z  ¦  «         dat          dz   ad	t          t          <   i t          t          <   g t          t          <   g t          t                   d
<   i t          t                   d<   d	t          t                   d<   |t          t                   d<   dt          t                   d<   da|dv �ri|                     ¦   «         }t!          j        d|t           j        ¦  «        rd}nEt!          j        d|t           j        ¦  «        rd}n"t!          j        d|t           j        ¦  «        rd}|dk    rTt'          |                       d¦  «        ¦  «        \  }}}t)          |¬¦  «        t          t                   d         |<   g }d}	n't+          |                       d¦  «        ¦  «        \  }}}	}
|€|dk    rd}nd}|dvrt          d¦  «         ||t          fa|r:t-          d„ t/          |¦  «         	                    d¦  «        D ¦   «         ¦  «        }ng }d|v r,d|v r|                     d¦  «         d|v °t          d ¦  «         d}d}|d!v rd}d"t          t                   vrdS |t          t                   d"         vrdS t          t                   D ]}|d         |k    r dS Œ|t          t                   d#         v rdS d$d%d!œ|         }t2          r(t4          d&k    rt          dk    rt          d'z   ad}|d(vrd}t          dz   ai t          t          <   g t          t          <   |rÿt6          dk    r%t          d)t9          t2          ¦  «        z  d¦  «         d*t          t          <   dt          t                   d<   t2          t          t                   d<   dt          t                   d<   g t          t                   d
<   g t          t                   d+<   g t          t                   d#<   i t          t                   d<   t          dz   ai t          t          <   g t          t          <   |�r$t6          dk    rt          d,t          z  d¦  «         d-t          t          <   d-t          t                   d<   d.t          t                   d<   t          t          dz
           d         ›d/t          t          dz
           d         ›�t          t                   d<   g t          t                   d
<   g t          t                   d+<   g t          t                   d#<   i t          t                   d<   t          dz   ai t          t          <   g t          t          <   |t          t          <   |t          t                   d<   |sd0|                     d1d2¦  «        z   }|                       d3¦  «        t          t                   d4<   t=          |¦  «        t          t                   d<   |	t          t                   d5<   t          dk    rt          t          t                   d<   n—t2          rDt          d6k    r9t          t          dz
           d         ›d/t          ›�t          t                   d<   nLt          t          dz
           d         ›d/t          t          dz
           d         ›�t          t                   d<   t?          t          t                                         ¦   «         ¦  «        D ]-}t          t                   |         st          t                   |= Œ.|t          t                   d"<   g t          t                   d
<   g t          t                   d+<   g t          t                   d#<   i t          t                   d<   i t          t                   d7<   |dk    rg t          t                   d8<   |d!v rñ|t          t          d'z
           d+         vr.t          t          d'z
           d+          !                    |¦  «         tE          j#        t          t          d'z
           d         ¦  «        t          t                   d<   	 t          t                   d         |         t          t                   d         |         d9          $                    d:¦  «        = n# tJ          $ r Y nw xY w|d;v �rñ|
r°t!          j&        tN          |
¦  «        }|r”|i it          t                   d<<   |                      d=¦  «        t          t                   d<         |         d=<   |                      d>¦  «        r4|                      d>¦  «        t          t                   d<         |         d<   	 tQ          t          t                   d         |         t          t          d'z
           d         d         ¦  «        t          t                   d         |<   n# tJ          $ r Y nw xY w|d?k    rƒ|	r�|	t          t                   d         v rg||	k    satQ          t          t                   d         |         t          t                   d         |	         ¦  «        t          t                   d         |<   	 t          t          d'z
           d#          !                    |¦  «         n# tJ          $ r Y nw xY w|d%k    rˆtR          d                              |                       d3¦  «        d1z   |z   ¦  «        }|rMtU          |                      d¦  «        |                      d¦  «        ¦  «        \  }}}}tW          ||||¦  «         |d!v rüt          t          dz
            !                    t          t                   ¦  «         t          t                   t          t          dz
           d&         d
<   t          t          = t          dz
  at          t          dz
            !                    t          t                   ¦  «         t          t                   t          t          dz
           d&         d
<   t          t          = t          dz
  adS dS |d7k    r©t+          |                       d¦  «        ¦  «        \  }}}	}|�~|r:t-          d@„ t/          |¦  «         	                    d¦  «        D ¦   «         ¦  «        }ng }|	�J t9          |	¦  «        ¦   «         ‚|t          t                   d7         |<   d7|t          fadS dS |dk    rJtU          ||                       d¦  «        ¦  «        \  }}}}tW          ||||¦  «        }|�dA|t          fadS dS |dBv �rt          t                   d         }|                       d¦  «         ,                    ¦   «         }| -                    dC¦  «        }|dk     rÞ|dDk    rØt]          |¦  «         -                    dE¦  «        d'z
  }|d|dz   …         dCz   ||dz   d…         z   }| -                    dC¦  «        }||d…         dCk    rrd"t          t                   v r^t          dF|                       d¦  «        ›|d|…         ›dG�¦  «         |dH /                    t          t                   d"         ¦  «        z   }|dk     rd}d}n)|d|…          ,                    ¦   «         }||d'z   d…         }t/          |¦  «         	                    d¦  «        }ta          |¦  «        dk    r5|d         }t          dIdH /                    |dd…         ¦  «        z  ¦  «         d}dJ„ t/          |¦  «         	                    d¦  «        D ¦   «         D �]â}tb                               |¦  «        }|sL|dKv rd}ngte          |  3                    ¦   «         ¦  «         t          dL|›dMt9          |¦  «        ›dN�¦  «         Œkt=          |                      d¦  «        ¦  «        }|dKv r$|dOk    s|dPk    r||                      d¦  «        z  }||vri ||<   |dQk    r||                      d¦  «        z   }|dDk    �r|                       d¦  «        |z   }th                               |¦  «        rê|t          t                   d"         vr¾t          dk    r dRt          t          d'z
           d         vrt          dS¦  «         |t          t                   d         k    rWt          dT|›dUt          t                   d         ›dV�¦  «         t          t                   d"          !                    |¦  «         n%tk          dW|z  ¦  «         ntk          dX|z  ¦  «         |dYv r|}d9||         v r"||         d9          !                    |¦  «         n|g||         d9<   |d:k    r�t          t                   d         d	k    rt          dZ¦  «         �Œp|t          t                   d"         vr�ŒŒd+t          t                   vrg t          t                   d+<   t          t                   d+          !                    |¦  «         |}�Œä|t          t                   d<   |�dA|t          fadS dS |d[k    rGd\„ |                       d¦  «         	                    dH¦  «        D ¦   «         t          t                   d]<   dS |d^k    �r<t          t                   d         }|                       d¦  «         ,                    ¦   «         dd&…         }d}t/          |¦  «         	                    d¦  «        D �]ª}	 d_„ | 	                    d`¦  «        D ¦   «         \  }}n&# tJ          $ r t          da|›db|›dc�¦  «         Y ŒIw xY wtm          |¦  «        }t=          |¦  «        }||vri ||<   d`||         v r7||         d`         |k    s%t          dd|›de||         d`         ›df|›dg�¦  «         to          ||¦  «        }|�rB| 8                    dh¦  «        dik    rÌt?          |¦  «        }tr           :                    |¦  «        D ]Œ} t?          ||  ;                    ¦   «         |  <                    ¦   «         …                              ¦   «                              djdk¦  «        ¦  «        ||  ;                    ¦   «         |  <                    ¦   «         …<   Œ�d /                    |¦  «        }n]| 8                    dh¦  «        dlk    rD|dd…                              ¦   «                              djdk¦  «                             dHdm¦  «        }	 t{          |i |¦  «        } n;# t|          t~          t€          f$ r!}!tk          dn|›do|!›dG�¦  «         Y d}!~!�ŒPd}!~!ww xY wt9          | ¦  «        ||         d`<   d9||         v r"||         d9          !                    d^¦  «         nd^g||         d9<   |}�Œ¬|t          t                   d<   |�dA|t          fadS dS |dpk    �r |                       d¦  «         ,                    ¦   «                              ¦   «         dqk    rdt          t                   dp<   dS |                       d¦  «        �r´dpt          t                   v rt          t                   dp         }"ni }"|"€t          dr¦  «         i }"t/          |                       d¦  «        ¦  «         	                    d¦  «        D �]$}i }#t!          j        ds|t           j        ¦  «        }|st          dt|z  ¦  «         Œ:t‚                               |                      d¦  «        ¦  «        }$|$st          du|z  ¦  «         Œ|tU          |$                      d¦  «        |$                      d¦  «        ¦  «        \  }}}}t…          ||¦  «        \  }%}&}'||#dh<   |%|#dv<   |&|#dw<   |'|#dx<   t?          |#                      ¦   «         ¦  «        D ]}|#|         s|#|= Œt/          |                      d¦  «        ¦  «         	                    d¦  «        D ]à}(dy|(v rF	 dz„ |( 	                    dy¦  «        D ¦   «         \  })}*n8# tJ          $ r t          d{|(z  ¦  «         Y ŒHw xY w|( ,                    ¦   «         x})}*ta          |)¦  «        ta          |*¦  «        cxk    rdk    sn t          d||(z  ¦  «         Œžt‡          t‰          |)¦  «        t‰          |*¦  «        dz   ¦  «        D ]}+|#|"t‹          |+¦  «        <   ŒŒá�Œ&|"t          t                   dp<   dS dS |d}k    �rßg }d},d}-d}.d}/d}0|                       d¦  «        D ]²}1|0s|1d~k    r|/ }/|1dk    r|/r|.dz   }.Œ|1d€k    r|0dz   }0n|1d�k    r|0dz
  }0|.dk    r|,|1z   },Œ>|.dk    r|-|1z   }-ŒJ|.d'k    rb|, ,                    ¦   «         },|, F                    dH¦  «        r|,dd…          ,                    ¦   «         },| !                    |,|-g¦  «         |1},d}-d}.Œ³|.d'k    r\|, ,                    ¦   «         },|, F                    dH¦  «        r|,dd…          ,                    ¦   «         },| !                    |,|-g¦  «         t          t                    8                    di ¦  «        }2d}|D �]X}3|3d          ,                    ¦   «         |3d          ,                    ¦   «         c|3d<   |3d<   |3d          F                    dH¦  «        r|3d         dd…         |3d<   |3d          F                    d€¦  «        rt          d‚|3d         z  ¦  «         Œ t�          t-          dƒ„ t/          |3d         ¦  «         	                    d¦  «        D ¦   «         ¦  «        ¦  «        D �]j\  }4} |  F                    d€¦  «        rt          d‚| z  ¦  «         Œ.d„|3d         v rt          d…|3d         z  ¦  «         ŒQ|2 H                    | i ¦  «         |2|           8                    dh¦  «        }5t“          |2|          ¦  «        }6|5dlk    rt!          jJ        d†|3d         ¦  «        n|3d          	                    dH¦  «        }7	 |6r(d‡ K                    dˆ /                    |7¦  «        ¦  «        n|7|4         }8�n# t˜          $ �r t›          d‰„ |7D ¦   «         ¦  «        r½g }9|7D ]¶}:dŠ|:v r‰	 |: 	                    dŠ¦  «        \  };}<|9 N                    |< ,                    ¦   «         gtŸ          |;¦  «        z  ¦  «         ŒX# t           $ r* |9 !                    |: ,                    ¦   «         ¦  «         Y Œ‹w xY w|9 !                    |: ,                    ¦   «         ¦  «         Œ·|9}7|6r(d‡ K                    dˆ /                    |7¦  «        ¦  «        n|7|4         }8Y nw xY w|2|           8                    d`¦  «        }=|=r|=|8k    rt          d‹| ›de|=›dŒ|8›dc�¦  «         |8|2|          d`<   | }�Œl�ŒZ|2t          t                   d<   |rdA|t          fadS dS |d�k    �r�|                       d¦  «         ,                    ¦   «         }|d         dk    sdŽ|z   }g }>d}.d}?d}@|D ]\}1|1dk    r|.dz   }.Œ|.d6k    r8|? ,                    ¦   «         }?|?sd�}?|> !                    |?|@g¦  «         |.d'z
  }.d}?d}@|.d'z  r|?|1z   }?ŒW|@|1z   }@Œ]|? ,                    ¦   «         }?|?sd�}?|> !                    |?|@g¦  «         i }Ad�t          t                   v rt          t                   d�         }A|>D ]o}1|1d         |Avrg |A|1d         <   d�„ t/          |1d         ¦  «         	                    d¦  «        D ¦   «         D ]%}|r!|A|1d                   !                    |¦  «         Œ&Œp|At          t                   d�<   d�|?t          fadS |d‘k    �r t!          j        d’|                       d¦  «        t           j        ¦  «        }|�r˜| 3                    ¦   «         }Bd‘t          t                   vri t          t                   d‘<   |                      d¦  «        }i t          t                   d‘         |<   d}Cd“|Bv �r"|Bd“         ��d”|Bv r
|Bd”         €d}C|Ct          t                   d‘         |         d•<   d–„ |Bd“          	                    dH¦  «        D ¦   «         }i }D|D ]¾}3d`|3v r’t!          j        d—|3t           j        ¦  «        }$|$rP|$                      d‘¦  «         ,                    ¦   «         |D|$                      d˜¦  «         ,                    ¦   «         <   n%t          d™t9          |3¦  «        z  ¦  «         n|3|D|3<   |Dt          t                   d‘         |         dš<   Œ¿dS dS te          |  3                    ¦   «         ¦  «         t          d›¦  «         dS |dœv râd�t          t                   vri t          t                   d�<   t          t                   d�         }E|                       d¦  «        džk    r[dž|Ev rWt£          |Edž         t¤          ¦  «        r|Edž         g|Edž<   |Edž          !                    |                       d¦  «        ¦  «         dS |                       d¦  «        |E|                       d¦  «        <   dS |dk    rdt          €t6          rt          dŸ¦  «         dS t          }Ft§          t          |F         t          dd'…         |                       d¦  «        ¦  «         dS t6          dk    r2te          |  3                    ¦   «         ¦  «         t          d ¦  «         dS dS )¡a˜  
    Reads each line in the input file in sequence and updates global vars.

    Effectively reads and collects information from the input file to the
    global variable groupcache, a dictionary containing info about each part
    of the fortran module.

    At the end of analyzeline, information is filtered into the correct dict
    keys, but parameter values and dimensions are not yet interpreted.
    r;  r  N)r   r  r  rh   r   ú.r   zBanalyzeline: no group yet. Creating program group with name "%s".
Úprogramr2  r3  r4  rq   ÚfromskyÚfrom)r   r  r  zblock\s*dataú
block datazpython\s*moduleúpython modulezabstract\s*interfaceúabstract interfacerh   r!  )rp  Ú_BLOCK_DATA_r
   )Ú	interfacer¡  r£  z2analyzeline: No name/args pattern found for line.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   ©rª   ©rv   Úxs     r)   rx   zanalyzeline.<locals>.<listcomp>  s6   € ð Jð Jð JØ"#ð  Ÿgšg™iœið Jð Jð Jr(   r(  z<analyzeline: argument list is malformed (missing argument).
)r  r  r8  r7  r  rÿ   r   r5  ©r¥  r£  z&analyzeline: Creating module block %s
Úmoduler6  zDanalyzeline: Creating additional interface block (groupcounter=%s).
r¥  Úunknown_interfaceú:Úunknown_r±   rõ   r   Úprefixr­   é   r  Úvarnamesrp  r  ©rÿ   r  ÚbindlangÚlangÚ	lang_namer  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>²  s6   € ð "Nð "Nð "NØ&'ð #$§'¢'¡)¤)ð "Nð "Nð "Nr(   Úvariable)r  r  r	  r
  r  r  r  r  ú::r  rg  z"All arguments will have attribute r¿   r)  zXanalyzeline: cannot handle multiple attributes without type specification. Ignoring %r.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>Ø  s    € ÐEÐEÐE �!—'’'‘)”)ÐEÐEÐEr(   ©r  r  z&analyzeline: no name pattern found in z statement for z. Skipping.
ÚoperatorÚ
assignmentr  Ú__user__z8analyzeline: missing __user__ module (could be nothing)
z(analyzeline: appending intent(callback) ú to z arguments
z,analyzeline: intent(callback) %s is ignored
z=analyzeline: intent(callback) %s is already in argument list
)r	  r
  r  r  r  r  z(analyzeline: ignoring program arguments
r  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>  s    € Ð<Ð<Ð<˜1ˆQ�WŠW‰YŒYÐ<Ð<Ð<r(   Úimplementedbyr  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>  s    € Ð?Ð?Ð?¨Q˜qŸwšw™yœyÐ?Ð?Ð?r(   rs  zAanalyzeline: could not extract name,expr in parameter statement "ú" of "ú"
z1analyzeline: Overwriting the value of parameter "ú" ("z	") with "rm   r4   r5   r&  ÚeÚcomplexz+1j*(z analyzeline: Failed to evaluate z. Ignoring: r  Únonez<analyzeline: Overwriting earlier "implicit none" statement.
z9\s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\ZzDanalyzeline: could not extract info of implicit statement part "%s"
zManalyzeline: could not extract types pattern of implicit statement part "%s"
rq  rr  rt  ú-c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>g  s    € Ð)JÐ)JÐ)J¸¨!¯'ª'©)¬)Ð)JÐ)JÐ)Jr(   zZanalyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement
z^analyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement (2)
r  ú'ú/r9  r:  z>analyzeline: implied-DO list "%s" is not supported. Skipping.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>¡  s    € Ð.dÐ.dÐ.d¸Q¨q¯wªw©y¬yÐ.dÐ.dÐ.dr(   rŸ   z=Comment line in declaration "%s" is not supported. Skipping.
z\(.*?\)z(/{}/)ú, c              3   ó   K  — | ]}d |v V — Œ	dS )r   Nr'   )rv   rø   s     r)   ú	<genexpr>zanalyzeline.<locals>.<genexpr>»  s&   è è € Ð5Ð5¨˜3 !˜8Ð5Ð5Ð5Ð5Ð5Ð5r(   r   z*analyzeline: changing init expression of "ú") to "r  z//Ú_BLNK_c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>ò  s    € ÐKÐKÐK A�a—g’g‘i”iÐKÐKÐKr(   r  zR\A\s*(?P<name>\b\w+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Zrx  ÚnotonlyÚonlyc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzeline.<locals>.<listcomp>  s    € Ð?Ð?Ð? A�a—g’g‘i”iÐ?Ð?Ð?r(   z7\A\s*(?P<local>\b\w+\b)\s*=\s*>\s*(?P<use>\b\w+\b)\s*\ZÚlocalz0analyzeline: Not local=>use pattern found in %s
Úmapz0analyzeline: Could not crack the use statement.
)r  r  Úusercodez-analyzeline: No context for multiline block.
z+analyzeline: No code implemented for line.
)TrØ   r&   r   r   r   rŠ   r‹   Úbasenamer!   r+  r2   r   r?  r@  r   r¥   rÄ   r×   rÆ   rŽ  Údictr›  r{   r*  Úremover   r   r   rÓ   rÕ   rr   rx  ry  r,  ÚcopyÚdeepcopyr[   rË   r�  Úcrackline_bindlangr�  rQ  Úcracktypespec0Ú
updatevarsrª   ÚfindrY  rà   rX   ÚnamepatternrŒ  r$  r„  ro   Úget_parametersÚdetermineexprtyperƒ  Úreal16patternÚfinditerr‘  r  ÚevalÚSyntaxErrorÚ	NameErrorÚ	TypeErrorÚtypespattern4implicitÚcracktypespecrÇ   ÚordÚchrr�   Ú	enumerateÚ
setdefaultÚgetdimensionÚfindallr  Ú
IndexErrorÚanyÚextendr8   rÛ   Ú
isinstancer³   Úappendmultiline)Grø   r?   r0   r4  Únewnamerq   r�  rõ   r8  r­   Ú	bindclineÚ
needmoduleÚneedinterfaceÚitr€  ÚbindcdatÚtr4   ÚselectorÚattrÚedeclÚ	last_namerè   ÚiÚplÚchrÅ  rc  ÚapÚinitexprrŠ  ÚttÚvrñ   Úimplr}  rd  Ú
kindselectÚ
charselectrt  r�   ÚbegcÚendcÚoÚdlÚilrh  ÚfcÚinpr¹   r3  rð   ÚidxÚvtypeÚvdimÚmatchesÚnew_valÚexpanded_listr×   Ú
multiplierÚvalueÚcurrent_valÚclÚbnÚolÚ	commonkeyÚmmÚisonlyrô   r&  ÚgcsG                                                                          r)   r[  r[  ß  s!$  € ð �GŠG�F‰OŒO€EØˆ{ÒÐØÐÝñ �tÐ#GÐGÑGÝð HÝ!-°Ò!1Ð!1Ý”'×"Ò"¥?Ñ3Ô3×9Ò9¸#Ñ>Ô>¸qÔAˆÝØQÐT[Ñ[ñ	]ô 	]ð 	]àˆÝ# aÑ'ˆØ"+�	•,ÑØ#%�
•<Ñ Ø"$�	•,ÑØ+-�
•<Ô  Ñ(Ø+-�
•<Ô  Ñ(Ø,5�
•<Ô  Ñ)Ø+2�
•<Ô  Ñ(Ø+4�
•<Ô  Ñ(ØˆØÐ+Ð+Ñ+à—’‘”ˆÝŒ8�O U­B¬DÑ1Ô1ð 	)Ø ˆEˆEÝŒXÐ(¨%µ´Ñ6Ô6ð 	)Ø#ˆEˆEÝŒXÐ-¨uµb´dÑ;Ô;ð 	)Ø(ˆEØ�FŠ?ˆ?Ý3°A·G²G¸GÑ4DÔ4DÑEÔE‰NˆD�%˜Ý59ÀUÐ5KÑ5KÔ5K�J•|Ô$ VÔ,¨TÑ2ØˆDØˆFˆFå,CÀAÇGÂGÈGÑDTÔDTÑ,UÔ,UÑ)ˆD�$˜ 	Øˆ<Ø˜Ò$Ð$Ø%��à�ØÐMÐMÐMÝÐMÑNÔNÐNà! 4­Ð6ÐØð 	Ýð Jð JÝ'5°dÑ';Ô';×'AÒ'AÀ%Ñ'HÔ'HðJñ Jô Jñ Kô KˆDˆDð ˆDØ�ˆ:ˆ:Ø˜�*�*Ø—’˜B‘”�ð ˜�*�*åØOñQô Qð Qð ˆ
ØˆàÐ&Ð&Ð&ØˆMØ�Z­Ô5Ð5Ð5Ø�Ø�:¥lÔ3°FÔ;Ð;Ð;Ø�Ý¥Ô-ð ð �Ø�f”: Ò%Ð%Ø�F�Fð &à•z¥,Ô/°Ô=Ð=Ð=Ø�Ø)°jÐAÐAÀ$ÔGˆEÝð 	"�\¨RÒ/Ð/µLÀAÒ4EÐ4EÝ'¨!Ñ+ˆLØˆJØÐ?Ð?Ð?Ø !�å# aÑ'ˆØ#%�
•<Ñ Ø"$�	•,ÑØð 	)Ý˜Š{ˆ{ÝÐAÝ�]Ñ+Ô+ñ,Ø-.ñ0ô 0ð 0à&.�I•lÑ#Ø0?�J•|Ô$ WÑ-Ý/<�J•|Ô$ VÑ,Ø/1�J•|Ô$ VÑ,Ø/1�J•|Ô$ VÑ,Ø46�J•|Ô$ [Ñ1Ø57�J•|Ô$ \Ñ2Ø/1�J•|Ô$ VÑ,Ý'¨!Ñ+ˆLØ')�J•|Ñ$Ø&(�I•lÑ#Øñ 	)Ý˜Š{ˆ{ÝÐ_Ý ñ"Ø#$ñ&ô &ð &à&1�I•lÑ#Ø0;�J•|Ô$ WÑ-Ø/B�J•|Ô$ VÑ,å�<¨!Ñ+Ô,¨VÔ4Ð4Ð4µjÅÐPQÑAQÔ6RÐSYÔ6ZÐ6Zð0\�J•|Ô$ VÑ,à/1�J•|Ô$ VÑ,Ø46�J•|Ô$ [Ñ1Ø57�J•|Ô$ \Ñ2Ø/1�J•|Ô$ VÑ,Ý'¨!Ñ+ˆLØ')�J•|Ñ$Ø&(�I•lÑ#Ø"'�	•,ÑØ,1�
•<Ô  Ñ)Øð 	8Ø §¢¨c°3Ñ 7Ô 7Ñ7ˆDØ-.¯WªW°XÑ->Ô->�
•<Ô  Ñ*Ý+5°dÑ+;Ô+;�
•<Ô  Ñ(Ø-3�
•<Ô  Ñ*Ý˜1ÒÐÝ/>�J•|Ô$ VÑ,Ð,åð `¥°Ò!2Ð!2å�|¨aÑ/Ô0°Ô8Ð8Ð8½/¸/ð4K•
�<Ô(¨Ñ0Ð0õ �|¨aÑ/Ô0°Ô8Ð8Ð8½*Å\ÐTUÑEUÔ:VÐW]Ô:^Ð:^ð4`•
�<Ô(¨Ñ0å•j¥Ô.×3Ò3Ñ5Ô5Ñ6Ô6ð 	0ð 	0ˆAÝ�lÔ+¨AÔ.ð 0Ý�|Ô,¨QÐ/øà+/�
•<Ô  Ñ(Ø+-�
•<Ô  Ñ(Ø02�
•<Ô  Ñ-Ø13�
•<Ô  Ñ.Ø+-�
•<Ô  Ñ(Ø,.�
•<Ô  Ñ)à�FŠ?ˆ?Ø35�J•|Ô$ ZÑ0àÐ&Ð&Ð&Ø�:¥l°QÑ&6Ô7¸ÔDÐDÐDÝ�<¨!Ñ+Ô,¨[Ô9×@Ò@ÀÑFÔFÐFÝ/3¬}Ý�<¨!Ñ+Ô,¨VÔ4ñ06ô 06�J•|Ô$ VÑ,ðÝ�|Ô,¨VÔ4°TÔ:Ý�|Ô,¨VÔ4°TÔ:¸:ÔF×LÒLÈZÑXÔXðZð Zøåð ð ð Ø�ðøøøàÐ.Ð.Ñ.àð iÝœ9Õ%7¸ÑCÔC�Øð iØ<@À2¸;•J�|Ô,¨ZÑ8ØIQÏÊÐX^ÑI_ÔI_•J�|Ô,¨ZÔ8¸Ô>¸vÑFØ—~’~ kÑ2Ô2ð iØMUÏ^Ê^Ð\gÑMhÔMh�
¥<Ô0°Ô<¸TÔBÀ6ÑJðÝ9CÝ�|Ô,¨VÔ4°TÔ:½JÅ|ÐVWÑGWÔ<XÐY_Ô<`ÐacÔ<dñ:fô :f•
�<Ô(¨Ô0°Ñ6Ð6øåð ð ð Ø�ðøøøà�yÒ Ð Øð n˜f­
µ<Ô(@ÀÔ(HÐHÐHØ 6š>˜>ÝAKÝ&¥|Ô4°VÔ<¸TÔBÅJÍ|ÔD\Ð]cÔDdÐekÔDlñBnô Bn�
¥<Ô0°Ô8¸Ñ>ðÝ�<¨!Ñ+Ô,¨\Ô:×AÒAÀ$ÑGÔGÐGÐGøÝð ð ð Ø�ðøøøà�JÒÐÝ˜Q”×%Ò% a§g¢g¨hÑ&7Ô&7¸#Ñ&=ÀÑ&DÑEÔEˆAØð <Ý2@Ø—G’G˜F‘O”O Q§W¢W¨WÑ%5Ô%5ñ37ô 37Ñ/�˜( D¨%å˜8 X¨t°UÑ;Ô;Ð;àÐ&Ð&Ð&Ý•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLÝ•l QÑ&Ô'×.Ò.­z½,Ô/GÑHÔHÐHÝ6?ÅÔ6M�I•l QÑ&Ô'¨Ô+¨FÑ3Ý�,Ð'Ý'¨!Ñ+ˆLˆLˆLð 'Ð&ð 
�ŠˆÝ6°q·w²w¸wÑ7GÔ7GÑHÔHÑˆˆd�F˜AØÐØð Ý ð "Nð "NÝ+9¸$Ñ+?Ô+?×+EÒ+EÀeÑ+LÔ+Lð"Nñ "Nô "Nñ Oô O��ð �Ø�>�>¥4¨¡<¤<‘>”>�>Ø6:�J•|Ô$ WÔ-¨dÑ3Ø '¨­|Ð<ÐÐÐð Ðð 
�ŠˆÝ*8Ø�1—7’7˜7Ñ#Ô#ñ+%ô +%Ñ'ˆ�(˜D %å˜x¨°4¸Ñ?Ô?ˆ	ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	ÐnÐ	nÑ	nÝ�<Ô(¨Ô0ˆØ�WŠW�WÑÔ×#Ò#Ñ%Ô%ˆØ�GŠG�D‰MŒMˆØˆqŠ5ˆ5�T˜XÒ%Ð%Ý˜rÑ"Ô"×'Ò'¨Ñ.Ô.°Ñ2ˆAØ�F�Q˜‘U�F”˜dÑ" R¨¨A©¨¨¤ZÑ/ˆBØ—’˜‘”ˆAØ�!�"�"Œv˜Š~ˆ~ &­Jµ|Ô,DÐ"DÐ"DÝ�ØŸš ™œ˜¨"¨R¨a¨R¬&¨&¨&ð2ñ 3ô 3ð 3à˜#Ÿ(š(¥:­lÔ#;¸FÔ#CÑDÔDÑD�ØˆqŠ5ˆ5ØˆAØˆBˆBà�B�Q�B”—’‘”ˆBØ�A˜‘E�F�F”ˆBÝ˜BÑÔ×%Ò% eÑ,Ô,ˆÝˆr‰7Œ7�QŠ;ˆ;Ø�A”ˆBÝÐoØ—’˜˜A˜B˜BœÑ Ô ñ"ñ #ô #ð #àˆ	àEÐE¥^°BÑ%7Ô%7×%=Ò%=¸eÑ%DÔ%DÐEÑEÔEð 5	ñ 5	ˆAÝ×"Ò" 1Ñ%Ô%ˆBØð 	1ØÐ0Ð0Ð0Ø�A�Aå˜!Ÿ+š+™-œ-Ñ(Ô(Ð(Ý�GØ˜˜�d 1™gœg˜g˜gð'ñ (ô (ð (àå˜rŸxšx¨Ñ/Ô/Ñ0Ô0�ØÐ,Ð,Ð,Ø�Z’� 1¨Ò#4Ð#4Ø�R—X’X˜gÑ&Ô&Ñ&�Ø˜ˆ~ˆ~Ø��a‘Ø�{Ò"Ð"Ø˜BŸHšH WÑ-Ô-Ñ-�Ø�xÒÑØ—W’W˜V‘_”_ rÑ)�Ý)×/Ò/°Ñ3Ô3ð =Ø¥
­<Ô 8¸Ô @Ð@Ð@Ý'¨!Ò+Ð+Ø)µ½LÈ1Ñ<LÔ1MÈfÔ1UÐUÐUÝ 'Ø$_ñ!aô !að !að  !¥J­|Ô$<¸VÔ$DÒDÐDÝ ' Ø@AÀÀÅ:ÍlÔC[Ð\bÔCcÐCcÐCcð)eñ !fô !fð !få *­<Ô 8¸Ô @× GÒ GÈÑ JÔ JÐ Jøå#Ø OÐSTÑ UñWô Wð Wð Wõ  ð !6Ø9:ñ!<ñ =ô =ð =àÐ]Ð]Ð]Ø�Ø˜U 1œXÐ%Ð%Ø�a”˜Ô$×+Ò+¨BÑ/Ô/Ð/Ð/à(* t��a”˜Ñ$Ø�zÒ!Ð!Ý�lÔ+¨GÔ4¸	ÒAÐAÝÐGÑHÔHÐHÙØ�J¥|Ô4°VÔ<Ð<Ð<ÙØ¥jµÔ&>Ð>Ð>Ø<>•J�|Ô,¨[Ñ9Ý�<Ô(¨Ô5×<Ò<¸QÑ?Ô?Ð?ØˆI‰IØ+0�
•<Ô  Ñ(ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	Ð"Ò	"Ð	"à<Ð< §¢¨Ñ 0Ô 0× 6Ò 6°sÑ ;Ô ;Ð<Ñ<Ô<õ 	•<Ô  Ñ1Ð1Ð1à	�Ò	Ñ	Ý�<Ô(¨Ô0ˆØ�WŠW�WÑÔ×#Ò#Ñ%Ô% a¨ dÔ+ˆØˆ	Ý Ñ#Ô#×)Ò)¨%Ñ0Ô0ð $	ñ $	ˆAðØ?Ð?°!·'²'¸#±,´,Ð?Ñ?Ô?‘��8�8øÝð ð ð Ý�ØhiÐhiÐhiÐkmÐkmÐkmÐnñpô pð pà�ðøøøõ $ EÑ*Ô*ˆFÝ˜1‘”ˆAØ˜ˆ~ˆ~Ø��a‘Ø�e˜A”hˆˆ¨¨a¬°¬¸Ò(AÐ(AÝ�Ø�A�A�u˜Q”x ”}�}�} h h hð0ñ 1ô 1ð 1å! (¨FÑ3Ô3ˆAØñ 	.Ø—5’5˜Ñ$Ô$¨Ò.Ð.Ý˜h™œ�BÝ*×3Ò3°HÑ=Ô=ð Sð S˜Ý04Ø$ Q§W¢W¡Y¤Y¨q¯uªu©w¬wÐ%6Ô7×=Ò=Ñ?Ô?×GÒGÈÈSÑQÔQñ1Sô 1S˜˜1Ÿ7š7™9œ9 Q§U¢U¡W¤WÐ,Ñ-Ð-à!Ÿwšw r™{œ{�H�HØ—U’U˜:Ñ&Ô&¨)Ò3Ð3Ø'¨¨¨œ|×1Ò1Ñ3Ô3×;Ò;¸CÀÑEÔEßš  WÑ-Ô-ð ðÝ˜ 2 vÑ.Ô.��øÝ¥­IÐ6ð ð ð Ý�Ø#˜8˜8 S S Sð*ñ +ô +ð +à���‘øøøøðøøøõ ! ™GœGˆE�!ŒH�S‰MØ˜U 1œXÐ%Ð%Ø�a”˜Ô$×+Ò+¨KÑ8Ô8Ð8Ð8à(3 }��a”˜Ñ$ØˆI‰IØ+0�
•<Ô  Ñ(ØÐ Ø *¨Iµ|ÐDÐÐÐð !Ð à	�Ò	Ñ	Ø�7Š7�7ÑÔ×!Ò!Ñ#Ô#×)Ò)Ñ+Ô+¨vÒ5Ð5Ø37�J•|Ô$ ZÑ0Ð0Ð0Ø�WŠW�WÑÔñ 1	8Ø�Z­Ô5Ð5Ð5Ý!¥,Ô/°
Ô;��à�Øˆ|ÝØSñUô Uð Uà�Ý# A§G¢G¨GÑ$4Ô$4Ñ5Ô5×;Ò;¸EÑBÔBð ',ñ ',�Ø�Ý”XØPÐRSÕUWÔUYñ[ô [�àð ÝØ_ÐcdÑeñgô gð gàÝ*×0Ò0°·²¸&Ñ1AÔ1AÑBÔB�Øð ÝØhÐlmÑnñpô pð pàÝ2@Ø—H’H˜VÑ$Ô$ b§h¢h¨wÑ&7Ô&7ñ39ô 39Ñ/�˜( D¨%å3@Ø˜hñ4(ô 4(Ñ0�
˜J¨à#+��ZÑ Ø'1��^Ñ$Ø'1��^Ñ$Ø#+��ZÑ Ý˜dŸiši™kœkÑ*Ô*ð $ð $�AØ œ7ð $Ø  ˜GøÝ'¨¯ª°Ñ(9Ô(9Ñ:Ô:×@Ò@ÀÑGÔGð ,ð ,�AØ˜a�x�xð%Ø)JÐ)J¸Q¿WºWÀS¹\¼\Ð)JÑ)JÔ)J™J˜D $ $øÝ(ð %ð %ð %Ý#Ø }ð  ABñ  !BñCô Cð Cà$˜Hð%øøøð
 '(§g¢g¡i¤iÐ/˜˜tÝ˜t™9œ9­¨D©	¬	Ð6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6ÝØ}ð  ABñ  BñCô Cð Cà Ý"¥3 t¡9¤9­c°$©i¬i¸!©mÑ<Ô<ð ,ð ,˜Ø'+˜�S ™VœV™˜ð,ñ,ð  48�J•|Ô$ ZÑ0Ð0Ð0ðc1	8ð 1	8ðd 
�Š‰ØˆØˆØˆØˆØˆØˆØ—’˜Ñ!Ô!ð 	ð 	ˆAØð Ø˜’8�8Ø˜�BØ˜’8�8 �8Ø˜A™�AØØ�CŠxˆxØ˜A‘g��Ø�c’�Ø˜A‘g�Ø�AŠvˆvØ˜!‘V��Ø�a’�Ø˜!‘V��Ø�a’�Ø—X’X‘Z”Z�Ø—=’= Ñ%Ô%ð (Ø˜A˜B˜BœŸš™œ�BØ—	’	˜2˜r˜(Ñ#Ô#Ð#Ø�Ø�Ø�øØ�Š6ˆ6Ø—’‘”ˆBØ�}Š}˜SÑ!Ô!ð $Ø˜˜˜”V—\’\‘^”^�Ø�IŠI�r˜2�hÑÔÐÝ�,Ô'×+Ò+¨F°BÑ7Ô7ˆØˆ	Øð 2	ñ 2	ˆAØ˜1œŸš™œ q¨¤t§z¢z¡|¤|ˆJˆAˆa‰D�!�A‘$Ø�Œt�Š˜sÑ#Ô#ð  Ø˜”t˜A˜B˜B”x��!‘Ø�Œt�Š˜sÑ#Ô#ð ÝÐYÐ\]Ð^_Ô\`Ñ`ÑaÔaÐaØÝ#¥IÐ.dÐ.dÅ.ÐQRÐSTÔQUÑBVÔBV×B\ÒB\Ð]bÑBcÔBcÐ.dÑ.dÔ.dÑ$eÔ$eÑfÔfð +ñ +‘��QØ—<’< Ñ$Ô$ð ÝÐ]Ð`aÑaÑbÔbÐbð Ø˜!˜Aœ$�;�;õ Ð\Ð_`ÐabÔ_cÑcÑdÔdÐdØØ—’  2Ñ&Ô&Ð&Ø˜QœŸš JÑ/Ô/�Ý# D¨¤GÑ,Ô,�Ø:?À9Ò:LÐ:L�"œ* Z°°1´Ñ6Ô6Ð6ÐRSÐTUÔRV×R\ÒR\Ð]`ÑRaÔRa�ð\ØEIÐ[˜hŸošo¨d¯iªi¸Ñ.@Ô.@ÑAÔAÐAÈwÐWZÌ|�G‘GøÝ!ð \ñ \ð \õ
 Ð5Ð5¨WÐ5Ñ5Ô5Ñ5Ô5ð 0Ø(*˜Ø%,ð Dð D˜EØ" e˜|˜|ð!HØ8=¿ºÀCÑ8HÔ8HÑ$5 J°Ø$1×$8Ò$8¸%¿+º+¹-¼-¸Í3ÈzÉ?Ì?Ñ9ZÑ$[Ô$[Ð$[Ð$[øÝ'1ð !Hð !Hð !HØ$1×$8Ò$8¸¿º¹¼Ñ$GÔ$GÐ$GÐ$GÐ$Gð!Høøøð !.× 4Ò 4°U·[²[±]´]Ñ CÔ CÐ CÐ CØ"/˜ØEIÐ[˜hŸošo¨d¯iªi¸Ñ.@Ô.@ÑAÔAÐAÈwÐWZÌ|�G�G�Gð#\øøøð$ # 1œgŸkšk¨#Ñ.Ô.�Øð z K°7Ò$:Ð$:Ý�GÐ`aÐ`aÐ`aÐcnÐcnÐcnÐpwÐpwÐpwÐxÑyÔyÐyØ&��Q”˜‘Ø�	‘	ñW+ðX ,0�
•<Ô  Ñ(Øð 	EØ *¨Iµ|ÐDÐÐÐð	Eð 	Eà	�Ò	Ñ	Ø�wŠw�wÑÔ×%Ò%Ñ'Ô'ˆØ�AŒw˜#Š~ˆ~Ø˜$‘;ˆDØˆØˆØˆØˆØð 	ð 	ˆAØ�CŠxˆxØ˜‘E�ØØ�AŠvˆvØ—X’X‘Z”Z�Øð "Ø!�BØ—	’	˜2˜r˜(Ñ#Ô#Ð#Ø˜‘E�Ø�Ø�Ø�1‰uð Ø˜!‘V��à˜!‘V��Ø�XŠX‰ZŒZˆØð 	ØˆBØ
�	Š	�2�r�(ÑÔÐØˆ	Ø•z¥,Ô/Ð/Ð/Ý"¥<Ô0°Ô:ˆIØð 	.ð 	.ˆAØ�Œt˜9Ð$Ð$Ø"$�	˜!˜Aœ$‘ØKÐK­¸¸!¼Ñ)=Ô)=×)CÒ)CÀEÑ)JÔ)JÐKÑKÔKð .ð .�Øð .Ø˜a œd”O×*Ò*¨1Ñ-Ô-Ð-øð.ð .7�
•<Ô  Ñ*Ø$ b­,Ð7ÐÐÐØ	�Š‰ÝŒXØaÐcd×cjÒcjÐkrÑcsÔcsÕuwÔuyñ{ô {ˆàñ 	IØ—’‘”ˆBØ�J¥|Ô4Ð4Ð4Ø24•
�<Ô(¨Ñ/Ø—8’8˜FÑ#Ô#ˆDØ46�J•|Ô$ UÔ+¨DÑ1ØˆFØ˜ˆ|‰|  6¤
Ñ 6Ø �?�? r¨)¤}Ð'<Ø�FØ@F•
�<Ô(¨Ô/°Ô5°fÑ=Ø?Ð?¨¨F¬×)9Ò)9¸#Ñ)>Ô)>Ð?Ñ?Ô?�Ø�Øð Fð F�AØ˜a�x�xÝœXØVÐXYÕ[]Ô[_ñaô a˜àð _Ø<>¿HºHØ %ñ='ô ='ß',¢u¡w¤wð ˜rŸxšx¨Ñ0Ô0×6Ò6Ñ8Ô8Ñ9Ð9õ $Ø SÕVZÐ[\ÑV]ÔV]Ñ ]ñ_ô _ð _ð _ð !"˜˜1™ØCE•J�|Ô,¨UÔ3°DÔ9¸%Ñ@Ð@ðFð Fð �å�!—+’+‘-”-Ñ Ô Ð ÝÐGÑHÔHÐHÐHÐHØ	Ð%Ð	%Ð	%Ø¥ZµÔ%=Ð=Ð=Ø;=�J•|Ô$Ð%7Ñ8Ý•|Ô$Ð%7Ô8ˆØ�7Š7�6‰?Œ?˜jÒ(Ð(¨Z¸1¨_¨_Ý˜!˜Jœ-­Ñ-Ô-ð 0Ø!" :¤ ��*‘ØˆjŒM× Ò  §¢¨Ñ!1Ô!1Ñ2Ô2Ð2Ð2Ð2à!"§¢¨Ñ!1Ô!1ˆAˆa�gŠg�f‰oŒoÑÐÐØ	�Ò	Ð	ÝÐ#Ýð JÝÐHÑIÔIÐIØˆFÝˆÝ�
 2œÝ(¨¨!¨Ô,ØŸš ™œñ	)ô 	)ð 	)ð 	)ð 	)õ �QŠ;ˆ;Ý�!—+’+‘-”-Ñ Ô Ð ÝÐBÑCÔCÐCÐCÐCð ˆ;sÒ   â3Ad ä
dädçA$h5 è5
iéië.k> ë>
lì
lÁM2"ANÁN AN8ÁN7AN8ÁU9AVÁVAWÁV"AV>ÁV>AWÁa1"AbÁbAb3Áb2Ab3Ár2AsÁs.AwÁs0AAuÁu AwÁu1Au5Áu2AwÁu4Au5Áu5AAwÁwAwc                 óp   — d| vri | d<   | d         }||vrg ||<   ||                               |¦  «         d S )NÚf2pymultilines©r,  )rØ   Úcontext_nameÚmlr&  s       r)   r÷  r÷  2  sT   € Ø˜uÐ$Ð$Ø"$ˆÐÑØÐÔ€AØ˜1ÐÐØˆˆ,‰Ø€l„O×Ò˜2ÑÔÐØ
€Fr(   c                 ó²  — d }d }t          j        d| t           j        ¦  «        rd} nIt          j        d| t           j        ¦  «        rd} n&|                      ¦   «                              ¦   «         } t
                               t          |¦  «        ¦  «        }|st          d¦  «         d S |                     ¦   «         }t          | 
                    ¦   «         ¦  «        D ]}t          ||         ¦  «        ||<   Œ| dv r|d         }|d         }|                     d	¦  «        }|d
k    r)|d |…                              ¦   «         }||dz   d …         }| |||fS )Nzdouble\s*complexúdouble complexzdouble\s*precisionzdouble precisionz>cracktypespec0: no kind/char_selector pattern found for line.
)rÆ  r7   Úlogicalr5   Ú	characterrh   r;  r!  r¸  r   r5  )rÄ   r×   rÆ   rª   r¥   ÚselectpatternrY  r2   r$  rx  ry  rn  rá  )r4   rè   rÿ  r   rc  r&  r€  r  s           r)   rß  rß  <  sS  € Ø€HØ€DÝ	„xÐ# X­r¬tÑ4Ô4ð ,Ø#ˆˆÝ	ŒÐ'¨µ2´4Ñ	8Ô	8ð ,Ø%ˆˆà—>’>Ñ#Ô#×)Ò)Ñ+Ô+ˆÝ	×	Ò	�^¨BÑ/Ô/Ñ	0Ô	0€BØð ÝØMñ	Oô 	Oð 	OàˆØ
�Š‰Œ€AÝ�!—&’&‘(”(‰^Œ^ð &ð &ˆÝ  !¤Ñ%Ô%ˆˆ!‰ˆØÐQÐQÐQØ�V”9ˆØˆwŒZˆØ
�Š�‰Œ€AØˆA‚v€vØ�"�1�"Œv�|Š|‰~Œ~ˆØ��A‘��ŒZˆØ�X˜t RÐ'Ð'r(   z)\s*(?P<name>\b\w+\b)\s*(?P<after>.*)\s*\ZzB\s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|\*\s*(?P<kind2>.*?))\s*\Zz2\s*(\((?P<lenkind>.*)\)|\*\s*(?P<charlen>.*))\s*\Zz§\s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|(f2py_len\s*=\s*(?P<f2py_len>.*))|))\s*\Zz¿\s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*\*\s*(?P<len>.*?)|(\*\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Zc                 ó(  — |                       ¦   «         } t          | ¦  «        dk    r| S | d         }t          dt          | ¦  «        dz
  ¦  «        D ]4}| |         dk    r| |dz            dv s| |dz
           dv rŒ)|| |         z   }Œ5|| d         z   }|S )Nr   r   r±   z()[]{}=+-/* r   )rª   rX   rÇ   )ÚexprÚexpr2r  s      r)   Úremovespacesr1  c  s§   € Ø�:Š:‰<Œ<€DÝ
ˆ4�y„y�A‚~€~ØˆØ�ŒG€EÝ�1•c˜$‘i”i !‘mÑ$Ô$ð  ð  ˆØ�ŒG�sŠNˆNØ�1�q‘5Œk˜^Ð+Ð+Ø�a˜!‘e” Ð.Ð.ØØ˜˜Qœ‘ˆˆØ�D˜”HÑ€EØ€Lr(   c                 ó’   — d}d}d}d}| D ];}|dk    r|dv r||z  }|}Œ|s|dv r|}||k    r| }n|dk    r|r|dz  }Œ4||z  }|}Œ<|S )	a(  
    The function replace all spaces in the input variable line which are 
    surrounded with quotation marks, with the triplet "@_@".

    For instance, for the input "a 'b c'" the function returns "a 'b@_@c'"

    Parameters
    ----------
    line : str

    Returns
    -------
    str

    r
   FNú\)r3  rÊ  ú")rÊ  r4  r±   ú@_@r'   )r0   ÚfragmentÚinsideÚcurrent_quoteÚescapedr¹   s         r)   Úmarkinnerspacesr:  r  s¦   € ð  €HØ€FØ€MØ€GØð ð ˆØ�dŠ?ˆ?˜qÐ$5Ð5Ð5Ø˜‰MˆHØˆGØØð 	˜!˜{Ð*Ð*ØˆMØ�ÒÐØ�ZˆFˆFØ�#ŠXˆX˜&ˆXØ˜ÑˆHØØ�A‰ˆØˆˆØ€Or(   c                 óH  — d}t          | |¦  «        \  }}}|r¹d„ t          |¦  «                             d¦  «        D ¦   «         }g }t          j        d¦  «        }	|D ]r}
|
sŒ|	                     |
¦  «        }|rA|                     d¦  «                             ¦   «         }||
t          |¦  «        d…         z   }
| 	                    |
¦  «         Œs|}d„ t          |¦  «                             d¦  «        D ¦   «         }g }|D ]x}d„ t          t          t          |¦  «        ¦  «        d¬	¦  «                             d
¦  «        D ¦   «         D ]-}|r)| 	                    |                     dd¦  «        ¦  «         Œ.Œy|D �]#}t                               |¦  «        }|s t          dt          |¦  «        z  ¦  «         Œ?t!          |                     d¦  «        ¦  «        }i }|t"          t$                   d         v �r^t"          t$                   d         |                              ¦   «         }d|v}|r| |d<   n-| r+| |d         k    st          d|›d|d         ›d| ›d�¦  «         d|vrt'          j        |¦  «        |d<   nš|r˜t)          |                     ¦   «         ¦  «        D ]v}||d         v rG||         |d         |         k    s/t          d|›d|›d|d         |         ›d||         ›d�	¦  «         ŒSt'          j        ||         ¦  «        |d         |<   Œwd|vr!|r|r||d<   n±t-          d|›d|›d�¦  «         nš|r˜t)          |                     ¦   «         ¦  «        D ]v}||d         v rG||         |d         |         k    s/t          d|›d|›d|d         |         ›d||         ›d�	¦  «         ŒSt'          j        ||         ¦  «        |d         |<   Œwd|vr||d<   n-|r+|d         |k    st          d|›d|d         ›d|›d�¦  «         d|vrt'          j        |¦  «        |d<   nŽ|r*|D ]'}
|
|d         vr|d          	                    |
¦  «         Œ(nat'          j        | ¦  «        |d<   t'          j        |¦  «        |d<   t'          j        |¦  «        |d<   ||d<   t'          j        |¦  «        |d<   d|                     d¦  «        pg v rn|t"          t$                   d          v rTd!t"          t$                   vrg t"          t$                   d!<   t"          t$                   d!          	                    |¦  «         |                     d"¦  «        �r¾t0                               t3          |                     d"¦  «        ¦  «        ¦  «        }|�rY|                     ¦   «         }d#D ]!}||d$z            �||d$z            ||<   ||d$z   = Œ"t)          |                     ¦   «         ¦  «        D ]&}||         �t7          ||         ¦  «        ||<   Œ#||= Œ'd%|v r�d&|v r™|d%         d'k    r|d&         |d%<   |d&= n~| d(k    r9d|vs|d         si |d<   d%|d         v r	|d         d%= |d%         |d         d)<   |d%= n?|d&         d*z   |d%         z   |d&<   |d%= t-          d+| ›d|›d,| ›d|›d-|d&         ›d.�¦  «         d%|v rh| d/v r&d|vs|d         si |d<   |d%         |d         d)<   |d%= n>| d(k    r8d|vs|d         si |d<   d%|d         v r	|d         d%= |d%         |d         d)<   |d%= d0|v rGd1|v r8|d1         |d0         k    s&t          d2|›d|d1         ›d|d0         ›d�¦  «         n|d0         |d1<   d&|v r|d3|d&         z  }d|vs|d         s|g|d<   n‡|d          	                    |¦  «         |d         D ]:}|dd4…         d5k    r*||k    r$|d         d6= t-          d|›d7|›d8|›d�¦  «          nŒ;n(t          d9||                     d"¦  «        z   z  ¦  «         t)          |                     ¦   «         ¦  «        D ]}||         s||= Œ|t"          t$                   d         |<   d:t"          t$                   v r+t"          t$                   d:          	                    |¦  «         |}�Œ%|S );zÛ
    Returns last_name, the variable name without special chars, parenthesis
        or dimension specifiers.

    Alters groupcache to add the name, typespec, attrspec (and possibly value)
    of current variable.
    Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zupdatevars.<locals>.<listcomp>¥  s    € ÐMÐMÐM !�A—G’G‘I”IÐMÐMÐMr(   r(  z(?P<start>[a-zA-Z]+)r‘  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zupdatevars.<locals>.<listcomp>±  s    € Ð	EÐ	EÐ	E˜ˆ!�'Š'‰)Œ)Ð	EÐ	EÐ	Er(   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zupdatevars.<locals>.<listcomp>´  s    € ÐoÐoÐo �1—7’7‘9”9ÐoÐoÐor(   r±   ©rl  z@ @r5  z;updatevars: no name pattern found for entity=%s. Skipping.
rq   r3  r4   z+updatevars: attempt to change the type of "rÄ  rÐ  z". Ignoring.
rq  z0updatevars: attempt to change the kindselector "rÂ  rr  zupdatevars:z*: attempt to change empty charselector to rÂ   z0updatevars: attempt to change the charselector "rt  z/updatevars: attempt to change the typename of "rp  r  r8  r6  r!  )rX   ÚarrayÚinitÚ2rX   r@  r
   r,  r   r)  zupdatevars: "z" is mapped to "r9  z)"
©rÆ  r7   r+  r5   rA  rs  z6updatevars: attempt to change the init expression of "údimension(%s)é	   r  r   z: attempt to change r¾  z?updatevars: could not crack entity declaration "%s". Ignoring.
r±  )rì  r*  r+  rÄ   rÅ   r×   rØ   r¥   rX   r,  r1  r:  rÕ   râ  r2   rÓ   rr   r@  r   rÜ  rx  ry  ro   rƒ  ÚlenarraypatternrY  r$  rn  )r4   rÿ  rp  Ú
entitydeclr  r  r  rt  rð   r¹   r.  rø   ÚsÚelÚel1rÅ  Úe1Úenamer  Únot_has_typespecr€  rc  Úd1ÚlkÚdmÚdm1s                             r)   rà  rà  —  s‘
  € ð €IÝ'4°X¸xÑ'HÔ'HÑ$€J�
˜Hàð ØMÐM¥~°hÑ'?Ô'?×'EÒ'EÀeÑ'LÔ'LÐMÑMÔMˆØˆÝŒJÐ.Ñ/Ô/ˆØð 	ð 	ˆAØð ØØ—’˜‘
”
ˆAØð #Ø—G’G˜GÑ$Ô$×*Ò*Ñ,Ô,�Ø˜�#˜a™&œ&˜'˜'œ
‘N�Ø�HŠH�Q‰KŒKˆKˆKØˆØ	EÐ	E�^¨JÑ7Ô7×=Ò=¸eÑDÔDÐ	EÑ	EÔ	E€BØ
€CØð 3ð 3ˆØoÐo¥nµ\Å/ÐRSÑBTÔBTÑ5UÔ5UÐ]`Ð&aÑ&aÔ&a×&gÒ&gÐhmÑ&nÔ&nÐoÑoÔoð 	3ð 	3ˆBØð 3Ø—
’
˜2Ÿ:š: e¨SÑ1Ô1Ñ2Ô2Ð2øð	3ð ð Eñ EˆÝ×Ò˜aÑ Ô ˆØð 	ÝØNÕRVÐWXÑRYÔRYÑZñ\ô \ð \àÝ˜1Ÿ7š7 6™?œ?Ñ+Ô+ˆØˆØ•J�|Ô,¨VÔ4Ð4Ñ4Ý�|Ô,¨VÔ4°UÔ;×@Ò@ÑBÔBˆEØ)°Ð6ÐØð 9Ø$,��jÑ!Ð!Øð 9 8¨u°ZÔ/@Ò#@Ð#@Ý�Ø�E�E˜5 Ô,Ð,Ð,¨h¨h¨hð8ñ 9ô 9ð 9à UÐ*Ð*Ý(,¬	°*Ñ(=Ô(=��nÑ%Ð%Øð LÝ˜jŸošoÑ/Ô/Ñ0Ô0ð Lð L�AØ˜E .Ô1Ð1Ð1¸:Àa¼=ÈEÐR`ÔLaÐbcÔLdÒ;dÐ;dÝ˜Ø˜A˜A˜u˜u˜u e¨NÔ&;¸AÔ&>Ð&>Ð&>À
È1ÄÀÀð!Oñ Pô Pð Pð Põ 48´9¸ZÈ¼]Ñ3KÔ3K˜˜nÔ-¨aÑ0Ð0Ø UÐ*Ð*¨zÐ*Ø#ð 3Ø,6�E˜.Ñ)Ð)å�GØ$˜u˜u j j jð2ñ 3ô 3ð 3ð 3àð LÝ˜jŸošoÑ/Ô/Ñ0Ô0ð Lð L�AØ˜E .Ô1Ð1Ð1¸:Àa¼=ÈEÐR`ÔLaÐbcÔLdÒ;dÐ;dÝ˜Ø˜A˜A˜u˜u˜u e¨NÔ&;¸AÔ&>Ð&>Ð&>À
È1ÄÀÀð!Oñ Pô Pð Pð Põ 48´9¸ZÈ¼]Ñ3KÔ3K˜˜nÔ-¨aÑ0Ð0Ø Ð&Ð&Ø$,��jÑ!Ð!Øð 9 5¨Ô#4¸Ò#@Ð#@Ý�Ø�E�E˜5 Ô,Ð,Ð,¨h¨h¨hð8ñ 9ô 9ð 9à Ð&Ð&Ý$(¤I¨hÑ$7Ô$7��jÑ!Ð!Øð 4Ø!ð 4ð 4�AØ  jÔ 1Ð1Ð1Ø˜jÔ)×0Ò0°Ñ3Ô3Ð3øøå $¤	¨(Ñ 3Ô 3ˆE�*ÑÝ$(¤I¨jÑ$9Ô$9ˆE�.Ñ!Ý$(¤I¨jÑ$9Ô$9ˆE�.Ñ!Ø (ˆE�*ÑÝ $¤	¨(Ñ 3Ô 3ˆE�*ÑØ˜%Ÿ)š) JÑ/Ô/Ð5°2Ð6Ð6¸1Å
Í<Ô@XÐY_Ô@`Ð;`Ð;`Ø¥*­\Ô":Ð:Ð:Ø8:•
�<Ô(¨Ñ5Ý•|Ô$ [Ô1×8Ò8¸Ñ;Ô;Ð;Ø�7Š7�7ÑÔñ C	/Ý ×&Ò&¥~°a·g²g¸gÑ6FÔ6FÑ'GÔ'GÑHÔHˆBØñ A/Ø—\’\‘^”^�Ø2ð )ð )�BØ˜"˜s™(”|Ð/Ø!# B¨¡H¤˜˜2™Ø˜r C™x˜LøÝ˜bŸgšg™iœi™œð "ð "�AØ˜!”uÐ(Ý 0°°A´Ñ 7Ô 7˜˜1™˜à˜q˜E˜Eà˜B�;�; 7¨b = =Ø˜%”y B’�Ø$& w¤K˜˜5™	Ø˜w˜K˜KØ! [Ò0Ð0Ø*°%Ð7Ð7ÀÀ~ÔAVÐ7Ø46˜E .Ñ1Ø  E¨.Ô$9Ð9Ð9Ø % nÔ 5°eÐ <Ø57¸´Y˜˜nÔ-¨cÑ2Ø˜u˜I˜Ià&(¨¤k°CÑ&7¸"¸U¼)Ñ&C˜˜7™Ø˜u˜IÝ˜Ø$˜H˜H a a a¨¨¨°5°5°5¸"¸W¼+¸+¸+ð!Gñ Hô Hð Hð ˜B�;�;ØÐ#LÐLÐLØ*°%Ð7Ð7ÀÀ~ÔAVÐ7Ø46˜E .Ñ1Ø57¸´Y˜˜nÔ-¨cÑ2Ø˜u˜I˜IØ! [Ò0Ð0Ø*°%Ð7Ð7ÀÀ~ÔAVÐ7Ø46˜E .Ñ1Ø  E¨.Ô$9Ð9Ð9Ø % nÔ 5°eÐ <Ø57¸´Y˜˜nÔ-¨cÑ2Ø˜u˜Ià˜R�<�<Ø˜e�|�|¨U°3¬Z¸2¸f¼:Ò-EÐ-EÝ˜Ø!˜E˜E 5¨¤: : :¨r°&¬z¨z¨zð!;ñ <ô <ð <ð <ð &(¨¤Z˜˜c™
à˜b�=�=Ø(¨2¨g¬;Ñ6�BØ!¨Ð.Ð.°u¸ZÔ7HÐ.Ø-/¨D˜˜jÑ)Ð)à˜jÔ)×0Ò0°Ñ4Ô4Ð4Ø#(¨Ô#4ð &ð &˜CØ" 2 A 2œw¨+Ò5Ð5¸#Àº)¸)Ø$)¨*Ô$5°bÐ$9Ý ' Ø+0¨5¨5°#°#°#°r°r°rð);ñ !<ô !<ð !<à % øøõ ÐZØ˜AŸGšG GÑ,Ô,Ñ,ñ.ñ /ô /ð /å�e—j’j‘l”lÑ#Ô#ð 	ð 	ˆAØ˜”8ð Ø˜!�HøØ27�
•<Ô  Ô(¨Ñ/Ø�¥LÔ1Ð1Ð1Ý•|Ô$ ZÔ0×7Ò7¸Ñ>Ô>Ð>Øˆ	‰	ØÐr(   c                 ór  — d }d }d }|�rª| dv rÉt                                |¦  «        }|s!t          dt          |¦  «        z  ¦  «         d S |                     ¦   «         }|d         |d<   |d= t          |                     ¦   «         ¦  «        D ]}||         s||= Œt          |                     ¦   «         ¦  «        D ]\  }}t          |¦  «        ||<   Œ�nÝ| dk    �rVt                               |¦  «        }|s!t          dt          |¦  «        z  ¦  «         d S |                     ¦   «         }|d         |d<   |d= |d         rƒt                               t          |d         ¦  «        ¦  «        }|                     ¦   «         }d	D ],}||d
z            r||d
z            ||<   ||         ||<   ||d
z   = Œ-|d         �|d         |d<   |d= t          |                     ¦   «         ¦  «        D ]}||         s||= Œt          |                     ¦   «         ¦  «        D ]\  }}t          |¦  «        ||<   Œn€| dk    r[t          j        d|t          j        ¦  «        }|r|                     d¦  «        }nBt          dt          | |z   ¦  «        z  ¦  «         nt          dt          |¦  «        z  ¦  «         |||fS )NrC  z4cracktypespec: no kindselector pattern found for %s
Úkind2r   r,  z4cracktypespec: no charselector pattern found for %s
ÚcharlenÚlenkind)rX   ÚkindrB  Úf2py_lenrh   z\s*\(\s*(?P<name>\w+)\s*\)rq   z'cracktypespec: no typename found in %s
z'cracktypespec: no selector used for %s
)rq  r×   r2   rÓ   r$  rx  ry  Úitemsrr   rr  Úlenkindpatternr*  rÄ   rÆ   rØ   )	r4   rÿ  r  r  rt  r€  r  rU  rO  s	            r)   rì  rì  @  s;  € Ø€JØ€JØ€HØñ 3&ØÐ@Ð@Ð@Ý%×+Ò+¨HÑ5Ô5ˆJØð ÝØKÍtÐT\É~Ì~Ñ^ñ`ô `ð `à�Ø#×-Ò-Ñ/Ô/ˆJØ(¨Ô1ˆJ�s‰OØ˜7Ð#Ý˜*Ÿ/š/Ñ+Ô+Ñ,Ô,ð &ð &�Ø! !”}ð &Ø" 1˜øÝ˜Z×-Ò-Ñ/Ô/Ñ0Ô0ð .ð .‘��1Ý *¨1¡¤�
˜1‘�ñ.à˜Ò$Ñ$Ý%×+Ò+¨HÑ5Ô5ˆJØð ÝØKÍtÐT\É~Ì~Ñ^ñ`ô `ð `à�Ø#×-Ò-Ñ/Ô/ˆJØ(¨Ô3ˆJ�s‰OØ˜9Ð%Ø˜)Ô$ð AÝ(×.Ò.Ý" :¨iÔ#8Ñ9Ô9ñ;ô ;�à!×+Ò+Ñ-Ô-�Ø)ð *ð *�BØ˜r C™xÔ(ð 8Ø&-¨b°3©hÔ&7˜ ™Ø%,¨R¤[�J˜r‘NØ  S¡Ð)Ð)Ø˜:Ô&Ð2à-4°ZÔ-@�J˜zÑ*Ø˜9Ð%Ý˜*Ÿ/š/Ñ+Ô+Ñ,Ô,ð &ð &�Ø! !”}ð &Ø" 1˜øÝ˜Z×-Ò-Ñ/Ô/Ñ0Ô0ð .ð .‘��1Ý *¨1¡¤�
˜1‘�ð.à˜ÒÐÝ”xÐ =¸xÍÌÑNÔNˆHØð 5Ø#Ÿ>š>¨&Ñ1Ô1��åÐBÝ˜h¨Ñ1Ñ2Ô2ñ4ñ 5ô 5ð 5ð 5õ Ð>Ý˜(‘^”^ñ%ñ &ô &ð &à�z 8Ð+Ð+r(   c                 ó  — | si } |s| S d| vr|g| d<   | S |r| d                               |¦  «         || d         v r| S |dk    r&d| d         vr| d                               |¦  «         nŸ|dk    r&d| d         vr| d                               |¦  «         ns|dk    r&d| d         vr| d                               |¦  «         nG|dk    r&d| d         vr| d                               |¦  «         n| d                               |¦  «         | S )Nrp  rJ   Ú	automaticr  r  r&  )r}  r   r  s      r)   rz  rz  |  sb  € Øð ØˆØð ØˆØ˜ÐÐØ ˜6ˆˆZÑØˆØð &ØˆZÔ×Ò Ñ%Ô%Ð%Øˆt�JÔÐÐØˆØˆxÒÐ˜K¨t°JÔ/?Ð?Ð?ØˆZÔ×Ò Ñ%Ô%Ð%Ð%Ø	�Ò	Ð	 °°jÔ1AÐ!AÐ!AØˆZÔ×Ò Ñ%Ô%Ð%Ð%Ø	�Ò	Ð	Ø˜D Ô,Ð,Ð,Ø�Ô×#Ò# DÑ)Ô)Ð)øØ	�Ò	Ð	Ø˜4 
Ô+Ð+Ð+Ø�Ô×#Ò# DÑ)Ô)Ð)øàˆZÔ×Ò Ñ%Ô%Ð%Ø€Kr(   c                 ó®   — | si } |s| S d| vr|| d<   | S t          |                     ¦   «         ¦  «        D ]}|s
|| d         vr||         | d         |<   Œ | S )Nrq  ©rx  ry  ©r}  Úselr  r€  s       r)   r{  r{  —  s…   € Øð ØˆØð ØˆØ˜TÐ!Ð!Ø"ˆˆ^ÑØˆÝ�#—(’(‘*”*ÑÔð -ð -ˆØð 	-�A˜T .Ô1Ð1Ð1Ø&)¨!¤fˆD�Ô  Ñ#øØ€Kr(   c                 ó®   — | si } |s| S d| vr|| d<   | S t          |                     ¦   «         ¦  «        D ]}|s
|| d         vr||         | d         |<   Œ | S )Nrr  r]  r^  s       r)   r|  r|  ¥  s…   € Øð ØˆØð ØˆØ˜TÐ!Ð!Ø"ˆˆ^ÑØˆå�#—(’(‘*”*ÑÔð -ð -ˆØð 	-�A˜T .Ô1Ð1Ð1Ø&)¨!¤fˆD�Ô  Ñ#øØ€Kr(   Úunknownc                 ó   — d| v r| d         S |S )Nrq   r'   )r4  ra  s     r)   Úgetblocknamerc  ´  s   € Ø�€€Ø�VŒ}ÐØ€Nr(   c                 óR   — d| d         ›d| d         ›d�a d S # t          $ r Y d S w xY w)NzIn: r   r­  rq   r¿   )r    rË   )r4  s    r)   Úsetmesstextre  ¼  sJ   € ðØ,1°&¬M¨M¨M¸5À¼=¸=¸=ÐIÐÐÐøÝð ð ð Øˆˆðøøøs   � ˜
&¥&c                 óz   — i }d| v rt          | d         ¦  «        }d| v r|                     | d         ¦  «         |S )NÚparent_blockr  )Úget_usedictÚupdate)r4  Úusedicts     r)   rh  rh  Å  sH   € Ø€GØ˜ÐÐÝ˜e NÔ3Ñ4Ô4ˆØ�€~€~Ø�Š�u˜U”|Ñ$Ô$Ð$Ø€Nr(   c           
      ó6  — |€i }t          | ¦  «        }|s|S t          |                     ¦   «         ¦  «        D ]ß\  }}|                     ¦   «         }|t          vr*t          d|›d|                      d¦  «        ›d�¦  «         ŒLt          |         }t          |¦  «        }|sŒk|rt          d|z  ¦  «         t          |                     ¦   «         ¦  «        D ]>\  }}||v r0t          dt          |¦  «        ›dt          |¦  «        ›d�¦  «         |||<   Œ?Œà|S )Nzget_useparameters: no module z info used by rq   r¿   z,get_useparameters: mapping for %s not impl.
z(get_useparameters: overriding parameter z with value from module )
rh  rx  rX  r¥   r   r2   rƒ  rã  ro   rÓ   )	r4  Ú	param_maprj  ÚusenameÚmappingÚmvarsrŠ  r€  r	  s	            r)   Úget_useparametersrp  Î  sV  € ð ÐØˆ	Ý˜%Ñ Ô €GØð ØÐÝ  §¢¡¤Ñ1Ô1ð ð Ñˆ�Ø—-’-‘/”/ˆØ�-Ð'Ð'ÝˆGØ�W�W˜eŸiši¨Ñ/Ô/Ð/Ð/ð1ñ 2ô 2ð 2àÝ˜gÔ&ˆÝ Ñ&Ô&ˆØð 	Øàð 	QÝÐCÀwÑOÑPÔPÐPÝ˜Ÿš™œÑ(Ô(ð 	ð 	‰DˆAˆqØ�Iˆ~ˆ~Ý�Ý59¸!±W´W°W°W½dÀ7¹m¼m¸m¸mðMñ Nô Nð NàˆI�a‰LˆLð		ð Ðr(   c                 óÖ  ‡‡— t           s| S t          | t          ¦  «        rˆˆfd„| D ¦   «         }|S t          | ¦  «         t	          ‰›d| d         ›d�d¦  «         ‰€t          | ¦  «        Š‰�_d| v r[| d         }t          |                     ¦   «         ¦  «        D ]1}||         }d|v r#|d         }d|v r|d         }|‰v r‰|         |d<   Œ2ˆˆfd	„| d
         D ¦   «         }	|	| d
<   | S )Nc                 ó:   •— g | ]}t          |‰d z   ‰¬¦  «        ‘ŒS ©r    )Útabrl  ©Ú
postcrack2)rv   Úgrl  rt  s     €€r)   rx   zpostcrack2.<locals>.<listcomp>ò  s<   ø€ ð ð ð Øõ ˜!  t¡°yÐAÑAÔAð ð ð r(   úBlock: rq   r¿   r   r3  rq  rV  c                 ó:   •— g | ]}t          |‰d z   ‰¬¦  «        ‘ŒS rs  ru  )rv   Úbrl  rt  s     €€r)   rx   zpostcrack2.<locals>.<listcomp>  s<   ø€ ð (ð (ð (Øõ ˜1 #¨¡*¸	ÐBÑBÔBð (ð (ð (r(   r2  )r   rö  rx  re  r2   rp  ry  )
r4  rt  rl  Úretr3  r®   ÚvarrV  ÚvalÚnew_bodys
    ``       r)   rv  rv  ì  sW  øø€ õ ð ØˆÝ�%�ÑÔð ðð ð ð ð Øðñ ô ˆàˆ
Ý�ÑÔÐÝ˜s˜s˜s E¨&¤M M MÐ2°AÑ6Ô6Ð6àÐÝ% eÑ,Ô,ˆ	àÐ ¨5  Ø�VŒ}ˆÝ�d—i’i‘k”kÑ"Ô"ð 	6ð 	6ˆAØ�q”'ˆCØ Ð$Ð$Ø˜>Ô*�Ø˜T�>�>Ø˜vœ,�CØ˜iÐ'Ð'Ø'0°¤~˜˜V™øð(ð (ð (ð (ð (Ø˜vœð(ñ (ô (€Hà€Eˆ&�Mà€Lr(   c                 óØ  — t          | t          ¦  «        rjg }g }| D ]^}t          |¦  «         t          ||dz   ¬¦  «        }d|v r d|d         v r|                     |¦  «         ŒI|                     |¦  «         Œ_||z   S t          | ¦  «         t          | t
          ¦  «        s#d| vrt          dt          | ¦  «        z   ¦  «        ‚d| v r(| d         dk    st          |›d| d         ›d	�d
¦  «         t          | ¦  «        } t          | ¦  «        } t          | ¦  «        | d<   t          | d         ¦  «        | d<   |                      d¦  «        r| d         }t          | ||¬¦  «        | d<   g }d| v rF| d         }t          |                     ¦   «         ¦  «        D ]}d|v r|                     |¦  «         Œni }d}	d| v r| d         }	|                      d¦  «        �r„g }
d| v r| d         }
t!          j        | d         ¦  «        }|	r|	dz   }nd}||v r d}d||fz  |v r|dz   }d||fz  |v °d||fz  }dg i |	dz   dœ}| d         D ]Ø}||
v r¨g }d}| d         D ]}|dz   }|d         dk    rld}|d         D ]6}|dz   }d|v r+|d         |k    rt!          j        |¦  «        }|d         |=  nŒ7|r)|d         s	| d         |= |
|
                     |¦  «        =  nŒ€|d                              |¦  «         Œ®||v r&t%          ||         ¦  «        s||         |d         |<   ŒÙ|d         s|d         r3|
| d<   d|gi || d         dœ}i ||<   t&                               |¦  «         |r|| d<   | S )zi
    TODO:
          function return values
          determine expression types if in argument list
    r    ©rt  rq   r½  r4  z0postcrack: Expected block dictionary instead of r¬  rx  r¿   r   r3  Úsortvarsr8  r2  r  r
   r6  r7  Ú__user__routinesÚunknown__user__routinesr   z%s_%ir¥  Ú_user_interface)r4  r2  r3  rq   r   r¢  )r4  r2  r3  rq   r7  )rö  rx  re  Ú	postcrackr,  rÚ  rË   r³   r2   ÚanalyzeargsÚanalyzecommonÚanalyzevarsÚsortvarnamesrƒ  Úanalyzebodyry  rÜ  r[   Ú
isexternalr   )r4  r8  rt  ÚgretÚuretrw  ÚuserisdefinedÚuseblockr€  rq   r7  ro  Úmnamer  r¥  rÅ  ÚedefÚjrz  ÚbbÚmblocks                        r)   r…  r…    sv  € õ �%�ÑÔð ØˆØˆØð 	ð 	ˆAÝ˜‰NŒNˆNÝ˜!  t¡Ð,Ñ,Ô,ˆAà˜ˆ{ˆ{˜z¨Q¨v¬YÐ6Ð6Ø—’˜A‘”��à—’˜A‘”��Ø�d‰{ÐÝ�ÑÔÐÝ�e�TÑ"Ô"ð $ w°eÐ';Ð';ÝÐJÝ˜E™
œ
ñ#ñ $ô $ð 	$à�€€˜u Vœ}Ð0CÒCÐCÝ 3 3 3¨¨f¬¨¨Ð6¸Ñ:Ô:Ð:Ý˜ÑÔ€EÝ˜%Ñ Ô €EÝ Ñ&Ô&€Eˆ&�MÝ$ U¨6¤]Ñ3Ô3€Eˆ*ÑØ‡y‚y�ÑÔð Ø�VŒ}ˆÝ  t°Ð5Ñ5Ô5€Eˆ&�Mà€MØ�€~€~Ø˜”<ˆÝ�h—m’m‘o”oÑ&Ô&ð 	(ð 	(ˆAØ˜QˆˆØ×$Ò$ QÑ'Ô'Ð'øð	(ð ˆØ€DØ�€€Ø�VŒ}ˆà‡y‚y�ÑÔñ ,'Øˆ
Ø˜5Ð Ð Ø˜|Ô,ˆJÝ”	˜% œ-Ñ(Ô(ˆØð 	.ØÐ-Ñ-ˆEˆEà-ˆEØ�MÐ!Ð!ØˆAØ˜U A˜JÑ&¨-Ð7Ð7Ø˜‘E�ð ˜U A˜JÑ&¨-Ð7Ð7à˜u a˜jÑ(ˆEØ)°2Ø¨Ð0AÑ)AðCð Cˆ	à�{Ô#ð 	4ð 	4ˆAØ�JˆˆØ�Ø�Ø˜vœð "ð "�AØ˜A™�AØ˜”z [Ò0Ð0Ø˜Ø"# F¤)ð &ð &˜BØ ! A¡˜AØ%¨˜|˜|°°6´
¸a²°Ý'+¤y°¡}¤} Ø$% f¤I¨a LØ % øØð "Ø#$ V¤9ð 5Ø$)¨&¤M°!Ð$4Ø *¨:×+;Ò+;¸AÑ+>Ô+>Ð ?Ø!˜EøØ˜&Ô!×(Ò(¨Ñ.Ô.Ð.Ð.à˜�:�:¥j°°q´Ñ&:Ô&:�:Ø+0°¬8�I˜fÔ% aÑ(øØ�VÔð 	' 	¨&Ô 1ð 	'Ø",ˆE�,ÑØ.Øð9Ø$&°ÀUÈ;ÔEWðYð YˆFà ˆH�U‰OÝ×Ò˜vÑ&Ô&Ð&Øð  Øˆˆe‰Ø€Lr(   c                 óP  — g }g }t          |                      ¦   «         ¦  «        D ]E}d| |         v r$| |         d         r|                     |¦  «         Œ0|                     |¦  «         ŒFt          |¦  «        }d}|r§|d         }d}|dd …         D ]}|| |         d         v rd} nŒ|rH|dd …         |gz   }|dz   }||k    r.t	          dd                     |¦  «        z   dz   ¦  «         ||z   }n3n0|                     |¦  «         |dd …         }t          |¦  «        }d}|°§|S )Nrw  r   r   zTsortvarnames: failed to compute dependencies because of cyclic dependencies between rÍ  r¿   )rx  ry  r,  rX   ro   rà   )r3  ÚindepÚdepr	  r®   r  r`  Úws           r)   r‰  r‰  l  s|  € Ø€EØ
€CÝ�$—)’)‘+”+ÑÔð ð ˆØ�t˜A”wÐÐ 4¨¤7¨8Ô#4ÐØ�JŠJ�q‰MŒMˆMˆMà�LŠL˜‰OŒOˆOˆOÝˆC‰Œ€AØ	€AØ
ð Ø�ŒFˆØˆØ�Q�R�R”ð 	ð 	ˆAØ�D˜”G˜HÔ%Ð%Ð%Ø�Ø�ð &ð ð 	Ø�a�b�b”'˜Q˜C‘-ˆCØ�A‘ˆAØ�1ŠuˆuÝð ;àŸ)š) C™.œ.ñ)à+/ñ0ñ 1ô 1ð 1ð  ™�Øð ð �LŠL˜‰OŒOˆOØ�a�b�b”'ˆCÝ�C‘”ˆAØˆAð) ð ð* €Lr(   c           	      óB  — t          | ¦  «        s| S g }t          | d                              ¦   «         ¦  «        D �]Ê}g }| d         |         D �]ª}t          j        d|t          j        ¦  «        }|�rWg }|                     d¦  «        r?d„ t          |                     d¦  «        ¦  «                             d¦  «        D ¦   «         }t          |                     d¦  «         
                    ¦   «         ¦  «        }|| d         v rwd| d         |         v r>| d         |         d                              d	d
                     |¦  «        z  ¦  «         n[d	d
                     |¦  «        z  g| d         |         d<   n2|r%dd	d
                     |¦  «        z  gi| d         |<   ni | d         |<   ||vr|                     |¦  «         n|}t          d|›d|›d�¦  «         |                     |¦  «         �Œ¬|| d         |<   �ŒÌd| vr|| d<   n| d         |z   | d<   | S )Nr  z2\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\ZÚdimsc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   z!analyzecommon.<locals>.<listcomp>š  s6   € ð Sð Sð SØ !ð ŸGšG™IœIð Sð Sð Sr(   r(  rq   r3  rp  rD  r)  z:analyzecommon: failed to extract "<name>[(<dims>)]" from "z" in common /z/.
Ú
commonvars)Ú	hascommonrx  ry  rÄ   r×   rÆ   rØ   r*  r+  rr   rª   r,  rà   ro   )r4  rœ  r€  ÚcomvarsrÅ  rø   rš  r®   s           r)   r‡  r‡  Ž  s�  € Ý�UÑÔð ØˆØ€JÝ�%˜”/×&Ò&Ñ(Ô(Ñ)Ô)ð %ñ %ˆØˆØ�x” Ô#ð 	ñ 	ˆAÝ”ØEÀqÍ"Ì$ñPô PˆAàñ pØ�Ø—7’7˜6‘?”?ð SðSð SÝ%3°A·G²G¸F±O´OÑ%DÔ%D×%JÒ%JÈ5Ñ%QÔ%QðSñ Sô S�Då˜qŸwšw v™œ×4Ò4Ñ6Ô6Ñ7Ô7�Ø˜˜fœÐ%Ð%Ø! U¨6¤]°1Ô%5Ð5Ð5Ø˜fœ aÔ(¨Ô4×;Ò;Ø+¨s¯xªx¸©~¬~Ñ>ñ@ô @ð @ð @ð ,¨s¯xªx¸©~¬~Ñ>ð8@˜˜fœ aÔ(¨Ñ4Ð4ð ð .à&¨¸C¿HºHÀT¹N¼NÑ)KÐ(Lð,N˜˜fœ aÑ(Ð(ð ,.˜˜fœ aÑ(Ø˜JÐ&Ð&Ø×%Ò% aÑ(Ô(Ð(øà�Ý�ØijÐijÐijÐlmÐlmÐlmÐnñpô pð pà�NŠN˜1ÑÔÐÑØ$ˆˆhŒ˜ÑÑØ˜5Ð Ð Ø(ˆˆlÑÐà# LÔ1°JÑ>ˆˆlÑØ€Lr(   c                 ó0  — t          | ¦  «         d„ | d                              ¦   «         D ¦   «         }g }| d         D �]V}| |d<   |d         dv rŽ|�|d         |vrŒ|d         }|d         |                     ¦   «         v r t                               |d         ¦  «         |d         t          v rŒst
          r|d         t
          vrŒŠt          |d	d
¬¦  «        |d<   n|}t          |||dz   ¬¦  «        }|d         dv r"|d         s|                     d¦  «        sd|vrŒã|d          	                    dd¦  «        dk    rt                               |¦  «         �Œ|d         dk    r|d         t          |d         <   |                     |¦  «         �ŒX|S )Nc                 ó6   — i | ]\  }}d |vs
d|d          v¯||“ŒS )rp  r  r'   )rv   Úkeyr  s      r)   ú
<dictcomp>zanalyzebody.<locals>.<dictcomp>¾  sB   € ð ð ð áˆC�Ø˜UÐ"Ð" h°e¸JÔ6GÐ&GÐ&Gð 	ˆUà&GÐ&GÐ&Gr(   r3  r2  rg  r4  r²  rq   r8  z
      T©Úas_interfaceÚsaved_interfacer    r€  rª  rÀ  r  r±   r
   Úpythonmoduler«  )re  rX  ry  r#   r,  r$   Úcrack2fortrangenr…  rƒ  rÕ   r   r   )r4  r8  rt  Úmaybe_privater2  rz  Úas_s          r)   rŠ  rŠ  ¹  sà  € õ �ÑÔÐðð à œ-×-Ò-Ñ/Ô/ðñ ô €Mð €DØ�6Œ]ð ñ ˆØ!ˆˆ.ÑØˆWŒ:Ð3Ð3Ð3ØÐ A f¤I°TÐ$9Ð$9Øà˜”i�à�Œy˜M×.Ò.Ñ0Ô0Ð0Ð0Ý× Ò   6¤Ñ+Ô+Ð+Ø�Œy�IÐ%Ð%ØÝð ˜Q˜vœY­iÐ7Ð7ØÝ#3Ø�>°ð$6ñ $6ô $6ˆAÐÑ Ð ð ˆCÝ�a˜ #¨¡*Ð-Ñ-Ô-ˆØˆWŒ:Ð<Ð<Ð<Ø�Œyð =Ø!"§¢ Ñ!7Ô!7ð =à!¨Ð*Ð*ØØˆWŒ:×Ò˜c 2Ñ&Ô&¨.Ò8Ð8Ý×Ò˜qÑ!Ô!Ð!Ñ!à�Œz˜XÒ%Ð%Ø+,¨V¬9•˜a œiÑ(Ø�KŠK˜‰NŒNˆN‰NØ€Kr(   c                 ó¤  — t          | ¦  «         t          }i }d| v r±| d         €3d }t          dk    r%t          dt	          | d         ¦  «        z  ¦  «         nvt          | d                              ¦   «         ¦  «        D ]N}| d         |                              d¦  «        dvr| d         |         ||<   Œ7| d         |         d         ||<   ŒO||fS )Nr  r   z6buildimplicitrules: no implicit rules for routine %s.
rq   r4   )rJ   r[  )re  Údefaultimplicitrulesr   r2   rÓ   rx  ry  rƒ  )r4  ÚimplicitrulesÚ	attrrulesr€  s       r)   Úbuildimplicitrulesr®  æ  sø   € Ý�ÑÔÐÝ(€MØ€IØ�UÐÐØ�ÔÐ$Ø ˆMÝ˜Š{ˆ{ÝØMÕPTÐUZÐ[aÔUbÑPcÔPcÑcñeô eð eøõ ˜% 
Ô+×0Ò0Ñ2Ô2Ñ3Ô3ð Dð D�Ø˜Ô$ QÔ'×+Ò+¨JÑ7Ô7Ð?VÐVÐVØ',¨ZÔ'8¸Ô';�M !Ñ$Ð$à#(¨Ô#4°QÔ#7¸
Ô#C�I˜a‘L�LØ˜)Ð#Ð#r(   c                 ó†   — t          | ||¦  «        }t          |¦  «        t          t          fv r|S t	          d|z  ¦  «        ‚)z2 Like `eval` but returns only integers and floats zr=%r)rç  rh   r8   r:   rÛ   )rÅ  rw  rð   r�   s       r)   Úmyevalr°  ù  s=   € åˆQ��1‰Œ€AÝˆA�w„w•3��,ÐÐØˆÝ
�V˜q‘\Ñ
"Ô
"Ð"r(   z\A\b\w+\b\Zc                 ó–  — 	 t          t          | i i ¦  «        ¦  «        }d|dfS # t          $ r Y nw xY wt                               | ¦  «        rdd| fS t          | ¦  «        }|D �]b}t          |¦  «        |k    rŒt          j        d|z   dz   | ¦  «        rŒ3t          j        d|z   dz   t          j	        ¦  «        }|                     | ¦  «        }|�rò	 |                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        }	|                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        |	z
  }
|                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        }|                     | ¦  «        }|rG| 
                    d¦  «        ›d	d›d
| 
                    d¦  «        ›�}|                     |¦  «        }|°Gt          |i i ¦  «        }|
dz  |	z   |k    r|
dz  |	z   |k    r|
|	|fc S n# t          $ r Y nw xY w n�ŒddS )a  
    Obtain ``a`` and ``b`` when ``e == "a*x+b"``, where ``x`` is a symbol in
    xset.

    >>> getlincoef('2*x + 1', {'x'})
    (2, 1, 'x')
    >>> getlincoef('3*x + x*2 + 2 + 1', {'x'})
    (5, 3, 'x')
    >>> getlincoef('0', {'x'})
    (0, 0, None)
    >>> getlincoef('0*x', {'x'})
    (0, 0, 'x')
    >>> getlincoef('x*x', {'x'})
    (None, None, None)

    This can be tricked by sufficiently complex expressions

    >>> getlincoef('(x - 0.5)*(x - 1.5)*(x - 1)*x + 2*x + 3', {'x'})
    (2.0, 3.0, 'x')
    r   Nr   z\w\s*\([^)]*\bú\bú(?P<before>.*?)\bú\b(?P<after>.*)r   r9  r:  r!  g      à?g      ø?)NNN)r8   r°  rË   Úgetlincoef_re_1r×   rX   rÄ   r�  rÅ   rÆ   rØ   )rÅ  Úxsetr¹   Úlen_er©  rb  rø   rc  Úeerz  r.  Úc2s               r)   Ú
getlincoefrº  	  s?  € ð*Ý•�q˜"˜bÑ!Ô!Ñ"Ô"ˆØ�!�TˆzÐøÝð ð ð Øˆðøøøå×Ò˜QÑÔð Ø�!�QˆwˆÝ�‰FŒF€EØð 'ñ 'ˆÝˆq‰6Œ6�EŠ>ˆ>ØÝŒ9Ð&¨Ñ*¨UÑ2°AÑ6Ô6ð 	àÝŒzÐ.°Ñ2Ð5GÑGÍÌÑNÔNˆØ�JŠJ�q‰MŒMˆØñ 	ðØ—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨A¨A¨A¨r¯xªx¸Ñ/@Ô/@Ð/@ðB�BàŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&�Ø—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨A¨A¨A¨r¯xªx¸Ñ/@Ô/@Ð/@ðB�BàŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&¨Ñ*�Ø—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨C¨C¨C°·²¸'Ñ1BÔ1BÐ1BðD�BàŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&�à—Z’Z ‘]”]�Øð (àŸš Ñ*Ô*Ð*Ð*¨C¨C¨C°·²¸'Ñ1BÔ1BÐ1BðD�BàŸš B™œ�Bð ð (õ ˜B  BÑ'Ô'�Ø˜‘G˜a‘K 1Ò$Ð$¨¨S©°1©¸Ò):Ð):Ø˜a ˜7�N�N�NøøÝð ð ð Ø�ðøøøàˆEñ?	ð@ Ðs   ‚"% ¥
2±2ÃGJ5Ê5
KËKz\b[a-z][\w$]*\bc                 ó
  — | |v rØ||                                dg ¦  «        }d||          v rat          ||          ¦  «        sLt                               ||          d         ¦  «        D ]%}||vr||v r|| k    r|                     |¦  «         Œ&|d d …         D ]E}|                      |g ¦  «        pt          |||¦  «        D ]}||vr|                     |¦  «         ŒŒFn!t          dt          | ¦  «        z  ¦  «         g }||| <   |S )Nrw  rs  z,_get_depend_dict: no dependence info for %s
)rƒ  ÚisstringÚword_patternrò  r,  Ú_get_depend_dictr2   rÓ   )rq   r3  ÚdepsÚwordsÚwordr˜  s         r)   r¾  r¾  N	  s1  € Øˆt€|€|Ø�T”
—’˜x¨Ñ,Ô,ˆà�$�t”*ÐÐ¥X¨d°4¬jÑ%9Ô%9ÐÝ$×,Ò,¨T°$¬Z¸¬_Ñ=Ô=ð 'ð '�ð ˜uÐ$Ð$¨°¨¨¸$À$º,¸,Ø—L’L Ñ&Ô&Ð&øØ˜!˜!˜!”Hð 	$ð 	$ˆDØ—X’X˜d BÑ'Ô'ð :Ý'¨¨d°DÑ9Ô9ð$ð $�à˜E�>�>Ø—L’L ‘O”O�Oøð$ð	$õ 	Ð?Å4ÈÁ:Ä:ÑNÑOÔOÐOØˆØ€Dˆ�JØ€Lr(   c                 óx   — t          |                      ¦   «         ¦  «        }i }|D ]}t          || |¦  «         Œ|S r,   )rx  ry  r¾  )r3  rz   Údepend_dictr®   s       r)   Ú_calc_depend_dictrÄ  d	  sF   € Ý�—’‘”ÑÔ€EØ€KØð /ð /ˆÝ˜˜D +Ñ.Ô.Ð.Ð.ØÐr(   c                 ó~  ‡ ‡— t          ‰ ¦  «        Šg }t          ‰                     ¦   «         ¦  «        D ]"}‰|         s|                     |¦  «         ‰|= Œ#‰rWt          ‰                     ¦   «         ¦  «        D ]3\  }}ˆfd„|D ¦   «         }|s|                     |¦  «         ‰|= Œ.|‰|<   Œ4‰°Wˆ fd„|D ¦   «         S )Nc                 ó   •— g | ]}|‰v ¯|‘Œ	S r'   r'   )rv   r®   rÃ  s     €r)   rx   z$get_sorted_names.<locals>.<listcomp>u	  s#   ø€ Ð:Ð:Ð:˜Q¨¨kÐ)9Ð)9�qÐ)9Ð)9Ð)9r(   c                 ó   •— g | ]}|‰v ¯|‘Œ	S r'   r'   )rv   rq   r3  s     €r)   rx   z$get_sorted_names.<locals>.<listcomp>{	  s   ø€ Ð3Ð3Ð3�T d¨d l lˆD l l lr(   )rÄ  rx  ry  r,  rX  )r3  rz   rq   ÚlstÚnew_lstrÃ  s   `    @r)   Úget_sorted_namesrÊ  l	  s  øø€ Ý# DÑ)Ô)€KØ€EÝ�[×%Ò%Ñ'Ô'Ñ(Ô(ð "ð "ˆØ˜4Ô ð 	"Ø�LŠL˜ÑÔÐØ˜DÐ!øØ
ð ,Ý˜k×/Ò/Ñ1Ô1Ñ2Ô2ð 	,ð 	,‰IˆD�#Ø:Ð:Ð:Ð: #Ð:Ñ:Ô:ˆGØð ,Ø—’˜TÑ"Ô"Ð"Ø Ð%Ð%à$+�˜DÑ!Ð!ð ð ,ð 4Ð3Ð3Ð3˜UÐ3Ñ3Ô3Ð3r(   c                 óª   — | d         dv r
| dd…         } t                                | ¦  «        rdS t                               | ¦  «        rdS d| z   dz   S )	Nr   ú'"r   r   é   é   zkind(r:  )rå  r×   Úreal8pattern)rc   s    r)   Ú
_kind_funcrÐ  ~	  sd   € àˆa„y�EÐÐØ˜˜"˜”ˆÝ×Ò˜6Ñ"Ô"ð ØˆqÝ	×	Ò	˜FÑ	#Ô	#ð ØˆqØ�VÑ˜cÑ!Ð!r(   c                 óf   — d| z  }|dk    rdS |dk    rdS |dk    rdS |dk    rd	S |dd
z  k    rdS dS )Nr´   é   r   i   r5  l        rÎ  l            rÍ  é€   é   r   r'   )r�   rø   s     r)   Ú_selected_int_kind_funcrÕ  ‰	  sZ   € à
ˆa‰€AØˆF‚{€{ØˆqØˆG‚|€|ØˆqØˆG‚|€|ØˆqØˆG‚|€|ØˆqØˆA�‰H‚}€}ØˆrØˆ2r(   c                 óÌ   — | dk     rdS | dk     rdS t          j        ¦   «                              ¦   «         }|                     d¦  «        r	| dk    rdS n| dk     rdS | dk    rdS d	S )
Né   rÎ  rÔ  rÍ  )
Úaarch64ÚalphaÚarm64Ú	loongarchÚmipsÚpowerÚppcÚriscvÚs390xÚsparcé!   é   r´   r   )ÚplatformÚmachiner¥   r�   )Úpr�   Úradixrå  s       r)   Ú_selected_real_kind_funcrè  ™	  s‡   € ð 	ˆ1‚u€uØˆqØˆ2‚v€vØˆqÝÔÑ Ô ×&Ò&Ñ(Ô(€GØ×ÒÐwÑxÔxð Ø�Š7ˆ7Ø�2ð ð ˆrŠ6ˆ6Ø�2Ø�"ŠWˆWØ�2Øˆ2r(   c           	      ó~	  — t          j         |¦  «        }t          j         |¦  «        }dt          fdt          fdt          ffD ]\  }}||vr|||<   Œg }t	          | ¦  «        D ]1}d| |         v r%d| |         d         v r|                     |¦  «         Œ2t          j        dt          j        ¦  «        }t          j        dt          j        ¦  «        }	t          j        dt          j        ¦  «        }
|D �]Ç}d	| |         v �r‘| |         d	         }t          | |         ¦  «        r#| 
                    ¦   «         }d
D ]} |j        |Ž }Œ|                     d|¦  «        }|	                     d|¦  «        }d}d| |         v r]d| |         d         v rMt          |¦  «        }|                     d| |         d         d         z   d¦  «        }t          |¦  «        |k     }|s˜|
                     |¦  «        sƒ|                     d¦  «        }t          |¦  «        dk    r[d                     |d d…         ¦  «         
                    ¦   «                              |d          
                    ¦   «         d¦  «        }t#          | |         ¦  «        rÌt%          |¦  «        }t&                               |¦  «        D ]Œ}t%          ||                     ¦   «         |                     ¦   «         …          
                    ¦   «                              dd¦  «        ¦  «        ||                     ¦   «         |                     ¦   «         …<   Œ�d                     |¦  «        }n(t/          | |         ¦  «        rt1          d|› d�¦  «         d„ | |         d         D ¦   «         pd gd         }t&                               |¦  «        rd}nt4                               |¦  «        rd}	 t7          ||||¬¦  «        ||<   n2# t8          $ r%}|||<   t1          d|› d|›d�¦  «         Y d }~nd }~ww xY wt;          | |         ¦  «        r3t=          ||         t>          ¦  «        rtA          ||         ¦  «        ||<   | 
                    ¦   «         }||k    r||         ||<   �ŒŸtC          | |         ¦  «         t1          d|›d�¦  «         �ŒÉ|S ) NrV  Úselected_int_kindÚselected_real_kindrp  r  z \bkind\s*\(\s*(?P<value>.*)\s*\)z-\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)z4\bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)rs  ))z.false.ÚFalse)z.true.ÚTruez
kind("\1")zselected_int_kind(\1)Frq  rõ   r
   r   r   r&  rÅ  zAget_parameters[TODO]: implement evaluation of complex expression r¿   c                 ó†   — g | ]>}|                      d ¦  «        ¯|                     d ¦  «                             ¦   «         ‘Œ?S )r  )r�   Úremoveprefixrª   )rv   rH  s     r)   rx   z"get_parameters.<locals>.<listcomp>ö	  sQ   € ð 5ð 5ð 5ØØŸ,š, {Ñ3Ô3ð5˜Ÿš {Ñ3Ô3×9Ò9Ñ;Ô;ð 5ð 5ð 5r(   r   rÍ  rÎ  )Údimspeczget_parameters: got "ú" on zget_parameters:parameter z does not have value?!
)"rÜ  rÐ  rÕ  rè  rÊ  r,  rÄ   rÅ   rÆ   Ú	islogicalr¥   rÕ   ÚsubrX   r×   r+  rà   Úisdoublerx  rå  ræ  r‘  r  Ú	iscomplexr2   r�  rÏ  Ú
param_evalrË   r¼  rö  r8   rî  rŒ  )r3  Úglobal_paramsrŠ  Úg_paramsrq   ÚfuncÚparam_namesr®   Úkind_reÚselected_int_kind_reÚselected_kind_rer	  ÚreplÚis_replacedÚ
orig_v_lenÚv_r  rø   rð  rñ   Únls                        r)   rã  rã  ¬	  s  € ÝŒY�}Ñ%Ô%€FÝŒy˜Ñ'Ô'€HØ¥
Ð+Ø+Õ-DÐEØ,Õ.FÐGðKð "ð "‰
ˆˆdð �xÐÐØ!ˆH�T‰NøØ€KÝ˜dÑ#Ô#ð "ð "ˆØ˜˜aœÐ Ð  [°D¸´G¸JÔ4GÐ%GÐ%GØ×Ò˜qÑ!Ô!Ð!øÝŒjÐ<½b¼dÑCÔC€GÝœ:Ø8½"¼$ñ@ô @Ðå”zØ?ÅÄñGô GÐàð POñ POˆØ�$�q”'ˆ>‰>Ø�Q”˜”ˆAÝ˜˜aœÑ!Ô!ð )Ø—G’G‘I”I�ðð )ð )�Dð
 "˜œ	 4Ð(�A�Aà—’˜M¨1Ñ-Ô-ˆAØ$×(Ò(Ð)AÀ1ÑEÔEˆAð  ˆKà  a¤Ð(Ð(ð ˜T !œW ^Ô4Ð4Ð4Ý!$ Q¡¤�JØŸ	š	 #¨¨Q¬°Ô(?ÀÔ(GÑ"GÈÑLÔL�Aõ #& a¡&¤&¨:Ò"5�Kàð QØ'×-Ò-¨aÑ0Ô0ð QØŸš ™œ�Bå˜2‘w”w ’{�{ØŸGšG B s¨ s¤GÑ,Ô,×2Ò2Ñ4Ô4×<Ò<¸RÀ¼V¿\º\¹^¼^ÈRÑPÔP˜õ ˜˜QœÑ Ô ð 	MÝ˜!‘W”W�Ý&×/Ò/°Ñ2Ô2ð Hð H�AÝ,0Ø˜!Ÿ'š'™)œ) A§E¢E¡G¤GÐ+Ô,×2Ò2Ñ4Ô4×<Ò<¸SÀ#ÑFÔFñ-Hô -H�B�q—w’w‘y”y §¢¡¤Ð(Ñ)Ð)à—G’G˜B‘K”K��å˜4 œ7Ñ#Ô#ð MÝð LØFGðLð Lð Lñ Mô Mð Mð5ð 5Ø!% a¤¨Ô!4ð5ñ 5ô 5ð ?à9=¸ÀôCˆGõ ×#Ò# AÑ&Ô&ð Ø��Ý×$Ò$ QÑ'Ô'ð Ø�ðCÝ& q¨(°FÀGÐLÑLÔL��q‘	�	øÝð Cð Cð CØ��q‘	ÝÐA°ÐAÐA¸!ÐAÐAÐAÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøõ ˜˜QœÑ Ô ð +¥Z°°q´	½3Ñ%?Ô%?ð +Ý  q¤	™NœN��q‘	Ø—’‘”ˆBØ�QŠwˆwØ# AœY��r‘
ùå�$�q”'‰NŒNˆNÝÐM°ÐMÐMÐMÑNÔNÐNÑNØ€Ms   ÏO2Ï2
P!Ï<PÐP!c                 ó.   — | dv rdS t          | |¦  «        S )N)z(:)ú(*)r   r  )Ú_eval_scalar)ÚlengthrŠ  s     r)   Ú_eval_lengthr  
  s#   € ØÐ$Ð$Ð$ØˆuÝ˜ Ñ'Ô'Ð'r(   z\d+_c                 óª  — t          | ¦  «        r|                      d¦  «        d         } 	 t          | i |¦  «        }  t          | t          ¦  «        rt
          nt          | ¦  «        } ni# t          t          t          f$ r | cY S t          $ rB}t          d|›d| ›dt          |                     ¦   «         ¦  «        ›d�¦  «         Y d }~nd }~ww xY w| S )Nrõ   r   r4  z" in evaluating z (available names: r·   )Ú_is_kind_numberr+  rç  rö  r³   rÓ   ré  rè  rê  rË   ro   rx  ry  )r  rŠ  rñ   s      r)   r  r  
  s  € Ý�uÑÔð $Ø—’˜CÑ Ô  Ô#ˆð	5å�U˜B Ñ'Ô'ˆØ8� E­3Ñ/Ô/Ð8•�µS¸%Ñ@Ô@ˆˆøÝ•{¥IÐ.ð ð ð ØˆˆˆÝð 5ð 5ð 5Ýˆà�3�3˜˜˜�t F§K¢K¡M¤MÑ2Ô2Ð2Ð2ð4ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøøð5øøøð €Ls   ¬=A* Á*CÂ	CÂ8CÃCc                 ó¦(  ‡>‡?‡@— t          | ¦  «         t          | ¦  «        \  }}t          j        | d         ¦  «        Š@| d         dk    r| d         ‰@vri ‰@| d         <   d| d         v r‰‰@d= d| d         d         v rv| d         d         d         }t          ‰@¦  «        t          d„ | d         D ¦   «         ¦  «        z  D ]2}d	D ]-}||v r't	          ‰@                     |i ¦  «        |¦  «        ‰@|<   Œ.Œ3g }| d
         }|D ]0}	 ‰@|          |                     |¦  «         Œ!# t          $ r Y Œ-w xY wt          ‰@ 	                    ¦   «         ¦  «        D ]}||vr|                     |¦  «         Œt          ‰@t          | ¦  «        ¦  «        }	i }
t          j        d¦  «        j        }t          ‰@ 	                    ¦   «         ¦  «        D ]�} ||¦  «        }|rr||                     ¦   «         |                     ¦   «         …         }	 |
|          ŒG# t          $ r- t          j        d|z  t          j        ¦  «        j        |
|<   Y Œ}w xY wŒ‚|D �]°}|d         t          | 	                    ¦   «         ¦  «        v r%t	          ‰@|         ||d                  ¦  «        ‰@|<   d‰@|         vrÿd‰@|         v rd‰@|         d         v så|r°|d                              ¦   «         }t          ||          	                    ¦   «         ¦  «        D ]m}|dk    r||         |         dk    rŒ|‰@|         vr||         |         ‰@|         |<   Œ=|dk    r*||         |         D ]}t	          ‰@|         |¦  «        ‰@|<   ŒŒnn3|| d
         v r)t'          dt)          |¦  «        ›d| d         ›d�¦  «         d‰@|         v red‰@|         d         v rU‰@|         d         d         }	 t+          t-          |i |	¦  «        ¦  «        }n# t.          $ r Y nw xY w|‰@|         d         d<   d‰@|         v red‰@|         d         v rU‰@|         d         d         }	 t+          t-          |i |	¦  «        ¦  «        }n# t.          $ r Y nw xY w|‰@|         d         d<   i }d‰@|         v �rï‰@|         d         }|                     ¦   «          g ‰@|         d<   d\  }}}}}|D �]}|dd…         dk    r%|dd…                              ¦   «         dd…         }nå|dd…         dk    r%|dd…                              ¦   «         dd…         }n²|dd…         d k    r%|dd…                              ¦   «         dd…         }n|dd!…         d"k    r%|d!d…                              ¦   «         dd…         }nL|dd#…         d$k    r%|d#d…                              ¦   «         dd…         }nt	          ‰@|         |¦  «        ‰@|<   |r�d‰@|         vrg ‰@|         d<   d%„ t5          |¦  «                             d&¦  «        D ¦   «         D ]I}|                     d'd¦  «        }|‰@|         d         vr!‰@|         d                              |¦  «         ŒJd}|rf|                     d(d)¦  «        }|                     d*d+¦  «        }d$‰@|         vr|g‰@|         d$<   n!‰@|         d$                              |¦  «         d}|�„d ‰@|         vrg ‰@|         d <   t;          d,„ t5          |¦  «                             d&¦  «        D ¦   «         ¦  «        D ]3}|‰@|         d          vr!‰@|         d                               |¦  «         Œ4d}|�wd"‰@|         vrg ‰@|         d"<   d-„ t5          |¦  «                             d&¦  «        D ¦   «         D ]3}|‰@|         d"         vr!‰@|         d"                              |¦  «         Œ4d}�Œ|�r¢d‰@|         v�r—g ‰@|         d<   t;          d.„ t5          |¦  «                             d&¦  «        D ¦   «         ¦  «        D �]Q}	 t=          ||	¦  «        }n0# t>          t@          t          f$ r t'          d/|›d+�¦  «         Y nw xY w|d0k    rd0nd1}||k    r|g}n#t5          |d0¦  «                             d2¦  «        }tC          |¦  «        d3k    r	d1|v rd1g}d1}tC          |¦  «        dk    r|d         |k    r
d4|d         g}tC          |¦  «        d3k    �r[tE          tF          j$        j%        |¦  «        \  }}||z
  dz   }| &                    tF          j'        j(        ¬5¦  «        }i }| d         D ]ü}tG          j)        |¦  «        } | *                    | ¦  «        rÑ	 | +                    | ¦  «        \  }}!||!fd6„}"t          | ,                    ¦   «         ¦  «        }#|# -                    |! ,                    ¦   «         ¦  «         n:# t\          $ r-}$d}"t          | ,                    ¦   «         ¦  «        }#Y d}$~$nd}$~$ww xY wt          ˆ@fd7„|#D ¦   «         ¦  «        }%|"t          |%¦  «        f||<   Œý|||<   ‰@|         d                              |¦  «         �ŒSd"‰@|         v�rKd
| v �rF|| d
         v �r;‰@|                              d g ¦  «        }&g }' t_          t`          tb          td          ¦  «        ‰@|         ¦  «        }(tg          ‰@|         ¦  «        �rïti          ‰@|         d         ¦  «        D �]Ñ\  })}|                     |¦  «        Š>‰>€�n«|(�r¨‰> 5                    ¦   «         D �]’\  }\  }*}+ˆ>ˆ?fd8„Š?t          ¦   «         }, ‰?||,¦  «         ||&v sd9‰@|         v s
d ‰@|         v rŒB|*�‰||,vr…d:}- |*tG          j)        d;|› d<|)› d=�¦  «        ¦  «        }.|. &                    tF          j'        j(        ¬5¦  «        }.|.‰@|         d9<   |g|+z   ‰@|         d <   d"‰@|         vrd;|› d<|)› d>|› �g‰@|         d"<   n{d?}-d‰@|         vrg ‰@|         d<   d@‰@|         d         vr!‰@|         d                              d@¦  «         |&                     |¦  «         |'                     d;|› d<|)› d>|› �¦  «         ‰@|                              dg ¦  «        }/dA|/v sdB|/v s|/                     |-rdBndA¦  «         |/r|/‰@|         d<   �Œ”‰>��‰> 5                    ¦   «         D ]ï\  }\  }*}+‰@|                              d g ¦  «        }%‰@|                              dg ¦  «        D ]n}0|0 6                    d ¦  «        rWd 7                    |0                     ¦   «         ¦  «        }0|% 8                    |0dCd…                              dD¦  «        ¦  «         Œo|%r%t          t          |%¦  «        ¦  «        ‰@|         d <   ||%vr|&                     |¦  «         Œð�ŒÓnµts          ‰@|         ¦  «        r d‰@|         v r–d1‰@|         d         v r4tu          ‰@|         d         d1         |	¦  «        }1|1‰@|         d         d1<   nRd‰@|         d         v rBtu          ‰@|         d         d         |	¦  «        }1‰@|         d         d= |1‰@|         d         d1<   |'r|'‰@|         d"<   |&r%t          t          |&¦  «        ¦  «        ‰@|         d <   d9‰@|         v �rd‰@|         vrg ‰@|         d<   dA‰@|         d         vr1dB‰@|         d         vr!‰@|         d                              dA¦  «         d ‰@|         vr�g ‰@|         d <   t          |
 5                    ¦   «         ¦  «        D ]=\  }} |‰@|         d9         ¦  «        r!‰@|         d                               |¦  «         Œ>‰@|         d          s	‰@|         d = tw          ‰@|         ¦  «        r%ty          ‰@|         d9         |	¦  «        ‰@|         d9<   �Œ²t          ‰@ 	                    ¦   «         ¦  «        D �]}|| d         k    �rþd$‰@|         v r‰@|         d$         | d$<   | d         dk    �rÖdE| v r/| dE         ‰@v r%t{          ‰@|         ‰@| dE                  ¦  «        ‰@|<   dF| v �rž| dF         }2|2                     dGd¦  «        }3|2|3k     }4|3                     dHd¦  «        }2|2|3k     }5t|          d                              |2¦  «        }|�rt          | @                    dI¦  «        | @                    dJ¦  «        ¦  «        \  }6}7}}8tƒ          |6|7¦  «        \  }9}:};|6‰@|         d<   	 | dE         r|6‰@| dE                  d<   n# t.          $ r Y nw xY w|9r;d|9v r,	 t-          |9d         i |	¦  «        |9d<   n# t.          $ r Y nw xY w|9‰@|         d<   |:r|:‰@|         d<   |;r|;‰@|         dK<   |4rt	          ‰@|         dG¦  «        ‰@|<   |5rt	          ‰@|         dH¦  «        ‰@|<   �Œét'          dLt)          | dF         ¦  «        z  ¦  «         �Œ| d         dMv�rdN| v r$t          j        | d
         | dN         z   ¦  «        }<nt          j        | d
         ¦  «        }<t          ‰@ 	                    ¦   «         ¦  «        D ]@} t_          t„          t†          ¦  «        ‰@|         ¦  «        r|<                     |¦  «         ŒAdO| v rŽ|< 8                    t          | dO          	                    ¦   «         ¦  «        ¦  «         t          | dO          	                    ¦   «         ¦  «        D ],}| dO         |         D ]}||<vr|<                     |¦  «         ŒŒ-| d         dk    r;dE| v r|<                     | dE         ¦  «         n|<                     | d         ¦  «         | d         dPv r'| d         }=|=‰@v rd‰@|=         v r‰@|=         d         | d<   | d         dQk    r4|< 8                    t          ‰@ 	                    ¦   «         ¦  «        ¦  «         t          ‰@ 	                    ¦   «         ¦  «        D ]	}||<vr‰@|= Œ
‰@S )RzH
    Sets correct dimension information for each variable/parameter
    r3  r4  rÿ   rq   r
   rp  c              3   ó&   K  — | ]}|d          V — ŒdS )rq   Nr'   )rv   rz  s     r)   rÏ  zanalyzevars.<locals>.<genexpr>:
  s&   è è € Ð$FÐ$F°1 Q v¤YÐ$FÐ$FÐ$FÐ$FÐ$FÐ$Fr(   r2  rº  r8  z[A-Za-z][\w$]*z.*\b%s\br   r4   r  Ú	undefinedz"analyzevars: typespec of variable z is not defined in routine z.
rr  rX   rq  rV  )NNNNNNrE  r  r   r   r½   r  rw  r¡   rv  rÎ  ru  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzevars.<locals>.<listcomp>‘
  s    € ÐUÐUÐU¨A˜aŸgšg™iœiÐUÐUÐUr(   r(  r±   z\n\nz

z\n r¿   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzevars.<locals>.<listcomp>¢
  s    € Ð'_Ð'_Ð'_°a¨¯ª©	¬	Ð'_Ð'_Ð'_r(   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzevars.<locals>.<listcomp>©
  s    € ÐTÐTÐT¨A˜aŸgšg™iœiÐTÐTÐTr(   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   zanalyzevars.<locals>.<listcomp>°
  s    € ÐMÐMÐM q˜Ÿš™œÐMÐMÐMr(   z4analyzevars: could not parse dimension for variable r­  r   z@:@r5  Ú1)Úlanguagec                 ó   — | |z
  |z  S r,   r'   )rH  r.  rz  s      r)   Úsolve_vzanalyzevars.<locals>.solve_vÖ
  s   € Ø01°A±¸©{Ð(:r(   c              3   ó8   •K  — | ]}|j         ‰v ¯|j         V — Œd S r,   )r  )rv   rH  r3  s     €r)   rÏ  zanalyzevars.<locals>.<genexpr>ã
  s9   øè è € ð -7ð -7Ø/0Ø'(¤v° ~ ~ð %&¤FØ'5 ~ ~ ~ð-7ð -7r(   c                 ó”   •— ‰                      | d g g¦  «        d         D ]'}||vr!|                     |¦  «          ‰||¦  «         Œ(d S )Nr   )rƒ  Úadd)r	  r¿  Úv1Úcoeffs_and_depsÚcompute_depss      €€r)   r  z!analyzevars.<locals>.compute_deps  s`   ø€ Ø*9×*=Ò*=¸aÀ$ÈÀÑ*LÔ*LÈQÔ*Oð !?ð !? BØ')° ~ ~Ø(,¯ª°©¬¨Ø(4¨°R¸Ñ(>Ô(>Ð(>øð!?ð !?r(   rs  Fzshape(rÍ  r:  z) == TÚinr	  r
  r×  r)  r­   r¯  ÚpureÚ	recursiver;  r!  rt  z'analyzevars: prefix (%s) were not used
)r«  r¦  r¢  r¡  rœ  r  )r  rÿ   rh   )Dre  r®  rÜ  r"  rz  rƒ  r,  ÚKeyErrorrx  ry  rã  rp  rÄ   rÅ   r×   r‘  r  rÆ   r¥   r2   rÓ   r³   rç  rË   Úreverserª   r*  r+  rÕ   r{   Úparam_parserÛ   ró  rX   r×  r   ÚExprÚparseÚtostringÚLanguagerº   Ú	as_symbolr  Úlinear_solveÚsymbolsri  ÚRuntimeErrorÚl_orÚisintent_inÚisintent_inoutÚisintent_inplaceÚisarrayrï  rX  r�   rà   rõ  r¼  r  Úisscalarr  r�  rQ  rß  rØ   rì  Úisintent_callbackÚisintent_aux)Ar4  r¬  r­  Úgenr®   r€  Úsvarsr8  r.  rŠ  Údep_matchesÚ
name_matchr	  rø   Úln0rð   Údimension_exprsr   Údimr  rw  rv  ru  r¹   Útmpr&  Údim_charr  rN  Úd2ÚdsizeÚsolver_and_depsrH  rz  r  Úall_symbolsrñ   Úv_depsÚn_depsÚn_checksÚ
n_is_inputr  Úsolverr¿  Úall_depsÚis_requiredrA  Úv_attrÚaar  ÚprÚpr1ÚispureÚisrecr4   rÿ  r  r  r  rt  Ú
neededvarsrq   r  r  r3  sA                                                                 @@@r)   rˆ  rˆ  *
  sS  øøø€ õ �ÑÔÐÝ1°%Ñ8Ô8Ñ€M�9ÝŒ9�U˜6”]Ñ#Ô#€DØˆW„~˜Ò#Ð#¨¨f¬¸TÐ(AÐ(AØ ˆˆU�6Œ]ÑØ	ˆU�6Œ]ÐÐØ�ˆHØ˜˜vœ rÔ*Ð*Ð*Ø˜”- Ô# JÔ/ˆCÝ˜‘Y”Y¥Ð$FÐ$F¸¸f¼Ð$FÑ$FÔ$FÑ!FÔ!FÑFð Bð B�Ø.ð Bð B�AØ˜C�x�xÝ"-¨d¯hªh°q¸"©o¬o¸qÑ"AÔ"A˜˜Q™øðBð €EØ�Œ=€DØð ð ˆð	Ø�ŒGˆGØ�LŠL˜‰OŒOˆOˆOøÝð 	ð 	ð 	ØˆDð	øøøå�$—)’)‘+”+ÑÔð ð ˆØ�Dˆ=ˆ=Ø�LŠL˜‰OŒOˆOøå˜DÕ"3°EÑ":Ô":Ñ;Ô;€Fð €KÝ”Ð-Ñ.Ô.Ô4€JÝ�$—)’)‘+”+ÑÔð Kð KˆØˆJ�q‰MŒMˆØð 	KØ�!—'’'‘)”)˜AŸEšE™GœGÐ#Ô$ˆAðKØ˜A”��øÝð Kð Kð KÝ!#¤¨K¸1Ñ,=½r¼tÑ!DÔ!DÔ!J�˜A‘��ðKøøøð		Kð ð MBñ MBˆØˆQŒ4•4˜	ŸšÑ(Ô(Ñ)Ô)Ð)Ð)Ý! $ q¤'¨9°Q°q´T¬?Ñ;Ô;ˆD�‰GØ˜T !œWÐ$Ð$Ø  a¤Ð(Ð(¨Z¸4À¼7À:Ô;NÐ-NÐ-NØ ð 1Ø˜Aœ$Ÿ*š*™,œ,�CÝ! -°Ô"4×"9Ò"9Ñ";Ô";Ñ<Ô<ð Bð B˜Ø 
š?˜?¨}¸SÔ/AÀ!Ô/DÈÒ/SÐ/SØ$Ø D¨¤GÐ+Ð+Ø)6°sÔ);¸AÔ)>˜D œG A™J˜JØ *š_˜_Ø%2°3Ô%7¸Ô%:ð Bð B Ý*5°d¸1´g¸qÑ*AÔ*A  Q¡ øðBð ˜% œ-Ð'Ð'Ý�GÝ˜Q™œ˜˜  v¤  ð0ñ 1ô 1ð 1à˜T !œWÐ$Ð$Ø˜˜Qœ Ô/Ð/Ð/Ø˜”G˜NÔ+¨EÔ2�ðÝ�D  B¨Ñ/Ô/Ñ0Ô0�A�AøÝ ð ð ð Ø�Dðøøøà12��Q”˜Ô'¨Ñ.à˜T !œWÐ$Ð$Ø˜˜aœ Ô0Ð0Ð0Ø˜”G˜NÔ+¨FÔ3�ðÝ�D  B¨Ñ/Ô/Ñ0Ô0�A�AøÝ ð ð ð Ø�Dðøøøà23��Q”˜Ô'¨Ñ/àˆØ˜˜aœÐ Ñ Ø˜”7˜:Ô&ˆDØ�LŠL‰NŒNˆNØ"$ˆD�ŒG�JÑØ/KÑ,ˆC�˜ ¨Øð +!ñ +!�Ø�R�a�R”5˜KÒ'Ð'Ø˜Q˜R˜Rœ5Ÿ;š;™=œ=¨!¨B¨$Ô/�C�CØ�r˜�r”U˜hÒ&Ð&Ø   œeŸkšk™mœm¨Q¨r¨TÔ2�F�FØ�r˜�r”U˜hÒ&Ð&Ø   œeŸkšk™mœm¨Q¨r¨TÔ2�F�FØ�r˜�r”U˜gÒ%Ð%Ø˜q˜r˜rœUŸ[š[™]œ]¨A¨b¨DÔ1�E�EØ�r˜�r”U˜f’_�_Ø˜a˜b˜bœEŸKšK™MœM¨1¨R¨4Ô0�D�Då)¨$¨q¬'°1Ñ5Ô5�D˜‘GØð "Ø t¨A¤wÐ.Ð.Ø,.˜˜Qœ Ñ)ØUÐUµÀÑ1GÔ1G×1MÒ1MÈeÑ1TÔ1TÐUÑUÔUð :ð :˜àŸiši¨¨RÑ0Ô0˜Ø d¨1¤g¨hÔ&7Ð7Ð7Ø  œG HÔ-×4Ò4°SÑ9Ô9Ð9øØ!�FØð  ØŸ<š<¨°&Ñ9Ô9�DØŸ<š<¨°Ñ5Ô5�DØ T¨!¤WÐ,Ð,Ø+/¨&˜˜Qœ ™˜à˜Qœ œ×.Ò.¨tÑ4Ô4Ð4Ø�DØÐ%Ø t¨A¤wÐ.Ð.Ø,.˜˜Qœ Ñ)Ý&Ð'_Ð'_½>È&Ñ;QÔ;Q×;WÒ;WÐX]Ñ;^Ô;^Ð'_Ñ'_Ô'_Ñ`Ô`ð 8ð 8˜Ø D¨¤G¨HÔ$5Ð5Ð5Ø  œG HÔ-×4Ò4°QÑ7Ô7Ð7øØ!�FØÐ$Ø d¨1¤gÐ-Ð-Ø+-˜˜Qœ Ñ(ØTÐTµÀÑ1FÔ1F×1LÒ1LÈUÑ1SÔ1SÐTÑTÔTð 7ð 7˜Ø D¨¤G¨GÔ$4Ð4Ð4Ø  œG GÔ,×3Ò3°AÑ6Ô6Ð6øØ �EùØñ A3�{¨$¨q¬'Ð1Ñ1Ø')��Q”˜Ñ$Ý"ØMÐM­N¸3Ñ,?Ô,?×,EÒ,EÀeÑ,LÔ,LÐMÑMÔMñô ð ?3ñ ?3�Að
õ (¨¨6Ñ2Ô2˜˜øÝ&­
µHÐ=ð ð ð Ýð0Ø()ð0ð 0ð 0ñô ð ð ð ðøøøð '(¨3¢h h˜s˜s°C�HØ˜H’}�}Ø&˜Z˜˜å+¨A¨sÑ3Ô3×9Ò9¸%Ñ@Ô@˜Ý˜2‘w”w !’|�|¨¨r¨	¨	Ø!˜U˜Ø˜Ý˜2‘w”w !’|�|¨¨1¬°Ò(9Ð(9Ø! 2 a¤5˜\˜Ý˜2‘w”w !’|‘|Ý!$¥X¤]Ô%8¸"Ñ!=Ô!=™˜˜BØ " R¡¨!¡˜Ø!ŸNšNµHÔ4EÔ4G˜NÑHÔH˜ð +-˜Ø!& v¤ð Kð K˜AÝ (Ô 2°1Ñ 5Ô 5˜AØ$Ÿ~š~¨aÑ0Ô0ð Kð!GØ+0×+=Ò+=¸aÑ+@Ô+@¡D A qà56¸!ð %;ð %;ð %;ð %;õ 36°a·i²i±k´kÑ2BÔ2B KØ$/×$6Ò$6°q·y²y±{´{Ñ$CÔ$CÐ$CÐ$CøÝ'3ð !Gð !Gð !Gð /3 GÝ25°e·m²m±o´oÑ2FÔ2F K K K K K Køøøøð!Gøøøõ *-ð -7ð -7ð -7ð -7Ø4?ð-7ñ -7ô -7ñ *7ô *7 ð 6=½dÀ6¹l¼lÐ5J °Ñ 2øð .=˜¨Ñ*Ø˜”G˜KÔ(×/Ò/°Ñ2Ô2Ð2Ñ2à˜$˜qœ'Ð!Ñ! f° o¡o¸!¸uÀV¼}Ð:LÑ:Lð
 ˜!”W—[’[ ¨2Ñ.Ô.ˆFØˆHð0��k­>Ý.ñ0ô 0Ø04°Q´ñ9ô 9ˆJå�t˜A”wÑÔñ W>Ý% d¨1¤g¨kÔ&:Ñ;Ô;ð K1ñ K1‘D�A�qØ&5×&9Ò&9¸!Ñ&<Ô&<�OØ&Ð.áØ#ñ :=ð 2A×1FÒ1FÑ1HÔ1Hð 6=ñ 6=Ñ-˜A™~ ¨ð?ð ?ð ?ð ?ð ?ð ?õ
 (+¡u¤u˜HØ(˜L¨¨HÑ5Ô5Ð5Ø ! V  Ø$'¨4°¬7 N NØ$,°°Q´Ð$7Ð$7ð
 !)Ø%Ð1°a¸xÐ6GÐ6Gð /4 Ø'- v­hÔ.@Ø$6¨QÐ$6Ð$6°!Ð$6Ð$6Ð$6ñ/8ô /8ñ (9ô (9 à'+§}¢}Ý-5Ô->Ô-@ð (5ñ (Bô (B à/3  Q¤¨¡ð 67°C¸$±J  Q¤¨Ñ 1Ø#*°$°q´'Ð#9Ð#9ð )B°Ð(AÐ(A°aÐ(AÐ(A¸aÐ(AÐ(Að8C D¨¤G¨GÑ$4øð /3 Ø#+°4¸´7Ð#:Ð#:Ø8: D¨¤G¨HÑ$5Ø#'¨t°A¬w°xÔ/@Ð#@Ð#@Ø$(¨¤G¨HÔ$5×$<Ò$<¸TÑ$BÔ$BÐ$Bà &§¢¨aÑ 0Ô 0Ð 0Ø (§¢Ø$=¨QÐ$=Ð$=°!Ð$=Ð$=¸!Ð$=Ð$=ñ!?ô !?ð !?à%)¨!¤W§[¢[°¸RÑ%@Ô%@˜FØ$.°&Ð$8Ð$8Ø'1°VÐ';Ð';Ø &§¢Ø2=Ð$M J JÀ:ñ!Oô !Oð !Oà%ð =Ø6<  Q¤¨
Ñ 3ùØ&Ñ2à1@×1FÒ1FÑ1HÔ1Hð 	1ð 	1Ñ-˜A™~ ¨Ø%)¨!¤W§[¢[°¸2Ñ%>Ô%>˜FØ&*¨1¤g§k¢k°*¸bÑ&AÔ&Að Gð G Ø#%§=¢=°Ñ#:Ô#:ð !GØ)+¯ª°·²±´Ñ)<Ô)< BØ$*§M¢M°"°Q°r°T´(·.².ÀÑ2EÔ2EÑ$FÔ$FÐ$FøØ%ð FÝ48½¸V¹¼Ñ4EÔ4E  Q¤¨Ñ 1Ø ¨˜˜Ø &§¢¨aÑ 0Ô 0Ð 0øùðWK1õX ˜$˜qœ'Ñ"Ô"ð 
>Ø! T¨!¤WÐ,Ð,Ø˜d 1œg nÔ5Ð5Ð5Ý!-¨d°1¬g°nÔ.EÀcÔ.JØ.4ñ"6ô "6˜à7=˜˜Qœ Ô/°Ñ4Ð4Ø $ q¤'¨.Ô"9Ð9Ð9Ý!-¨d°1¬g°nÔ.EÀeÔ.LØ.4ñ"6ô "6˜à  œG NÔ3°EÐ:Ø7=˜˜Qœ Ô/°Ñ4Øð ,Ø#+��Q”˜Ñ Øð 6Ý$(­¨V©¬Ñ$5Ô$5��Q”˜Ñ!à�$�q”'ˆ>‰>Ø  a¤Ð(Ð(Ø&(��Q”˜
Ñ#Ø $ q¤'¨*Ô"5Ð5Ð5Ø $ q¤'¨*Ô"5Ð5Ð5Ø�Q”˜
Ô#×*Ò*¨:Ñ6Ô6Ð6Ø˜t AœwÐ&Ð&Ø$&��Q”˜Ñ!Ý  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5ð 4ð 4‘D�A�qØ�q˜˜aœ œ‘”ð 4Ø˜Qœ Ô)×0Ò0°Ñ3Ô3Ð3øØ˜A”w˜xÔ(ð *Ø˜Qœ Ð)Ý˜˜QœÑ Ô ð BÝ+¨D°¬G°C¬L¸&ÑAÔA��Q”˜‘ùå�$—)’)‘+”+ÑÔð +`ñ +`ˆØ��f”ÒÑØ˜˜aœÐ Ð Ø $ Q¤¨¤��f‘Ø�WŒ~ Ò+Ñ+Ø˜uÐ$Ð$¨¨x¬¸DÐ)@Ð)@Ý(¨¨a¬°$°u¸X´Ô2GÑHÔH�D˜‘GØ˜uÐ$Ñ$Ø˜xœ�BØŸ*š* V¨RÑ0Ô0�CØ"$¨¢)˜m�FØŸš [°"Ñ5Ô5�BØ!# s¢˜]�EÝ$ Qœ×-Ò-¨bÑ1Ô1�AØñ `Ý:HØŸGšG F™OœO¨Q¯WªW°WÑ-=Ô-=ñ;?ô ;?Ñ7˜ (¨D°%å;HØ$ hñ<0ô <0Ñ8˜
 J°à.6˜˜Qœ 
Ñ+ð!Ø$ Xœð MØDL  U¨8¤_Ô 5°jÑ AøøÝ(ð !ð !ð !Ø ˜Dð!øøøà%ð AØ%¨Ð3Ð3ð!)Ý9=Ø(2°6Ô(:¸BÀñ:Hô :H J¨vÑ$6Ð$6øå'0ð !)ð !)ð !)Ø$( Dð!)øøøà6@˜D œG NÑ3Ø%ð AØ6@˜D œG NÑ3Ø#ð ;Ø2:˜D œG JÑ/Ø!ð CÝ&1°$°q´'¸6Ñ&BÔ&B˜D ™GØ ð HÝ&1°$°q´'¸;Ñ&GÔ&G˜D ™GùåØFÍÈeÐT\ÌoÑI^ÔI^Ñ^ñ`ô `ð `ùàˆW„~ÐVÐVÑVØ˜5Ð Ð Ýœ 5¨¤=°5¸Ô3FÑ#FÑGÔGˆJˆJåœ 5¨¤=Ñ1Ô1ˆJÝ�d—i’i‘k”kÑ"Ô"ð 	%ð 	%ˆAØ4�tÕ%¥|Ñ4Ô4°T¸!´WÑ=Ô=ð %Ø×!Ò! !Ñ$Ô$Ð$øØ�eÐÐØ×Ò�d 5¨¤>×#6Ò#6Ñ#8Ô#8Ñ9Ô9Ñ:Ô:Ð:Ý˜% œ.×-Ò-Ñ/Ô/Ñ0Ô0ð -ð -�Ø˜wœ¨Ô*ð -ð -�AØ 
Ð*Ð*Ø"×)Ò)¨!Ñ,Ô,Ð,øð-ð �Œ>˜ZÒ'Ð'Ø˜5Ð Ð Ø×!Ò! %¨¤/Ñ2Ô2Ð2Ð2à×!Ò! %¨¤-Ñ0Ô0Ð0Ø�Œ>Ð7Ð7Ð7Ø˜”=ˆDØ�tˆ|ˆ| ¨D°¬JÐ 6Ð 6Ø"& t¤*¨XÔ"6��h‘Ø�Œ>˜VÒ#Ð#Ø×Ò�d 4§9¢9¡;¤;Ñ/Ô/Ñ0Ô0Ð0Ý�d—i’i‘k”kÑ"Ô"ð 	ð 	ˆAØ˜
Ð"Ð"Ø˜�GøØ€Ks£   ÄD Ä 
D-Ä,D-ÈHÈ4IÉIÏO2Ï2
O?Ï>O?ÑQ!Ñ!
Q.Ñ-Q.à/a á *a-á,a-æA&g,ç,
h#	ç6#h	èh#	ÁEAE'ÁE'
AE4ÁE3AE4ÁE>AFÁF
AF&ÁF%AF&z\A[a-z]+[\w$]*\Zc           	      óz  — |€D	 t          | ||¦  «        }n/# t          $ r"}| }t          d|› d| ›d�¦  «         Y d}~nd}~ww xY w|S t          |¦  «        dk     s|ddt          |¦  «        dz
  …         dk    rt	          d|› d	�¦  «        ‚|dd
…                              d¦  «        }t          |¦  «        dk    r¿|d                              d¦  «        }t          |¦  «        dk    r7t          |d         |¦  «        }t          dt          |¦  «        dz   ¦  «        }nmt          |d         |¦  «        }t          |d         |¦  «        }	t          t          |¦  «        t          |	¦  «        dz   ¦  «        }nt	          d|› d�¦  «        ‚|  	                    d¦  «        r
| dd…         n|                      d¦  «        } g }
| D ]W}	 t          |||¦  «        }n-# t          $ r }t          d|› d|›d�¦  «         Y d}~nd}~ww xY w|
 
                    |¦  «         ŒXt          t          ||
¦  «        ¦  «        }|S )aÇ  
    Creates a dictionary of indices and values for each parameter in a
    parameter array to be evaluated later.

    WARNING: It is not possible to initialize multidimensional array
    parameters e.g. dimension(-3:1, 4, 3:5) at this point. This is because in
    Fortran initialization through array constructor requires the RESHAPE
    intrinsic function. Since the right-hand side of the parameter declaration
    is not executed in f2py, but rather at the compiled c/fortran extension,
    later, it is not possible to execute a reshape of a parameter array.
    One issue remains: if the user wants to access the array parameter from
    python, we should either
    1) allow them to access the parameter array using python standard indexing
       (which is often incompatible with the original fortran indexing)
    2) allow the parameter array to be accessed in python as a dictionary with
       fortran indices as keys
    We are choosing 2 for now.
    Nzparam_eval: got "rñ  r¿   r5  r   rj  zparam_eval: dimension z can't be parsedr   r)  r   r­  z.param_eval: multidimensional array parameters z not supportedz(/r¢   )rç  rË   r2   rX   rÛ   r+  r   rÇ   r8   r�   r,  rÚ  Úzip)r	  rø  rŠ  rð  ræ  rñ   ÚdimrangeÚboundÚlboundÚuboundÚv_evalÚitems               r)   rö  rö  ´  s�  € ð& €ð	;Ý�Q˜ &Ñ)Ô)ˆAˆAøÝð 	;ð 	;ð 	;ØˆAÝÐ9¨Ð9Ð9°!Ð9Ð9Ð9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:øøøøð	;øøøð ˆõ ˆ7�|„|�aÒÐ˜7Ð#3Ð#3¥S¨¡\¤\°!¡^Ð#3Ô4¸Ò<Ð<ÝÐL°'ÐLÐLÐLÑMÔMÐMØ�q˜�tŒ}×"Ò" 3Ñ'Ô'€HÝ
ˆ8�}„}˜ÒÐà˜A”;×$Ò$ SÑ)Ô)ˆåˆx‰=Œ=˜AÒÐÝ ¨¤¨VÑ4Ô4ˆEÝ˜Q¥ E¡
¤
¨1¡Ñ-Ô-ˆHˆHå  ¨!¤¨fÑ5Ô5ˆFÝ  ¨!¤¨fÑ5Ô5ˆFÝ�S ™[œ[­#¨f©+¬+°a©-Ñ8Ô8ˆHˆHåð 4Ø#ð4ð 4ð 4ñ 5ô 5ð 	5ð —L’L Ñ&Ô&Ð	-ˆˆ1ˆRˆ4Œˆ¨A×4Ò4°SÑ9Ô9€AØ€FØð ð ˆð	>Ý˜˜h¨Ñ/Ô/ˆDˆDøÝð 	>ð 	>ð 	>ÝÐ<¨Ð<Ð<°$Ð<Ð<Ð<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð	>øøøà�Š�dÑÔÐÐå�S�˜6Ñ"Ô"Ñ#Ô#€Aà€Hs*   „ –
A =½AÇ	GÇ
HÇ%H È Hc                 ó‚  — d| v rˆ| d|                       d¦  «        …         }| |                       d¦  «        dz   |                      d¦  «        …         }t          t          ||¦  «        ¦  «        }t	          ||         |         ¦  «        S | |v rt	          ||          ¦  «        S |D ]–}t          j        d|z   dz   t
          j        ¦  «        }|                     | ¦  «        }|rX| 	                    d¦  «        t	          ||         ¦  «        z   | 	                    d¦  «        z   } |                     | ¦  «        }|°XŒ—| S )	aƒ  Recursively parse array dimensions.

    Parses the declaration of an array variable or parameter
    `dimension` keyword, and is called recursively if the
    dimension for this array is a previously defined parameter
    (found in `params`).

    Parameters
    ----------
    d : str
        Fortran expression describing the dimension of an array.
    params : dict
        Previously parsed parameters declared in the Fortran source file.

    Returns
    -------
    out : str
        Parsed dimension expression.

    Examples
    --------

    * If the line being analyzed is

      `integer, parameter, dimension(2) :: pa = (/ 3, 5 /)`

      then `d = 2` and we return immediately, with

    >>> d = '2'
    >>> param_parse(d, params)
    2

    * If the line being analyzed is

      `integer, parameter, dimension(pa) :: pb = (/1, 2, 3/)`

      then `d = 'pa'`; since `pa` is a previously parsed parameter,
      and `pa = 3`, we call `param_parse` recursively, to obtain

    >>> d = 'pa'
    >>> params = {'pa': 3}
    >>> param_parse(d, params)
    3

    * If the line being analyzed is

      `integer, parameter, dimension(pa(1)) :: pb = (/1, 2, 3/)`

      then `d = 'pa(1)'`; since `pa` is a previously parsed parameter,
      and `pa(1) = 3`, we call `param_parse` recursively, to obtain

    >>> d = 'pa(1)'
    >>> params = dict(pa={1: 3, 2: 5})
    >>> param_parse(d, params)
    3
    r9  Nr   r:  r³  r´  r   r!  )
rá  Úrfindr8   r   r³   rÄ   rÅ   rÆ   r×   rØ   )r&  rŠ  ÚdnameÚddimsr[   ræ  rb  rø   s           r)   r   r   ò  s8  € ðr ˆa€x€xà�,�1—6’6˜#‘;”;�,”ˆØ�!—&’&˜‘+”+˜a‘- §¢¨¡¤Ð,Ô-ˆõ •K  vÑ.Ô.Ñ/Ô/ˆÝ�6˜%”= Ô'Ñ(Ô(Ð(Ø	
ˆfˆˆÝ�6˜!”9‰~Œ~Ðàð 	"ð 	"ˆAÝ”:Ø$ qÑ(Ð+=Ñ=½r¼tñô ˆDð —
’
˜1‘”ˆAØð "Ø—G’G˜HÑ%Ô%Ý˜˜qœ	‘N”Nñ#Ø%&§W¢W¨WÑ%5Ô%5ñ6�à—J’J˜q‘M”M�ð ð "øð ˆr(   c                 ó(  — | }t                                | ¦  «         }|r¬t          |¦  «        \  }}t          | |d         |¦  «        }d}| D ]8}	|	                     ¦   «         }	|	t
          j        t
          j        z   vrd}	||	z   }Œ9|d         dk    r|dz   }n|dz   }|} | |d         v s
| |d         v r| dz   } | |d         v °| |d         v °| |v rAd	}
| t          |
¦  «        z   |v r|
d	z   }
| t          |
¦  «        z   |v °| t          |
¦  «        z   } |r||d         | <   ns| |d         vr-||d         v r|d         |         |d         | <   ni |d         | <   d
|v r8||d
         |d         z   v r%t          |d         |          d¦  «        |d         | <   | S )Nr3  Úe_rõ   r   rÅ  Ú_er8  r�   r   r6  r7  r  )
Úanalyzeargs_re_1r×   r®  rä  r¥   rc   Úascii_lowercaseÚdigitsr³   rz  )r.  r4  r8  Úorig_aÚ	a_is_exprr¬  r­  ÚatÚnar¹   r€  s              r)   Ú	expr2namerb  B  sù  € Ø€FÝ$×*Ò*¨1Ñ-Ô-Ð-€IØð Ý#5°eÑ#<Ô#<Ñ ˆ�yÝ˜q %¨¤-°Ñ?Ô?ˆØˆØð 	ð 	ˆAØ—’‘	”	ˆAØ�Ô.µ´Ñ>Ð>Ð>Ø�Ø�a‘ˆBˆBØˆbŒ6�SŠ=ˆ=Ø�c‘ˆBˆBà�d‘ˆBØˆØ�5˜”=Ð Ð  A¨¨v¬Ð$6Ð$6Ø�C‘ˆAð �5˜”=Ð Ð  A¨¨v¬Ð$6Ð$6àˆD€y€yØˆØ•#�a‘&”&‰j˜DÐ Ð Ø�A‘ˆAð •#�a‘&”&‰j˜DÐ Ð à•�A‘”‰JˆØð 	IØˆˆfŒ�aÑÐà�E˜&”MÐ!Ð!Ø˜˜vœÐ&Ð&Ø#(¨¤=°Ô#8��f”˜aÑ Ð à#%��f”˜aÑ Ø˜%ÐÐ F¨e°KÔ.@À5ÈÔCVÑ.VÐ$VÐ$VÝ*¨5°¬=¸Ô+;¸ZÑHÔHˆE�&ŒM˜!ÑØ€Hr(   c                 óH  — t          | ¦  «         t          | ¦  «        \  }}d| vrg | d<   g }| d         D ](}t          || |¦  «        }|                     |¦  «         Œ)|| d<   d| v rGt	          | d                              ¦   «         ¦  «        D ]\  }}|D ]}|| d         vri | d         |<   ŒŒ | d         D ]F}|d         |v r:d| vrg | d<   |d         | d         vr!| d                              |d         ¦  «         ŒGd| v r!| d         | d         vri | d         | d         <   | S )Nr8  r  r3  r2  rq   r6  r­   )re  r®  rb  r,  rx  rX  )r4  r¬  rõ   r8  r.  r€  Úargs1rz  s           r)   r†  r†  g  s€  € Ý�ÑÔÐÝ)¨%Ñ0Ô0Ñ€M�1Ø�UÐÐØˆˆf‰Ø€DØ�6Œ]ð ð ˆÝ�a˜ Ñ%Ô%ˆØ�Š�A‰ŒˆˆØ€Eˆ&�MØ�%ÐÐÝ˜U 7œ^×1Ò1Ñ3Ô3Ñ4Ô4ð 	*ð 	*‰HˆAˆuØð *ð *�Ø˜E &œMÐ)Ð)Ø')�E˜&”M !Ñ$øð*ð �6Œ]ð 5ð 5ˆØˆVŒ9˜ÐÐØ %Ð'Ð'Ø%'��kÑ"Ø�Œy  kÔ 2Ð2Ð2Ø�kÔ"×)Ò)¨!¨F¬)Ñ4Ô4Ð4øØ�5ÐÐ˜U 8œ_°E¸&´MÐAÐAØ)+ˆˆfŒ�e˜H”oÑ&Ø€Lr(   z\A\(.+?,.+?\)\Zz\A[+-]?\d+(_(?P<name>\w+)|)\Zz*\A[+-]?[\d.]+[-\d+de.]*(_(?P<name>\w+)|)\Zz
\A\(.*\)\Zz\A(?P<name>\w+)\s*\(.*?\)\s*\Zc                 óþ   — t          | t          ¦  «        rddiS t          | t          ¦  «        rddiS t          | t          ¦  «        rddiS t          | t          ¦  «        r| S t          t          | ¦  «        ¦  «        ‚)Nr4   r7   r5   rÆ  )rö  r8   r:   rÆ  rÚ  ÚAssertionErrorrÓ   )r�   s    r)   Ú_ensure_exprdictrg  ‰  s„   € Ý�!•SÑÔð 'Ø˜IÐ&Ð&Ý�!•UÑÔð $Ø˜FÐ#Ð#Ý�!•WÑÔð 'Ø˜IÐ&Ð&Ý�!•TÑÔð ØˆÝ
�˜a™œÑ
!Ô
!Ð!r(   c                 óÐ  — | |v rt          ||          ¦  «        S |                      ¦   «         } t                               | ¦  «        rddiS t                               | ¦  «        }|rNd|                     ¦   «         v r4|                     d¦  «        rt          dt          | ¦  «        z  ¦  «         ddiS t                               | ¦  «        }|rNd|                     ¦   «         v r4|                     d¦  «        rt          dt          | ¦  «        z  ¦  «         ddiS dD ]V}d„ t          | |¬	¦  «                             d
|z   d
z   ¦  «        D ¦   «         D ]}||v rt          ||         ¦  «        c c S Œ ŒWi }t                               | ¦  «        rt          | dd…         ||¦  «        }n…t                               | ¦  «        }|ri|                     d¦  «        }t          |                     d¦  «        ||¦  «        }|rd|v r|d= |s%|d         |v rt          ||d                  ¦  «        S | d         dv rdddidœS |st          dt          | ¦  «        z  ¦  «         |S )Nr4   rÆ  rq   z:determineexprtype: selected kind types not supported (%s)
r7   r5   )ú+rÈ  r   rË  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r§  r¨  s     r)   rx   z%determineexprtype.<locals>.<listcomp>¨  s    € ÐZÐZÐZ �!—'’'‘)”)ÐZÐZÐZr(   r?  rk  r   r   rp  r   rÌ  r,  r   )r4   rr  z>determineexprtype: could not determine expressions (%s) type.
)rg  rª   Údetermineexprtype_re_1r×   Údetermineexprtype_re_2r$  rØ   r2   rÓ   Údetermineexprtype_re_3r*  r+  Údetermineexprtype_re_4rä  Údetermineexprtype_re_5)r/  r3  Úrulesrø   ÚoprÅ  rþ  Úrns           r)   rä  rä  •  sÀ  € Øˆt€|€|Ý  T¤
Ñ+Ô+Ð+Ø�:Š:‰<Œ<€DÝ×#Ò# DÑ)Ô)ð 'Ø˜IÐ&Ð&Ý×$Ò$ TÑ*Ô*€AØð 'Ø�Q—[’[‘]”]Ð"Ð" q§w¢w¨v¡¤Ð"ÝØMÕPTÐUYÑPZÔPZÑZñ\ô \ð \à˜IÐ&Ð&Ý×$Ò$ TÑ*Ô*€AØð $Ø�Q—[’[‘]”]Ð"Ð" q§w¢w¨v¡¤Ð"ÝØMÕPTÐUYÑPZÔPZÑZñ\ô \ð \à˜FÐ#Ð#Ø"ð 1ð 1ˆØZÐZ¥^°DÀÐ%CÑ%CÔ%C×%IÒ%IÈ#ÐPRÉ(ÐUXÉ.Ñ%YÔ%YÐZÑZÔZð 	1ð 	1ˆAØ�DˆyˆyÝ'¨¨Q¬Ñ0Ô0Ð0Ð0Ð0Ð0Ð0ð ð	1ð 	€AÝ×#Ò# DÑ)Ô)ð :Ý˜d 1 R 4œj¨$°Ñ6Ô6ˆˆå"×(Ò(¨Ñ.Ô.ˆØð 	:Ø—’˜‘”ˆBÝ! !§'¢'¨&¡/¤/°4¸Ñ?Ô?ˆAØð "�Z 1�_�_Ø�j�MØð :Ø�a”5˜E�>�>Ý+¨E°"°Q´%¬LÑ9Ô9Ð9ØˆA„w�%ÐÐØ'¸#¸s¸ÐDÐDÐDØð ^ÝØMÕQUÐVZÑQ[ÔQ[Ñ\ñ	^ô 	^ð 	^à€Hr(   r¿   Fc                 ól  — t          | ¦  «         d}t          | t          ¦  «        rO| D ]J}|r1|d         dv r'|d         t          v rŒt          r|d         t          vrŒ5|t          |||¬¦  «        z   }ŒK|S d}d}d}| d         }|dk    rdS g }	d| v r| d         }d| v rt| d         }
| d         D ]=}t          || |	¦  «        }t          |
|         ¦  «        s|	                     |¦  «         Œ>| d         d	k    s|	rd
d 	                    |	¦  «        z  }d}d| v rIt          | d          
                    ¦   «         ¦  «        D ]!}|›|t          z   ›|›d| d         |         ›�}Œ"|                      dg ¦  «        d d …         }|d	k    rd|v r|                     d¦  «         |r'|›|t          z   ›dd 	                    |¦  «        ›d|›�}d}d| v rt          | d         |t          z   ¦  «        }d}d| v rt          | d         |t          z   ¦  «        }|dk    rd}d}d| v r0d| d         z  }| d         |	vr|	                     | d         ¦  «         t          | d         |t          z   |¬¦  «        }t!          | | d         |	|t          z   |¬¦  «        }
d}d| v r|sd| d         z  }d| v r\d}t          | d                              ¦   «         ¦  «        D ]-\  }}|›|t          z   ›d|›dd 	                    |¦  «        ›d�}Œ.||z   }|dk    r|dk    rd}|›|›|›d|›|›|›d|›|›|›|
›|›|›|›d |›d|›�}|S )!Nr
   r4  r²  rq   r£  rž  r8  r3  rÿ   z(%s)r)  r  r±   r  Úcallbackúintent(z) r  r  r¬  r­   z result (%s)r2  r   z! in %sr  zentry r9  r:  r¡  r¤  zend )re  rö  rx  r#   r$   r§  rb  r/  r,  rà   ry  r   rƒ  rÛ  Úuse2fortranÚcommon2fortranÚvars2fortranrX  )r4  rt  r¤  r{  rw  r¯  rq   r8  Ú	blocktypeÚargslr3  r.  r  r€  Ú
intent_lstr  r  r­   r2  ÚmessÚentry_stmtsr  s                         r)   r§  r§  Â  sB  € õ �ÑÔÐØ
€CÝ�%�ÑÔð Øð 	Lð 	LˆAØð �Q�w”ZÐ#=Ð=Ð=Ø�V”9¥	Ð)Ð)ØÝð   6¤µ)Ð!;Ð!;ØØÕ(¨¨C¸lÐKÑKÔKÑKˆCˆCØˆ
Ø€FØ€DØ€DØ�g”€IØ�IÒÐØˆrØ€EØ�€€Ø�VŒ}ˆØ�€€Ø�VŒ}ˆØ�v”ð 	 ð 	 ˆAÝ˜!˜U EÑ*Ô*ˆAÝ$ T¨!¤WÑ-Ô-ð  Ø—’˜Q‘”�øØ�Œ>˜ZÒ'Ð'¨5Ð'Ø˜CŸHšH U™OœOÑ+ˆDØÐØ˜UÐ"Ð"Ý�eÐ.Ô/×4Ò4Ñ6Ô6Ñ7Ô7ð 	Rð 	RˆAà Ð  #­¡- -°°°°EÐ:LÔ4MÈaÔ4PÐ4Pð RÐÐà—’˜8 RÑ(Ô(¨¨¨Ô+€JØ�JÒÐ :°Ð#;Ð#;Ø×Ò˜*Ñ%Ô%Ð%Øð 8à,Ð,¨cµG©m¨m¨mØŸHšH ZÑ0Ô0Ð0Ð0°$°$ð8Ðð €CØ�€~€~Ý˜% œ,¨­g©Ñ6Ô6ˆØ€FØ�5ÐÐÝ  h¤°µw±Ñ?Ô?ˆØÐ"Ò"Ð"ØˆØ€FØ�5ÐÐØ %¨¤/Ñ1ˆØ�Œ? %Ð'Ð'Ø�LŠL˜˜xœÑ)Ô)Ð)Ý˜E &œM¨3µ©=À|ÐTÑTÔT€DÝØˆu�VŒ}˜e S­7¡]ÀðOñ Oô O€Dà€DØ�€€˜|€Ø˜5 œ=Ñ(ˆØ�%ÐÐØˆÝ˜˜wœ×-Ò-Ñ/Ô/Ñ0Ô0ð 	Ið 	I‰DˆAˆqà(˜[¨#µ©-¨-¨-¸¸¸¸C¿HºHÀQ¹K¼K¸K¸KðIˆKˆKà�kÑ!ˆØ�LÒ Ð  T¨^Ò%;Ð%;ØˆàˆˆVˆV�Y�Y�Y   d d¨F¨F¨F°D°DÐ:JÐ:JÈCÈCÐQUÐQUÐW]ÐW]Ð_cÐ_cÐehÐehÐehÐjsÐjsÐjsÐuyÐuyð{€Cà€Jr(   c           
      óî   — d}t          |                      ¦   «         ¦  «        D ]P}|dk    r#|›|›dd                     | |         ¦  «        ›�}Œ+|›|›d|›dd                     | |         ¦  «        ›�}ŒQ|S )Nr
   rÑ  zcommon r)  zcommon /z/ )rx  ry  rà   )r  rt  r{  r€  s       r)   rw  rw    sŠ   € Ø
€CÝ�&—+’+‘-”-Ñ Ô ð Lð LˆØ�Š=ˆ=Ø%( S¨#¨#¨#¨s¯xªx¸¸q¼	Ñ/BÔ/BÐ/BÐCˆCˆCà*-¨#¨s¨s¨s°A°A°A°s·x²xÀÀqÄ	Ñ7JÔ7JÐ7JÐKˆCˆCØ€Jr(   c                 ó2  — d}t          |                      ¦   «         ¦  «        D ]ò}|›|›d|›d�}| |         i k    r|r|d         dk    r
|d d…         }Œ1d| |         v r| |         d         rd|z  }d| |         v r‚| |         d         rtd}t          | |         d                              ¦   «         ¦  «        D ]D}|| |         d         |         k    r|›|›|›�}d}Œ%|›|›|›d	| |         d         |         ›�}d}ŒE|r|d         dk    r
|d d…         }Œó|S )
Nr
   zuse r)  r   rÔ  z%s only:r×  r±   z=>r]  )r  rt  r{  rø   r¹   r€  s         r)   rv  rv    sa  € Ø
€CÝ�#—(’(‘*”*ÑÔð ð ˆØ"˜s C C C¨¨¨Ð+ˆØˆqŒ6�RŠ<ˆ<Øð �s˜2”w #’~�~Ø˜#˜2˜#”h�ØØ�S˜”VÐÐ  A¤ v¤ÐØ Ñ$ˆCØ�C˜”Fˆ?ˆ?˜s 1œv eœ}ˆ?ØˆAÝ˜#˜aœ& œ-×,Ò,Ñ.Ô.Ñ/Ô/ð ð �Ø˜˜Aœ˜uœ aÔ(Ò(Ð(Ø&) c¨1¨1¨a¨aÐ0�CØ�A�Aà*-¨#¨q¨q°!°!°!°S¸´V¸E´]À1Ô5EÐ5EÐF�CØ�A�AØð 	�3�r”7˜c’>�>Ø�c�r�c”(ˆCøØ€Jr(   c                 ó´   — | d         }g }|D ]J}	 t          ¦   «         d|z           } || ¦  «        r|                     |¦  «         Œ;# t          $ r Y ŒGw xY w|S )Nr  zisintent_%s)Úglobalsr,  r  )r|  rÈ  r{  r  rh  s        r)   Útrue_intent_listr‚  /  s…   € Ø
ˆhŒ-€CØ
€CØð #ð #ˆð	#Ý‘	”	˜-¨&Ñ0Ô1ˆAð ˆq�‰vŒvð #Ø—
’
˜6Ñ"Ô"Ð"øøõ	 ð 	ð 	ð 	ØˆDð	øøøð
 €Js   �AÁ
AÁAc           	      óÞ	  — t          | ¦  «         d}g }|D ]!}|| d         v r|                     |¦  «         Œ"d| v r;| d         D ]2}||v r||vr|                     |¦  «         Œ t          d|z  ¦  «         Œ3d| v r|                     | d         ¦  «         |s=t	          |                     ¦   «         ¦  «        D ]}||vr|                     |¦  «         Œ|D �]}d||         v rE||         d         D ]6}||v r0d||         v r&|||         d         v rt          d|›d|›d	�¦  «         Œ7d
| v rŠ|| d
         v r€t          ||         ¦  «        r	|›|›d|›�}|›|›d|›�}t          ||         ¦  «        r	|›|›d|›�}||v rd||         vrŒ´d}	| d         D ]}
||
d         k    r|
d         dk    rd}	 nŒ|	rŒà||vr#t          |¦  «         t          d|z  ¦  «         �Œ|| d         k    r#| d         dk    s|  
                    d¦  «        r�Œ6d||         vrRd||         v rd||         d         v r||v r	|›|›d|›�}�Œit          ||         ¦  «         t          d|z  ¦  «         �Œ’||         d         }|dk    rd||         v r|›d||         d         ›d�}i }d||         v r||         d         }nd||         v r||         d         }d |v r'|d          d!v r|›d"|d          ›d�}nJ|›d |d          ›�}n<d#|v r&|›d$|d#         ›�}d%|v r|›d&|d%         ›d�}nd'|z  }nd%|v r|›d(|d%         ›d�}d)}d||         v rUd*„ ||         d         D ¦   «         }|rd+|v rd,|v r|                     d,¦  «         |r|›d-d.                     |¦  «        ›�}d.}d/||         v r+|›|›d0d.                     ||         d/         ¦  «        ›d�}d.}d1||         v r6t          ||         ¦  «        }|r|›|›d2d.                     |¦  «        ›d�}d.}d3||         v r+|›|›d4d.                     ||         d3         ¦  «        ›d�}d.}d||         v r+|›|›d5d.                     ||         d         ¦  «        ›d�}d.}d6||         v r]||         d6         }||         d         d7v r4	 t          |¦  «        }d|j        ›d.|j        ›d�}n# t"          $ r Y nw xY w|›d8|›d6|›�}n|›d8|›�}|›|›|›�}�Œ|S )9Nr
   r3  rœ  z7vars2fortran: Confused?!: "%s" is not defined in vars.
r±  rw  z;vars2fortran: Warning: cross-dependence between variables "z" and "rÃ  r6  zintent(callback) z	external z	optional r4   r   r2  rq   r4  rÿ   r   z/vars2fortran: No definition for argument "%s".
r­   rp  r  z-vars2fortran: No typespec for argument "%s".
rh   rt  r9  r:  rq  rr  r   )r   r­  z*(rX   z(len=rV  z,kind=z%s)z(kind=r±   c                 ó   — g | ]}|d v¯|‘Œ	S ))r  r'   )rv   rð   s     r)   rx   z vars2fortran.<locals>.<listcomp>’  s,   € ð .ð .ð .˜!Ø Ð,Ð,ð Ø,Ð,Ð,r(   z
intent(in)zintent(out)rÍ  r)  r  z
dimension(r  ru  rv  zcheck(zdepend(rs  )rÆ  r*  z :: )re  r,  ro   rõ  rx  ry  r/  Ú
isoptionalÚshowr2   rƒ  rÛ  rà   r‚  rç  r5   ÚimagrË   )r4  r3  r8  rt  r¤  r{  Únoutr.  r&  ræ   rz  Úvardefrÿ  r¹   r   rÈ  r	  s                    r)   rx  rx  =  sú  € Ý�ÑÔÐØ
€CØ€DØð ð ˆØ��f”ÐÐØ�KŠK˜‰NŒNˆNøØ�uÐÐØ�|Ô$ð 	Tð 	TˆAØ�DˆyˆyØ˜D�=�=Ø—K’K ‘N”N�NøåØNÐQRÑRñTô Tð Tð Tà�UÐÐØ�Š�E˜*Ô%Ñ&Ô&Ð&Øð Ý�d—i’i‘k”kÑ"Ô"ð 	ð 	ˆAØ˜ˆ}ˆ}Ø—’˜A‘”�øØð g,ñ g,ˆØ�t˜A”wÐÐØ˜!”W˜XÔ&ð nð n�Ø˜�9�9 ¨T°!¬WÐ!4Ð!4¸¸dÀ1¼gÀhÔ>OÐ9OÐ9OÝ�GØghÐghÐghÐjkÐjkÐjkÐlñnô nð nøà˜%ÐÐ A¨¨{Ô);Ð$;Ð$;Ý   a¤Ñ)Ô)ð @Ø36°3¸¸¸¸Q¸QÐ?�Ø'* s¨C¨C¨C°°Ð3ˆCÝ˜$˜qœ'Ñ"Ô"ð 8Ø+.¨3°°°°Q°QÐ7�Ø�Dˆyˆy˜Z¨t°A¬wÐ6Ð6ØØˆDØ˜6”]ð ð �Ø˜˜&œ	’>�> a¨¤j°JÒ&>Ð&>Ø�DØ�EøØð ØØ�Dˆ=ˆ=Ý�‰JŒJˆJÝÐFÈÑJÑKÔKÐKÙØ��f”ÒÐØ�WŒ~ Ò+Ð+¨u¯yªy¸Ñ/BÔ/BÐ+ñ
 Ø˜T !œWÐ$Ð$Ø˜T !œWÐ$Ð$¨°t¸A´w¸zÔ7JÐ)JÐ)JØ˜�9�9Ø/2¨s°C°C°C¸¸Ð;�CÙÝ��a”‰MŒMˆMÝÐDÀqÑHÑIÔIÐIÙØ�a”˜Ô$ˆØ�VÒÐ 
¨d°1¬gÐ 5Ð 5Ø!'  ¨¨a¬°Ô)<Ð)<Ð)<Ð=ˆFØˆØ˜T !œWÐ$Ð$Ø˜A”w˜~Ô.ˆHˆHØ˜t AœwÐ&Ð&Ø˜A”w˜~Ô.ˆHØ�(ˆ?ˆ?Ø˜Œ} 
Ð*Ð*Ø&, f f¨h°s¬m¨m¨mÐ<��à$* F F¨H°S¬M¨MÐ:��à˜Ð Ð Ø(.¨¨°¸´°Ð@�Ø˜XÐ%Ð%Ø.4¨f¨f°h¸vÔ6FÐ6FÐ6FÐG�F�Fà" fÑ-�F�FØ˜8Ð#Ð#Ø*0¨&¨&°(¸6Ô2BÐ2BÐ2BÐC�ØˆØ˜˜aœÐ Ð ð.ð .˜t Aœw zÔ2ð .ñ .ô .ˆDàð + °Ð 4Ð 4¸È$Ð9NÐ9Nð —’˜MÑ*Ô*Ð*Øð Ø%+ V V¨S¯XªX°d©^¬^¨^Ð<�Ø�Ø˜$˜qœ'Ð!Ð!à�˜˜˜˜3Ÿ8š8 D¨¤G¨KÔ$8Ñ9Ô9Ð9Ð9ð;ˆFàˆAØ�t˜A”wÐÐÝ" 4¨¤7Ñ+Ô+ˆCØð GØ-3¨V°Q°Q°Q¸¿ºÀ¹¼¸¸ÐF�ØˆAØ�d˜1”gÐÐØ(.¨°°°°3·8²8¸DÀ¼GÀGÔ<LÑ3MÔ3MÐ3MÐ3MÐNˆFØˆAØ�t˜A”wÐÐà�˜˜˜˜3Ÿ8š8 D¨¤G¨HÔ$5Ñ6Ô6Ð6Ð6ð8ˆFàˆAØ�$�q”'ˆ>ˆ>Ø�Q”˜”ˆAØ�AŒw�zÔ"Ð&CÐCÐCðÝ˜Q™œ�A�AØ%&¤V V V¨Q¬V¨V¨VÐ4�A�AøÝ ð ð ð Ø�Dðøøøà&, f f¨a¨a¨a°°Ð3ˆFˆFà#) 6 6¨1¨1Ð-ˆFØ˜#˜s˜s F FÐ+ˆ‰Ø€Js   Ò"SÓ
SÓSc                 ó|  — t          dd¦  «         t          | t          ¦  «         t          dd¦  «         g at	          t
          d         ¦  «        }t          dd¦  «         t          D ]+}t          d|j        › d�d¦  «         t          ||¦  «        }Œ,t          dd¦  «         t          |¦  «        }t          |z   S )NzReading fortran codes...
r   zPost-processing...
z"Applying post-processing hooks...
z  r¿   zPost-processing (stage 2)...
)
r2   rÞ   r>  r   r…  r   Úpost_processing_hooksÚ__name__Útraverserv  )ÚfilesÚpostlistÚhooks      r)   Úcrackfortranr‘  Ã  sÄ   € õ Ð(¨!Ñ,Ô,Ð,Ý�E�9Ñ%Ô%Ð%ÝÐ" AÑ&Ô&Ð&Ø€KÝ� 1œÑ&Ô&€HÝÐ1°1Ñ5Ô5Ð5Ý%ð ,ð ,ˆÝÐ&�T”]Ð&Ð&Ð&¨Ñ*Ô*Ð*Ý˜H dÑ+Ô+ˆˆÝÐ,¨aÑ0Ô0Ð0Ý˜(Ñ#Ô#€HÝ˜Ñ!Ð!r(   c                 óN   — t          | ¦  «        dz   }d}dt          z  }||z   |z   S )Nr¿   zE!    -*- f90 -*-
! Note: the context of this file is case sensitive.
z�
! This file was auto-generated with f2py (version:%s).
! See:
! https://web.archive.org/web/20140822061353/http://cens.ioc.ee/projects/f2py2e
)r§  Úf2py_version)r4  ÚpyfÚheaderÚfooters       r)   Úcrack2fortranr—  Ô  s?   € õ ˜5Ñ
!Ô
! DÑ
(€Cð€Fðõ ñ	€Fð
 �C‰<˜&Ñ Ð r(   c                 ó–   — t          | t          ¦  «        o4t          | ¦  «        dk    o!t          | d         t          t          f¦  «        S )Nr5  r   )rö  ÚtuplerX   r8   r³   )Úobjs    r)   Ú_is_visit_pairr›  ã  s@   € Ý�s�EÑ"Ô"ð /Ý�C‘”˜A’ð/å˜3˜qœ6¥C­ :Ñ.Ô.ð0r(   c                 ó8  — t          | ¦  «        r9| d         dk    r| S  || ||g|¢R i |¤Ž}|�t          |¦  «        sJ ‚|S | }| \  }} nd| f}d}t          | t          ¦  «        rLg }t          | ¦  «        D ]9\  }	}
t	          |	|
f|g|¢R ||gz   |dœ|¤Ž\  }}|�|                     |¦  «         Œ:ndt          | t          ¦  «        rMt          ¦   «         }|                      ¦   «         D ])\  }}
t	          ||
f|g|¢R ||gz   |dœ|¤Ž\  }}|�|||<   Œ*n| }|€|S ||fS )aí  Traverse f2py data structure with the following visit function:

    def visit(item, parents, result, *args, **kwargs):
        """

        parents is a list of key-"f2py data structure" pairs from which
        items are taken from.

        result is a f2py data structure that is filled with the
        return value of the visit function.

        item is 2-tuple (index, value) if parents[-1][1] is a list
        item is 2-tuple (key, value) if parents[-1][1] is a dict

        The return value of visit must be None, or of the same kind as
        item, that is, if parents[-1] is a list, the return value must
        be 2-tuple (new_index, new_value), or if parents[-1] is a
        dict, the return value must be 2-tuple (new_key, new_value).

        If new_index or new_value is None, the return value of visit
        is ignored, that is, it will not be added to the result.

        If the return value is None, the content of obj will be
        traversed, otherwise not.
        """
    r   rg  N)Úparentsr­   )r›  rö  rx  rï  r�  r,  rÚ  rX  )rš  Úvisitr�  r­   r8  ÚkwargsÚ
new_resultÚparentÚ
result_keyr[   r  Ú	new_indexÚnew_itemr¡  Únew_keyÚ	new_values                   r)   r�  r�  é  sç  € õ8 �cÑÔð ØˆqŒ6�^Ò#Ð#àˆJØ�U˜3 ¨ÐA°$ÐAÐAÐA¸&ÐAÐAˆ
ØÐ!Ý! *Ñ-Ô-Ð-Ð-Ð-ØÐØˆØ‰ˆ
�C�Cà˜�ˆØˆ
å�#•tÑÔð Øˆ
Ý% c™NœNð 	,ð 	,‰LˆE�5Ý"*¨E°5¨>¸5ð #Kà;?ð#Kð #KØ3:¸f¸XÑ3EØ28ð#Kð #KàCIð#Kð #KÑˆI�xð Ð$Ø×!Ò! (Ñ+Ô+Ð+øð	,õ 
�C�Ñ	Ô	ð 	Ý‘V”Vˆ
ØŸ)š)™+œ+ð 	0ð 	0‰JˆC�Ý!)¨3°¨,¸ð "Jà:>ð"Jð "JØ29¸V¸HÑ2DØ17ð"Jð "JàBHð"Jð "JÑˆG�Yð Ð"Ø&/�
˜7Ñ#øð	0ð ˆ
àÐØÐØ�zÐ!Ð!r(   c                 ób  — |d         \  }}| \  }}d„ }	|dv r#|d         d         dk    sJ ‚|d         d         }
n+|dk    r#|d	         d         dk    sJ ‚|d	         d         }
nd
}
d
}|
�8|}|
                      ¦   «         D ] \  }}t          |¦  «        r |	||¦  «        }Œ!nd|dk    r^|d	         d         d         }
|}|
                      ¦   «         D ]3\  }}t          |¦  «        rt          j        d|z   dz   d|z   |¦  «        }Œ4|�'||k    rt	          d|› d|› d|› d|› d�	d¦  «         ||fS d
S )aü  Previously, Fortran character was incorrectly treated as
    character*1. This hook fixes the usage of the corresponding
    variables in `check`, `dimension`, `=`, and `callstatement`
    expressions.

    The usage of `char*` in `callprotoargument` expression can be left
    unchanged because C `character` is C typedef of `char`, although,
    new implementations should use `character*` in the corresponding
    expressions.

    See https://github.com/numpy/numpy/pull/19388 for more information.

    r   c                 óv   — t          j        d| z   dz   | |¦  «        }t          j        d| z   dz   | |¦  «        }|S )Nz[*]\s*\br²  z\b\s*[\[]\s*0\s*[\]])rÄ   ró  )Úvarnamer  s     r)   Ú	fix_usagez8character_backward_compatibility_hook.<locals>.fix_usage=  sF   € Ý”�{ WÑ,¨uÑ4°g¸uÑEÔEˆÝ”�u˜w‘Ð)@Ñ@Ø ñ'ô 'ˆàˆr(   )r  rv  éýÿÿÿr   r3  r   rs  r¢   NÚcallstatementz
(?<![&])\br²  r£   zcharacter_bc_hook[r�  z]: replaced `z` -> `z`
)rX  ÚischaracterrÄ   ró  r2   )rS  r�  r­   r8  rŸ  Ú
parent_keyÚparent_valuer¡  r  rª  Ú	vars_dictr¦  r©  Úvds                 r)   Ú%character_backward_compatibility_hookr²  +  sá  € ð  ' rœ{Ñ€J�Ø�J€Cˆðð ð ð Ð+Ð+Ð+Ø�rŒ{˜1Œ~ Ò'Ð'Ð'Ð'Ø˜B”K ”Nˆ	ˆ	Ø	�ŠˆØ�rŒ{˜1Œ~ Ò'Ð'Ð'Ð'Ø˜B”K ”Nˆ	ˆ	àˆ	à€IØÐØˆ	Ø$Ÿ?š?Ñ,Ô,ð 	:ð 	:‰KˆG�RÝ˜2‰Œð :Ø%˜I g¨yÑ9Ô9�	øð	:ð 
�Ò	Ð	Ø˜B”K ”N 6Ô*ˆ	Øˆ	Ø$Ÿ?š?Ñ,Ô,ð 	Oð 	O‰KˆG�RÝ˜2‰Œð Oõ œFØ! GÑ+¨eÑ3°S¸7±]ÀIñOô O�	øð ÐØ˜ÒÐõ
 ð >¨ð >ð >°cð >ð >Ø"'ð>ð >Ø/8ð>ð >ð >Ø?@ñBô Bð Bà�YÐÐð Ðr(   Ú__main__r­  z-quietz-verboser5  z-fixz?Use option -f90 before -fix if Fortran 90 code is in fix form.
z-skipemptyendsz--ignore-containsz-f77z-f90r¶   z-hz-showz-mrÈ  zUnknown option %s
z	OSError: a    Warning: You have specified module name for non Fortran 77 code that
  should not need one (expect if you are scanning F90 code for non
  module blocks but then you should use flag -skipemptyends and also
  be sure that the files do not contain programs without program
  statement).
z Writing fortran code to file %s
r˜  )r   )r   )r)  )ra  r,   )r
   N)Nr
   )r
   )NN)r   r   )r¿   F)r
   F)×Ú__doc__r-   rc   rÈ   rÄ   rŠ   rÜ  rä  r�   Úpathlibr   r‡   ÚImportErrorr
   r   Úauxfuncsr   Úversionr“  r   r   r   r   r   r   r   r   r   r   r   rÃ   r!   r   r   r    r   r@  r   r   r?  r%   r   r$   r&   r   r#   r"   r   r*   r2   Ú	_MAXCACHEr«  r¹   rn   r}   r®   rr   r{   r~   r�   rÅ   rÆ   r�  r¨   r©   rÐ   r×   r«   r¦   rÏ   r›   r¯   r†  rÞ   ÚbeforethisafterÚfortrantypesrQ  rë  rN  rO  Úgroupbegins77rÑ   Úgroupbegins90rÒ   Ú	groupendsrL  ÚendifsrK  ÚmoduleproceduresrW  rP  rA  rB  rD  rE  rH  rI  rJ  rC  rF  rG  rS  rV  rZ  rR  rT  rU  rM  ÚSr<  r=  rÖ   r/  rX  Úcrackline_bind_1rÞ  r>  rY  r*  rn  r�  r-  r‹  r—  r˜  r™  rå  rÏ  r„  r†  rŽ  r”  r›  r[  r÷  rß  râ  rq  rr  rY  rF  r1  r:  rà  rì  rz  r{  r|  rc  re  rh  rp  rv  r…  r‰  r‡  rŠ  r®  r°  rµ  rº  r½  r¾  rÄ  rÊ  rÐ  rÕ  rè  rã  r  r	  r  rˆ  r[  rö  r   rb  r†  rk  rl  rm  rn  ro  rg  rä  r§  rw  rv  r‚  rx  r‹  r‘  r—  r›  r�  r²  r,  rŒ  rŽ  Úfuncsrh  Úf2Úf3ÚshowblocklistÚargvrð   ro   rÓ   r�   râ   ÚOSErrorÚdetailr�  r”  r/   r'   r(   r)   ú<module>rÊ     s  ððIð IðT €
€
€
Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð ðØÐÐÐÐøØð ð ð ØÐÐÐðøøøð Ð Ð Ð Ð Ð ð
 Ð Ð Ð Ø Ð Ð Ð Ð Ð àÔ"€ð €	Ø€Ø	€Ø
€Ø
€Ø€Ø€Ø€Ø€Ø€Ø
€ð €Ø€Ø€Ø€ØÐ Ø€Ø€
Ø€Ý˜2Ð€	Ø€	Ø€Ø€Ø€	ØÐ Ø€Ø€	Ø€Ø€ð#ð #ð #ðLð ð ð ð €„ØÐ Ø	!ð 3ð 3€AØ)¨6Ð2Ð˜ÑÐØ	ð 6ð 6€AØ)¨9Ð5Ð˜ÑÐØ€Ø€ð
ð 
ð 
€Að �e‘)€HˆQ�KØ€K��E‘	ÑÐðð ð ð,ð ,ð ,ðð ð ð1ð 1ð 1ð �”
Ð3°R´TÑ:Ô:ÔA€Ø�"”*Ð1°2´4Ñ8Ô8Ô?€Ø�"”*Ð1°2´4Ñ8Ô8Ô?€Ø�"”*Ð1°2´4Ñ8Ô8Ô>€ð :Ð9Ð9Ð Ø8Ð8Ð8Ð ð3ð 3ð 3ð>ð ð ð4 '+°!ð _Dð _Dð _Dð _DðD€ð D€ØˆrŒzØ�r˜<¨°tÐ<Ñ<¸b¼dñDô DØEKðL€à"˜œ
 ?ØˆÐ4Ñ4°lÐEbÑ6bÐdhð6jñ $jØkmÔkoñqô qÐ ð �"”*˜_ð 0?ñ ?Ø@BÄñFô FØGNðO€à�B”J˜ð 24ñ  4Ø57´Tñ;ô ;Ø<CðDÐ ð (€Ø�”Ø�r˜=¨-¸Ð>Ñ>ÀÄñFô FØGNðO€àØGñHàñ€ð �”Ø�r˜=¨-¸Ð>Ñ>ÀÄñFô FØGNðO€ð7€	àˆRŒZØ�r˜9 i°Ð6Ñ6¸¼ñ>ô >Ø?DðE€
ð
 €àˆrŒzØ�y &¨&°$Ð7Ñ7¸¼ñ?ô ?Ø@GðH€ð )Ð Ø#˜œØ�rÐ+Ð-=¸tÐDÑDÀbÄdñLô LàðÐ ð �"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�2”:˜oð 18ñ 8Ø9;¼ñ?ô ?Ø@KðLÐ à�"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�"”*ØÐ8Ñ8¸"¼$ñ@ô @ØAKðL€à�”
ØÐ4Ñ4°b´dñ<ô <Ø=EðF€à�”ØÐ6Ñ6¸¼ñ>ô >Ø?HðI€à�2”:ØÐ:Ñ:¸B¼DñBô BØCNðOÐ à�”
˜?ð .Qñ QØRTÔRVñXô XØYaðb€à�2”:ØÐ@Ñ@À"Ä$ñHô HØITðUÐ àˆbŒjØÐ0Ñ0°"´$ñ8ô 8Ø9?ð@€àˆbŒjØÐ0Ñ0°"´$ñ8ô 8Ø9?ð@€àˆrŒzØÐ2Ñ2°B´Dñ:ô :Ø;BðC€à�”ØÐ6Ñ6¸¼ñ>ô >Ø?HðI€à�”
ØÐ4Ñ4°b´dñ<ô <Ø=EðF€àˆRŒZØÐ.Ñ.°´ñ6ô 6Ø7<ð=€
à�"”*ØÐ6Ñ6¸¼ñ>ô >Ø?IðJ€à�”
ØÐ4Ñ4°b´dñ<ô <Ø=EðF€ð %˜"œ* _ð 8Mñ &Mð OQô  OSð  VXô  VZñ  OZñ[ô [ð ]oðoÐ à�2”:Ø9¸2¼4ñAô AØBMðNÐ ðð ð ð(ð ð ð �”ÐAÀ2Ä4ÑHÔH€Ø�2”:ÐAÀ2Ä4ÑHÔHÐ Ø�R”ZÐ kÐmoÔmqÑrÔrÐ ð\%ð \%ð \%ð \%ð~ð ð ð$ð ð ð ð&ð ð ð
ð ð ð ð> �”
ØKÈRÌTñSô S€à�”ð%Ø&(¤dñ,ô ,€ð �"”*ð rð  tvô  txñyô y€à�"”*ð*Ø+-¬4ñ1ô 1€ð !�b”jØ@À"Ä$ñHô HÐ à�”
Ø;ñ=ô =€àˆrŒzØHñJô J€ð $˜œÐ$AÀ2Ä4ÑHÔHÐ ðð ð ðð ð ð ð  ð  ð ð  ð  ð P	Dð P	Dð P	Dðfð ð ð(ð (ð (ð4 ˆbŒjÐEÀrÄtÑLÔL€ØˆrŒzØIÈ2Ì4ñQô Q€àˆrŒzØ9¸2¼4ñAô A€à�”ð2à35´4ñ9ô 9€ð �"”*ð Gð  IKô  IMñNô N€ðð ð ð"ð "ð "ðJfð fð fðR8,ð 8,ð 8,ðxð ð ð ð6ð ð ð ðð ð ð ðð ð ð ðð ð ðð ð ðð ð ð ð<ð ð ð ð@]ð ]ð ]ð ]ð@ð ð ðD(ð (ð (ðV*ð *ð *ð *ðZ$ð $ð $ð&#ð #ð #ð #ð �"”*˜^¨R¬TÑ2Ô2€ðEð Eð EðP ˆrŒzÐ,¨b¬dÑ3Ô3€ðð ð ð,ð ð ð4ð 4ð 4ð$"ð "ð "ðð ð ð ð ð ð ð& (*ð bð bð bð bðJ(ð (ð (ð �"”*˜WÑ%Ô%Ô+€ðð ð ð Dð Dð DðN �2”:Ð1°2´4Ñ8Ô8Ð ð;ð ;ð ;ð ;ð|Mð Mð Mð`  ð "ð "ð "ð "ðJð ð ð4 $˜œÐ$6¸¼Ñ=Ô=Ð Ø#˜œÐ$DÀbÄdÑKÔKÐ Ø#˜œØ1°2´4ñ9ô 9Ð à#˜œ M°2´4Ñ8Ô8Ð Ø#˜œÐ$EÀrÄtÑLÔLÐ ð	"ð 	"ð 	"ð )+ð (ð (ð (ð (ðZHð Hð Hð HðVð ð ð ðð ð ð ð0ð ð ð}ð }ð }ð }ðF Ð ð"ð "ð "ð"!ð !ð !ð0ð 0ð 0ð "$¨Dð ?"ð ?"ð ?"ð ?"ðD9 ð 9 ð 9 öx × Ò ÐBÑ CÔ CÐ Cð ˆzÒÑØ€EØ€EØ	€AØ	
€BØ	
€BØ€MØŒX�a�b�bŒ\ð 1ñ 1ˆØ�Š7ˆ7ØØˆqŒT�SŠ[ˆ[ØˆAˆAØ�(Š]ˆ]ØˆEØˆGˆGØ�*Š_ˆ_ØˆGØˆEˆEØ�&Š[ˆ[Ýð [Ø�ØVÐXYñ[ô [ð [àˆMØ"ˆNˆNØÐ"Ò"Ð"ØˆMˆMØÐ%Ò%Ð%ØˆNˆNØ�&Š[ˆ[ØˆIØ"ˆNˆNØ�&Š[ˆ[ØˆIØ#ˆNØˆMˆMØ�$ŠYˆYØˆBˆBØ�'Š\ˆ\ØˆMˆMØ�$ŠYˆYØˆBˆBØˆqŒT�SŠ[ˆ[ØˆGÐ)¨D¨D°©G¬GÑ3Ñ4Ô4Ð4Ð4Øð 	ØˆBØˆKˆKØð 
	ØˆBØˆMˆMØð 	ð2Ø��Q‘”—’‘”�Ø—’˜Q‘”��øØð 2ð 2ð 2Ø�Ð0 FÐ0Ð0Ð0Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ñ1øøøøð2øøøð �LŠL˜‰OŒOˆO‰OÝð �ð ­}ð Øˆð ð ñ	ô 	ð 	ð ˆ|˜EÑ"Ô"€HÝð ØˆÐ3°d°d½;Ñ6GÔ6GÑGÈÑKÔKÐKØˆm˜HÑ%Ô%ˆØˆT•+˜sÑ#Ô#ð 	 qØ�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àð ØˆˆX‰ŒˆˆˆðS ÐðPð s6   ª/ ¯9¸9â2cãc&ãc!ã!c&å,fæfæf