§
    `Štj­= ã                   ó@  — 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mZ ddlT 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„Z1i Z2dD ]	Z3ddie2e3<   Œ
dD ]	Z3ddie2e3<   Œ
i Z4i Z5dD ]Z6e6dz   e4e6<   e6e5e6dz   <   Œd„ Z7d„ Z8d„ Z9d„ Z: ej;        dej<        ¦  «        j=        Z> ej;        dej<        ¦  «        j=        Z? ej;        dej<        ¦  «        j=        Z@ ej;        dej<        ¦  «        jA        ZBg d¢ZCg d¢ZDd„ ZEd„ ZFeGdfd „ZHd!ZId"ZJ ej;        eId	eJeJd#fz  ej<        ¦  «        d$fZK ej;        eId	eJd%z   eJd%z   d#fz  ej<        ¦  «        ZL ej;        eId&z  ej<        ¦  «        d'fZM ej;        eId(z  ej<        ¦  «        d'fZNd)ZO ej;        eId	eOeOd#fz  ej<        ¦  «        d'fZPeOd*z   ZQ ej;        eId	eQeQd#fz  ej<        ¦  «        d'fZRd+ZS ej;        eId	eSeSd#fz  ej<        ¦  «        d,fZTd-ZU ej;        eId.eUeUd#fz  ej<        ¦  «        d/fZVd0ZW ej;        eId	eWeWd#fz  ej<        ¦  «        d1fZX ej;        eId2z  ej<        ¦  «        d3fZY ej;        eId4z  ej<        ¦  «        d5fZZ ej;        eId6z  ej<        ¦  «        d7fZ[ ej;        eId8z  ej<        ¦  «        d9fZ\ ej;        eId:z  ej<        ¦  «        d;fZ] ej;        eId<z  ej<        ¦  «        d=fZ^ ej;        eId>z  ej<        ¦  «        d?fZ_ ej;        eId@z  ej<        ¦  «        dAfZ` ej;        eIdBz  ej<        ¦  «        dCfZa ej;        eIdDz  ej<        ¦  «        dEfZb ej;        eIdFz  ej<        ¦  «        dGfZc ej;        eIdHz  ej<        ¦  «        dIfZd ej;        eIdJz  ej<        ¦  «        dKfZe ej;        eIdLz  ej<        ¦  «        dMfZf ej;        eIdNz  ej<        ¦  «        dOfZg ej;        eIdPz  ej<        ¦  «        dQfZh ej;        eIdRz  ej<        ¦  «        dSfZi ej;        eIdTz  ej<        ¦  «        dUfZj ej;        eIdVz  ej<        ejk        z  ¦  «        dWfZl ej;        dXejk        ¦  «        dYfZmdZ„ Znd[„ Zo ej;        d\ej<        ¦  «        Zp ej;        d]ej<        ¦  «        Zq ej;        d^ej<        ¦  «        ZrdÈd_„Zsd`„ ZtdÉdb„Zudc„ ZvdÇdd„Zw ej;        deej<        ¦  «        Zx ej;        dfej<        ¦  «        Zy ej;        dgej<        ¦  «        Zz ej;        dhej<        ¦  «        Z{ ej;        diej<        ¦  «        Z| ej;        dj¦  «        Z} ej;        dk¦  «        Z~ ej;        dlej<        ¦  «        Zdm„ Z€dn„ Z�do„ Z‚dp„ Zƒdq„ Z„dr„ Z…ds„ Z† ej;        dtej<        ¦  «        Z‡ ej;        duej<        ¦  «        Zˆ ej;        dvej<        ¦  «        Z‰ ej;        dwej<        ¦  «        ZŠ ej;        dxej<        ¦  «        Z‹dy„ ZŒdz„ 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—¦  «        jA        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Â�tz           Ã                    eÂ¦  «         eÄd²k    �røg ZÅg ZÆdZÇdZÈdZÉdZÊejË        dd…         D �]2ZÌ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Ì¦  «        › d¦�¦  «         Œ·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Ì¦  «         �Œ4t&          st2          rt4          s e1dÄd¦  «          e¾eÅ¦  «        ZÓt0          rg e1dÅ eÎt0          ¦  «        › d¦�d¦  «          e¿eÓ¦  «        ZÔ eÏt0          dÆ¦  «        5 ZÇeÇ Õ                    eÔ¦  «         ddd¦  «         n# 1 swxY w Y   eÊr eGeÓ¦  «         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/CA-Chatbot/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(   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)   Ú
rmbadname1rq   
  sB   € Ø�xÐÐÝÐL¨$ÐLÐL½À¼ÐLÐLÐLÑMÔMÐMÝ˜Œ~ÐØ€Kr(   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r'   )rq   ©Ú.0Ú_ms     r)   ú
<listcomp>zrmbadname.<locals>.<listcomp>  s   € Ð+Ð+Ð+˜r�J�r‰NŒNÐ+Ð+Ð+r(   r'   ©Únamess    r)   Ú	rmbadnamerz     s   € Ø+Ð+ UÐ+Ñ+Ô+Ð+r(   c                 ót   — | t           v r.t          d| › dt           |          › d�¦  «         t           |          S | S )Nzundo_rmbadname1: Replacing "rk   rl   )Úinvbadnamesrn   ro   s    r)   Úundo_rmbadname1r}     sD   € Ø�{ÐÐÝÐT¨tÐTÐT½[ÈÔ=NÐTÐTÐTÑUÔUÐUÝ˜4Ô Ð Ø€Kr(   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r'   )r}   rt   s     r)   rw   z"undo_rmbadname.<locals>.<listcomp>  s    € Ð0Ð0Ð0 B�O˜BÑÔÐ0Ð0Ð0r(   r'   rx   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®   I  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          ¦  «        › �¦  «        ‚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'   )Ústrrt   s     r)   rw   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
z4Flag sourcecodeform must be either 'fix' or 'free': zLine #%d in %s:"%s"
	rp   )Ú
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©   rW   ÚmatchÚgrouprn   Ú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Ý   c  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¹\¼\ð ð Ø!$ðð ð ñô ð øøøøð	øøøð ð 	ÙØ�?Š?ÑÔñ 	9Ø!ÐØ!Ÿ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Ý!Ð/ iÐ6°BÐ6Ð6ð8ñ 9ô 9ð 9ð �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åØ]ÅtÍNÑG[ÔG[Ð]Ð]ñ_ô _ð _à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ú.*rg   z|static|automatic|undefined)z([a-z]+[\w\s(=*+-/)]*?|)Úfunctionrþ   rý   Úbegin)z	[a-z\s]*?Ú
subroutiner   rý   zprogram|block\s*datazM|module(?!\s*procedure)|python\s*module|(abstract|)\s*interface|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�dt          j        |¦  «        › d�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("([^"\\]|(\\.))*"))Ú
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Ð-Ý
Œ
ð	!ß!'¢Ø7�rœy¨Ñ4Ô4Ð7Ð7Ð7Ø-•R”Y˜zÑ*Ô*Ð-Ð-Ð-Ø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)   Ú_simplifyargsr0  «  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                 óp  — 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 �rbt          t                   d         D �]H}
|
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	          | ¦  «        › d�¦  «          dS t_          |d| ¦  «          dS �ŒJt`          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Úblockrp   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¬   ú)z4crackline: could not resolve function call for line=ú.
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×   r0  ÚcallfunpatternÚanalyzeliner   r!   r¤   Úendswithr&   rÊ   r    r   r   r   r   )r0   Úresetrô   Úhas_semicolonÚsemicolon_lineÚflr1   Úpatr÷   Úre_1rp   Úm1Úm2r/  s                 r)   r@  r@  ¸  sU  € õ )¨¨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ˆˆØñ J%ÝˆØ•Ð/Ð/Ò/Ð/¥<Ò/Ð/Ð/Ð/Ð/Øˆ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Øð 6ØS¨$ÐSÐS°ÐSÐS¸b¿hºhÀxÑ>PÔ>PÐSÐSÐS˜˜à5¨$Ð5Ð5°Ð5Ð5Ð5˜Ý& qÔ)×/Ò/°Ñ5Ô5�AØð ÝØbÕSWÐX\ÑS]ÔS]ÐbÐbÐbñdô dð dà˜˜Ý  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   r:  r   ú@(@r;  ú@)@r'   )r0   rï   Úfr¸   s       r)   r[  r[  V  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   ú()ú@r:  r   r;  )rÕ   rÒ   )r0   Úcommarï   rj  r!  r"  s         r)   r+  r+  h  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 �|Ñ$Ô$Ñ$Ô$ˆ5Ø€Hr(   c                 óZ   — |                       dd¦  «                              dd¦  «        }|S )Nrh  r:  ri  r;  )rÔ   )r0   rœ   s     r)   Úunmarkouterparenrp  {  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|› d	�¦  «         Œ®t          d
t          |¦  «        z   ¦  «        ‚| S )Nr3   ÚattrspecÚkindselectorÚcharselector)ú=ÚtypenameÚnote)r  Úcheckr  r  r	  Údependzappenddecl: "z" not implemented.
z-appenddecl: Unknown variable definition key: )ÚlistÚkeysÚsetattrspecÚsetkindselectorÚsetcharselectorrn   rÊ   r²   )ÚdeclÚdecl2ÚforceÚkrï   s        r)   Ú
appenddeclrƒ  €  su  € Øð ØˆØð ØˆØˆ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‘øØ�&Š[ˆ[ØØð )ð )ð )åÐ; 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 )Nrr  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¤   )ru   r/  s     r)   rw   z*_resolvetypedefpattern.<locals>.<listcomp>Á  s    € Ð5Ð5Ð5˜q�—’‘”Ð5Ð5Ð5r(   r*  rp   Úparams)rß   r,  ÚtypedefpatternrÖ   Úprintr×   )r0   re  Ú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 )Nrp   r9  r¬   Úschemer:  r;  )r–  r[  ÚnameargspatternrÖ   r×   ÚoperatorpatternÚcallnameargspattern)r0   Ú
bind_cnamere  rp   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                 óÆE  — |                       d¦  «        }|dk    rdat          �r|dv�rt          sÿt          dk     rôt
          j                             t          ¦  «         	                    d¦  «        d         }t          d|› d	�¦  «         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 �r]|                     ¦   «         }t!          j        d|t           j        ¦  «        rd}nEt!          j        d|t           j        ¦  «        rd}n"t!          j        d|t           j        ¦  «        rd}|dk    rHt'          |                       d¦  «        ¦  «        \  }}}d|i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"œ|         }t0          r(t2          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ÿt4          dk    r%t          d*t7          t0          ¦  «        z  d¦  «         d+t          t          <   dt          t                   d<   t0          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$t4          dk    rt          d-t          z  d¦  «         d.t          t          <   d.t          t                   d<   d/t          t                   d<   t          t          dz
           d         ›d0t          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d1|                     d2d3¦  «        z   }|                       d4¦  «        t          t                   d5<   t;          |¦  «        t          t                   d<   |	t          t                   d6<   t          dk    rt          t          t                   d<   n—t0          rDt          d7k    r9t          t          dz
           d         ›d0t          ›�t          t                   d<   nLt          t          dz
           d         ›d0t          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                   d8<   |dk    rg t          t                   d9<   |d"v rñ|t          t          d(z
           d,         vr.t          t          d(z
           d,                               |¦  «         tC          j"        t          t          d(z
           d         ¦  «        t          t                   d<   	 t          t                   d         |         t          t                   d         |         d          #                    d:¦  «        = n# tH          $ r Y nw xY w|d;v �rñ|
r°t!          j%        tL          |
¦  «        }|r”|i it          t                   d<<   |                      d=¦  «        t          t                   d<         |         d=<   |                      d>¦  «        r4|                      d>¦  «        t          t                   d<         |         d<   	 tO          t          t                   d         |         t          t          d(z
           d         d         ¦  «        t          t                   d         |<   n# tH          $ r Y nw xY w|d?k    rƒ|	r�|	t          t                   d         v rg||	k    satO          t          t                   d         |         t          t                   d         |	         ¦  «        t          t                   d         |<   	 t          t          d(z
           d$                               |¦  «         n# tH          $ r Y nw xY w|d&k    rˆtP          d                              |                       d4¦  «        d2z   |z   ¦  «        }|rMtS          |                      d¦  «        |                      d¦  «        ¦  «        \  }}}}tU          ||||¦  «         |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 |d8k    r©t)          |                       d¦  «        ¦  «        \  }}}	}|�~|r:t+          d@„ t-          |¦  «         	                    d ¦  «        D ¦   «         ¦  «        }ng }|	�J t7          |	¦  «        ¦   «         ‚|t          t                   d8         |<   d8|t          fadS dS |dk    rJtS          ||                       d¦  «        ¦  «        \  }}}}tU          ||||¦  «        }|�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 ¦  «        }t_          |¦  «        dk    r5|d         }t          dIdH .                    |dd…         ¦  «        z  ¦  «         d}dJ„ t-          |¦  «         	                    d ¦  «        D ¦   «         D �]Û}t`                               |¦  «        }|sL|dKv rd}ngtc          |  2                    ¦   «         ¦  «         t          dL|›dMt7          |¦  «        ›dN�¦  «         Œkt;          |                      d¦  «        ¦  «        }|dKv r|dOv r||                      d¦  «        z  }||vri ||<   |dPk    r||                      d¦  «        z   }|dDk    �r|                       d¦  «        |z   }tf                               |¦  «        rë|t          t                   d#         vr¿t          dk    r dQt          t          d(z
           d         vrt          dR¦  «         |t          t                   d         k    rWt          dS|›dTt          t                   d         ›dU�¦  «         t          t                   d#                               |¦  «         n&ti          dV|› dW�¦  «         nti          dX|z  ¦  «         |dYv r|}d||         v r"||         d                               |¦  «         n|g||         d<   |d:k    r�t          t                   d         d
k    rt          dZ¦  «         �Œi|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&# tH          $ r t          da|› db|› dc�¦  «         Y ŒIw xY wtk          |¦  «        }t;          |¦  «        }||vri ||<   d`||         v r7||         d`         |k    s%t          dd|›de||         d`         ›df|›d	�¦  «         tm          ||¦  «        }|�rB| 7                    dg¦  «        dhk    rÌt=          |¦  «        }tp           9                    |¦  «        D ]Œ} t=          ||  :                    ¦   «         |  ;                    ¦   «         …                              ¦   «                              didj¦  «        ¦  «        ||  :                    ¦   «         |  ;                    ¦   «         …<   Œ�d .                    |¦  «        }n]| 7                    dg¦  «        dkk    rD|dd…                              ¦   «                              didj¦  «                             dHdl¦  «        }	 ty          |i |¦  «        } n;# tz          t|          t~          f$ r!}!ti          dm|›dn|!›dG�¦  «         Y d}!~!�ŒPd}!~!ww xY wt7          | ¦  «        ||         d`<   d||         v r"||         d                               d^¦  «         nd^g||         d<   |}�Œ¬|t          t                   d<   |�dA|t          fadS dS |dok    �r|                       d¦  «         +                    ¦   «                              ¦   «         dpk    rdt          t                   do<   dS |                       d¦  «        �r¯t          t                    7                    doi ¦  «        }"|"€t          dq¦  «         i }"t-          |                       d¦  «        ¦  «         	                    d ¦  «        D �](}i }#t!          j        dr|t           j        ¦  «        }|st          ds|› dc�¦  «         Œ;t€                               |                      d¦  «        ¦  «        }$|$st          dt|› dc�¦  «         Œ~tS          |$                      d¦  «        |$                      d¦  «        ¦  «        \  }}}}tƒ          ||¦  «        \  }%}&}'||#dg<   |%|#du<   |&|#dv<   |'|#dw<   t=          |#                     ¦   «         ¦  «        D ]}|#|         s|#|= Œt-          |                      d¦  «        ¦  «         	                    d ¦  «        D ]â}(dx|(v rG	 dy„ |( 	                    dx¦  «        D ¦   «         \  })}*n9# tH          $ r t          dz|(› d{�¦  «         Y ŒIw xY w|( +                    ¦   «         x})}*t_          |)¦  «        t_          |*¦  «        cxk    rdk    sn t          dz|(› d|�¦  «         Œ t…          t‡          |)¦  «        t‡          |*¦  «        dz   ¦  «        D ]}+|#|"t‰          |+¦  «        <   ŒŒã�Œ*|"t          t                   do<   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|, +                    ¦   «         },|, E                    dH¦  «        r|,dd…          +                    ¦   «         },|                      |,|-g¦  «         |1},d}-d}.Œ³|.d(k    r\|, +                    ¦   «         },|, E                    dH¦  «        r|,dd…          +                    ¦   «         },|                      |,|-g¦  «         t          t                    7                    di ¦  «        }2d}|D �]!}3|3d          +                    ¦   «          F                    dH¦  «        |3d          +                    ¦   «         c|3d<   |3d<   |3d          E                    d€¦  «        rt          d‚|3d         › dƒ�¦  «         Œ†t�          t+          d„„ t-          |3d         ¦  «         	                    d ¦  «        D ¦   «         ¦  «        ¦  «        D �]M\  }4} |  E                    d€¦  «        rt          d‚| › dƒ�¦  «         Œ/d…|3d         v rt          d†|3d         › dƒ�¦  «         ŒS|2 H                    | i ¦  «         |2|           7                    dg¦  «        }5t“          |2|          ¦  «        }6|5dkk    rt!          jJ        d‡|3d         ¦  «        n|3d          	                    dH¦  «        }7	 |6rdˆd‰ .                    |7¦  «        › dŠ�n|7|4         }8�n	# t–          $ rü t™          d‹„ |7D ¦   «         ¦  «        r½g }9|7D ]¶}:dŒ|:v r‰	 |: 	                    dŒ¦  «        \  };}<|9 M                    |< +                    ¦   «         gt�          |;¦  «        z  ¦  «         ŒX# tž          $ r* |9                      |: +                    ¦   «         ¦  «         Y Œ‹w xY w|9                      |: +                    ¦   «         ¦  «         Œ·|9}7|6rdˆd‰ .                    |7¦  «        › dŠ�n|7|4         }8Y nw xY w|2|           7                    d`¦  «        }=|=r|=|8k    rt          d�| › de|=› dŽ|8› dc�¦  «         |8|2|          d`<   | }�ŒO�Œ#|2t          t                   d<   |rdA|t          fadS dS |d�k    �rE|                       d¦  «         +                    ¦   «         }|d         dk    sd�|z   }g }>t!          j	        d|d(¬‘¦  «        \  }}?}@|? +                    ¦   «         }?|?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›| 2                    ¦   «         }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œt7          |3¦  «        › dG�¦  «         n|3|D|3<   |Dt          t                   d”         |         d�<   ŒÀdS dS dS tc          |  2                    ¦   «         ¦  «         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          €t4          rt          d¢¦  «         dS t          }Ft¥          t          |F         t          dd(…         |                       d¦  «        ¦  «         dS t4          dk    r2tc          |  2                    ¦   «         ¦  «         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  rg   r   ú.r   z=analyzeline: no group yet. Creating program group with name "rl   Úprogramr3  r4  r5  rp   ÚfromskyÚfrom)rÿ   r  r  zblock\s*dataú
block datazpython\s*moduleúpython modulezabstract\s*interfaceúabstract interfacerg   r"  rr  Ú_BLOCK_DATA_r
   )Ú	interfacer£  r¥  z2analyzeline: No name/args pattern found for line.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   ©r©   ©ru   Úxs     r)   rw   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  r9  r8  r   rþ   r   r6  ©r§  r¥  z&analyzeline: Creating module block %s
Úmoduler7  zDanalyzeline: Creating additional interface block (groupcounter=%s).
r§  Úunknown_interfaceú:Úunknown_r°   rô   r!  Úprefixr¬   é   r  Úvarnamesr  ©rþ   r   ÚbindlangÚlangÚ	lang_namer  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   zanalyzeline.<locals>.<listcomp>±  s6   € ð "Nð "Nð "NØ&'ð #$§'¢'¡)¤)ð "Nð "Nð "Nr(   Úvariable)r  r  r  r	  r  r
  r  r  ú::r  ri  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)   rw   zanalyzeline.<locals>.<listcomp>×  s    € ÐEÐEÐE �!—'’'‘)”)ÐEÐEÐEr(   ©r
  r  z&analyzeline: no name pattern found in z statement for ú. Skipping.
>   ÚoperatorÚ
assignmentr  Ú__user__z8analyzeline: missing __user__ module (could be nothing)
z(analyzeline: appending intent(callback) ú to z arguments
zanalyzeline: intent(callback) z 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)   rw   zanalyzeline.<locals>.<listcomp>  s    € Ð<Ð<Ð<˜1ˆQ�WŠW‰YŒYÐ<Ð<Ð<r(   Úimplementedbyr  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   zanalyzeline.<locals>.<listcomp>  s    € Ð?Ð?Ð?¨Q˜qŸwšw™yœyÐ?Ð?Ð?r(   ru  zAanalyzeline: could not extract name,expr in parameter statement "ú" of "ú"
z1analyzeline: Overwriting the value of parameter "ú" ("z	") with "r3   r4   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*|)\Zz@analyzeline: could not extract info of implicit statement part "zIanalyzeline: could not extract types pattern of implicit statement part "rs  rt  rv  ú-c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   zanalyzeline.<locals>.<listcomp>b  s    € Ð)JÐ)JÐ)J¸¨!¯'ª'©)¬)Ð)JÐ)JÐ)Jr(   z2analyzeline: expected "<char>-<char>" instead of "z&" in range list of implicit statement
z*" in range list of implicit statement (2)
r  ú'ú/r:  r;  zanalyzeline: implied-DO list "z" is not supported. Skipping.
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   zanalyzeline.<locals>.<listcomp>š  s    € Ð.dÐ.dÐ.d¸Q¨q¯wªw©y¬yÐ.dÐ.dÐ.dr(   rž   zComment line in declaration "z\(.*?\)ú(/ú, z/)c              3   ó   K  — | ]}d |v V — Œ	dS )r   Nr'   )ru   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//)ÚmaxsplitÚ_BLNK_c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   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*\Zrz  ÚnotonlyÚonlyc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   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Úlocalz-analyzeline: Not local=>use pattern found in Úmapz0analyzeline: Could not crack the use statement.
)r  r  Úusercodez-analyzeline: No context for multiline block.
z+analyzeline: No code implemented for line.
)Sr×   r&   r   r   r   r‰   rŠ   Úbasenamer!   r,  r2   r   rA  rB  r   r¤   rÃ   rÖ   rÅ   r�  r�  rz   r+  Úremover   r   r   rÒ   rÔ   rq   rz  r{  r-  ÚcopyÚdeepcopyrZ   rÊ   r’  Úcrackline_bindlangrƒ  rS  Úcracktypespec0Ú
updatevarsr©   Úfindr[  rß   rW   ÚnamepatternrŽ  r%  r†  rn   Úget_parametersÚdetermineexprtyper…  Úreal16patternÚfinditerr“  r  ÚevalÚSyntaxErrorÚ	NameErrorÚ	TypeErrorÚtypespattern4implicitÚcracktypespecrÆ   ÚordÚchrrŽ   ÚremoveprefixÚ	enumerateÚ
setdefaultÚgetdimensionÚfindallÚ
IndexErrorÚanyÚextendr7   rÚ   Ú
isinstancer²   Úappendmultiline)Gr÷   r>   r0   r5  Únewnamerp   r�  rô   r9  r¬   Ú	bindclineÚ
needmoduleÚneedinterfaceÚitr‚  ÚbindcdatÚtr3   ÚselectorÚattrÚedeclÚ	last_namerç   ÚiÚplÚchrÈ  re  ÚapÚinitexprrŒ  ÚttÚvrð   Úimplr  rf  Ú
kindselectÚ
charselectrv  rœ   ÚbegcÚendcÚoÚdlÚilrj  ÚfcÚinpr¸   r4  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ˆÝØYÈGÐYÐYÐYñ	[ô 	[ð 	[àˆÝ# 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�%˜Ø6@À%Ð5H�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Ñ,Ð,Ýð 	\�|¨qÒ0Ð0å�<¨!Ñ+Ô,¨VÔ4Ð4Ð4µo°oð0G�J•|Ô$ VÑ,Ð,õ �<¨!Ñ+Ô,¨VÔ4Ð4Ð4µjÅÐPQÑAQÔ6RÐSYÔ6ZÐ6Zð0\�J•|Ô$ VÑ,å•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Ø<@À"¸:•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ð 'Ð&ð 
�ŠˆÝ 7¸¿ºÀÑ8HÔ8HÑ IÔ IÑˆˆ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ð 4	ñ 4	ˆAÝ×"Ò" 1Ñ%Ô%ˆBØð 	1ØÐ0Ð0Ð0Ø�A�Aå˜!Ÿ+š+™-œ-Ñ(Ô(Ð(Ý�GØ˜˜�d 1™gœg˜g˜gð'ñ (ô (ð (àå˜rŸxšx¨Ñ/Ô/Ñ0Ô0�ØÐ,Ð,Ð,°Ð6PÐ1PÐ1PØ�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øå#Ø QÀÐ QÐ QÐ QñSô Sð Sð Sõ  ð !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øÝð ð ð ÝØiÐXYÐiÐiÐacÐiÐiÐiñkô kð kà�ðøøøõ $ 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ÑÔñ .	8Ý�lÔ+×/Ò/°
¸BÑ?Ô?ˆDØˆ|ÝØSñUô Uð Uà�Ý# A§G¢G¨GÑ$4Ô$4Ñ5Ô5×;Ò;¸EÑBÔBð ',ñ ',�Ø�Ý”XØPÐRSÕUWÔUYñ[ô [�àð ÝØbÐ[\ÐbÐbÐbñdô dð dàÝ*×0Ò0°·²¸&Ñ1AÔ1AÑBÔB�Øð ÝØkÐdeÐkÐkÐkñmô mð màÝ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 $ $øÝ(ð %ð %ð %Ý#Ø ÐUVÐ Ð Ð ñAô Að Aà$˜Hð%øøøð
 '(§g¢g¡i¤iÐ/˜˜tÝ˜t™9œ9­¨D©	¬	Ð6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6ÝØÐQRÐÐÐñAô Að Aà Ý"¥3 t¡9¤9­c°$©i¬i¸!©mÑ<Ô<ð ,ð ,˜Ø'+˜�S ™VœV™˜ð,ñ,ð  48�J•|Ô$ ZÑ0Ð0Ð0ð].	8ð .	8ð^ 
�Š‰ØˆØˆØˆØˆØˆØˆØ—’˜Ñ!Ô!ð 	ð 	ˆ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ˆØˆ	Øð 0	ñ 0	ˆAØ˜1œŸš™œ×2Ò2°3Ñ7Ô7¸¸1¼¿º¹¼ˆJˆAˆa‰D�!�A‘$Ø�Œt�Š˜sÑ#Ô#ð ÝÐ^¸¸1¼Ð^Ð^Ð^Ñ_Ô_Ð_ØÝ#¥IÐ.dÐ.dÅ.ÐQRÐSTÔQUÑBVÔBV×B\ÒB\Ð]bÑBcÔBcÐ.dÑ.dÔ.dÑ$eÔ$eÑfÔfð +ñ +‘��QØ—<’< Ñ$Ô$ð ÝÐ_¸QÐ_Ð_Ð_Ñ`Ô`Ð`ð Ø˜!˜Aœ$�;�;õ Ða¸A¸a¼DÐaÐaÐaÑbÔbÐbØØ—’  2Ñ&Ô&Ð&Ø˜QœŸš JÑ/Ô/�Ý# D¨¤GÑ,Ô,�Ø:?À9Ò:LÐ:L�"œ* Z°°1´Ñ6Ô6Ð6ÐRSÐTUÔRV×R\ÒR\Ð]`ÑRaÔRa�ðTØ=AÐSÐ9 4§9¢9¨WÑ#5Ô#5Ð9Ð9Ð9Ð9ÀwÈsÄ|�G‘GøÝ!ð Tð Tð Tõ
 Ð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Ø"/˜Ø=AÐSÐ9 4§9¢9¨WÑ#5Ô#5Ð9Ð9Ð9Ð9ÀwÈsÄ|�G�G�Gð#Tøøøð$ # 1œgŸkšk¨#Ñ.Ô.�Øð s K°7Ò$:Ð$:ÝÐqÈÐqÐqÐP[ÐqÐqÐdkÐqÐqÐqÑrÔrÐrØ&��Q”˜‘Ø�	‘	ñW+ðX ,0�
•<Ô  Ñ(Øð 	EØ *¨Iµ|ÐDÐÐÐð	Eð 	Eà	�Ò	Ñ	Ø�wŠw�wÑÔ×%Ò%Ñ'Ô'ˆØ�AŒw˜#Š~ˆ~Ø˜$‘;ˆDàˆÝ”h˜s D°1Ð5Ñ5Ô5‰ˆˆB�Ø�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õ $Ø [ÕPTÐUVÑPWÔPWÐ [Ð [Ð [ñ]ô ]ð ]ð ]ð !"˜˜1™ØCE•J�|Ô,¨UÔ3°DÔ9¸%Ñ@Ð@ð% ˆ|Ð 6Ð 6ð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œÝ(¨¨!¨Ô,ØŸš ™œñ	)ô 	)ð 	)ð 	)ð 	)õ 
�1ŠˆÝˆa�kŠk‰mŒmÑÔÐÝÐ>Ñ?Ô?Ð?Ð?Ð?ð 
ˆsÒ   â(Ac= ã=
d
ä	d
çA$h* è*
h7è6h7ë.k3 ë3
l ë?l ÁM "ANÁN AN&ÁN%AN&ÁU'AU9ÁU9AV1ÁVAV,ÁV,AV1Áa"Aa;Áa;AbÁbAbÁq#ArÁr-Av	Ár1AAtÁtAv	Át1At6Át3Av	Át5At6Át6AAv	ÁvAv	c                 óp   — d| vri | d<   | d         }||vrg ||<   ||                               |¦  «         d S )NÚf2pymultilines©r-  )r×   Úcontext_nameÚmlr'  s       r)   rü  rü    sU   € Ø˜uÐ$Ð$Ø"$ˆÐÑØÐÔ€AØ˜1ÐÐØˆˆ,‰Ø€l„O×Ò˜2ÑÔÐÐÐr(   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É  r6   Úlogicalr4   Ú	characterrg   r=  r"  rº  r   r6  )rÃ   rÖ   rÅ   r©   r¤   Úselectpatternr[  r2   r%  rz  r{  rp  rå  )r3   rç   r  r  re  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©   rW   rÆ   )ÚexprÚexpr2r  s      r)   Úremovespacesr6  I  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ú\)r8  rÍ  ú")rÍ  r9  r°   ú@_@r'   )r0   ÚfragmentÚinsideÚcurrent_quoteÚescapedr¸   s         r)   Úmarkinnerspacesr?  X  s¦   € ð  €HØ€FØ€MØ€GØð ð ˆØ�dŠ?ˆ?˜qÐ$5Ð5Ð5Ø˜‰MˆHØˆGØØð 	˜!˜{Ð*Ð*ØˆMØ�ÒÐØ�ZˆFˆFØ�#ŠXˆX˜&ˆXØ˜ÑˆHØØ�A‰ˆØˆˆØ€Or(   c                 óL  — 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          |¦  «        › d�¦  «         Œ@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#¦  «        ¦  «        ¦  «        }|�rZ|                     ¦   «         }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| d0v 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&= d1|v rGd2|v r8|d2         |d1         k    s&t          d3|›d|d2         ›d|d1         ›d�¦  «         n|d1         |d2<   d'|v r}d4|d'         › d5�}d|vs|d         s|g|d<   n‡|d          	                    |¦  «         |d         D ]:}|dd6…         d7k    r*||k    r$|d         d8= t-          d|›d9|›d:|›d�¦  «          nŒ;n(t          d;||                     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)   rw   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)   rw   zupdatevars.<locals>.<listcomp>—  s    € Ð	EÐ	EÐ	E˜ˆ!�'Š'‰)Œ)Ð	EÐ	EÐ	Er(   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   zupdatevars.<locals>.<listcomp>š  s    € ÐoÐoÐo �1—7’7‘9”9ÐoÐoÐor(   r°   ©rn  z@ @r:  z-updatevars: no name pattern found for entity=r½  rp   r4  r3   z+updatevars: attempt to change the type of "rÇ  rÔ  z". Ignoring.
rs  z0updatevars: attempt to change the kindselector "rÅ  rt  zupdatevars:z*: attempt to change empty charselector to rÁ   z0updatevars: attempt to change the charselector "rv  z/updatevars: attempt to change the typename of "rr  r  r9  r7  r"  )rW   ÚarrayÚinitÚ2rW   rE  r
   r1  r   r*  zupdatevars: "z" is mapped to "r:  z)"
©rÉ  r6   r0  r4   rF  ru  z6updatevars: attempt to change the init expression of "ú
dimension(r;  é	   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¤   rW   r-  r6  r?  rÔ   ræ  r2   rÒ   rq   rB  r   rà  rz  r{  rn   r…  Úlenarraypatternr[  r%  rp  )r3   r  rr  Ú
entitydeclr  r  r  rv  rï   r¸   r/  r÷   ÚsÚelÚel1rÈ  Úe1Úenamer  Únot_has_typespecr‚  re  Ú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Ñ Ô ˆØð 	ÝØVÅÀQÁÄÐVÐVÐVñXô Xð XàÝ˜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�=�=Ø4 b¨¤kÐ4Ð4Ð4�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                 óx  — d }d }d }|�r­| dv rÊt                                |¦  «        }|s"t          dt          |¦  «        › d�¦  «         d S |                     ¦   «         }|d         |d<   |d= t          |                     ¦   «         ¦  «        D ]}||         s||= Œt          |                     ¦   «         ¦  «        D ]\  }}t          |¦  «        ||<   Œ�nß| dk    �rWt                               |¦  «        }|s"t          dt          |¦  «        › d�¦  «         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¦  «        }nCt          dt          | |z   ¦  «        z  ¦  «         n t          dt          |¦  «        › d�¦  «         |||fS )NrH  z1cracktypespec: no kindselector pattern found for r¾   Úkind2r   r1  z1cracktypespec: no charselector pattern found for ÚcharlenÚlenkind)rW   ÚkindrG  Úf2py_lenrg   z\s*\(\s*(?P<name>\w+)\s*\)rp   z'cracktypespec: no typename found in %s
z$cracktypespec: no selector used for )rs  rÖ   r2   rÒ   r%  rz  r{  Úitemsrq   rt  Úlenkindpatternr+  rÃ   rÅ   r×   )	r3   r  r  r  rv  r‚  r  rZ  rT  s	            r)   rð  rð  &  sC  € Ø€JØ€JØ€HØñ 2OØÐ@Ð@Ð@Ý%×+Ò+¨HÑ5Ô5ˆJØð ÝØZÍÈXÉÌÐZÐZÐZñ\ô \ð \à�Ø#×-Ò-Ñ/Ô/ˆJØ(¨Ô1ˆJ�s‰OØ˜7Ð#Ý˜*Ÿ/š/Ñ+Ô+Ñ,Ô,ð &ð &�Ø! !”}ð &Ø" 1˜øÝ˜Z×-Ò-Ñ/Ô/Ñ0Ô0ð .ð .‘��1Ý *¨1¡¤�
˜1‘�ñ.à˜Ò$Ñ$Ý%×+Ò+¨HÑ5Ô5ˆJØð ÝØZÍÈXÉÌÐZÐZÐZñ\ô \ð \à�Ø#×-Ò-Ñ/Ô/ˆ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õ ÐM½4À¹>¼>ÐMÐMÐMÑNÔNÐNØ�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 )Nrr  rI   Ú	automaticr
  r  r+  )r  r  r�  s      r)   r|  r|  a  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 )Nrs  ©rz  r{  ©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 )Nrt  rb  rc  s       r)   r~  r~  Š  s…   € Øð ØˆØð ØˆØ˜TÐ!Ð!Ø"ˆˆ^ÑØˆå�#—(’(‘*”*ÑÔð -ð -ˆØð 	-�A˜T .Ô1Ð1Ð1Ø&)¨!¤fˆD�Ô  Ñ#øØ€Kr(   Úunknownc                 ó   — d| v r| d         S |S )Nrp   r'   )r5  rf  s     r)   Úgetblocknamerh  ™  s   € Ø�€€Ø�VŒ}ÐØ€Nr(   c                 óT   — 	 d| d         › d| d         › d�a d S # t          $ r Y d S w xY w)NzIn: r¢  r¯  rp   r¾   )r    rÊ   )r5  s    r)   Úsetmesstextrj  ¡  sP   € ðØC %¨¤-ÐCÐC°%¸´-ÐCÐCÐCÐÐÐøÝð ð ð Øˆˆðøøøs   ‚ ™
'¦'c                 óz   — i }d| v rt          | d         ¦  «        }d| v r|                     | d         ¦  «         |S )NÚparent_blockr  )Úget_usedictÚupdate)r5  Úusedicts     r)   rm  rm  ª  sH   € Ø€GØ˜ÐÐÝ˜e NÔ3Ñ4Ô4ˆØ�€~€~Ø�Š�u˜U”|Ñ$Ô$Ð$Ø€Nr(   c           
      ó8  — |€i }t          | ¦  «        }|s|S t          |                     ¦   «         ¦  «        D ]à\  }}|                     ¦   «         }|t          vr*t          d|›d|                      d¦  «        ›d�¦  «         ŒLt          |         }t          |¦  «        }|sŒk|rt          d|› d�¦  «         t          |                     ¦   «         ¦  «        D ]>\  }}||v r0t          dt          |¦  «        ›dt          |¦  «        ›d�¦  «         |||<   Œ?Œá|S )	Nzget_useparameters: no module z info used by rp   r¾   zget_useparameters: mapping for z not impl.
z(get_useparameters: overriding parameter z with value from module )
rm  rz  r]  r¤   r   r2   r…  rç  rn   rÒ   )	r5  Ú	param_mapro  ÚusenameÚmappingÚmvarsrŒ  r‚  r  s	            r)   Úget_useparametersru  ³  s\  € ð ÐØˆ	Ý˜%Ñ Ô €GØð ØÐÝ  §¢¡¤Ñ1Ô1ð ð Ñˆ�Ø—-’-‘/”/ˆØ�-Ð'Ð'ÝˆGØ�W�W˜eŸiši¨Ñ/Ô/Ð/Ð/ð1ñ 2ô 2ð 2àÝ˜gÔ&ˆÝ Ñ&Ô&ˆØð 	Øàð 	MÝÐK°gÐKÐKÐKÑLÔLÐLÝ˜Ÿš™œÑ(Ô(ð 	ð 	‰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Ÿ   )Útabrq  ©Ú
postcrack2)ru   Úgrq  ry  s     €€r)   rw   zpostcrack2.<locals>.<listcomp>×  s<   ø€ ð ð ð Øõ ˜!  t¡°yÐAÑAÔAð ð ð r(   úBlock: rp   r¾   r   r4  rs  r[  c                 ó:   •— g | ]}t          |‰d z   ‰¬¦  «        ‘ŒS rx  rz  )ru   Úbrq  ry  s     €€r)   rw   zpostcrack2.<locals>.<listcomp>ê  s<   ø€ ð (ð (ð (Øõ ˜1 #¨¡*¸	ÐBÑBÔBð (ð (ð (r(   r3  )r   rû  rz  rj  r2   ru  r{  )
r5  ry  rq  Úretr4  r­   Úvarr[  ÚvalÚnew_bodys
    ``       r)   r{  r{  Ñ  s[  øø€ õ ð ØˆÝ�%�ÑÔð ðð ð ð ð Øðñ ô ˆàˆ
Ý�ÑÔÐÝˆsÐ,Ð,˜5 œ=Ð,Ð,Ð,¨aÑ0Ô0Ð0àÐÝ% 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|› �|v r|dz   }|› d|› �|v °|› d|› �}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Ÿ   ©ry  rp   rÀ  r5  z0postcrack: Expected block dictionary instead of r®  r}  r¾   r   r4  Úsortvarsr9  r3  r  r
   r7  r8  Ú__user__routinesÚunknown__user__routinesr   rô   r§  Ú_user_interface)r5  r3  r4  rp   r   r¤  )r5  r3  r4  rp   r8  )rû  rz  rj  Ú	postcrackr-  ÚdictrÊ   r²   r2   ÚanalyzeargsÚanalyzecommonÚanalyzevarsÚsortvarnamesr…  Úanalyzebodyr{  rà  rZ   Ú
isexternalr   )r5  r9  ry  ÚgretÚuretr|  ÚuserisdefinedÚuseblockr‚  rp   r8  rt  Úmnamer  r§  rÈ  ÚedefÚjr  ÚbbÚmblocks                        r)   rŠ  rŠ  ñ  s}  € õ �%�ÑÔð ØˆØˆØð 	ð 	ˆ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Ð0Ð0˜u Vœ}Ð0Ð0Ð0°!Ñ4Ô4Ð4Ý˜ÑÔ€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Ø�.�.˜Q�.�. MÐ1Ð1Ø˜‘E�ð �.�.˜Q�.�. MÐ1Ð1à�N�N˜q�N�NˆEØ)°2Ø¨Ð0AÑ)AðCð Cˆ	à�{Ô#ð 	0ð 	0ˆ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øØ˜&Ô!×(Ò(¨Ñ.Ô.Ð.Ð.Ø�e��¥J¨u°Q¬xÑ$8Ô$8�Ø',¨Q¤x�	˜&Ô! !Ñ$øØ�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 )Nry  r   r   zTsortvarnames: failed to compute dependencies because of cyclic dependencies between rÑ  r¾   )rz  r{  r-  rW   rn   rß   )r4  ÚindepÚdepr  r­   r  rb  Úws           r)   r�  r�  P  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           	      óH  — t          | ¦  «        s| S g }t          | d                              ¦   «         ¦  «        D �]Í}g }| d         |         D �]­}t          j        d|t          j        ¦  «        }|�rZg }|                     d¦  «        r?d„ t          |                     d¦  «        ¦  «                             d¦  «        D ¦   «         }t          |                     d¦  «         
                    ¦   «         ¦  «        }|| d         v ryd| d         |         v r?| d         |         d                              d	d
                     |¦  «        › d�¦  «         n]d	d
                     |¦  «        › d�g| d         |         d<   n3|r&dd	d
                     |¦  «        › d�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)   rw   z!analyzecommon.<locals>.<listcomp>~  s6   € ð Sð Sð SØ !ð ŸGšG™IœIð Sð Sð Sr(   r)  rp   r4  rr  rI  r*  r;  z:analyzecommon: failed to extract "<name>[(<dims>)]" from "z" in common /z/.
Ú
commonvars)Ú	hascommonrz  r{  rÃ   rÖ   rÅ   r×   r+  r,  rq   r©   r-  rß   rn   )r5  r¢  r‚  ÚcomvarsrÈ  r÷   r   r­   s           r)   r�  r�  r  sŽ  € Ý�UÑÔð ØˆØ€JÝ�%˜”/×&Ò&Ñ(Ô(Ñ)Ô)ð %ñ %ˆØˆØ�x” Ô#ð 	ñ 	ˆAÝ”ØEÀqÍ"Ì$ñPô PˆAàñ jØ�Ø—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×;Ò;Ø:¨¯ª°$©¬Ð:Ð:Ð:ñ<ô <ð <ð <ð ;¨¯ª°$©¬Ð:Ð:Ð:ð8<˜˜fœ aÔ(¨Ñ4Ð4àð *à"Ð%C°#·(²(¸4±.´.Ð%CÐ%CÐ%CÐ$Dð(F�E˜&”M !Ñ$Ð$ð (*�E˜&”M !Ñ$Ø˜JÐ&Ð&Ø×%Ò% aÑ(Ô(Ð(øà�ÝØhÐQRÐhÐhÐabÐhÐhÐhñjô jð jà�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 )rr  r
  r'   )ru   Úkeyr   s      r)   ú
<dictcomp>zanalyzebody.<locals>.<dictcomp>¡  sB   € ð ð ð áˆC�Ø˜UÐ"Ð" h°e¸JÔ6GÐ&GÐ&Gð 	ˆUà&GÐ&GÐ&Gr(   r4  r3  rl  r5  r´  rp   r9  z
      T©Úas_interfaceÚsaved_interfacerŸ   r…  r¬  rÃ  r  r°   r
   Úpythonmoduler­  )rj  r]  r{  r#   r-  r$   Úcrack2fortrangenrŠ  r…  rÔ   r   r   )r5  r9  ry  Úmaybe_privater3  r  Ú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         €4d }t          dk    r&t          dt	          | d         ¦  «        › d�¦  «         nvt          | d                              ¦   «         ¦  «        D ]N}| d         |                              d¦  «        dvr| d         |         ||<   Œ7| d         |         d         ||<   ŒO||fS )Nr  r   z2buildimplicitrules: no implicit rules for routine rp   r<  r3   )rI   r`  )rj  Údefaultimplicitrulesr   r2   rÒ   rz  r{  r…  )r5  ÚimplicitrulesÚ	attrrulesr‚  s       r)   Úbuildimplicitrulesr´  É  sû   € Ý�ÑÔÐÝ(€MØ€IØ�UÐÐØ�ÔÐ$Ø ˆMÝ˜Š{ˆ{ÝØaÍÈeÐTZÌmÑI\ÔI\ÐaÐaÐañcô cð cøõ ˜% 
Ô+×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|›�¦  «        ‚)z2 Like `eval` but returns only integers and floats zr=)rë  rg   r7   r9   rÚ   )rÈ  r|  rï   rœ   s       r)   Úmyevalr¶  Ü  s?   € åˆQ��1‰Œ€AÝˆA�w„w•3��,ÐÐØˆÝ
�Z˜!�Z�ZÑ
 Ô
 Ð 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!  r:  r;  r"  g      à?g      ø?)NNN)r7   r¶  rÊ   Úgetlincoef_re_1rÖ   rW   rÃ   r’  rÄ   rÅ   r×   )rÈ  Úxsetr¸   Úlen_er«  rd  r÷   re  Úeer  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 ‘]”]�Øð (ØŸHšH XÑ.Ô.ÐHÐH°ÐHÐH°R·X²X¸gÑ5FÔ5FÐHÐH�BØŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&�Ø—Z’Z ‘]”]�Øð (ØŸHšH XÑ.Ô.ÐHÐH°ÐHÐH°R·X²X¸gÑ5FÔ5FÐHÐH�BØŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&¨Ñ*�Ø—Z’Z ‘]”]�Øð (ØŸHšH XÑ.Ô.ÐJÐJ°ÐJÐJ°r·x²xÀÑ7HÔ7HÐJÐJ�BØŸš B™œ�Bð ð (õ ˜2˜r 2Ñ&Ô&�à—Z’Z ‘]”]�Øð (ØŸHšH XÑ.Ô.ÐJÐJ°ÐJÐJ°r·x²xÀÑ7HÔ7HÐJÐJ�BØŸš B™œ�Bð ð (õ ˜B  BÑ'Ô'�Ø˜‘G˜a‘K 1Ò$Ð$¨¨S©°1©¸Ò):Ð):Ø˜a ˜7�N�N�NøøÝð ð ð Ø�ðøøøàˆEñ7	ð8 Ð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          | ¦  «        › d�¦  «         g }||| <   |S )Nry  ru  z)_get_depend_dict: no dependence info for r¾   )r…  ÚisstringÚword_patternr÷  r-  Ú_get_depend_dictr2   rÒ   )rp   r4  ÚdepsÚwordsÚwordrž  s         r)   rÄ  rÄ  .	  s7  € Øˆ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øð$ð	$õ 	ÐJ½DÀ¹J¼JÐJÐJÐJÑKÔKÐKØˆØ€Dˆ�JØ€Lr(   c                 óx   — t          |                      ¦   «         ¦  «        }i }|D ]}t          || |¦  «         Œ|S r,   )rz  r{  rÄ  )r4  ry   Ú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'   )ru   r­   rÉ  s     €r)   rw   z$get_sorted_names.<locals>.<listcomp>U	  s#   ø€ Ð:Ð:Ð:˜Q¨¨kÐ)9Ð)9�qÐ)9Ð)9Ð)9r(   c                 ó   •— g | ]}|‰v ¯|‘Œ	S r'   r'   )ru   rp   r4  s     €r)   rw   z$get_sorted_names.<locals>.<listcomp>[	  s   ø€ Ð3Ð3Ð3�T d¨d l lˆD l l lr(   )rÊ  rz  r{  r-  r]  )r4  ry   rp   Ú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)rb   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   r6  l        rÔ  l            rÓ  é€   é   r   r'   )rœ   r÷   s     r)   Ú_selected_int_kind_funcrÛ  i	  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î  y	  s…   € ð 	ˆ1‚u€uØˆqØˆ2‚v€vØˆqÝÔÑ Ô ×&Ò&Ñ(Ô(€GØ×ÒÐwÑxÔxð Ø�Š7ˆ7Ø�2ð à	
ˆRŠˆØˆrØ	
ˆbŠˆØˆrØˆ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 ) Nr[  Úselected_int_kindÚselected_real_kindrr  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*\)ru  ))z.false.ÚFalse)z.true.ÚTruez
kind("\1")zselected_int_kind(\1)Frs  rô   r
   r   r   r'  rÈ  zAget_parameters[TODO]: implement evaluation of complex expression r¾   c                 ó†   — g | ]>}|                      d ¦  «        ¯|                     d ¦  «                             ¦   «         ‘Œ?S )r  )rŽ   ró  r©   )ru   rM  s     r)   rw   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Ô   ÚsubrW   rÖ   r,  rß   Úisdoublerz  ré  rê  r“  r  Ú	iscomplexr2   r’  rÕ  Ú
param_evalrÊ   rÂ  rû  r7   rò  rŽ  )r4  Úglobal_paramsrŒ  Úg_paramsrp   Ú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   r9  z" in evaluating z (available names: r¶   )Ú_is_kind_numberr,  rë  rû  r²   rÒ   rí  rì  rî  rÊ   rn   rz  r{  )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          | ¦  «        \  }}t          j        | d         ¦  «        Š@| d         dk    r| d         ‰@vri ‰@| d         <   d| d         v r|‰@d= d| d         d         v ri| d         d         d         }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 �]D}	 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    �rNtE          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ˆ@fd7„|#D ¦   «         }%|"t          |%¦  «        f||<   Œð|||<   ‰@|         d                              |¦  «         �ŒFd"‰@|         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         ¦  «        › dM�¦  «         �Œ| d         dNv�rdO| v r$t          j        | d
         | dO         z   ¦  «        }<nt          j        | d
         ¦  «        }<t          ‰@ 	                    ¦   «         ¦  «        D ]@} t_          t„          t†          ¦  «        ‰@|         ¦  «        r|<                     |¦  «         ŒAdP| v rŽ|< 8                    t          | dP          	                    ¦   «         ¦  «        ¦  «         t          | dP          	                    ¦   «         ¦  «        D ],}| dP         |         D ]}||<vr|<                     |¦  «         ŒŒ-| d         dk    r;dE| v r|<                     | dE         ¦  «         n|<                     | d         ¦  «         | d         dQv r'| d         }=|=‰@v rd‰@|=         v r‰@|=         d         | d<   | d         dRk    r4|< 8                    t          ‰@ 	                    ¦   «         ¦  «        ¦  «         t          ‰@ 	                    ¦   «         ¦  «        D ]	}||<vr‰@|= Œ
‰@S )SzH
    Sets correct dimension information for each variable/parameter
    r4  r5  rþ   rp   r
   rr  c                 ó   — h | ]
}|d          ’ŒS ro   r'   )ru   r  s     r)   ú	<setcomp>zanalyzevars.<locals>.<setcomp>
  s   € Ð!CÐ!CÐ!C° ! F¤)Ð!CÐ!CÐ!Cr(   r3  r¼  r9  z[A-Za-z][\w$]*z.*\b%s\br   r3   r  Ú	undefinedz"analyzevars: typespec of variable z is not defined in routine r<  rt  rW   rs  r[  )NNNNNNrJ  r  r   r   r¼   r  ry  r    rx  rÔ  rw  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   zanalyzevars.<locals>.<listcomp>p
  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)   rw   zanalyzevars.<locals>.<listcomp>�
  s    € Ð'_Ð'_Ð'_°a¨¯ª©	¬	Ð'_Ð'_Ð'_r(   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   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)   rw   zanalyzevars.<locals>.<listcomp>�
  s    € ÐMÐMÐM q˜Ÿš™œÐMÐMÐMr(   z4analyzevars: could not parse dimension for variable r¯  r   z@:@r6  Ú1)Úlanguagec                 ó   — | |z
  |z  S r,   r'   )rM  r/  r  s      r)   Úsolve_vzanalyzevars.<locals>.solve_vµ
  s   € Ø01°A±¸©{Ð(:r(   c                 ó0   •— h | ]}|j         ‰v ¯|j         ’ŒS r'   )r  )ru   rM  r4  s     €r)   r  zanalyzevars.<locals>.<setcomp>Â
  s.   ø€ ð *7ð *7ð *7Ø/0Ø'(¤v° ~ ~ð %&¤FØ'5 ~ ~r(   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(   ru  Fzshape(rÑ  r;  z) == TÚinr  r	  rÝ  r*  r¬   r±  ÚpureÚ	recursiver=  r"  rv  zanalyzevars: prefix (z) were not used
)r­  r¬  r¤  r£  r¢  r  )r   rþ   rg   )Drj  r´  rà  r#  r|  r…  r-  ÚKeyErrorrz  r{  rç  ru  rÃ   rÄ   rÖ   r“  r  rÅ   r¤   r2   rÒ   r²   rë  rÊ   Úreverser©   r+  r,  rÔ   rz   Úparam_parserÚ   rø  rW   rÜ  r   ÚExprÚparseÚtostringÚLanguager¹   Ú	as_symbolr  Úlinear_solveÚsymbolsrn  ÚRuntimeErrorÚl_orÚisintent_inÚisintent_inoutÚisintent_inplaceÚisarrayrô  r]  rŽ   rß   rú  rÂ  r  Úisscalarr
  rƒ  rS  rã  r×   rð  Úisintent_callbackÚisintent_aux)Ar5  r²  r³  Úgenr­   r‚  Úsvarsr9  r/  rŒ  Údep_matchesÚ
name_matchr  r÷   Úln0rï   Údimension_exprsr  Údimr  ry  rx  rw  r¸   Útmpr'  Údim_charr  rS  Úd2ÚdsizeÚsolver_and_depsrM  r  r  Úall_symbolsrð   Úv_depsÚn_depsÚn_checksÚ
n_is_inputr  ÚsolverrÅ  Úall_depsÚis_requiredrF  Úv_attrÚaar  ÚprÚpr1ÚispureÚisrecr3   r  r  r  r  rv  Ú
neededvarsrp   r  r   r4  sA                                                                 @@@r)   rŽ  rŽ  	
  sA  øøø€ õ �ÑÔÐÝ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Ð!CÐ!C°U¸6´]Ð!CÑ!CÔ!CÑCð 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Ð$Ð$Ø $ q¤'Ð)Ð)¨j¸DÀ¼GÀJÔ<OÐ.OÐ.OØ ð 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 ð 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ùåØ\µD¸¸x¼Ñ4IÔ4IÐ\Ð\Ð\ñ^ô ^ð ^ùàˆ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£   Ã5DÄ
D ÄD Ç7H È 4H7È6H7ÏO%Ï%
O2Ï1O2Ð5QÑ
Q!Ñ Q!à"`3à3*a áa å8A&gç
h	ç)#h	èh	ÁD3AEÁE
AEÁEAEÁE$AE?ÁE?
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¾   r6  r   rl  zparam_eval: dimension z can't be parsedr   r*  r   r¯  z.param_eval: multidimensional array parameters z not supportedrÐ  r¡   )rë  rÊ   r2   rW   rÚ   r,  r&  rÆ   r7   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Ð#5Ð#5¥S¨¡\¤\°AÑ%5Ð#5Ô6¸$Ò>Ð>ÝÐL°'ÐLÐLÐLÑMÔMÐMØ�q˜�tŒ}×"Ò" 3Ñ'Ô'€HÝ
ˆ8�}„}˜ÒÐà˜A”;×$Ò$ SÑ)Ô)ˆåˆx‰=Œ=˜AÒÐÝ ¨¤¨VÑ4Ô4ˆEÝ˜Q¥ E¡
¤
¨Q¡Ñ/Ô/ˆHˆHå  ¨!¤¨fÑ5Ô5ˆFÝ  ¨!¤¨fÑ5Ô5ˆFÝ�S ™[œ[­#¨f©+¬+¸©/Ñ:Ô:ˆ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
    r:  Nr   r;  r¹  rº  r!  r"  )
rå  Úrfindr7   r&  r²   rÃ   rÄ   rÅ   rÖ   r×   )r'  rŒ  ÚdnameÚddimsrZ   rì  rd  r÷   s           r)   r&  r&  Ñ  s8  € ðr ˆa€x€xà�,�1—6’6˜#‘;”;�,”ˆØ�!—&’&˜‘+”+ ‘/ !§'¢'¨#¡,¤,Ð.Ô/ˆõ •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         | <   nk| |d         vr%|d          	                    |i ¦  «        |d         | <   d
|v r8||d
         |d         z   v r%t          |d         |          d¦  «        |d         | <   | S )Nr4  Úe_rô   r   rÈ  Ú_er9  rœ   r   r7  r8  r  )Úanalyzeargs_re_1rÖ   r´  rè  r¤   rb   Úascii_lowercaseÚdigitsr²   r…  r|  )r/  r5  r9  Úorig_aÚ	a_is_exprr²  r³  ÚatÚnar¸   r‚  s              r)   Ú	expr2namerh  !  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œ}×0Ò0°¸Ñ<Ô<ˆE�&ŒM˜!ÑØ˜%ÐÐ 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 )Nr9  r  r4  r3  rp   r7  r¬   )rj  r´  rh  r-  rz  r]  )r5  r²  rô   r9  r/  r‚  Úargs1r  s           r)   rŒ  rŒ  C  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          | ¦  «        ¦  «        ‚)Nr3   r6   r4   rÉ  )rû  r7   r9   rÉ  r‹  ÚAssertionErrorrÒ   )rœ   s    r)   Ú_ensure_exprdictrm  f  s„   € Ý�!•SÑÔð 'Ø˜IÐ&Ð&Ý�!•UÑÔð $Ø˜FÐ#Ð#Ý�!•WÑÔð 'Ø˜IÐ&Ð&Ý�!•TÑÔð ØˆÝ
�˜a™œÑ
!Ô
!Ð!r(   c                 óÖ  — | |v rt          ||          ¦  «        S |                      ¦   «         } t                               | ¦  «        rddiS t                               | ¦  «        }|rOd|                     ¦   «         v r5|                     d¦  «        r t          dt          | ¦  «        › d�¦  «         ddiS t                               | ¦  «        }|rOd|                     ¦   «         v r5|                     d¦  «        r t          dt          | ¦  «        › d�¦  «         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          | ¦  «        › d�¦  «         |S )Nr3   rÉ  rp   z6determineexprtype: selected kind types not supported (r¶   r6   r4   )ú+rË  r   rÎ  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r'   r©  rª  s     r)   rw   z%determineexprtype.<locals>.<listcomp>…  s    € ÐZÐZÐZ �!—'’'‘)”)ÐZÐZÐZr(   rD  rm  r   r   rr  r   rÒ  r1  r   )r3   rt  z4determineexprtype: could not determine expressions (z) type.
)rm  r©   Údetermineexprtype_re_1rÖ   Údetermineexprtype_re_2r%  r×   r2   rÒ   Údetermineexprtype_re_3r+  r,  Údetermineexprtype_re_4rè  Údetermineexprtype_re_5)r4  r4  Úrulesr÷   ÚoprÈ  r  Úrns           r)   rè  rè  r  sÆ  € Øˆt€|€|Ý  T¤
Ñ+Ô+Ð+Ø�:Š:‰<Œ<€DÝ×#Ò# DÑ)Ô)ð 'Ø˜IÐ&Ð&Ý×$Ò$ TÑ*Ô*€AØð 'Ø�Q—[’[‘]”]Ð"Ð" q§w¢w¨v¡¤Ð"ÝØXÍÈdÉÌÐXÐXÐXñZô Zð Zà˜IÐ&Ð&Ý×$Ò$ TÑ*Ô*€AØð $Ø�Q—[’[‘]”]Ð"Ð" q§w¢w¨v¡¤Ð"ÝØXÍÈdÉÌÐXÐXÐXñZô Zð 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Øð ZÝØXÅ4ÈÁ:Ä:ÐXÐXÐXñ	Zô 	Zð 	Zà€Hr(   r¾   Fc                 óp  — 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 ru| d         }
| d         D ]=}t          || |	¦  «        }t          |
|         ¦  «        s|	                     |¦  «         Œ>| d         d	k    s|	rd
d 	                    |	¦  «        › d�}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 r1d| d         › d�}| d         |	vr|	                     | d         ¦  «         t          | d         |t          z   |¬¦  «        }t!          | | d         |	|t          z   |¬¦  «        }
d}d| v r|sd| d         › �}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
   r5  r´  rp   r©  r   r9  r4  rþ   r:  r*  r;  r  r°   r  Úcallbackúintent(z) r  r  r®  r¬   z	 result (r3  r¢  z! in r  zentry r£  r¦  zend )rj  rû  rz  r#   r$   r­  rh  r5  r-  rß   r{  r   r…  rß  Úuse2fortranÚcommon2fortranÚvars2fortranr]  )r5  ry  rª  r€  r|  r±  rp   r9  Ú	blocktypeÚargslr4  r/  r  r‚  Ú
intent_lstr  r  r¬   r3  ÚmessÚentry_stmtsr  s                         r)   r­  r­  Ÿ  sU  € õ �ÑÔÐØ
€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Ð'Ø)�s—x’x ‘”Ð)Ð)Ð)ˆ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ÐÐØ/˜U 8œ_Ð/Ð/Ð/ˆØ�Œ? %Ð'Ð'Ø�LŠL˜˜xœÑ)Ô)Ð)Ý˜E &œM¨3µ©=À|ÐTÑTÔT€DÝØˆu�VŒ}˜e S­7¡]ÀðOñ Oô O€Dà€DØ�€€˜|€Ø&�u˜V”}Ð&Ð&ˆØ�%ÐÐØˆÝ˜˜wœ×-Ò-Ñ/Ô/Ñ0Ô0ð 	Rð 	R‰DˆAˆqØ(ÐQ¨#µ©-ÐQÐQ¸qÐQÐQÀ3Ç8Â8ÈAÁ;Ä;ÐQÐQÐQˆ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/ )rz  r{  rß   )r  ry  r€  r‚  s       r)   r}  r}  é  s’   € Ø
€CÝ�&—+’+‘-”-Ñ Ô ð Bð BˆØ�Š=ˆ=ØÐ;˜#Ð;Ð; c§h¢h¨v°a¬yÑ&9Ô&9Ð;Ð;ˆCˆCàÐA˜#ÐAÐA qÐAÐA¨C¯HªH°V¸A´YÑ,?Ô,?ÐAÐAˆ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�}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 only:rÜ  r°   z=>rb  )r  ry  r€  r÷   r¸   r‚  s         r)   r|  r|  ó  sj  € Ø
€CÝ�#—(’(‘*”*ÑÔð ð ˆØÐ#�cÐ#Ð#˜qÐ#Ð#Ð#ˆØˆqŒ6�RŠ<ˆ<Øð �s˜2”w #’~�~Ø˜#˜2˜#”h�ØØ�S˜”VÐÐ  A¤ v¤ÐØ�.�.�.ˆCØ�C˜”Fˆ?ˆ?˜s 1œv eœ}ˆ?ØˆAÝ˜#˜aœ& œ-×,Ò,Ñ.Ô.Ñ/Ô/ð ð �Ø˜˜Aœ˜uœ aÔ(Ò(Ð(Ø ˜. !˜. Q˜.˜.�CØ�A�Aà Ð< !Ð< QÐ<Ð<¨#¨a¬&°¬-¸Ô*:Ð<Ð<�CØ�A�AØð 	�3�r”7˜c’>�>Ø�c�r�c”(ˆCøØ€Jr(   c                 ó´   — | d         }g }|D ]J}	 t          ¦   «         d|› �         } || ¦  «        r|                     |¦  «         Œ;# t          $ r Y ŒGw xY w|S )Nr  Ú	isintent_)Úglobalsr-  r$  )r�  rÎ  r€  r  rj  s        r)   Útrue_intent_listr‰    s‰   € Ø
ˆhŒ-€CØ
€CØð #ð #ˆð	#Ý‘	”	Ð. fÐ.Ð.Ô/ˆAð ˆq�‰vŒvð #Ø—
’
˜6Ñ"Ô"Ð"øøõ	 ð 	ð 	ð 	ØˆDð	øøøð
 €Js   �AÁ
AÁAc           	      óä	  — t          | ¦  «         d}g }|D ]!}|| d         v r|                     |¦  «         Œ"d| v r<| d         D ]3}||v r||vr|                     |¦  «         Œ t          d|› d�¦  «         Œ4d| 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|› d�¦  «         �Œ|| d         k    r#| d         dk    s|  
                    d¦  «        r�Œ7d||         vrSd||         v rd||         d         v r||v r	|› |› d|› �}�Œjt          ||         ¦  «         t          d|› d�¦  «         �Œ”||         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�}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/}d0||         v r+|› |› d1d/                     ||         d0         ¦  «        › d�}d/}d2||         v r6t          ||         ¦  «        }|r|› |› d3d/                     |¦  «        › d�}d/}d4||         v r+|› |› d5d/                     ||         d4         ¦  «        › d�}d/}d||         v r+|› |› d6d/                     ||         d         ¦  «        › d�}d/}d7||         v r]||         d7         }||         d         d8v r4	 t          |¦  «        }d|j        › d/|j        › d�}n# t"          $ r Y nw xY w|› d9|› d7|› �}n|› d9|› �}|› |› |› �}�Œ|S ):Nr
   r4  r¢  zvars2fortran: Confused?!: "z" is not defined in vars.
r³  ry  z;vars2fortran: Warning: cross-dependence between variables "z" and "rÆ  r7  zintent(callback) z	external z	optional r3   r   r3  rp   r5  rþ   r   z*vars2fortran: No definition for argument "rl   r¬   rr  r  z(vars2fortran: No typespec for argument "rg   rv  r:  r;  rs  rt  r   )r   r¯  z*(rW   z(len=r[  z,kind=z(kind=r°   c                 ó   — g | ]}|d v¯|‘Œ	S ))r  r'   )ru   rï   s     r)   rw   z vars2fortran.<locals>.<listcomp>m  s,   € ð .ð .ð .˜!Ø Ð,Ð,ð Ø,Ð,Ð,r(   z
intent(in)zintent(out)rÑ  r*  r  rI  r  r{  rx  zcheck(zdepend(ru  )rÉ  r/  z :: )rj  r-  rn   rú  rz  r{  r5  Ú
isoptionalÚshowr2   r…  rß  rß   r‰  rë  r4   ÚimagrÊ   )r5  r4  r9  ry  rª  r€  Únoutr/  r'  rå   r  Úvardefr  r¸   r  rÎ  r  s                    r)   r~  r~    sG  € Ý�ÑÔÐØ
€CØ€DØð ð ˆØ��f”ÐÐØ�KŠK˜‰NŒNˆNøØ�uÐÐØ�|Ô$ð 	Rð 	RˆAØ�DˆyˆyØ˜D�=�=Ø—K’K ‘N”N�NøåØP°!ÐPÐPÐPñRô Rð Rð Rà�UÐÐØ�Š�E˜*Ô%Ñ&Ô&Ð&Øð Ý�d—i’i‘k”kÑ"Ô"ð 	ð 	ˆAØ˜ˆ}ˆ}Ø—’˜A‘”�øØð d$ñ d$ˆØ�t˜A”wÐÐØ˜!”W˜XÔ&ð ið i�Ø˜�9�9 ¨T°!¬WÐ!4Ð!4¸¸dÀ1¼gÀhÔ>OÐ9OÐ9OÝØgÐVWÐgÐgÐ`aÐgÐgÐgñiô ið iøà˜%ÐÐ A¨¨{Ô);Ð$;Ð$;Ý   a¤Ñ)Ô)ð 8ØÐ7˜cÐ7Ð7°AÐ7Ð7�ØÐ+˜#Ð+Ð+¨Ð+Ð+ˆCÝ˜$˜qœ'Ñ"Ô"ð 0ØÐ/˜cÐ/Ð/¨AÐ/Ð/�Ø�Dˆyˆy˜Z¨t°A¬wÐ6Ð6ØØˆDØ˜6”]ð ð �Ø˜˜&œ	’>�> a¨¤j°JÒ&>Ð&>Ø�DØ�EøØð ØØ�Dˆ=ˆ=Ý�‰JŒJˆJÝÐHÀÐHÐHÐHÑIÔIÐIÙØ��f”ÒÐØ�WŒ~ Ò+Ð+¨u¯yªy¸Ñ/BÔ/BÐ+ñ
 Ø˜T !œWÐ$Ð$Ø˜T !œWÐ$Ð$¨°t¸A´w¸zÔ7JÐ)JÐ)JØ˜�9�9Ø Ð3 #Ð3Ð3°Ð3Ð3�CÙÝ��a”‰MŒMˆMÝÐF¸qÐFÐFÐFÑGÔGÐGÙØ�a”˜Ô$ˆØ�VÒÐ 
¨d°1¬gÐ 5Ð 5ØÐ7Ð7  a¤¨Ô!4Ð7Ð7Ð7ˆFØˆØ˜T !œWÐ$Ð$Ø˜A”w˜~Ô.ˆHˆHØ˜t AœwÐ&Ð&Ø˜A”w˜~Ô.ˆHØ�(ˆ?ˆ?Ø˜Œ} 
Ð*Ð*Ø"Ð6Ð6 h¨s¤mÐ6Ð6Ð6��à"Ð4Ð4 X¨c¤]Ð4Ð4��Ø�hÐÐØÐ6Ð6 X¨e¤_Ð6Ð6ˆFØ˜Ð!Ð!Ø"Ð=Ð=¨(°6Ô*:Ð=Ð=Ð=��à"˜˜˜��Ø�xÐÐØÐ9Ð9 h¨vÔ&6Ð9Ð9Ð9ˆFØˆØ˜˜aœÐ Ð ð.ð .˜t Aœw zÔ2ð .ñ .ô .ˆDàð + °Ð 4Ð 4¸È$Ð9NÐ9Nð —’˜MÑ*Ô*Ð*Øð Ø"Ð6Ð6 c§h¢h¨t¡n¤nÐ6Ð6�Ø�Ø˜$˜qœ'Ð!Ð!ØÐN ÐNÐN¨S¯XªX°d¸1´g¸kÔ6JÑ-KÔ-KÐNÐNÐNˆFØˆAØ�t˜A”wÐÐÝ" 4¨¤7Ñ+Ô+ˆCØð ?Ø"Ð> AÐ>Ð>¨c¯hªh°s©m¬mÐ>Ð>Ð>�ØˆAØ�d˜1”gÐÐØÐF ÐFÐF¨¯ª°$°q´'¸'Ô2BÑ)CÔ)CÐFÐFÐFˆFØˆAØ�t˜A”wÐÐØÐH ÐHÐH¨#¯(ª(°4¸´7¸8Ô3DÑ*EÔ*EÐHÐHÐHˆFØˆAØ�$�q”'ˆ>ˆ>Ø�Q”˜”ˆAØ�AŒw�zÔ"Ð&CÐCÐCðÝ˜Q™œ�AØ.˜AœFÐ.Ð. Q¤VÐ.Ð.Ð.�A�AøÝ ð ð ð Ø�DðøøøàÐ+Ð+ AÐ+Ð+¨Ð+Ð+ˆFˆFàÐ'Ð' AÐ'Ð'ˆFØÐ#�cÐ#˜6Ð#Ð#ˆ‰Ø€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__Útraverser{  )Ú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)r5  Ú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 )Nr6  r   )rû  ÚtuplerW   r7   r²   )Úobjs    r)   Ú_is_visit_pairr¢  ¼  s@   € Ý�s�EÑ"Ô"ð /Ý�C‘”˜A’ð/å˜3˜qœ6¥C­ :Ñ.Ô.ð0r(   c                 ó  — t          | ¦  «        r9| d         dk    r| S  || ||g|¢R i |¤Ž}|�t          |¦  «        sJ ‚|S | }| \  }} nd| f}d}t          | t          ¦  «        rKg }t          | ¦  «        D ]8\  }	}
t	          |	|
f|||gz   |g|¢R i |¤Ž\  }}|�|                     |¦  «         Œ9nWt          | t          ¦  «        r@i }|                      ¦   «         D ](\  }}
t	          ||
f|||gz   |g|¢R i |¤Ž\  }}|�|||<   Œ)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   rl  N)r¢  rû  rz  rô  r”  r-  r‹  r]  )r¡  ÚvisitÚparentsr¬   r9  ÚkwargsÚ
new_resultÚparentÚ
result_keyrZ   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Ø+2°f°XÑ+=¸vð#<à,0ð#<ð #<ð #<à4:ð#<ð #<ÑˆI�xð Ð$Ø×!Ò! (Ñ+Ô+Ð+øð	,õ 
�C�Ñ	Ô	ð 	Øˆ
ØŸ)š)™+œ+ð 	0ð 	0‰JˆC�Ý!)¨3°¨,¸Ø*1°V°HÑ*<¸fð";à+/ð";ð ";ð ";à39ð";ð ";Ñˆ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  rx  éýÿÿÿr   r4  r   ru  r¡   NÚcallstatementz
(?<![&])\br¸  r¢   zcharacter_bc_hook[rŸ  z]: replaced `z` -> `z`
)r]  ÚischaracterrÃ   rø  r2   )rY  r¥  r¬   r9  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-verboser6  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 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 rž  )r   )r   )r*  )rf  r,   )r
   N)Nr
   )r
   )NN)r   r   )r¾   F)r
   F)ÖÚ__doc__r�   rà  rÇ   r‰   rê  rÃ   rb   r-   Úpathlibr   r†   ÚImportErrorr
   r   r   ÚauxfuncsÚversionrš  r   r   r   r   r   r   r   r   r   r   r   rÂ   r!   r   r   r    r   rB  r   r   rA  r%   r   r$   r&   r   r#   r"   r   r*   r2   r±  r¸   rm   r|   r­   rq   rz   r}   r€   rÄ   rÅ   r’  r§   r¨   rÏ   rÖ   rª   r¥   rÎ   rš   r®   r�  rÝ   ÚbeforethisafterÚfortrantypesrS  rï  rP  rQ  Úgroupbegins77rÐ   Úgroupbegins90rÑ   Ú	groupendsrN  ÚendifsrM  ÚmoduleproceduresrY  rR  rC  rD  rF  rG  rJ  rK  rL  rE  rH  rI  rU  rX  r\  rT  rV  rW  rO  ÚSr>  r?  rÕ   r0  rZ  Úcrackline_bind_1râ  r@  r[  r+  rp  rƒ  r2  r�  r™  rš  r›  ré  rÕ  r†  rˆ  r�  r–  r�  r]  rü  rã  ræ  rs  rt  r^  rK  r6  r?  rä  rð  r|  r}  r~  rh  rj  rm  ru  r{  rŠ  r�  r�  r�  r´  r¶  r»  rÀ  rÃ  rÄ  rÊ  rÐ  rÖ  rÛ  rî  rç  r  r  r
  rŽ  ra  rû  r&  rh  rŒ  rq  rr  rs  rt  ru  rm  rè  r­  r}  r|  r‰  r~  r’  r˜  rž  r¢  r”  r¹  r-  r“  r•  Úfuncsrj  Úf2Úf3ÚshowblocklistÚargvrï   rn   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ðF€ð 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€àðñ€ð �”Ø�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Ð ðð ð ðð ð ð ð  ð  ð ð  ð  ð u@ð u@ð u@ðpð ð ð(ð (ð (ð8 ˆ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7,ð 7,ð 7,ðvð ð ð ð6ð ð ð ðð ð ð ðð ð ð ðð ð ðð ð ðð ð ð ð<ð ð ð ð@\ð \ð \ð \ð~ð ð ðD'ð 'ð 'ðT*ð *ð *ð *ðZ$ð $ð $ð&!ð !ð !ð !ð �"”*˜^¨R¬TÑ2Ô2€ðAð Að AðH ˆ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ð`  ð ð ð ð ðDð ð ð6 $˜œÐ$6¸¼Ñ=Ô=Ð Ø#˜œÐ$DÀbÄdÑKÔKÐ Ø#˜œØ1°2´4ñ9ô 9Ð à#˜œ M°2´4Ñ8Ô8Ð Ø#˜œÐ$EÀrÄtÑLÔLÐ ð	"ð 	"ð 	"ð )+ð (ð (ð (ð (ðZGð Gð Gð GðTð ð ð ðð ð ð ð0ð ð ðzð zð zð zð@ Ð ð"ð "ð "ð"!ð !ð !ð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Ð1 d d¨1¡g¤gÐ1Ð1Ð1Ñ2Ô2Ð2Ð2Øð 	Øˆ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Ýð ØˆÐE°°µ[Ñ0AÔ0AÐEÐEÐEÀqÑIÔIÐIØˆm˜HÑ%Ô%ˆØˆT•+˜sÑ#Ô#ð 	 qØ�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àð ØˆˆX‰ŒˆˆˆðS ÐðPð s6   ª/ ¯9¸9â2b:â:câ?cãcå fæfæ	f