§
    `Štjé  ã                   óð  — d Z ddgZddlZddlZddlZ ej        dej        ¦  «        Z ej        dej        ¦  «        Z ej        dej        ¦  «        Z	d„ Z
 ej        d	¦  «        Z ej        d
¦  «        Z ej        d¦  «        Zd„ Zd„ Z ej        d¦  «        Zd„ Zd„ Z ej        d¦  «        Zd„ Zd„ Z ej        dej        ¦  «        Zd„ Zd„ Z ed¦  «        Zd„ Zedk    r e¦   «          dS dS )aÆ  

process_file(filename)

  takes templated file .xxx.src and produces .xxx file where .xxx
  is .pyf .f90 or .f using the following template rules:

  '<..>' denotes a template.

  All function and subroutine blocks in a source file with names that
  contain '<..>' will be replicated according to the rules in '<..>'.

  The number of comma-separated words in '<..>' will determine the number of
  replicates.

  '<..>' may have two different forms, named and short. For example,

  named:
   <p=d,s,z,c> where anywhere inside a block '<p>' will be replaced with
   'd', 's', 'z', and 'c' for each replicate of the block.

   <_c>  is already defined: <_c=s,d,c,z>
   <_t>  is already defined: <_t=real,double precision,complex,double complex>

  short:
   <s,d,c,z>, a short form of the named, useful when no <p> appears inside
   a block.

  In general, '<..>' contains a comma separated list of arbitrary
  expressions. If these expression must contain a comma|leftarrow|rightarrow,
  then prepend the comma|leftarrow|rightarrow with a backslash.

  If an expression matches '\<index>' then it will be replaced
  by <index>-th expression.

  Note that all '<..>' forms in a block must have the same number of
  comma-separated entries.

 Predefined named template rules:
  <prefix=s,d,c,z>
  <ftype=real,double precision,complex,double complex>
  <ftypereal=real,double precision,\0,\1>
  <ctype=float,double,complex_float,complex_double>
  <ctypereal=float,double,\0,\1>

Úprocess_strÚprocess_fileé    Nz2(\n|\A)((     (\$|\*))|)\s*(subroutine|function)\bz+\n\s*end\s*(subroutine|function)\b.*(\n|\Z)z\n     (\$|\*)\s*function\bc                 ó"  — g }d}	 t                                | |¦  «        }|€në|                     ¦   «         }t                               | ||                     ¦   «         ¦  «        r4	 |                      d||¦  «        }|dk    rn|}| ||dz   …         dk    rnŒ3|dz  }t                               | |                     ¦   «         ¦  «        }|r|                     ¦   «         dz
  pt          | ¦  «        x}}| 	                    ||f¦  «         �Œ	|S )	z‘ Return a list of tuples for each function or subroutine each
    tuple is the start and end of a subroutine or function to be
    expanded.
    r   TNú
éÿÿÿÿé   z
     $é   )
Úroutine_start_reÚsearchÚstartÚfunction_start_reÚmatchÚendÚrfindÚroutine_end_reÚlenÚappend)ÚastrÚspanlistÚindÚmr   Úir   s          ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/numpy/distutils/from_template.pyÚparse_structurer   :   s  € ð €HØ
€Cð&Ý×#Ò# D¨#Ñ.Ô.ˆØˆ9ØØ—’‘	”	ˆÝ×"Ò" 4¨°·²±´Ñ8Ô8ð 	ðØ—J’J˜t S¨%Ñ0Ô0�Ø�b’5�5ØØ�Ø˜˜!˜A™#˜”; 
Ò*Ð*Øðð 	�‰
ˆÝ×!Ò! $¨¯ª©¬Ñ0Ô0ˆØ�O˜!Ÿ%š%™'œ' !™)Ð0¥s¨4¡y¤yÐ0ˆˆcØ�Š˜ ˜Ñ%Ô%Ð%ñ!&ð" €Oó    z<\s*(\w[\w\d]*)\s*>z<\s*(\w[\w\d]*)\s*=\s*(.*?)\s*>z<\s*((.*?))\s*>c                 óú   — t                                | ¦  «        }i }|D ][}|d                              ¦   «         pt          |¦  «        }|d                              dd¦  «        }t          |¦  «        }|||<   Œ\|S )Nr   r	   ú\,ú@comma@)Únamed_reÚfindallÚstripÚ
unique_keyÚreplaceÚconv)r   ÚrepsÚnamesÚrepÚnameÚreplÚthelists          r   Úfind_repl_patternsr+   Y   sy   € Ý×Ò˜DÑ!Ô!€DØ€EØð ð ˆØ�1Œv�|Š|‰~Œ~Ð2¥¨EÑ!2Ô!2ˆØ�1Œv�~Š~˜e YÑ/Ô/ˆÝ�t‘*”*ˆØˆˆd‰ˆØ€Lr   c                 ój   — t          | ¦  «        }t          j        t          d| ¦  «        d         } | |fS )NÚ r   )r+   ÚreÚsubnr   )r   r&   s     r   Úfind_and_remove_repl_patternsr0   c   s1   € Ý˜tÑ$Ô$€EÝŒ7•8˜R Ñ&Ô& qÔ)€DØ�ˆ;Ðr   z\A\\(?P<index>\d+)\Zc                 óJ  — |                       d¦  «        }d„ |D ¦   «         }t          t          |¦  «        ¦  «        D ]Q}t                               ||         ¦  «        }|r-t          |                     d¦  «        ¦  «        }||         ||<   ŒRd                     |¦  «        S )Nú,c                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )r!   )Ú.0Úxs     r   ú
<listcomp>zconv.<locals>.<listcomp>k   s    € ÐÐÐ�qˆ�Š‰ŒÐÐÐr   Úindex)ÚsplitÚranger   Úitem_rer   ÚintÚgroupÚjoin)r   ÚbÚlr   r   Újs         r   r$   r$   i   s“   € Ø�
Š
�3‰Œ€AØÐ˜AÐÑÔ€AÝ•3�q‘6”6‰]Œ]ð ð ˆÝ�MŠM˜!˜Aœ$ÑÔˆØð 	Ý�A—G’G˜GÑ$Ô$Ñ%Ô%ˆAØ�Q”4ˆAˆa‰DøØ�8Š8�A‰;Œ;Ðr   c                 óz   — t          |                      ¦   «         ¦  «        }d}d}|sd|z  }||v r|dz  }nd}|¯|S )z( Obtain a unique key given a dictionary.Fr	   z__l%sT)ÚlistÚkeys)ÚadictÚallkeysÚdoneÚnÚnewkeys        r   r"   r"   s   s^   € å�5—:’:‘<”<Ñ Ô €GØ€DØ	€AØð Ø˜A‘ˆØ�WÐÐØ�‰FˆAˆAàˆDð ð ð €Mr   z\A\s*(\w[\w\d]*)\s*\Zc                 óÊ  ‡‡‡— |                       dd¦  «        } |                       dd¦  «        } t          | ¦  «        Št                               d| ¦  «        } ˆfd„}t                               || ¦  «        } d }d }i Št
                               | ¦  «        D ]Ý}|‰vr×‰                     ||                     |d ¦  «        ¦  «        }|€t          d|z  ¦  «        ‚||vr| 	                    d¦  «        s|||<   d	„ | 
                    d
¦  «        D ¦   «         }t          |¦  «        }|€
|}|‰|<   |}Œœ||k    r|‰|<   Œ¨t          d|›dd
                     ‰|         ¦  «        ›d|›d|›d�	¦  «         ŒÞ‰s| S ˆˆfd„}	d}
t          |¦  «        D ]#Š|
t
                               |	| ¦  «        dz   z  }
Œ$|
                      dd¦  «        }
|
                      dd¦  «        }
|
S )Nz\>z@rightarrow@z\<z@leftarrow@z<\1>c                 ó2  •— t          |                      d¦  «                             dd¦  «        ¦  «        }t                               |¦  «        rd|z  S d }‰                     ¦   «         D ]}‰|         |k    r|}Œ|€t          ‰¦  «        }|‰|<   d|z  S )Nr	   r   r   z<%s>)r$   r=   r#   Útemplate_name_rer   rD   r"   )Úmobjr*   r(   ÚkeyÚlnamess       €r   Úlistreplzexpand_sub.<locals>.listreplˆ   s¡   ø€ Ý�t—z’z !‘}”}×,Ò,¨U°IÑ>Ô>Ñ?Ô?ˆÝ×!Ò! 'Ñ*Ô*ð 	&Ø˜WÑ%Ð%ØˆØ—;’;‘=”=ð 	ð 	ˆCØ�cŒ{˜gÒ%Ð%Ø�øØˆ<Ý˜fÑ%Ô%ˆDØ"ˆF�4‰LØ˜‰}Ðr   zNo replicates found for <%s>Ú_c                 ó:   — g | ]}|                      d d¦  «        ‘ŒS )r   r2   )r#   )r5   r   s     r   r7   zexpand_sub.<locals>.<listcomp>¢   s&   € ÐJÐJÐJ°!�A—I’I˜i¨Ñ-Ô-ÐJÐJÐJr   r2   z*Mismatch in number of replacements (base <ú=z>) for <z>. Ignoring.c                 ót   •— |                       d¦  «        }‰                     |‰dz   |gz  ¦  «        ‰         S )Nr	   )r=   Úget)rM   r(   ÚkÚruless     €€r   Únamereplzexpand_sub.<locals>.namerepl²   s5   ø€ Ø�zŠz˜!‰}Œ}ˆØ�yŠy˜  !¡ d V™|Ñ,Ô,¨QÔ/Ð/r   r-   z

ú>ú<)r#   r+   r   ÚsubÚlist_reÚtemplate_rer    rU   Ú
ValueErrorÚ
startswithr9   r   Úprintr>   r:   )Úsubstrr&   rP   ÚnumsubsÚ	base_ruleÚrr*   ÚruleÚnumrX   ÚnewstrrV   rO   rW   s              @@@r   Ú
expand_subrh   ‚   sE  øøø€ Ø�^Š^˜E >Ñ2Ô2€FØ�^Š^˜E =Ñ1Ô1€FÝ Ñ'Ô'€FÝ�\Š\˜' 6Ñ*Ô*€Fðð ð ð ð õ �[Š[˜ 6Ñ*Ô*€Fð €GØ€IØ€EÝ× Ò  Ñ(Ô(ð Kð KˆØ�Eˆ>ˆ>Ø—j’j  E§I¢I¨a°Ñ$6Ô$6Ñ7Ô7ˆGØˆÝ Ð!?À1Ñ!EÑFÔFÐFØ˜ˆ~ˆ~ g×&8Ò&8¸Ñ&=Ô&=ˆ~Ø"��a‘ØJÐJ°w·}²}ÀSÑ7IÔ7IÐJÑJÔJˆDÝ�d‘)”)ˆCàˆØ�Ø��a‘Ø�	�	Ø˜’�Ø��a‘�å�à �y�y #§(¢(¨5°Ô+;Ñ"<Ô"<Ð"<Ð"<¸a¸a¸aÀÀÀðJñ Kô Kð Køð ð Øˆð0ð 0ð 0ð 0ð 0ð 0ð €FÝ�7‰^Œ^ð =ð =ˆØ•+—/’/ (¨FÑ3Ô3°fÑ<Ñ<ˆˆà�^Š^˜N¨CÑ0Ô0€FØ�^Š^˜M¨3Ñ/Ô/€FØ€Mr   c                 ó^  — | }d}t          |¦  «        }d}i }|                     t          ¦  «         |D ]k}t          |||d         …         ¦  «        \  }}||z  }|                     |¦  «         |t	          ||d         |d         …         |¦  «        z  }|d         }Œl|||d …         z  }|S )Nr-   r   r	   )r   ÚupdateÚ_special_namesr0   rh   )	Úallstrrg   ÚwritestrÚstructÚoldendr&   r[   Ú
cleanedstrÚdefss	            r   r   r   ¾   sÆ   € Ø€FØ€Hå˜VÑ$Ô$€Fà€FØ€EØ	‡L‚L•Ñ Ô Ð Øð ð ˆÝ8¸ÀÀsÈ1ÄvÀÔ9NÑOÔOÑˆ
�DØ�JÑˆØ�Š�TÑÔÐØ•J˜v c¨!¤f¨S°¬V mÔ4°eÑ<Ô<Ñ<ˆØ�a”&ˆˆØ��v�w�w”Ñ€Hà€Or   z8(\n|\A)\s*include\s*['\"](?P<name>[\w\d./\\]+\.src)['\"]c                 ó\  — t           j                             | ¦  «        }t          | ¦  «        5 }g }|D ]ß}t                               |¦  «        }|r¬|                     d¦  «        }t           j                             |¦  «        s t           j                             ||¦  «        }t           j         	                    |¦  «        r#| 
                    t          |¦  «        ¦  «         Œ´|                     |¦  «         ŒÊ|                     |¦  «         Œà	 d d d ¦  «         n# 1 swxY w Y   |S )Nr(   )ÚosÚpathÚdirnameÚopenÚinclude_src_rer   r=   Úisabsr>   ÚisfileÚextendÚresolve_includesr   )ÚsourceÚdÚfidÚlinesÚliner   Úfns          r   r{   r{   Ó   sF  € Ý
Œ�Š˜ÑÔ€AÝ	ˆf‰Œð #˜ØˆØð 	#ð 	#ˆDÝ×$Ò$ TÑ*Ô*ˆAØð 	#Ø—W’W˜V‘_”_�Ý”w—}’} RÑ(Ô(ð -ÝœŸš a¨Ñ,Ô,�BÝ”7—>’> "Ñ%Ô%ð 'Ø—L’LÕ!1°"Ñ!5Ô!5Ñ6Ô6Ð6Ð6à—L’L Ñ&Ô&Ð&Ð&à—’˜TÑ"Ô"Ð"Ð"ð	#ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð €Ls   ¯C%D!Ä!D%Ä(D%c                 ód   — t          | ¦  «        }t          d                     |¦  «        ¦  «        S )Nr-   )r{   r   r>   )r|   r   s     r   r   r   å   s'   € Ý˜VÑ$Ô$€EÝ�r—w’w˜u‘~”~Ñ&Ô&Ð&r   zÿ
<_c=s,d,c,z>
<_t=real,double precision,complex,double complex>
<prefix=s,d,c,z>
<ftype=real,double precision,complex,double complex>
<ctype=float,double,complex_float,complex_double>
<ftypereal=real,double precision,\0,\1>
<ctypereal=float,double,\0,\1>
c                  óv  — 	 t           j        d         } t          | d¦  «        }t          j                             | ¦  «        \  }}|}t          |d¦  «        }n(# t          $ r t           j        }t           j        }Y nw xY w| 	                    ¦   «         }t          |¦  «        }|                     |¦  «         d S )Nr	   rd   Úw)ÚsysÚargvrv   rs   rt   ÚsplitextÚ
IndexErrorÚstdinÚstdoutÚreadr   Úwrite)Úfiler~   ÚbaseÚextÚnewnameÚoutfilerl   rm   s           r   Úmainr’   ó   s³   € ð	%ÝŒx˜Œ{ˆõ
 �4˜‰oŒoˆÝ”g×&Ò& tÑ,Ô,‰ˆˆsØˆÝ�w Ñ$Ô$ˆˆøõ ð ð ð ÝŒiˆÝ”*ˆˆˆðøøøð �XŠX‰ZŒZ€FÝ˜6Ñ"Ô"€HØ‡M‚M�(ÑÔÐÐÐs   ‚A Á"A>Á=A>Ú__main__)Ú__doc__Ú__all__rs   r…   r.   ÚcompileÚIr
   r   r   r   r]   r   r\   r+   r0   r;   r$   r"   rL   rh   r   rw   r{   r   rk   r’   Ú__name__r4   r   r   ú<module>r™      sÌ  ðð-ð -ð\ ˜.Ð
)€à 	€	€	€	Ø 
€
€
€
Ø 	€	€	€	à�2”:ÐSÐUWÔUYÑZÔZÐ Ø�”ÐJÈBÌDÑQÔQ€Ø�B”JÐ=¸r¼tÑDÔDÐ ðð ð ð6 ˆbŒjÐ/Ñ0Ô0€Øˆ2Œ:Ð8Ñ9Ô9€Ø
ˆ"Œ*Ð'Ñ
(Ô
(€ðð ð ðð ð ð
 ˆ"Œ*Ð,Ñ
-Ô
-€ðð ð ðð ð ð �2”:Ð6Ñ7Ô7Ð ð:ð :ð :ðxð ð ð& �”ÐWÐY[ÔY]Ñ^Ô^€ðð ð ð$'ð 'ð 'ð $Ð#ð %ñ ô €ðð ð ð" ˆzÒÐØ€D�F„F€F€F€Fð Ðr   