
    eI              	      
   U d dl mZ d dlmZm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mZ e	j        rd dlmZ ddlmZ  e	j        d	d
          Z ej        dej        ej        z            ZdzdZ G d de          Z G d de          Z e	j        deee          Z ed           G d de	j         e                               Z! G d d          Z"e G d d
                      Z# ed           G d  d!e#                      Z$ ed           G d" d#e	j         e         e#                      Z% G d$ d%e%e                   Z& G d& d'e%e                   Z' ed           G d( d)e%e                               Z( G d* d+e%e                   Z) ed           G d, d-e)                      Z* G d. d/e*          Z+ ed           G d0 d1e)                      Z, G d2 d3e,          Z- G d4 d5e%          Z. G d6 d7e%          Z/ G d8 d9e%e                   Z0 ed           G d: d;e#                      Z1 ed           G d< d=e#                      Z2 ed           G d> d?e#                      Z3 G d@ dAe#          Z4 ed           G dB dCe#                      Z5 G dD dEe5          Z6 G dF dGe5          Z7 ed           G dH dIe5                      Z8 ed           G dJ dKe5                      Z9 ed           G dL dMe#                      Z: G dN dOe:          Z; G dP dQe:          Z< ed           G dR dSe#                      Z= ed           G dT dUe#                      Z> ed           G dV dWe#                      Z? ed           G dX dYe#                      Z@ ed           G dZ d[e#                      ZA G d\ d]eA          ZB ed           G d^ d_e#                      ZC ed           G d` dae#                      ZD ed           G db dce#                      ZE ed           G dd dee#                      ZF ed           G df dge#                      ZG ed           G dh die#                      ZH ed           G dj dke#                      ZIe	j        redl         ZJdmdndodpdqdrdsdtduZKdveLdw<    G dx dy          ZMdS ){    )annotations)	dataclassfieldN   )MesonException)mlog)Literal)
AstVisitor	BaseNodeTBaseNode)bounda,  
    ( \\U[A-Fa-f0-9]{8}   # 8-digit hex escapes
    | \\u[A-Fa-f0-9]{4}   # 4-digit hex escapes
    | \\x[A-Fa-f0-9]{2}   # 2-digit hex escapes
    | \\[0-7]{1,3}        # Octal escapes
    | \\N\{[^}]+\}        # Unicode characters by name
    | \\[\\'abfnrtv]      # Single-character escapes
    )matchT.Match[str]returnstrc                v    t          j        |                     d                                          d          S )Nr   unicode_escape)codecsdecodegroupencode)r   s    7/usr/lib/python3.11/site-packages/mesonbuild/mparser.pydecode_matchr   *   s+    =Q..002BCCC    c                  0     e Zd ZU dZded<   d fdZ xZS )ParseExceptionNzT.Optional[CodeBlockNode]asttextr   linelinenointcolnor   Nonec                    t                                          t          j        |||                     || _        || _        d S N)super__init__r   	code_liner    r"   )selfr   r   r    r"   	__class__s        r   r'   zParseException.__init__1   s;    dE::;;;


r   )
r   r   r   r   r    r!   r"   r!   r   r#   )__name__
__module____qualname__r   __annotations__r'   __classcell__r*   s   @r   r   r   -   sP         %)C))))         r   r   c                      e Zd ZddZdS )BlockParseExceptionr   r   r   r    r!   r"   
start_linestart_linenostart_colnor   r#   c                   ||k    rKt          j        | d                    ||d                    d|z  d||z
  dz
  z                                 n+t          j        | d||dd|z  z  |||dd|z  z  fz             || _        || _        d S )Nz{}
{}
{}z{}^{}^ _r   z0%s
%s
%s
For a block that started at %d,%d
%s
%sz%s^)r   r'   formatr    r"   )r)   r   r   r    r"   r3   r4   r5   s           r   r'   zBlockParseException.__init__8   s&    \!! #D,*=*=dD(//Z]`kZkmpty  }H  uH  KL  uL  nM  KN  KN  +O  +O  P  P  P  P #D*aeikoqvz}  AF  {F  rG  IU  Wb  dn  pu  y|  J  yJ  pK  eL  +L  M  M  M


r   N)r   r   r   r   r    r!   r"   r!   r3   r   r4   r!   r5   r!   r   r#   )r+   r,   r-   r'    r   r   r2   r2   7   s(             r   r2   TV_TokenTypesF)eqc                  ^    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ddZdS )Tokenr   tidfilenamer!   
line_startr    r"   T.Tuple[int, int]bytespanr;   valueotherobjectr   boolc                    t          |t                    r| j        |k    S t          |t                    r| j        |j        k    S t          S r%   )
isinstancer   r?   r>   NotImplemented)r)   rE   s     r   __eq__zToken.__eq__d   sH    eS!! 	)8u$$u%% 	)8uy((r   N)rE   rF   r   rG   )r+   r,   r-   r.   rK   r:   r   r   r>   r>   Z   so         HHHMMMOOOKKKJJJ     r   r>   c                  &    e Zd ZddZddZdd
ZdS )Lexercoder   c                   || _         h d| _        dh| _        dt          j        v | _        | j        r| j                            ddh           g dt          j        d          fdt          j        d	t          j	                  fd
t          j        d          fdt          j        d          fdt          j        d          fdt          j        d          fdt          j        d          fdt          j        dt          j	                  fdt          j        d          fdt          j        d          fdt          j        d          fdt          j        d          fdt          j        d          fd t          j        d!          fd"t          j        d#          fd$t          j        d%          fd&t          j        d'          fd(t          j        d)          fd*t          j        d+          fd,t          j        d-          fd.t          j        d/          fd0t          j        d1          fd2t          j        d3          fd4t          j        d5          fd6t          j        d7          fd8t          j        d9          fd:t          j        d;          fd<t          j        d=          fd>t          j        d?          fd@t          j        dA          fdBt          j        dC          fdDt          j        dE          fdFt          j        dG          fdHt          j        dI          f| _
        d S )JN>   ifinorandnotelifelsetruebreakendiffalseforeachcontinue
endforeachr   MESON_RUNNING_IN_PROJECT_TESTStestcaseendtestcase
whitespacez[ \t]+multiline_fstringzf'''(.|\n)*?'''fstringzf'([^'\\]|(\\.))*'idz[_a-zA-Z][_0-9a-zA-Z]*numberz30[bB][01]+|0[oO][0-7]+|0[xX][0-9a-fA-F]+|0|[1-9]\d*eol_contz\\[ \t]*(#.*)?\neolz\nmultiline_stringz'''(.|\n)*?'''commentz#.*lparenz\(rparenz\)lbracketz\[rbracketz\]lcurlz\{rcurlz\}dblquote"stringz'([^'\\]|(\\.))*'comma,
plusassignz\+=dotz\.plusz\+dash-starz\*percent%fslash/colon:equal==nequal!=assign=le<=lt<ge>=gt>questionmarkz\?)rN   keywordsfuture_keywordsosenvironin_unit_testupdaterecompileMtoken_specification)r)   rN   s     r   r'   zLexer.__init__l   s   	4 4 4 !)z<
J 	>M  *m!<===$$
2:i001$$
 !"*-?"F"FG$$
 
#899:	$$

 2:6778$$
 rz"XYYZ$$
 $7889$$
 BJu%%&$$
  ,=rt!D!DE$$
 
6**+$$
 rz%(()$$
 rz%(()$$
 E**+$$
 E**+$$
 bj''($$
  bj''(!$$
" D))*#$$
$ rz"6778%$$
& bj&&''$$
( 2:f--.)$$
* BJu%%&+$$
, RZ&&'-$$
. RZ%%&/$$
0 RZ&&'1$$
2 
4(()3$$
4 rz$''(5$$
6 bj&&'7$$
8 bj''(9$$
: rz%(();$$
< rz$''(=$$
> 2:e$$%?$$
@ 2:d##$A$$
B 2:e$$%C$$
D 2:d##$E$$
F RZ../G$$
   r   rA   r!   r   c                R    | j         || j                             d|                   S )N
)rN   find)r)   rA   s     r   getlinezLexer.getline   s$    yDINN4$D$DDEEr   r@   T.Generator[Token, None, None]c           
   #    K   d}d}d}d}d}d}d}|t          | j                  k     rd}	d}
| j        D ]u\  }}|                    | j        |          }|rQ|}|}|                                |z
  }d}	|}|                                }|}||f}|                                }
|dk    r|dz  }n|dk    r|dz  }n|dk    r|dz  }n|d	k    r|dz  }n|d
k    r|dz  }n|dk    r|dz  }n|dk    r%t          d|                     |          ||          |dv rz|
	                    d          dk    rNd}t          j        t          j        ||                     |          |          t          |||                     |
|dk    rdndd         }
n|dv rz|
|dk    rdndd         }
|
                    d          }t          |          dk    r?|t          |          dz
  z  }|                                t          |d                   z
  }nv|dk    r
|dz  }|}d}nf|dk    r|dz  }|}|dk    s|dk    s|dk    rd}nD|dk    r>|
| j        v r|
}n2|
| j        v r)t          j        d|
 dt          |||                     t#          |||||||
          V   nw|	s%t          d |                     |          ||          |t          | j                  k     d S d S )!Nr   r   F Trj   rk   rl   rm   rn   ro   rp   z3Double quotes are not supported. Use single quotes.>   rr   rc   r   zNewline character in a string detected, use ''' (three single quotes) for multiline strings instead.
This will become a hard error in a future Meson release.locationrc      >   rh   rb   rb         rf   ra   rg   rd   zIdentifier 'zG' will become a reserved keyword in a future release. Please rename it.lexer)lenrN   r   r   startendr   r   r   r   r   warningr(   r   splitr   r   r>   )r)   r@   rA   r    loc	par_countbracket_count
curl_countcolmatchedrD   r?   regmocurlinecurline_start
span_startspan_endrC   msgliness                        r   lexz	Lexer.lex   s     
	
C	NN""GE"6 8 8
cYYty#.. 6$G$.M((**z1C"G!$J&&((C"H *H5HHHJJEh!Q		!Q		
**%*
**%*"a

"a


**,-bdhdpdpq{d|d|  E  GJ  K  K  K 555 ::d++r11$^C !LT\\*=U=UWZ)[)[fnouwz  }E  gF  gF  G  G  G  G %3)+;+;aa2&E F III %32E+E+Eaa1R&O P %D 1 1u::>>"c%jj1n4F)+Cb	NN)BJ
**!%(
*!%(
$q==MA,=,=a".C DM11"'CC$(<<< $  .KE  .K  .K  .K6>vsH6U6U!W !W !W !WX}gsHV[\\\\\Em6n  U$Wdll:.F.FPSTTT{ C	NN""""""r   N)rN   r   )rA   r!   r   r   )r@   r   r   r   )r+   r,   r-   r'   r   r   r:   r   r   rM   rM   k   sa        -
 -
 -
 -
^F F F FEU EU EU EU EU EUr   rM   c                      e Zd ZU ded<   ded<    ed          Zded<    ed          Zded<    ed          Zded	<    ed          Zd
ed<   	 dddZ	ddZ
ddZdS )r   r!   r    r"   Fhashr   r@   
end_lineno	end_colnoT.Optional[WhitespaceNode]whitespacesNT.Optional[int]r   r#   c                    || _         || _        || _        ||n|| _        ||n|| _        d | _        d| _        d| _        d| _        d S )Nr   r   )	r    r"   r@   r   r   r   levelast_idcondition_level)r)   r    r"   r@   r   r   s         r   r'   zBaseNode.__init__   s]    
 (2(>**F&/&; 
 r   visitor'AstVisitor'c                    d                     t          |           j                  }t          ||          r,t	          ||          }t          |          r ||            d S d S d S )Nzvisit_{})r9   typer+   hasattrgetattrcallable)r)   r   fnamefuncs       r   acceptzBaseNode.accept   sr    !!$t**"5667E"" 	7E**D~~ T




	 	 r   tokenr>   c                t    | j         t          |          | _         d S | j                             |           d S r%   )r   WhitespaceNodeappendr)   r   s     r   append_whitespaceszBaseNode.append_whitespaces  s>    #-e44D##E*****r   )NN)r    r!   r"   r!   r@   r   r   r   r   r   r   r#   )r   r   r   r#   r   r>   r   r#   )r+   r,   r-   r.   r   r@   r   r   r   r'   r   r   r:   r   r   r   r      s         KKKJJJEu%%%H%%%%e'''J''''U&&&I&&&&.3e.?.?.?K???? SW! ! ! ! !   + + + + + +r   T)unsafe_hashc                  4     e Zd ZU ded<   d	 fdZd
dZ xZS )r   r   rD   r   
Token[str]c                    t                                          |j        |j        |j                   d| _        |                     |           d S Nr   )r&   r'   r    r"   r@   rD   r   r)   r   r*   s     r   r'   zWhitespaceNode.__init__  sD    u{ENCCC
Er   r   r#   c                0    | xj         |j         z  c_         d S r%   )rD   r   s     r   r   zWhitespaceNode.append  s    

ek!



r   r   r   )r   r   r   r#   )r+   r,   r-   r.   r'   r   r/   r0   s   @r   r   r   
  s^          JJJ     
" " " " " " " "r   r   c                  N     e Zd ZU ded<    ed          Zded<   d
 fd	Z xZS )ElementaryNoder;   rD   Fr   rB   rC   r   Token[TV_TokenTypes]c                    t                                          |j        |j        |j                   |j        | _        |j        | _        d S r%   )r&   r'   r    r"   r@   rD   rC   r   s     r   r'   zElementaryNode.__init__  s;    u{ENCCC[
r   r   r   )r+   r,   r-   r.   r   rC   r'   r/   r0   s   @r   r   r     sk          "'%U"3"3"3H3333' ' ' ' ' ' ' ' ' 'r   r   c                      e Zd ZdS )BooleanNodeNr+   r,   r-   r:   r   r   r   r   "          Dr   r   c                      e Zd ZdS )IdNodeNr   r:   r   r   r   r   %  r   r   r   c                  :    e Zd ZU  ed          Zded<   d	dZdS )

NumberNodeFr   r   	raw_valuer   r   c                    t                               | |j        |j        |j                   |j        | _        t          |j        d          | _        |j        | _        d S )Nr   )base)	r   r'   r    r"   r@   rD   r   r!   rC   r   s     r   r'   zNumberNode.__init__-  sN    $ek5>JJJ1---
r   Nr   )r+   r,   r-   r   r   r.   r'   r:   r   r   r   r   (  sJ          U&&&I&&&&' ' ' ' ' 'r   r   c                      e Zd ZdS )BaseStringNodeNr   r:   r   r   r   r   3  r   r   r   c                  F     e Zd ZU  ed          Zded<   dd fd
Z xZS )
StringNodeFr   r   r   Tr   r   escaperG   c                    t                                          |           |r%t                              t          |j                  n|j        | _        |j        | _        d S r%   )r&   r'   ESCAPE_SEQUENCE_SINGLE_REsubr   rD   r   )r)   r   r   r*   s      r   r'   zStringNode.__init__;  sP    QWh.22<MMM]b]h
r   )T)r   r   r   rG   )r+   r,   r-   r   r   r.   r'   r/   r0   s   @r   r   r   6  sd          U&&&I&&&&% % % % % % % % % % %r   r   c                      e Zd ZdS )FormatStringNodeNr   r:   r   r   r   r   @  r   r   r   c                        e Zd Zd fdZ xZS )MultilineStringNoder   r   c                b    t                                          |           |j        | _        d S r%   )r&   r'   rD   r   s     r   r'   zMultilineStringNode.__init__F  s(    [


r   r   )r+   r,   r-   r'   r/   r0   s   @r   r   r   C  s=        ! ! ! ! ! ! ! ! ! !r   r   c                      e Zd ZdS )MultilineFormatStringNodeNr   r:   r   r   r   r   J  r   r   r   c                      e Zd ZdS )ContinueNodeNr   r:   r   r   r  r  M  r   r   r  c                      e Zd ZdS )	BreakNodeNr   r:   r   r   r  r  P  r   r   r  c                      e Zd ZdS )
SymbolNodeNr   r:   r   r   r  r  S  r   r   r  c                       e Zd ZU  ed          Zded<    ed          Zded<    ed          Zded<    ed          Zded	<   d fdZ	ddZ
ddZd dZd!dZd"dZd"dZd#dZd"dZ xZS )$ArgumentNodeFr   T.List[BaseNode]	argumentsT.List[SymbolNode]commascolumnszT.Dict[BaseNode, BaseNode]kwargsr   r   c                    t                                          |j        |j        |j                   g | _        g | _        g | _        i | _        d| _	        d S )NF)
r&   r'   r    r"   r@   r
  r  r  r  order_errorr   s     r   r'   zArgumentNode.__init__^  sO    u{ENCCC r   	statementr   r   r#   c                    |                                  dk    rd| _        t          |t                    s|g| j        z   | _        d S d S Nr   T
num_kwargsr  rI   	EmptyNoder
  r)   r  s     r   prependzArgumentNode.prependf  sO    ??q  #D)Y// 	:'[4>9DNNN	: 	:r   c                    |                                  dk    rd| _        t          |t                    s| xj        |gz  c_        d S d S r  r  r  s     r   r   zArgumentNode.appendl  sQ    ??q  #D)Y// 	*NNyk)NNNN	* 	*r   namer   rD   c                    t          fd| j        D                       r3t          j        dj         d|            t          j        d           || j        <   d S )Nc              3  b   K   | ])}t          |t                    oj        |j        k    V  *d S r%   )rI   r   rD   ).0xr  s     r   	<genexpr>z)ArgumentNode.set_kwarg.<locals>.<genexpr>s  s;      VVQ
1f%%?$**?VVVVVVr   zKeyword argument "z" defined multiple times.r   z/This will be an error in future Meson releases.)anyr  r   r   rD   r)   r  rD   s    ` r   	set_kwargzArgumentNode.set_kwargr  sr    VVVV$+VVVVV 	LLSdjSSS^bccccLJKKK!Dr   c                    || j         |<   d S r%   )r  r!  s      r   set_kwarg_no_checkzArgumentNode.set_kwarg_no_checkx  s    !Dr   r!   c                *    t          | j                  S r%   )r   r
  r)   s    r   num_argszArgumentNode.num_args{  s    4>"""r   c                *    t          | j                  S r%   )r   r  r&  s    r   r  zArgumentNode.num_kwargs~  s    4;r   rG   c                    | j         S r%   )r  r&  s    r   incorrect_orderzArgumentNode.incorrect_order  s    r   c                *    |                                  S r%   )r'  r&  s    r   __len__zArgumentNode.__len__      }}r   r   )r  r   r   r#   )r  r   rD   r   r   r#   )r  r   rD   r   r   r#   )r   r!   )r   rG   )r+   r,   r-   r   r
  r.   r  r  r  r'   r  r   r"  r$  r'  r  r*  r,  r/   r0   s   @r   r  r  V  sY         #(%U"3"3"3I3333!&E!2!2!2F2222"'%U"3"3"3G3333).E):):):F::::! ! ! ! ! !: : : :* * * *" " " "" " " "# # # #                     r   r  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )	ArrayNoder  rl   r  argsrm   c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        d S Nr   )r   r   )r&   r'   r    r"   r@   rl   r0  rm   )r)   rl   r0  rm   r*   s       r   r'   zArrayNode.__init__  s\    (.$-T\Tcowo}~o  	A  	A  	A 	 r   )rl   r  r0  r  rm   r  r+   r,   r-   r.   r'   r/   r0   s   @r   r/  r/    se          ! ! ! ! ! ! ! ! ! !r   r/  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )DictNoder  rn   r  r0  ro   c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        d S r2  )r&   r'   r    r"   r@   rn   r0  ro   )r)   rn   r0  ro   r*   s       r   r'   zDictNode.__init__  sQ    u{DMelfkfqrsfsttt
	


r   )rn   r  r0  r  ro   r  r3  r0   s   @r   r5  r5    se                   r   r5  c                      e Zd ZdS )r  Nr   r:   r   r   r  r    r   r   r  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )BinaryOperatorNoder   leftr  operatorrightc                    t                                          |j        |j        |j                   || _        || _        || _        d S r%   )r&   r'   r    r"   r@   r:  r;  r<  )r)   r:  r;  r<  r*   s       r   r'   zBinaryOperatorNode.__init__  s>    dj$-@@@	 


r   )r:  r   r;  r  r<  r   r3  r0   s   @r   r9  r9    s_          NNNOOO         r   r9  c                      e Zd ZdS )OrNodeNr   r:   r   r   r?  r?    r   r   r?  c                      e Zd ZdS )AndNodeNr   r:   r   r   rA  rA    r   r   rA  c                  ,     e Zd ZU ded<   d	 fdZ xZS )
ComparisonNodeCOMPARISONSctyper:  r   r;  r  r<  c                \    t                                          |||           || _        d S r%   )r&   r'   rE  )r)   rE  r:  r;  r<  r*   s        r   r'   zComparisonNode.__init__  s*    x///


r   )rE  rD  r:  r   r;  r  r<  r   r3  r0   s   @r   rC  rC    sM                   r   rC  c                  ,     e Zd ZU ded<   d	 fdZ xZS )
ArithmeticNoder   	operationr:  r   r;  r  r<  c                \    t                                          |||           || _        d S r%   )r&   r'   rI  )r)   rI  r:  r;  r<  r*   s        r   r'   zArithmeticNode.__init__  s*    x///"r   )rI  r   r:  r   r;  r  r<  r   r3  r0   s   @r   rH  rH    sJ          NNN# # # # # # # # # #r   rH  c                  6     e Zd ZU ded<   ded<   d fdZ xZS )	UnaryOperatorNoder  r;  r   rD   r   r   c                    t                                          |j        |j        |j                   || _        || _        d S r%   )r&   r'   r    r"   r@   r;  rD   )r)   r   r;  rD   r*   s       r   r'   zUnaryOperatorNode.__init__  s7    u{ENCCC 


r   )r   r   r;  r  rD   r   r3  r0   s   @r   rL  rL    sV          OOO         r   rL  c                      e Zd ZdS )NotNodeNr   r:   r   r   rO  rO    r   r   rO  c                      e Zd ZdS )
UMinusNodeNr   r:   r   r   rQ  rQ    r   r   rQ  c                  n     e Zd ZU  ed          Zded<    ed          Zded<   d fd	ZddZ xZ	S )CodeBlockNodeFr   r   pre_whitespacesr	  r   r   r   c                    t                                          |j        |j        |j                   d | _        g | _        d S r%   )r&   r'   r    r"   r@   rT  r   r   s     r   r'   zCodeBlockNode.__init__  s8    u{ENCCC#


r   r>   r   r#   c                    | j         r"| j         d                             |           d S | j        t          |          | _        d S | j                            |           d S )Nr   )r   r   rT  r   r   r   s     r   r   z CodeBlockNode.append_whitespaces  sh    : 	/JrN--e44444!)#1%#8#8D    ''.....r   r   r   )
r+   r,   r-   r   rT  r.   r   r'   r   r/   r0   s   @r   rS  rS    s          38%U2C2C2COCCCC#e///E////     
/ / / / / / / /r   rS  c                  J     e Zd ZU ded<   ded<   ded<   ded<   d fdZ xZS )		IndexNoder   iobjectr  rl   indexrm   c                    t                                          |j        |j        |j                   || _        || _        || _        || _        d S r%   )	r&   r'   r    r"   r@   rY  rl   rZ  rm   )r)   rY  rl   rZ  rm   r*   s        r   r'   zIndexNode.__init__  sF    8HIII 
 r   )rY  r   rl   r  rZ  r   rm   r  r3  r0   s   @r   rX  rX    sn          OOO! ! ! ! ! ! ! ! ! !r   rX  c                  ^     e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   d fdZ xZS )
MethodNoder   source_objectr  rv   r   r  lparr  r0  rparc                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        || _        || _	        || _
        d S r2  )r&   r'   r    r"   r@   r^  rv   r  r_  r0  r`  )r)   r^  rv   r  r_  r0  r`  r*   s          r   r'   zMethodNode.__init__  sg    dj$-DKcgcmnocoppp*						r   )r^  r   rv   r  r  r   r_  r  r0  r  r`  r  r3  r0   s   @r   r]  r]    s          OOOLLL         r   r]  c                  J     e Zd ZU ded<   ded<   ded<   ded<   d	 fdZ xZS )
FunctionNoder   	func_namer  r_  r  r0  r`  c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _	        || _
        d S r2  )r&   r'   r    r"   r@   r   r   rd  r_  r0  r`  )r)   rd  r_  r0  r`  r*   s        r   r'   zFunctionNode.__init__  sq    )9?I<N[_[jvz  wE  FG  wG  	H  	H  	H"					r   )rd  r   r_  r  r0  r  r`  r  r3  r0   s   @r   rc  rc    sq                   r   rc  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )	AssignmentNoder   var_namer  r;  r   rD   c                    t                                          |j        |j        |j                   || _        || _        || _        d S r%   )r&   r'   r    r"   r@   rh  r;  rD   )r)   rh  r;  rD   r*   s       r   r'   zAssignmentNode.__init__&  s?    (.(:KLLL  


r   )rh  r   r;  r  rD   r   r3  r0   s   @r   rg  rg    sb          OOO         r   rg  c                      e Zd ZdS )PlusAssignmentNodeNr   r:   r   r   rk  rk  ,  r   r   rk  c                       e Zd ZU  ed          Zded<    ed          Zded<    ed          Zded<    ed          Zded	<   d
ed<   ded<    ed          Z	ded<   d fdZ
 xZS )ForeachClauseNodeFr   r  foreach_T.List[IdNode]varnamesr  r  columnr   itemsrS  blockr]   c                    t                                          |j        |j        |j                   || _        || _        || _        || _        || _	        || _
        || _        d S r%   )r&   r'   r    r"   r@   rn  rp  r  rq  rr  rs  r]   )	r)   rn  rp  r  rq  rr  rs  r]   r*   s	           r   r'   zForeachClauseNode.__init__:  s[    (.(:KLLL  

$r   )rn  r  rp  ro  r  r  rq  r  rr  r   rs  rS  r]   r  )r+   r,   r-   r   rn  r.   rp  r  rq  r]   r'   r/   r0   s   @r   rm  rm  /  s          !5e,,,H,,,,$u%000H0000!&E!2!2!2F2222E***F****OOO"U...J....% % % % % % % % % %r   rm  c                  @     e Zd ZU ded<   ded<   ded<   d
 fd	Z xZS )IfNoder  if_r   	conditionrS  rs  linenodeif_nodec                    t                                          |j        |j        |j                   || _        || _        || _        d S r%   )r&   r'   r    r"   r@   rw  rx  rs  )r)   ry  rz  rx  rs  r*   s        r   r'   zIfNode.__init__L  s?    (.(:KLLL"


r   )ry  r   rz  r  rx  r   rs  rS  r3  r0   s   @r   rv  rv  E  sb          OOO         r   rv  c                  6     e Zd ZU ded<   ded<   d fdZ xZS )ElseNoder  else_rS  rs  c                    t                                          |j        |j        |j                   || _        || _        d S r%   )r&   r'   r    r"   r@   r~  rs  )r)   r~  rs  r*   s      r   r'   zElseNode.__init__X  s7    u{ENCCC



r   )r~  r  rs  rS  r3  r0   s   @r   r}  r}  R  sY                   r   r}  c                  X     e Zd ZU  ed          Zded<   ded<   ded<   d fdZ xZS )IfClauseNodeFr   zT.List[IfNode]ifszT.Union[EmptyNode, ElseNode]	elseblockr  rY   ry  r   c                    t                                          |j        |j        |j                   g | _        t          |j        |j        |j                  | _        d | _        d S r%   )	r&   r'   r    r"   r@   r  r  r  rY   )r)   ry  r*   s     r   r'   zIfClauseNode.__init__d  sR    (.(:KLLL"8?HNHDUVV


r   )ry  r   )r+   r,   r-   r   r  r.   r'   r/   r0   s   @r   r  r  ]  sw           %U+++C++++++++         r   r  c                  J     e Zd ZU ded<   ded<   ded<   ded<   d	 fdZ xZS )
TestCaseClauseNoder  r_   r   rx  rS  rs  r`   c                    t                                          |j        |j        |j                   || _        || _        || _        || _        d S r%   )	r&   r'   r    r"   r@   r_   rx  rs  r`   )r)   r_   rx  rs  r`   r*   s        r   r'   zTestCaseClauseNode.__init__r  sJ    )9?I<NOOO "
&r   )r_   r  rx  r   rs  rS  r`   r  r3  r0   s   @r   r  r  j  sq          ' ' ' ' ' ' ' ' ' 'r   r  c                  T     e Zd ZU ded<   ded<   ded<   ded<   ded<   d	 fdZ xZS )
TernaryNoder   rx  r  r   	trueblockrq  
falseblockc                    t                                          |j        |j        |j                   || _        || _        || _        || _        || _	        d S r%   )
r&   r'   r    r"   r@   rx  r   r  rq  r  )r)   rx  r   r  rq  r  r*   s         r   r'   zTernaryNode.__init__  sO    )9?I<NOOO"("$r   )
rx  r   r   r  r  r   rq  r  r  r   r3  r0   s   @r   r  r  y  s}          % % % % % % % % % %r   r  c                  p     e Zd ZU  ed          Zded<   ded<    ed          Zded<   d	 fdZ xZS )
ParenthesizedNodeFr   r  r_  r   innerr`  c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        d S r2  )r&   r'   r    r"   r@   r_  r  r`  )r)   r_  r  r`  r*   s       r   r'   zParenthesizedNode.__init__  sQ    dj%.T[dhdnopdpqqq	
			r   )r_  r  r  r   r`  r  )	r+   r,   r-   r   r_  r.   r`  r'   r/   r0   s   @r   r  r    s          u%(((D((((OOOu%(((D((((         r   r  )r   r   r   r   r   r   rQ   notinr   r   r   r   r   r   rQ   r  )r   r   r   r   r   r   rQ   znot inzT.Mapping[str, COMPARISONS]comparison_mapc                     e Zd Zd>dZd?dZd@dZdAdZdBdZdCdZdBdZ	dDdZ
dEdZdFdZdFdZdFdZdFd ZdFd!ZdFd"ZdFd#ZdFd$ZdFd%ZdFd&ZdFd'ZdFd(ZdGd*ZdGd+ZdHd.ZdId0ZdJd2ZdKd4ZdLd6ZdMd8ZdNd:Z dFd;Z!dEd<Z"d=S )OParserrN   r   r@   c           	         t          |          | _        | j                            |          | _        t	          ddddddd           | _        | j        | _        g | _        |                                  d| _	        d S )Neofr   r   r   r   F)
rM   r   r   streamr>   currentprevious
current_wsgetsym
in_ternary)r)   rN   r@   s      r   r'   zParser.__init__  sg    4[[
jnnX..#E2q!QEE)+r   	node_typeT.Type[BaseNodeT]r0  T.Anyr  r   r   c                b     ||i |}| j         D ]}|                    |           g | _         |S r%   )r  r   )r)   r  r0  r  nodews_tokens         r   create_nodezParser.create_node  sJ    y$)&)) 	. 	.H##H----r   r#   c           
         | j         | _        	 t          | j                  | _         | j         j        dv rZ| j                            | j                    | j         j        dk    rd S t          | j                  | _         | j         j        dv Xd S d S # t          $ rb t          dd| j         j	        | j         j
        | j         j        | j         j        d         z   | j         j        d         z
  dd           | _         Y d S w xY w)N>   rg   ri   ra   rg   r  r   r   r   r  )r  r  nextr  r?   r  r   StopIterationr>   rA   r    r"   rC   r&  s    r   r  zParser.getsym  s?   
	r,,DL,"&FFF&&t|444<#u,,E#DK00	 ,"&FFFFFFF  	r 	r 	r DL,CT\EXZ^ZfZloso{  pE  FG  pH  [H  KO  KW  K`  ab  Kc  [c  ek  mq  r  rDLLLL	rs   AB &'B A(C=<C=c                J    | j                             | j        j                  S r%   )r   r   r  rA   r&  s    r   r   zParser.getline  s    z!!$,"9:::r   srG   c                R    | j         j        |k    r|                                  dS dS )NTFr  r?   r  r)   r  s     r   r   zParser.accept  s)    <q  KKMMM4ur   tidsT.Tuple[str, ...]c                R    | j         j        }||v r|                                  |S dS r   r  )r)   r  r?   s      r   
accept_anyzParser.accept_any  s,    l$;;KKMMMJrr   c                    |                      |          rdS t          d| d| j        j         d|                                 | j        j        | j        j                  NTz
Expecting z got .)r   r   r  r?   r   r    r"   r  s     r   expectzParser.expect  s\    ;;q>> 	4E!EE$,2BEEEt||~~W[WcWjlplxl~r   block_startr>   c           	        |                      |          rdS t          d| d| j        j         d|                                 | j        j        | j        j        | j                            |j                  |j        |j                  r  )	r   r2   r  r?   r   r    r"   r   rA   )r)   r  r  s      r   block_expectzParser.block_expect  s    ;;q>> 	4!"Jq"J"Jt|7G"J"J"JDLLNN\`\h\oquq}  rD  FJ  FP  FX  FX  Yd  Yo  Fp  Fp  r}  rD  FQ  FW  X  X  	Xr   rS  c                    |                                  }	 |                     d           n# t          $ r}||_         d }~ww xY w|S )Nr  )	codeblockr  r   r   )r)   rs  es      r   parsezParser.parse  s[      	KK 	 	 	AE	 s   , 
A>Ar   c                *    |                                  S r%   )e1r&  s    r   r  zParser.statement  s    wwyyr   c                *   |                                  }|                     d          r|                     t          | j                  }|                                 }t          |t                    s.t          d| 	                                |j
        |j                  t          |j        t                    sJ |                     t          |||          S |                     d          r|                     t          | j                  }|                                 }t          |t                    s.t          d| 	                                |j
        |j                  t          |j        t                    sJ |                     t          |||          S |                     d          r| j        r.t          d| 	                                |j
        |j                  |                     t          | j                  }d| _        |                                 }|                     d           |                     t          | j                  }|                                 }d	| _        |                     t$          |||||          S |S )
Nru   z$Plusassignment target must be an id.r   z Assignment target must be an id.r   z)Nested ternary operators are not allowed.Tr   F)e2r   r  r  r  r  rI   r   r   r   r    r"   rD   r   rk  rg  r  r  r  )r)   r:  r;  rD   qm_noder  column_noder  s           r   r  z	Parser.e1  s5   wwyy;;|$$ 	d''
DMBBHGGIIEdF++ v$%KT\\^^]a]hjnjtuuudj#.....##$6hNNN[["" 	d''
DMBBHGGIIEdF++ N$%G%)\\^^T[$*N N Ndj#.....##ND(EJJJ[[(( 	d N$%P%)\\^^T[$*N N N &&z4=AAG"DO		IKK   **:t}EEKJ#DO##Kw	;Xbcccr   c                   |                                  }|                     d          r|                     t          | j                  }t          |t                    r.t          d|                                 |j	        |j
                  |                     t          |||                                            }|                     d          |S )NrR   zInvalid or clause.)e3r   r  r  r  rI   r  r   r   r    r"   r?  r)   r:  r;  s      r   r  z	Parser.e2  s    wwyykk$ 	G''
DMBBH$	** N$%9%)\\^^T[$*N N N##FD(DGGIIFFD kk$ 	G r   c                   |                                  }|                     d          r|                     t          | j                  }t          |t                    r.t          d|                                 |j	        |j
                  |                     t          |||                                            }|                     d          |S )NrS   zInvalid and clause.)e4r   r  r  r  rI   r  r   r   r    r"   rA  r  s      r   r  z	Parser.e3&  s    wwyykk%   	H''
DMBBH$	** N$%:%)\\^^T[$*N N N##GT8TWWYYGGD kk%   	H r   c           	        |                                  }t                                          D ]l\  }}|                     |          rR|                     t
          | j                  }|                     t          ||||                                            c S m|                     d          r#| j        	                                }| j        }|                     d          r| j        }| j        t          |          d          | _        t          |j        |j        |j                  }|D ]}	|                    |	           |j        d         |j        d         f|_        |xj        |j        j        |j        z   z  c_        |                     t
          |          }|                     t          d|||                                            S |S )NrT   rQ   r   r   r  )e5r  rr  r   r  r  r  rC  r  copyr   r  r    r"   r@   r   rC   rD   r   )
r)   r:  nodenameoperator_typer;  ws	not_tokenin_token	temp_nodews
             r   r  z	Parser.e40  s   wwyy'5';';'='= 	b 	b#Hm{{8$$ b++JFF''tXW[W^W^W`W`aaaaab ;;u 	\%%''BI{{4   
\="&/#b''((";%hox~xGXYY	 4 4A003333&/&8&;X=Nq=Q%R	"9#8#>#OO++J	BB''xQUQXQXQZQZ[[[r   c                *    |                                  S r%   )e5addsubr&  s    r   r  z	Parser.e5F  r-  r   c                X   ddd}|                                  }	 |                     t          |                                                    }|rW|                     t
          | j                  }|                     t          ||         |||                                            }nn|S )Naddr   )rw   rx   )e5muldivr  tuplekeysr  r  r  rH  r)   op_mapr:  opr;  s        r   r  zParser.e5addsubI  s    
 
 }}	v{{}}!5!566B ++JFF''r
D(TXTaTaTcTcdd	 r   c                Z   dddd}|                                  }	 |                     t          |                                                    }|rW|                     t
          | j                  }|                     t          ||         |||                                            }nn|S )Nmodmuldiv)r{   rz   r}   )e6r  r  r  r  r  r  rH  r  s        r   r  zParser.e5muldivX  s    
 

 wwyy	v{{}}!5!566B ++JFF''r
D(TXT[T[T]T]^^	 r   c                   |                      d          rT|                     t          | j                  }|                     t          | j        ||                                           S |                      d          rT|                     t          | j                  }|                     t          | j        ||                                           S |                                 S )NrT   rx   )r   r  r  r  rO  r  e7rQ  )r)   r;  s     r   r  z	Parser.e6h  s    ;;u 	P''
DMBBH##GT\8TWWYYOOO;;v 	S''
DMBBH##Jh		RRRwwyyr   c                   |                                  }| j        }|                     d          r|                     t          |          }|                                 }|                     d|           |                     t          | j                  }t          |t                    s.t          d|                                 |j        |j                  t          |j        t                    sJ |                     t           ||||          }d}|r\d}|                     d          rd}|                     |          }|                     d          rd}|                     |          }|\|S )Nrj   rk   z)Function call must be applied to plain idTFrv   rl   )e8r  r   r  r  r0  r  r  rI   r   r   r   r    r"   rD   r   rc  method_call
index_call)r)   r:  r  r_  r0  r`  go_agains          r   r  z	Parser.e7q  sd   wwyyl;;x   		J##J<<D99;;Dh444##J>>DdF++ N$%P%)\\^^T[$*N N Ndj#.....##L$dDIID 	-H{{5!! .''--{{:&& -t,,  	- r   c                   | j         }|                     d          rv|                     t          |          }|                                 }|                     d|           |                     t          | j                  }t          |||          S |                     d          r|                     t          |          }|                                 }|                     d|           |                     t          | j                  }|                     t          |||          S |                     d          r|                     t          |          }| 
                                }	|                     d|           |                     t          | j                  }
|                     t          ||	|
          S |                                 S )Nrj   rk   rl   rm   rn   ro   )r  r   r  r  r  r  r  r  r0  r/  
key_valuesr5  e9)r)   r  r_  r  r`  rl   r0  rm   rn   r  ro   s              r   r  z	Parser.e8  s   l;;x   	##J<<D  Ah444##J>>D$T1d333[[$$ 	''
K@@H99;;Dj+666''
DMBBH##IxxHHH[[!! 	$$Z==E**Jg{333$$Z??E##HeZGGG7799r   c                   | j         }|                     d          r"d|_        |                     t          |          S |                     d          r"d|_        |                     t          |          S |                     d          r|                     t
          |          S |                     d          r|                     t          |          S |                     d          r|                     t          |          S |                     d          r|                     t          |          S |                     d	          r|                     t          |          S |                     d
          r|                     t          |          S t          | j         j        | j         j        | j         j                  S )NrW   TrZ   Frd   re   rr   rc   rh   rb   )r  r   rD   r  r   r   r   r   r   r   r   r  r    r"   r@   )r)   ts     r   r  z	Parser.e9  s   L;;v 	4AG##K333;;w 	4AG##K333;;t 	/##FA...;;x   	3##J222;;x   	3##J222;;y!! 	9##$4a888;;)** 	<##$7;;;;;*++ 	B##$=qAAA,dl.@$,BWXXXr   r  c                   |                                  }|                     t          | j                  }t	          |t
                    s|                     d          r|j                            |                     t          | j
                             |                    ||                                             |                     d          s|S |j                            |                     t          | j
                             n.t          d|                                 |j        |j                  |                                  }t	          |t
                    |S )Nr   rs   z4Only key:value pairs are valid in dict construction.)r  r  r  r  rI   r  r   r  r   r  r  r$  r  r   r   r    r"   r)   r  as      r   r  zParser.key_values  s.   NN\4<88Q	** 
	!{{7## H	  !1!1*dm!L!LMMM$$Q(8(8999{{7++ H 0 0T] K KLLLL$%[%)\\^^QXqwH H H  A Q	** 
	! r   c                   |                                  }|                     t          | j                  }t	          |t
                    s|                     d          rO|j                            |                     t          | j
                             |                    |           n|                     d          r|j                            |                     t          | j
                             t	          |t                    s.t          d|                                 |j        |j                  |                    ||                                             |                     d          s|S |j                            |                     t          | j
                             n|                    |           |S |                                  }t	          |t
                    |S )Nrs   r   z*Dictionary key must be a plain identifier.)r  r  r  r  rI   r  r   r  r   r  r  r  r   r   r   r    r"   r"  r  s      r   r0  zParser.args  s   NN\4<88Q	** 	!{{7##  0 0T] K KLLLW%% 	  !1!1*dm!L!LMMM!!V,, L()U)-17L L LAt~~//000{{7++ H 0 0T] K KLLLL  A! Q	** 	!" r   r^  r]  c           	        |                      t          | j                  }|                                 }t	          |t
                    st	          |t                    rCt	          |t                    r.t          d|                                 |j	        |j
                  t          d|                                 | j        j	        | j        j
                  t	          |j        t                    sJ |                     d           |                      t          | j                  }|                                 }|                      t          | j                  }|                     d           |                      t           ||||||          }|                     d          r|                     |          S |S )Nz$meson does not support float numberszMethod name must be plain idrj   rk   rv   )r  r  r  r  rI   r   r   r   r   r    r"   r  rD   r   r  r0  r]  r   r  )r)   r^  rv   
methodnamer_  r0  r`  methods           r   r  zParser.method_call  s   z4=99WWYY
*f-- 	Z-44 `JPZ9[9[ `$%K%)\\^^]5I=K^` ` ` !?!%1DdlFXZ Z Z**C00000H
DM::yy{{
DL99H!!*mS*dTXZ^__;;u 	,##F+++r   rX  c                   |                      t          | j                  }|                                 }|                     d           |                      t          | j                  }|                      t
          ||||          S )Nrm   )r  r  r  r  r  rX  )r)   r^  rl   index_statementrm   s        r   r  zParser.index_call  sn    ##J>>..**J##J>>	=(OU]^^^r   rm  c           
        |                      t          | j                  }|                     d           t	          | j        j        t                    sJ |                      t          | j                  g}g }|                     d          r|	                    |                      t          | j                             |                     d           t	          | j        j        t                    sJ |	                    |                      t          | j                             |                     d           |                      t          | j                  }| 
                                }|                                 }|                      t          | j                  }|                      t          |||||||          S )Nrd   rs   r   )r  r  r  r  rI   rD   r   r   r   r   r  r  r  rm  )r)   rn  rp  r  rq  rr  rs  r]   s           r   foreachblockzParser.foreachblock  ss   ##J>>D$--s33333$$VT];;<;;w 	EMM$**:t}EEFFFKKdm1377777OOD,,VT]CCDDDG!!*dm<<    %%j$,??
 18XvvW\^ceopppr   r  c           	        |                      t          | j                  }|                                 }|                      t          |          }|                     d           |                                 }|j                            |                      t          ||||                     | 
                    |           |                                 |_        |                      t          | j                  |_        |S Nrg   )r  r  r  r  r  r  r  r  r   rv  elseifblockr  r  rY   )r)   rz  rx  clausers  s        r   ifblockzParser.ifblock  s    "":t}==NN$$	!!,	::E  
$**667IuUUVVV   >>++''
DLAAr   r  c           	        |                      d          r|                     t          | j                  }|                                 }|                     d           |                                 }|j                            |                     t          ||||                     |                      d          d S d S )NrU   rg   )
r   r  r  r  r  r  r  r  r   rv  )r)   r  elif_r  bs        r   r  zParser.elseifblock  s    kk&!! 	H$$Z??E  AKK  AJd..vq%AFFGGG kk&!! 	H 	H 	H 	H 	Hr   T.Union[ElseNode, EmptyNode]c                <   |                      d          rY|                     t          | j                  }|                     d           |                                 }t          ||          S t          | j        j	        | j        j
        | j        j                  S )NrV   rg   )r   r  r  r  r  r  r}  r  r  r    r"   r@   )r)   r~  rs  s      r   r  zParser.elseblock!  s    ;;v 	*$$Z??EKKNN$$EE5))),dl.@$,BWXXXr   r  c                    |                      t          | j                  }|                                 }|                     d           |                                 }t          | j                  }|                      t          ||||          S r  )r  r  r  r  r  r  r  r  )r)   r_   rx  rs  r`   s        r   testcaseblockzParser.testcaseblock)  sv    ##J>>NN$$	E   .. 2HiP[\\\r   c                   | j         }| j         dk    r/t          | j         j        | j         j        | j         j                  S |                     d          r,|                                 }|                     d|           |S |                     d          r,|                                 }|                     d|           |S |                     d          r | 	                    t          | j                   S |                     d          r | 	                    t          | j                   S | j        j        rA|                     d          r,|                                 }|                     d	|           |S |                                 S )
Nrg   rP   rY   r[   r]   r\   rX   r_   r`   )r  r  r    r"   r@   r   r  r  r  r  r  r  r   r   r  r  )r)   r  r  forblockrs  s        r   r   zParser.line1  sh   l<5  T\0$,2DdlF[\\\;;t 	llnnGg{333N;;y!! 	((**HlK888O;;z"" 	@##L$,???;;w 	=##It|<<<:" 	t{{:'>'> 	&&((Em[999L~~r   c                   |                      t          | j                  }d}	 |r| j        D ]}|                    |           g | _        |                                 }t          |t                    s|j        	                    |           | 
                    d          }|n# t          $ r}||_         d }~ww xY w| j        D ]}|                    |           g | _        |S )NTrg   )r  rS  r  r  r   r   rI   r  r   r   r   r   r   )r)   rs  condr  r   r  s         r   r  zParser.codeblockG  s     ==	 
* $ 7 7H,,X6666"$))++!'955 0K&&w///{{5))  
*  	 	 	AE	
  	/ 	/H$$X....s   BB' '
B>1B99B>N)rN   r   r@   r   )r  r  r0  r  r  r  r   r   )r   r#   )r   r   )r  r   r   rG   )r  r  r   r   )r  r   r  r>   r   rG   )r   rS  )r   r   )r   r  )r^  r   r   r]  )r^  r   r   rX  )r   rm  )r   r  )r  r  r   r#   )r   r  )r   r  )#r+   r,   r-   r'   r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r  r  r  r  r  r  r  r   r  r:   r   r   r  r    s                 r r r r; ; ; ;      @ @ @ @
X X X X
         @         ,                0   .Y Y Y Y,   "   .   (_ _ _ _q q q q(
 
 
 
H H H HY Y Y Y] ] ] ]       ,     r   r  )r   r   r   r   )N
__future__r   dataclassesr   r   r   r   r   typingTmesonlibr   r   r   TYPE_CHECKINGtyping_extensionsr	   r   r
   TypeVarr   r   UNICODEVERBOSEr   r   r   r2   r!   r   rG   r;   Genericr>   rM   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r/  r5  r  r9  r?  rA  rC  rH  rL  rO  rQ  rS  rX  r]  rc  rg  rk  rm  rv  r}  r  r  r  r  rD  r  r.   r  r:   r   r   <module>r     s   # " " " " " " ( ( ( ( ( ( ( ( 				  				     $ $ $ $ $ $      ? 9))))))	+Z888I 'BJ (	 *rz
!# # D D D D    ^       .   B 	/3T::
e    AIm$    xU xU xU xU xU xU xU xUt !+ !+ !+ !+ !+ !+ !+ !+H t
" 
" 
" 
" 
"X 
" 
" 
" t' ' ' ' 'QY}-x ' ' '	 	 	 	 	.& 	 	 		 	 	 	 	^C  	 	 	 t' ' ' ' '$ ' ' '	 	 	 	 	^C( 	 	 	 t% % % % % % % %	 	 	 	 	z 	 	 	 t! ! ! ! !. ! ! !	 	 	 	 	 3 	 	 		 	 	 	 	> 	 	 		 	 	 	 	 	 	 		 	 	 	 	$ 	 	 	 t. . . . .8 . . .` t
! 
! 
! 
! 
! 
! 
! 
! t
 
 
 
 
x 
 
 
	 	 	 	 	 	 	 	 t
 
 
 
 
 
 
 
	 	 	 	 	 	 	 		 	 	 	 	  	 	 	 t    '    t# # # # #' # # # t       	 	 	 	 	 	 	 		 	 	 	 	" 	 	 	 t/ / / / /H / / /$ t! ! ! ! ! ! ! ! t       $ t    8    t
 
 
 
 
X 
 
 
	 	 	 	 	 	 	 	 t% % % % % % % %* t
 
 
 
 
X 
 
 
 t    x    t
 
 
 
 
8 
 
 
 t' ' ' ' ' ' ' ' t% % % % %( % % %" t
 
 
 
 
 
 
 
 ? KIJK 




	/ 	/ 	 	 	 	4k k k k k k k k k kr   