
    aS                        d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ dZdZdZdZd	Zd
Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d d          Z G d de          Z  G d de	          Z!e "                    d           G d  d!e!                      Z# G d" d#e          Z$ G d$ d%e	          Z%e "                    d           G d& d'e%                      Z&e "                    d()           G d* d+e%                      Z'e "                    d,)           G d- d.e%                      Z(e "                    d/)           G d0 d1e%                      Z)e "                    d2)           G d3 d4e%                      Z*e "                    d5           G d6 d7e%                      Z+e "                    d8           G d9 d:e%                      Z,e "                    d;)           G d< d=e%                      Z-e "                    d>)           G d? d@e%                      Z.e "                    dA)          e "                    dB)           G dC dDe%                                  Z/e "                    dE           G dF dGe%                      Z0e "                    dH           G dI dJe%                      Z1e "                    dK           G dL dMe%                      Z2e "                    dK           G dN dOe%                      Z3e "                    dP           G dQ dRe%                      Z4e "                    eS           G dT dUe%                      Z5e "                    dV           G dW dXe%                      Z6e "                    dY           G dZ d[e%                      Z7e "                    d\           G d] d^e%                      Z8e "                    d_           G d` dae%                      Z9e "                    db          e "                    dc           G dd dee%                                  Z:e "                    df           G dg dhe%                      Z;e "                    di           G dj dke%                      Z< G dl dme%          Z=e "                    dn           G do dpe=                      Z>e "                    dq           G dr dse=                      Z?e "                    dt           G du dve=                      Z@e "                    dw           G dx dye=                      ZAe "                    dz           G d{ d|e=                      ZBe "                    d}           G d~ de=                      ZCe "                    d           G d de=                      ZDdS )    N)contextmanager)
NormalizerNormalizerConfigIssueRule)_get_token_collection)if_stmt
while_stmtfor_stmttry_stmt	with_stmt)testlist_star_exprtestlist_compexprlist   d   )nested_scopes
generatorsdivisionabsolute_importwith_statementprint_functionunicode_literalsgenerator_stop)comp_forsync_comp_forc                    | j         }|dk    rdS |dk    rt          |           }| j        d d         \  }}||S |j         dk    r.|dk     rdS |j        d         d	k    s|j        d
         dk    rdS dS |dk    r6|dk    s.t          | j                  dk    r| j        d         j         dk    rdS |dk    rt	          t          |           |          S |dk    rdS |dk    r|dk    rdS |dk    rt          | j                  dk    rdS n|dk    r'd| j        v rdS |dk     rdS t          | j                  S |dk    r| j        dk    rdS |dk    rdS |dv rdS |d k    rdS |d!k    rd"S |d#v rp| j        d
         d$k    rd%S | j        d&         j         d'k    rF| j        d&         }|j        d
         dk    rd(S |j        d
         dk    rd)S |j        d
         d*k    rd+S n*d,|v rd-|vsd.|v s|d/v rdS |d-k    rd0S |d1k    rdS |d2k    rd3S |S )4Nlambdeflambdaatom   dictorsetmaker      literal   :r   **dict displayset display()r$   r   tuple)version[list{}keywordyieldyield expressionoperator...Ellipsis
comparisonstringnumberstrings
yield_exprtestconditional expression	atom_exprpowerawaitawait expressiontrailerfunction call	subscript.	attributeexpr	star_expr_testtermfactorstarredr   fstringf-string expression)type_get_comprehension_typechildrenlen_get_rhs_name_remove_parensvaluestr)noder/   type_comprehensionfirstsecondrH   s          3lib/python3.11/site-packages/parso/python/errors.pyrZ   rZ      s   IE	x	&/55bqb)v$  [,,, y?1%,,0Bd0J0J)>(=SLL3''1,,q1A1F/1Y1Y7c\\ !5!5wGGGGc\\6c\\fmm!>c\\c$-00144 =	)		dj  %%V9tz??"	*		u!4!4z	,		|	1	1	1y	,		!!	&''	(	(	(=w&&%%]2#y00mB'G"c))&!!$++"{!!$++"{	5[55e&&&z	+		y	&	&	&w	)		$$L    c              #   ~   K   | j         D ]2}|j        dk    r!|j         D ]}|j        dk    s|dk    r|V  .|V  3dS )zB
    Iterates over all statements and splits up  simple_stmt.
    simple_stmtnewline;NrX   rV   )scopechildchild2s      rc   _iter_stmtsrm   `   sv         :&&.  ;)++v}}
 KKKK rd   c                     | j         d d         \  }}|j        dk    r#|j         d         j        t          v r
|dk    rdS dS |j        dk    r.|j         d         j        t          v r|j         d         d	k    rd
S dS d S )Nr!   r   r'   r0   zlist comprehensionzgenerator expressionr"   rG   r(   zdict comprehensionzset comprehensionrX   rV   _COMP_FOR_TYPES)r    ra   rb   s      rc   rW   rW   n   s    M"1"%ME6{o%%&/!*<*A_*T*TC<<''))	(	(	(V_R-@-E-X-X?1$$''&&4rd   c                 L    |                                  }d |D             dgk    S )Nc                     g | ]	}|j         
S  r\   .0ns     rc   
<listcomp>z%_is_future_import.<locals>.<listcomp>   s    (((AG(((rd   
__future__)get_from_names)import_from
from_namess     rc   _is_future_importr}   }   s0    
 ++--J((Z(((\N::rd   c                     	 | j         }t          |          dk    r&|d         dk    rt          | j         d                   S n# t          $ r Y nw xY w| S )z_
    Returns the inner part of an expression like `(foo)`. Also removes nested
    parens.
    r$   r   r,   r'   )rX   rY   r[   AttributeError)r    rX   s     rc   r[   r[      sn    
4= x==A(1+"4"4!$-"2333	    
 Ks   A 
AAc                 l    | j         ,| j         } | j        dk    s| j        d         dk    r| S | j         ,dS )za
    Returns an ancestor node of an expression, skipping all levels of parens
    bottom-up.
    Nr    r   r,   parentrV   rX   r^   s    rc   _skip_parens_bottom_upr      sG    
 +
!{9$-"2c"9"9K +
! 4rd   c                 $    d | j         D             S )Nc              3   F   K   | ]}|j         d k    s|j         dk    |V  dS )paramr7   NrV   ru   s     rc   	<genexpr>z_iter_params.<locals>.<genexpr>   s:      YY!qv/@/@AFjDXDXADXDXDXDXYYrd   )rX   )parent_nodes    rc   _iter_paramsr      s    YY{+YYYYrd   c                     d}t          |                                           D ]8}|j        dk    r|sd}|| k    r dS |j        dk    rt          |          r6 dS dS )z@
    Checks if the import is the first statement of a file.
    Fr<   Tr{   N)rm   get_root_noderV   r}   )r{   found_docstringstmts      rc   _is_future_import_firstr      s     OK557788 	 	9   ;449%%*;D*A*A%uu	 	rd   c              #      K   fd| j         t          v r&| j        d d d         D ]} |          E d {V  d S  |           E d {V  d S )Nc              3      K   | j         dk    rj| j        d         dk    rB| j        d         }|j         dk    rt          |          E d {V  d S  |          E d {V  d S | j        d         dk    r|V  d S | V  d S )Nr    r   r,   r'   r   r0   )rV   rX   !_iter_definition_exprs_from_lists)rk   r   
check_exprs     rc   r   z5_iter_definition_exprs_from_lists.<locals>.check_expr   s      :~a C'' %q 1 %88@OOOOOOOOOF  *z-888888888F"c))####rd   r!   )rV   _STAR_EXPR_PARENTSrX   )r   rk   r   s     @rc   r   r      s            }***&sss+ 	) 	)E!z%((((((((((	) 	) :h'''''''''''rd   c                     g }| j         d dd         D ]3}|j        dv r|t          |          z  }|                    |           4|S )Nr!   )r   testlist)rX   rV   r   append)	expr_stmtexprslist_s      rc   _get_expr_stmt_definition_exprsr      sa    E#ERE*    :;;;6u===EELLLrd   c                 T    | j         d         }t          t          |                    S Nr'   )rX   r1   r   )r   r   s     rc   _get_for_stmt_definition_exprsr      s&     #H1(;;<<<rd   c                 4    | j         d         j        t          v S r   ro   )arguments    rc   _is_argument_comprehensionr      s    Q$77rd   c                     | dk     s|dS |j         dk    rt          d |j        D                       S |j         dk    rdS |                    d          S )Nr$   	   F
error_nodec              3   ,   K   | ]}|j         d k    V  dS )fstring_startNr   rv   rk   s     rc   r   z%_any_fstring_error.<locals>.<genexpr>   s)      LLU5:0LLLLLLrd   rT   T)rV   anyrX   search_ancestor)r/   r^   s     rc   _any_fstring_errorr      sh    4<uyL  LLdmLLLLLL	i		t##I...rd   c                   V    e Zd ZddZd Zd Zd Zd Zd Ze	d             Z
d	 Zd
 ZdS )_ContextNc                     || _         g | _        || _        i | _        g | _        g | _        g | _        g | _        || _        d S N)	r^   blocksparent_context_used_name_dict_global_names_local_params_names_nonlocal_names_nonlocal_names_in_subscopes_add_syntax_error)selfr^   add_syntax_errorr   s       rc   __init__z_Context.__init__   sN    	,!#% !,.)!1rd   c                 P    |                                  o| j        j        j        dv S )N)async_funcdef
async_stmt)is_functionr^   r   rV   r   s    rc   is_async_funcdefz_Context.is_async_funcdef   s0     !! I	 %)HH	Ird   c                 "    | j         j        dk    S )Nfuncdef)r^   rV   r   s    rc   r   z_Context.is_function   s    y~**rd   c                    |j         j        }|dk    rd S |dk    r| j                            |           d S |dk    r| j                            |           d S |dk    r=| j                            d |j                                         D                        d S | j        	                    |j
        g                               |           d S )NrH   global_stmtnonlocal_stmtr   c                 &    g | ]}|j         j        S rs   )namer\   )rv   r   s     rc   rx   z%_Context.add_name.<locals>.<listcomp>  s    HHHe!HHHrd   )r   rV   r   r   r   r   extend
get_paramsr   
setdefaultr\   )r   r   parent_types      rc   add_namez_Context.add_name  s    k&)##F-''%%d+++++O++ ''-----I%%$++HHt{/E/E/G/GHHH      ++DJ;;BB4HHHHHrd   c                 `   |                      | j        d           |                      | j        d           d | j        D             }| j        D ]V}	 ||j                 }n# t          $ r Y w xY wd|j        z  }|j        |j        k     r|}n|}|                     ||           Wg }| j        D ]v}|j        }|| j        v r||v s| j	        !d|j        z  }|                     ||           ?| 
                                r|j        | j        vr|                    |           w| j        |z   S )zV
        Returns a list of nonlocal names that need to be part of that scope.
        globalnonlocalc                     i | ]
}|j         |S rs   rt   ru   s     rc   
<dictcomp>z%_Context.finalize.<locals>.<dictcomp>  s    CCC1AGQCCCrd   z name '%s' is nonlocal and globalNz"no binding for nonlocal '%s' found)_analyze_namesr   r   r\   KeyError	start_posr   r   r   r   r   r   r   )r   global_name_strsnonlocal_nameglobal_namemessage
error_namenonlocals_not_handledsearchs           rc   finalizez_Context.finalize  s    	D.999D0*===CC0BCCC!1 	8 	8M.}/BC    9;;LLG$}'>>>(

*
"":w7777 "!> 		< 		<M"(F111)))T-@-H>ATT&&}g>>>>%%'' <!'t/CCC%,,];;;#&;;;s   A  
A-,A-c                 >   
 
 fd}g } j         j        dk    r j                                         }|D ]
d}t           j                            
j        g                     D ]}|j        
j        k    rd}|j        }|j        dk    r|j	        |k    r2|
                                r5|j        dk    r'|j        d         j        dk    r|r|
 |d	            nd
}nd}|s ||            n|D ]#}	|	j	        j        
j        k    r |d          f $d S )Nc                 H                         | j        fz             d S r   )r   r\   )r   	base_namer   r_   s    rc   raise_z'_Context._analyze_names.<locals>.raise_5  s+    ""9g%8P.PQQQQQrd   r   FTr   r   r'   	annassignzannotated name '%s' can't be %sz.name '%s' is assigned to before %s declarationz)name '%s' is used prior to %s declarationzname '%s' is parameter and %s)r^   rV   r   reversedr   getr\   r   r   r   is_definitionrX   )r   globals_or_nonlocalsr_   r   paramsfound_global_or_nonlocalr   r   r   r   r   s   ` `       @rc   r   z_Context._analyze_names4  s   	R 	R 	R 	R 	R 	R 	R 9>Y&&Y))++F- #	= #	=I',$ !5!9!9)/2!N!NOO  >I$777/3,;'))fkT.A.A %%'' J{k11 & 2 7; F F3 - )-I@AAA"RIG/ F7OOOE
   = =:#y66F:;;<<=C#	= #	=rd   c              #   x   K   | j                             |           d V  | j                                          d S r   )r   r   popr   r^   s     rc   	add_blockz_Context.add_blocka  s=      4   rd   c                 0    t          || j        |           S )N)r   )r   r   r   s     rc   add_contextz_Context.add_contextg  s    d4TJJJJrd   c                 J    | xj         |                                z  c_         d S r   )r   r   )r   child_contexts     rc   close_child_contextz_Context.close_child_contextj  s(    ))]-C-C-E-EE))))rd   r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   rs   rd   rc   r   r      s        	2 	2 	2 	2I I I+ + +I I I" <  <  <D+= += +=Z   ^
K K KF F F F Frd   r   c                   j     e Zd ZdZ fdZd Z fdZed             Z fdZ	d Z
d Zd	 Zd
 Z xZS )ErrorFinderz1
    Searches for errors in the syntax tree.
    c                 j     t                      j        |i | i | _        | j        j        | _        d S r   )superr   _error_dictgrammarversion_infor/   )r   argskwargs	__class__s      rc   r   zErrorFinder.__init__r  s7    $)&)))|0rd   c                 n      fd |          pt          | j                   _        d _        d S )Nc                 n    | d S  | j                   }| j        dv rt          | j        |          S |S )N)classdefr   
file_input)r   rV   r   r   )r^   r   create_contextr   s     rc   r  z.ErrorFinder.initialize.<locals>.create_contextx  sG    |t+^DK88NyAAAd&<nMMM!!rd   r   )r   r   context_indentation_count)r   r^   r  s   ` @rc   
initializezErrorFinder.initializew  sU    	" 	" 	" 	" 	" 	" &~d++Uxd>T/U/U"#rd   c                     |j         dk    r/|                     |          5  	 d d d            dS # 1 swxY w Y   t                                          |          S )Nr    )rV   
visit_noder   visit)r   r^   r   s     rc   r  zErrorFinder.visit  s    9$$&&   	               
 ww}}T"""s   155c              #   z  K   |                      |           |j        t          v rp| j                            |          5  t          | j        j                  t          k    r|                     |d           d V  d d d            n# 1 swxY w Y   d S |j        dk    rA| xj	        dz  c_	        | j	        t          k    r!|                     |j        d         d           d V  |j        dk    r| xj	        dz  c_	        d S |j        dv r/| j        }|j        | _        | j                            |           d S d S )Nz!too many statically nested blockssuiter'   ztoo many levels of indentationr  r   )_check_type_rulesrV   _BLOCK_STMTSr  r   rY   r   _MAX_BLOCK_SIZEr   r  _MAX_INDENT_COUNT_add_indentation_errorrX   r   r   )r   r^   r  s      rc   r
  zErrorFinder.visit_node  s     t$$$9$$''--  t|*++>>**41TUUU               FY'!!##q(##&*;;;++DM!,<>^___9##q(####Y111lG"1DLL,,W55555 21s    =B		BBc                    |j         dk    r|j        dv r`t          |                                                                          d         }|j        dk    rd}nd}|                     ||           n|j                            d          rd}nzt          j	        d	|j                  }|3d
}| j
        dk    r%|j        t          | j
                  j        v rd|z   }n+t          |                    d                    dk    rd}nd}|                     ||           dS |j        dk    r/|j        }|j         dv r| j                            |          | _        t'                                          |          S )N
error_leaf)INDENTERROR_DEDENTrG   r  zunexpected indentz3unindent does not match any outer indentation level\z6unexpected character after line continuation characterz\w{,2}("{1,3}|'{1,3})invalid syntaxr   
f-string: r'   z!EOL while scanning string literalz/EOF while scanning triple-quoted string literalr	  r(   r  )rV   
token_typer1   get_next_leaf_split_prefixr  r\   
startswithrematchr/   r   always_break_tokensrY   groupr   r   r  r   r   
visit_leaf)r   leafspacingr   r   r   r   s         rc   r#  zErrorFinder.visit_leaf  s   9$$"<<< t1133AACCDDRH?h..1GGSG++GW====:((.. XVGGH%>
KKE}"2 LF22 $
.C $/ /1!2 !2 '3W&<Gu{{1~~..!33&IGG&WG&&tW5552Z3[F{555#|77?? ww!!$'''rd   c                 :    |                      |dd|z              d S )N  IndentationError: 	add_issue)r   r%  r   s      rc   r  z"ErrorFinder._add_indentation_error  s$    w%9G%CDDDDDrd   c                 :    |                      |dd|z              d S )N  SyntaxError: r)  )r   r^   r   s      rc   r   zErrorFinder._add_syntax_error  s#    tS/G";<<<<<rd   c                 `    |j         d         }|||f}| j                            ||           d S )Nr   )r   r   r   )r   r^   coder   liner   s         rc   r*  zErrorFinder.add_issue  s;     ~a gt$##D$/////rd   c                     | j                                          | j                                        D ]/\  }}}| j                            t          |||                     0d S r   )r  r   r   valuesissuesr   r   )r   r/  r   r^   s       rc   r   zErrorFinder.finalize  sj    #'#3#:#:#<#< 	; 	;D'4KuT499::::	; 	;rd   )r   r   r   __doc__r   r  r  r   r
  r#  r  r   r*  r   __classcell__r   s   @rc   r   r   n  s         1 1 1 1 1
$ $ $# # # # # 6 6 ^6.'( '( '( '( '(RE E E= = =0 0 0; ; ; ; ; ; ;rd   r   c                   "     e Zd ZdZ fdZ xZS )IndentationRuler'  c                 R    t                                          ||          }d|z   S )Nr(  )r   _get_messager   r   r^   r   s      rc   r:  zIndentationRule._get_message  s'    ''&&w55#g--rd   r   r   r   r/  r:  r5  r6  s   @rc   r8  r8    s=        D. . . . . . . . .rd   r8  r   r   c                       e Zd ZdZd Zd ZdS )_ExpectIndentedBlockzexpected an indented blockc                 x    |                                 }t          |                                          d         S )NrG   )r  r1   r  )r   r^   r$  s      rc   get_nodez_ExpectIndentedBlock.get_node  s2    !!##D&&(())"--rd   c                 .    |j         d         j        dk    S )NrG   rg   ri   r   s     rc   is_issuez_ExpectIndentedBlock.is_issue  s    }R %22rd   Nr   r   r   r   r@  rB  rs   rd   rc   r>  r>    s7        *G. . .3 3 3 3 3rd   r>  c                       e Zd ZeZdS )ErrorFinderConfigN)r   r   r   r   normalizer_classrs   rd   rc   rE  rE    s        "rd   rE  c                   "     e Zd ZdZ fdZ xZS )
SyntaxRuler,  c                     t                                          ||          }d|vrt          | j        j        |          rd|z   }d|z   S )Nzf-stringr  r-  )r   r:  r   _normalizerr/   r;  s      rc   r:  zSyntaxRule._get_message  sV    ''&&w55g%%"4#3#;TBB & #W,G((rd   r<  r6  s   @rc   rH  rH    s=        D) ) ) ) ) ) ) ) )rd   rH  c                   "    e Zd ZdZdZd Zd ZdS )_InvalidSyntaxRuler  zf-string: invalid syntaxc                 *    |                                 S r   )r  r   s     rc   r@  z_InvalidSyntaxRule.get_node  s    !!###rd   c                     |                                 j        dk    }|r8t          | j        j        |          r|                     || j                   d S |S )Nr  r   )r  rV   r   rJ  r/   r*  fstring_message)r   r^   errors      rc   rB  z_InvalidSyntaxRule.is_issue  sc    ""$$)\9	"4#3#;TBB	 NN4)=N>>>>> Lrd   N)r   r   r   r   rP  r@  rB  rs   rd   rc   rL  rL    s<        G0O$ $ $	 	 	 	 	rd   rL  rE   rt   c                       e Zd ZdZd Zd ZdS )_AwaitOutsideAsyncz'await' outside async functionc                 @    | j         j                                         S r   )rJ  r  r   r   r$  s     rc   rB  z_AwaitOutsideAsync.is_issue   s    #+<<>>>>rd   c                     |j         S r   r   r   s     rc   get_error_nodez!_AwaitOutsideAsync.get_error_node#  s
    {rd   N)r   r   r   r   rB  rX  rs   rd   rc   rS  rS    s7        .G? ? ?    rd   rS  breakc                       e Zd ZdZd ZdS )_BreakOutsideLoopz'break' outside loopc                 J    d}| j         j        j        D ]}|j        dv rd}| S )NFr   r
   T)rJ  r  r   rV   )r   r$  in_loopblocks       rc   rB  z_BreakOutsideLoop.is_issue,  s;    %-4 	 	Ez777{rd   Nr   r   r   r   rB  rs   rd   rc   r[  r[  (  s(        $G    rd   r[  continuec                       e Zd ZdZdZd ZdS )_ContinueChecksz'continue' not properly in loopz0'continue' not supported inside 'finally' clausec                 
   d}| j         j        j        D ]j}|j        dv rd}|j        dk    rR|j        d         }|dk    r?|j        |j        k    r/| j         j        dk     r|                     || j                    dS k|sdS d S )	NFr]  Tr   finallyr#   rO  )	rJ  r  r   rV   rX   r   r/   r*  message_in_finally)r   r$  r^  r_  
last_blocks        rc   rB  z_ContinueChecks.is_issue9  s    %-4 	! 	!Ez777zZ''"^B/
)++)===(0699NN41HNIII 55 	4	 	rd   N)r   r   r   r   rg  rB  rs   rd   rc   rc  rc  4  s.        /GK    rd   rc  fromc                       e Zd ZdZd Zd ZdS )_YieldFromCheckz"'yield from' inside async functionc                     |j         j         S r   rW  rU  s     rc   r@  z_YieldFromCheck.get_nodeO  s    {!!rd   c                 ^    |j         j        dk    o| j        j                                        S )N	yield_arg)r   rV   rJ  r  r   rU  s     rc   rB  z_YieldFromCheck.is_issueR  s.    {;. < (99;;	<rd   NrC  rs   rd   rc   rk  rk  K  s7        2G" " "< < < < <rd   rk  r   c                       e Zd ZdZdZd ZdS )_NameCheckszcannot assign to __debug__zcannot assign to Nonec                     | j         j                            |           |j        dk    r|                                rdS d S d S )N	__debug__T)rJ  r  r   r\   r   rU  s     rc   rB  z_NameChecks.is_issue\  sM     ))$///:$$););)=)=$4 %$$$rd   N)r   r   r   r   message_nonerB  rs   rd   rc   rp  rp  W  s-        *G*L    rd   rp  r<   c                       e Zd ZdZd ZdS )_StringChecksz0bytes can only contain ASCII literal characters.c                    |j                                         }d|v r t          d |j        D                       rdS d|vr|                                }d|v r"|                    d          }t          j        }nt          j        }	 t          j
                    5  t          j        d            ||           d d d            d S # 1 swxY w Y   d S # t          $ r2}|                     |dt          |          z              Y d }~d S d }~wt          $ r2}|                     |d	t          |          z              Y d }~d S d }~ww xY wd S )
Nbc              3   @   K   | ]}t          |          d k    |V  dS )   N)ordrv   cs     rc   r   z)_StringChecks.is_issue.<locals>.<genexpr>j  s,      >>aQ#>>rd   Trzutf-8ignorez(unicode error) rO  z(value error) )string_prefixlowerr   r\   _get_payloadencodecodecsescape_decodeunicode_escape_decodewarningscatch_warningsfilterwarningsUnicodeDecodeErrorr*  r]   
ValueError)r   r$  r  payloadfunces         rc   rB  z_StringChecks.is_issueg  s   *0022->>4:>>>>>   4m## ''))Gm##!..11+3H,.. " "+H555DMMM" " " " " " " " " " " " " " " " " " & J J Jt-?#a&&-HIIIIIIIII H H Ht-=A-FGGGGGGGGGH% $#sH   
C  C
=C 
CC CC 
E!'DE'EENr`  rs   rd   rc   ru  ru  c  s-        @GH H H H Hrd   ru  *c                       e Zd ZdZd ZdS )
_StarCheckz"named arguments must follow bare *c                     |j         }|j        dk    rK|rK|j        |j                            |          dz   d          }d |D             }t	          |          dk    S d S d S )N
parametersr'   c                 (    g | ]}|d v|j         |S )),r-   )
star_countr   s     rc   rx   z'_StarCheck.is_issue.<locals>.<listcomp>  s7     J J JuZ//8H/ ///rd   r   )r   rV   rX   indexrY   )r   r$  r   afters       rc   rB  z_StarCheck.is_issue  s    ;,&&6&OFO$9$9$$?$?!$C$D$DEEJ J J J JEu::?"	 '&&&rd   Nr`  rs   rd   rc   r  r    s(        2G# # # # #rd   r  r)   c                       e Zd ZdZd ZdS )_StarStarCheckz3dict unpacking cannot be used in dict comprehensionc                     |j         j        dk    r8|                                                                }|d uo|j        t          v S d S )Nr"   )r   rV   get_next_siblingrp   )r   r$  r   s      rc   rB  z_StarStarCheck.is_issue  sO    ;///,,..??AAH4'LHM_,LL 0/rd   Nr`  rs   rd   rc   r  r    s0        
 DGM M M M Mrd   r  r5   returnc                   "    e Zd ZdZdZd Zd ZdS )_ReturnAndYieldChecksz&'return' with value in async generatorz'yield' inside async functionc                     |j         S r   rW  rU  s     rc   r@  z_ReturnAndYieldChecks.get_node  
    {rd   c                    | j         j        j        j        dk    r4|                     |                     |          d|j        z             d S | j         j                                        rMt          | j         j        j        	                                          r|j        dk    r|j
        j        dk    rdS d S d S d S d S )Nr   z'%s' outside functionrO  r  return_stmtT)rJ  r  r^   rV   r*  r@  r\   r   r   iter_yield_exprsr   rU  s     rc   rB  z_ReturnAndYieldChecks.is_issue  s    #(-::NN4==..8ORVR\8\N]]]]]%6688 	(05FFHHII	zX%%$+*:m*K*Kt	 	 	 	%%*K*Krd   N)r   r   r   r   message_async_yieldr@  rB  rs   rd   rc   r  r    s?         7G9      rd   r  r>   c                       e Zd ZdZd Zd ZdS )_BytesAndStringMixz&cannot mix bytes and nonbytes literalsc                 R    |j         dk    rdS d|j                                        v S )NrT   Frw  )rV   r  r  )r   r<   s     rc   _is_bytes_literalz$_BytesAndStringMix._is_bytes_literal  s.    ;)##5f*002222rd   c                     |j         d         }|                     |          }|j         dd          D ]}||                     |          k    r dS d S )Nr   r'   T)rX   r  )r   r^   ra   first_is_bytesr<   s        rc   rB  z_BytesAndStringMix.is_issue  sk    a //66mABB' 	 	F!7!7!?!???tt @	 	rd   N)r   r   r   r   r  rB  rs   rd   rc   r  r    s9         7G3 3 3
    rd   r  import_as_namesc                       e Zd ZdZd ZdS )_TrailingImportCommaz:trailing comma not allowed without surrounding parenthesesc                 \    |j         d         dk    r|j        j         d         dk    rdS d S d S )NrG   r  r-   T)rX   r   r   s     rc   rB  z_TrailingImportComma.is_issue  s;    =##(<R(@C(G(G4 $#(G(Grd   Nr`  rs   rd   rc   r  r    s+         KG    rd   r  r{   c                       e Zd ZdZd ZdS )_ImportStarInFunctionz%import * only allowed at module levelc                 P    |                                 o| j        j        j        d uS r   )is_star_importrJ  r  r   r   s     rc   rB  z_ImportStarInFunction.is_issue  s(    ""$$\)9)A)PX\)\\rd   Nr`  rs   rd   rc   r  r    s-        5G] ] ] ] ]rd   r  c                       e Zd ZdZd ZdS )_FutureImportRulez?from __future__ imports must occur at the beginning of the filec                    t          |          rt          |          sdS |                                D ]\  }}|j        }t	          t
                    }| j        j        dk    r|                    d           |dk    r| 	                    |d           c|dk    rd}| 	                    ||           ||vrd	|z  }| 	                    ||           d S d S )
NTr$      annotationsbracesznot a chancerO  barry_as_FLUFLz-Seriously I'm not implementing this :) ~ Davez future feature %s is not defined)
r}   r   	get_pathsr\   r1   ALLOWED_FUTURESrJ  r/   r   r*  )r   r^   	from_namefuture_namer   allowed_futuresmr   s           rc   rB  z_FutureImportRule.is_issue  s   T"" 	:*400 t*...*:*: : :&	;"("&"7"7#+v55#**=9998##NN4N@@@@---GANN4N333300@4GGNN4N999!	: 	:: :rd   Nr`  rs   rd   rc   r  r    s(        OG: : : : :rd   r  rN   c                       e Zd ZdZd ZdS )_StarExprRulez2iterable unpacking cannot be used in comprehensionc                    d }| j         j        dk    r|j        }nt          |          }|j        g t
          dR vr5|j        dk    r|j        d         dk    s|                     |d           d S  ||          rA| j         j        dk    r|                     |d	           n|                     |d           d S |j        j        d
k    r<|j        j        d         j        t          v r |                     || j	                   d S d S d S )Nc                 t    | j         0| j         } | j        dk    rdS | j        g t          dR vrdS | j         0dS )Ndel_stmtTr    F)r   rV   r   r   s    rc   check_delete_starredz4_StarExprRule.is_issue.<locals>.check_delete_starred  sU    +){9
**49$A&8$A&$A$AAA 5 +) 5rd   r   r"   r    r   r,   !can't use starred expression hererO  zcannot delete starredr   r'   )
rJ  r/   r   r   rV   r   rX   r*  rp   message_iterable_unpacking)r   r^   r  ancestors       rc   rB  z_StarExprRule.is_issue  sA   	 	 	 #v--{HH-d33H= G"4 G6F G GGG!&00X5Fq5IS5P5PNN4)LNMMMF%% 	'611t-DEEEEt-PQQQF;..{#A&+>>tT-LMMMMM /.>>rd   N)r   r   r   r  rB  rs   rd   rc   r  r    s.        !UN N N N Nrd   r  )typesc                       e Zd Zd ZdS )_StarExprParentRulec                    fd ||j                   rd |j        D             }d |D             }t          |          dk    r4| j        j        dk     rd}nd}|                     |d         |           d S |rD|                    |d	                   }|d
k    r%d}|                     |d	         |           d S d S d S d S )Nc                     |dS |j         }|dk    rdS |dk    r| j        |j        d         j        k     S  | |j                  S )NFrH   r   rG   )rV   r   rX   r   )r^   r  r_   r   s      rc   r   z3_StarExprParentRule.is_issue.<locals>.is_definition  s\    uME	!!u##~(9"(=(GGG =x777rd   c                     g | ]
}|d k    |S )r  rs   r{  s     rc   rx   z0_StarExprParentRule.is_issue.<locals>.<listcomp>"  s    999!SArd   c                 (    g | ]}|j         d k    |S )rN   r   r{  s     rc   rx   z0_StarExprParentRule.is_issue.<locals>.<listcomp>#  s$    @@@Q!&K*?*?q*?*?*?rd   r'   r   z%two starred expressions in assignmentz*multiple starred expressions in assignmentrO  r      z1too many expressions in star-unpacking assignment)r   rX   rY   rJ  r/   r*  r  )r   r^   r   rS   r   countr   s         @rc   rB  z_StarExprParentRule.is_issue  s   	8 	8 	8 	8 	8 =t{++ 	@99t}999D@@$@@@G7||a#+f44EGGJGwqz7;;;;; @

71:..C<<QGNN71:wN?????	@ 	@@ @<rd   Nr   r   r   rB  rs   rd   rc   r  r    s(        @ @ @ @ @rd   r  r   c                       e Zd ZdZd Zd ZdS )_AnnotatorRulezillegal target for annotationc                     |j         S r   rW  r   s     rc   r@  z_AnnotatorRule.get_node7  r  rd   c                    d }|j         j        d         }t          |          }	 |j        }d|v s|j        dk    r|d         dk    rd}n|j        dk    r|d         dk    rd}|d         }n# t          $ r Y nw xY w|6|j        d	k    s'|j        d
v r|j        dk    r|j        d         dk    sdS d S d S d}|                     |j         ||z             d S )Nr   r  r    r,   r.   r0   r1   rG   r   rB   rH   Tz,only single target (not %s) can be annotatedrO  )r   rX   r[   rV   r   r*  )r   r^   r_   lhsrX   rH   r   s          rc   rB  z_AnnotatorRule.is_issue:  s)   k"1%S!!		#|H h#(f"4"4!9K9KV##s(:(:rlGG  	 	 	D	 =H&&x#999	11(+s22t '& 32 EGNN3:wN?????s   A, ,
A98A9NrC  rs   rd   rc   r  r  1  s>         .G  @ @ @ @ @rd   r  r   c                       e Zd Zd ZdS )_ArgumentRulec                    |j         d         }| j        j        dk     rt          |          }|j         d         dk    rX|j        dk    rM|j        dk    r| j        j        dk     rd}nd}n| j        j        dk     rd	}nd}|                     ||
           t          |          r)|j        j        dk    r|                     |d
           d S d S d S )Nr   r#   r'   =r   r   z lambda cannot contain assignmentz=expression cannot contain assignment, perhaps you meant "=="?zkeyword can't be an expressionrO  r  r  )rX   rJ  r/   r[   rV   r*  r   r   )r   r^   ra   r   s       rc   rB  z_ArgumentRule.is_issueX  s    a #f,,"5))E=s""uzV';';zY&&#+f44@GG]GG #+f44>GG]GNN5'N222%d++ 	;0@J0N0NNN4)9N:::::	; 	;0N0Nrd   Nr  rs   rd   rc   r  r  V  s#        ; ; ; ; ;rd   r  r   c                       e Zd ZdZd ZdS )_NonlocalModuleLevelRulez0nonlocal declaration not allowed at module levelc                 (    | j         j        j        d u S r   )rJ  r  r   r   s     rc   rB  z!_NonlocalModuleLevelRule.is_issuet  s    '6$>>rd   Nr`  rs   rd   rc   r  r  p  s(        @G? ? ? ? ?rd   r  arglistc                   *    e Zd Zed             Zd ZdS )_ArglistRulec                 *    | j         j        dk     rdS dS )Nr  z?Generator expression must be parenthesized if not sole argumentz*Generator expression must be parenthesized)rJ  r/   r   s    rc   r   z_ArglistRule.messagez  s    #f,,TT??rd   c                    t                      }d}d}|j        D ]%}|dk    r
|j        dk    r|j        d         }t          |          rt	          |j                  dk    r dS |dv r%|dk    r|rd	}|                     ||
           rd}ud}|j        dk    rj|j        |v rGd}| j        j        dk    r|d	                    |j                  z  }|                     ||
           |
                    |j                   |rd}|                     ||
           
|rd}|                     ||
           'd S )NFr  r   r   r!   T)r  r)   r  z>iterable argument unpacking follows keyword argument unpackingrO  r   zkeyword argument repeatedr   z: {}z6positional argument follows keyword argument unpackingz,positional argument follows keyword argument)setrX   rV   r   rY   r*  r\   rJ  r/   formatadd)r   r^   arg_setkw_onlykw_unpacking_onlyr   ra   r   s           rc   rB  z_ArglistRule.is_issue  s   %%! &	> &	>H3}
** )!,-h77  C<N<NRS<S<S44K''||, F'KG NN8WNEEE,0))"GzV++ ;'11&AG#/76AA '6==+E+E E NN5'NBBBB#KK444$ >VGNN8WN==== >LGNN8WN===M&	> &	>rd   N)r   r   r   propertyr   rB  rs   rd   rc   r  r  x  s?        @ @ X@*> *> *> *> *>rd   r  r  r   c                       e Zd ZdZd ZdS )_ParameterRulez-non-default argument follows default argumentc                 |   t                      }d}d}t          |          D ]}|j        dk    r|j        dk    rd}d}|j        j        |v r+d}|                     |j        ||j        j        z             |                    |j        j                   |s"|j        |j        s|r dS |j        rd}d}d}d S )NFr7   r  Tz.duplicate argument '%s' in function definitionrO  )	r  r   rV   r\   r   r*  r  defaultr  )r   r^   param_namesdefault_only	star_seenpr   s          rc   rB  z_ParameterRule.is_issue  s    ee	d## 	( 	(Av##7c>> $I#(Lv|{**Jqvw/EFFFOOAFL))) (9$Q\$# $#tt$\ ( $I#(LL#'L)	( 	(rd   Nr`  rs   rd   rc   r  r    s*         >G( ( ( ( (rd   r  r   c                       e Zd ZdZd ZdS )_TryStmtRulezdefault 'except:' must be lastc                     d }|j         dd d         D ]0}|dv r d S |dk    r|}||                     || j                   1d S )Nr$   )elserf  exceptrO  )rX   r*  r   )r   r   default_exceptexcept_clauses       rc   rB  z_TryStmtRule.is_issue  sv    %.qt!t4 	E 	EM 333((!.+~t|DDD	E 	Erd   Nr`  rs   rd   rc   r  r    s-        .GE E E E Erd   r  rT   c                   8    e Zd ZdZdZdZdZd Zd Zd Z	d
d	Z
dS )_FStringRuleNz3f-string expression part cannot include a backslashz'f-string: expressions nested too deeplyzAf-string: invalid conversion character: expected 's', 'r', or 'a'c                 L    |                      |j        dd          |           d S r   _check_fstring_contentsrX   )r   format_specdepths      rc   _check_format_specz_FStringRule._check_format_spec  s*    $$[%9!""%=uEEEEErd   c                    |dk    r|                      || j                   |j        d         }d|                                v r|                      || j                   |j        d         }|j        dk    r|j        dk    r|j        d         }n|}|j        dk    r2|j        d         }|j        d	vr|                      || j                   |j        d
         }|j        dk    r|                     ||dz              d S d S )Nr!   rO  r'   r  r7   r  r$   fstring_conversion)sr}  ar   fstring_format_spec)	r*  message_nestedrX   get_codemessage_exprrV   r\   message_conversionr  )r   fstring_exprr  rM   
children_2
conversionr   r   s           rc   _check_fstring_exprz _FStringRule._check_fstring_expr  s   A::NN<1DNEEE$Q'4==??""NN4):N;;;!*1-
?j((Z-=-D-D%.q1JJ#J?222&q)Dz00tT-DEEE"+B/444##K;;;;; 54rd   c                 J    |                      |j        dd                    d S )Nr'   rG   r  )r   rT   s     rc   rB  z_FStringRule.is_issue  s(    $$W%5ad%;<<<<<rd   r   c                 R    |D ]#}|j         dk    r|                     ||           $d S )Nr  )rV   r  )r   rX   r  fstring_contents       rc   r  z$_FStringRule._check_fstring_contents  sD    ' 	A 	AO#~55((%@@@	A 	Ard   )r   )r   r   r   _fstring_grammarr
  r  r  r  r  rB  r  rs   rd   rc   r  r    st        HL>N\F F F< < <,= = =A A A A A Ard   r  c                       e Zd ZddZdS )_CheckAssignmentRuleFc                    d }|j         }|dk    rd}ns|dk    r.|j        d d         \  }}t          |          }||j         dk    r-| j        j        dk     rd}n)|j        d         d	k    rd
}nd}n|dk    r|dk    r| j        j        dk     rd}nd
}n|dk    r0t          |j                  dk    r| j        j        dk     rd}nd}n|dv rr|j         dk    rd}n|j         dk    r@|r|dk    rd}n|dk    rd}|j        d d d         D ]}	|                     |	|||           nX|                     ||||           n>|dk    r9|j        dk    rd}n)| j        j        dk     rd}nt          |j                  }n|dk    r|j        dk    rd}n|dk    rd}n|dv rd}n|dk    rd}
| 	                    ||
           n|dk    rd }n|d!v r|j        d"         d#k    rd$}n|j        d%         d&k    rd}n|j        d'         }|j         d(k    sJ |j        d"         dk    rd)}nP|r|j        d"         dk    rd*}n9|r|j        d"         d+k    rd,}n"|d-k    r| j        j        dk     rd}nd.}n|d/v r,|j        d d d         D ]}	|                     |	|||           nd0|v r|d1k    sd2|v s|d3v rd}n|d1k    r|r+| j        j        d4k    rd5}n| 	                    |d6           nl| j        j        d4k    r|j
        }nt          |          }|j         t          vr7|s5|j         dk    r|j        d"         dk    sd7}
| 	                    ||
           |                     |j        d                    |Q|rd8|z  }
n0| j        j        dk     rd9nd:}d;                    ||rd<nd=|g          }
| 	                    ||
           d S d S )>Nr   r   r    r!   r"   r#   r&   r'   r(   r*   r+   r2   r3   )r,   r0   r?   r6   r   r,   r.   r0   r1   r4   r5   r7   r8   r9   r:   r;   z+assignment to yield expression not possiblerO  r@   rA   rB   r   rE   rF   r   r)   rG   rH   rI   rJ   rK   rL   rT   rU   )r   r   r   rM   rN   rO   rP   r   rS   r  z4starred assignment target must be in a list or tuplez)cannot use assignment expressions with %szcan'tcannot deletez	assign to)rV   rX   rW   rJ  r/   rY   _check_assignmentr\   r]   r*  r   r   r   join)r   r^   is_deletionis_namedexpris_aug_assignrQ  r_   ra   rb   rk   r   rH   r  r  s                 rc   r  z&_CheckAssignmentRule._check_assignment  s*   	IEEf__ M"1"-ME6+D11E};"222'/&88 )!?1-44$2EE$1EEc\\fmm'/&88 ) .c\\c$-&8&81&<&<'/&88 ) -j(({l22 277 ( /$||(/!&#(. &,_SSqS%9 d dE 225+|Ubccccd ..v{LR_```izW$$*!)F22!DJj  zU"""l"" EE555EEl""CGNN4N1111f__,EE,,,}Q7***r"d**" -+|y0000#A&#--+EE! (g&6q&9S&@&@'EE! (g&6q&9S&@&@'Ei'&00!-DDDsss+ X X&&uk<WWWWXoo%;"6"6E!!,,,EEk!! :#+v55%EENN41TNUUUU#+v55#{HH5d;;H=(:::=:!)&!8!8X=Nq=QUX=X=XTGNN4N999""4=#3444 ^EM$($4$<v$E$E8((F,THHV[#\]]NN4N11111 rd   N)FFF)r   r   r   r  rs   rd   rc   r  r    s.        t2 t2 t2 t2 t2 t2rd   r  r   c                       e Zd ZdZd ZdS )_CompForRulez>asynchronous comprehension outside of an asynchronous functionc                     |j         d         }|j        dk    r|                     |           |j        j         d         dk    o| j        j                                         S )Nr'   	expr_listr   async)rX   rV   r  r   rJ  r  r   )r   r^   r"  s      rc   rB  z_CompForRule.is_issue  se    M!$	>[((""9---{#A&'1 @$,==???	@rd   Nr`  rs   rd   rc   r   r     s-        NG@ @ @ @ @rd   r   r   c                   "    e Zd ZdZdez   Zd ZdS )_ExprStmtRulez+illegal expression for augmented assignmentz'{target}' is an c           	      P   |j         d         }|dk    o
|j        dk    }| j        j        dk    s|s*|j         d dd         D ]}|                     ||           |rt          |j         d                   }|j        d	k    s;|j        d
v r4|j         d         j        dk    r|j         d         j         d         dk    rdS | j        j        dk    rdS |                     || j                            t          |j         d         | j        j                                       d S d S )Nr'   r  r   r#   r   r!   )r  r   r   rB   rH   rG   r,   FT)targetrO  )
rX   rV   rJ  r/   r  r[   r*  extended_messager  rZ   )r   r^   	augassignr  before_equalr'  s         rc   rB  z_ExprStmtRule.is_issue  s^   M!$	!S(JY^{-J#v--]- $er!e 4 R R&&|=&QQQQ 	#DM!$455F {f$$555OA&+y88OB'03s::u'611t 188,T]1-=t?O?WXX 9        	 	rd   N)r   r   r   r   r(  rB  rs   rd   rc   r%  r%    s3        ;G*W4    rd   r%  	with_itemc                       e Zd Zd ZdS )_WithItemRulec                 F    |                      |j        d                    d S Nr!   )r  rX   )r   r+  s     rc   rB  z_WithItemRule.is_issue  s$    y1!455555rd   Nr  rs   rd   rc   r-  r-    s#        6 6 6 6 6rd   r-  r  c                       e Zd Zd ZdS )_DelStmtRulec                 h    |j         d         }|j        dk    r|                     |d           d S d S )Nr'   r"  T)r  rX   rV   r  )r   r  rk   s      rc   rB  z_DelStmtRule.is_issue  sC    !!$:$$""5d";;;;; %$rd   Nr  rs   rd   rc   r1  r1    s#        < < < < <rd   r1  r"  c                       e Zd Zd ZdS )_ExprListRulec                 V    |j         d d d         D ]}|                     |           d S r/  )rX   r  )r   r"  rM   s      rc   rB  z_ExprListRule.is_issue  s@    &sss+ 	) 	)D""4((((	) 	)rd   Nr  rs   rd   rc   r5  r5    s#        ) ) ) ) )rd   r5  r   c                       e Zd Zd ZdS )_ForStmtRulec                 d    |j         d         }|j        dk    r|                     |           d S d S )Nr'   r"  r3  )r   r   r"  s      rc   rB  z_ForStmtRule.is_issue  s>    %a(	>[((""9----- )(rd   Nr  rs   rd   rc   r8  r8    s#        . . . . .rd   r8  namedexpr_testc                       e Zd Zd ZdS )_NamedExprRulec                   	 |j         d         }d } ||          rd}|                     ||           t                      fd		fd} ||          }|rt| j        j        j        j        dk    rd}|                     ||           d	 D             }|j        d
k    r*|j        |v r!d|j        z  }|                     ||           |                     |d           d S )Nr   c                 \    	 | j         }||S |j        dk    r|j        d         | k    r|S |} ,)NTr   r$   r   )r^   r   s     rc   search_namedexpr_in_comp_forz=_NamedExprRule.is_issue.<locals>.search_namedexpr_in_comp_for  sE    >!M;/11foa6HD6P6P!Mrd   zKassignment expression cannot be used in a comprehension iterable expressionrO  c                     | j         dk    r| }n| j         dk    r| j        d         }                    t          |                     d S )Nr   r   r'   )rV   rX   r   r   )r   compr   s     rc   process_comp_forz1_NamedExprRule.is_issue.<locals>.process_comp_for  sR    }//*,,(+OO:4@@AAAAArd   c                     d}	 |                      dd          } | n(| j        D ]}|j        t          v r |           d} n A|S )NFTr   r"   )r   rX   rV   rp   )r^   has_ancestorsrk   rB  s      rc   search_all_comp_ancestorsz:_NamedExprRule.is_issue.<locals>.search_all_comp_ancestors  sv    !M++O=MNN<!]  Ez_44((///(, 5 ! rd   r  zKassignment expression within a comprehension cannot be used in a class bodyc                 2    g | ]}|j         d k    |j        S )r   )rV   r\   )rv   rM   s     rc   rx   z+_NamedExprRule.is_issue.<locals>.<listcomp>  s&    OOOt49;N;N
;N;N;Nrd   r   zGassignment expression cannot rebind comprehension iteration variable %rT)r  )	rX   r*  r1   rJ  r  r^   rV   r\   r  )
r   r:  ra   r?  r   rE  
search_allnamelistr   rB  s
           @@rc   rB  z_NamedExprRule.is_issue  sX   '*	 	 	 ('77 	< dGNN>7N;;; 66	B 	B 	B 	B 	B	! 	! 	! 	! 	! /.~>>
 	@',1Z??;~w???OOxOOOHzV##x(?(?
@BG+N~w???u488888rd   Nr  rs   rd   rc   r<  r<    s#        =9 =9 =9 =9 =9rd   r<  )Er  r  r  
contextlibr   parso.normalizerr   r   r   r   parso.python.tokenizer   r  r   r  r  r  rp   rZ   rm   rW   r}   r[   r   r   r   r   r   r   r   r   r   r   r8  register_ruler>  rE  rH  rL  rS  r[  rc  rk  rp  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r%  r-  r1  r5  r8  r<  rs   rd   rc   <module>rM     s     				 % % % % % % F F F F F F F F F F F F 7 7 7 7 7 7MH   0G G GT    ; ; ;  	 	 	Z Z Z  "( ( (0  = = =
8 8 8/ / /F F F F F F F FDq; q; q; q; q;* q; q; q;h. . . . .d . . . --	3 	3 	3 	3 	3? 	3 	3 .-	3# # # # #( # # #
) 
) 
) 
) 
) 
) 
) 
) --       .-& ))       *) ))    
   *) ,,    j   -,, ((< < < < <j < < )(< ''    *   (' ))H H H H HJ H H *)H@ %%	# 	# 	# 	# 	# 	# 	# &%	# &&	M 	M 	M 	M 	MZ 	M 	M '&	M ))**    J   +* *)  	**       +*"  122    :   32 ..] ] ] ] ]J ] ] /.] ..: : : : :
 : : /.:. ,,!N !N !N !N !NJ !N !N -,!NH !344@ @ @ @ @* @ @ 54@> ,,!@ !@ !@ !@ !@Z !@ !@ -,!@H 
++; ; ; ; ;J ; ; ,+;2 00? ? ? ? ?z ? ? 10? 	**2> 2> 2> 2> 2>: 2> 2> +*2>j --	**( ( ( ( (Z ( ( +* .-(> 
++E E E E E: E E ,+E 	**%A %A %A %A %A: %A %A +*%APu2 u2 u2 u2 u2: u2 u2 u2p 00	@ 	@ 	@ 	@ 	@' 	@ 	@ 10	@ ,,    (   -,D ,,6 6 6 6 6( 6 6 -,6
 
++< < < < <' < < ,+< ,,) ) ) ) )( ) ) -,) 
++. . . . .' . . ,+.  011@9 @9 @9 @9 @9) @9 @9 21@9 @9 @9rd   