
    Xh1                        d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZ ddlmZ d dlmZ d dlZd	ed
e	e   fdZ d	ed
e	e   fdZ! ed      ded
e"ejF                     fd       Z$e jJ                  e jL                  e jN                  e jP                  fZ)e)e jT                  e jV                  e jX                  e jZ                  fz   Z.e j^                  e j`                  e jb                  e jd                  e jf                  e jh                  e jj                  e jl                  e jn                  e jp                  e jr                  e jt                  e jv                  dZ< G d de=      Z>y)    N)CodeType	FrameType)
AnyCallableIteratorOptionalSequenceSetTupleTypeUnioncast   )EnhancedASTNotOneValueFoundSourceonlyfunction_node_typesassert_)
KnownIssueVerifierFailure)mangled_name)	lru_cachenodereturnc              #   J   K   	 t        | d      r| j                  } |  ny w)Nparent)hasattrr   r   s    S/var/www/html/myenv/lib/python3.12/site-packages/executing/_position_node_finder.pyparentsr!      s)     
4";;DJ s   !#c              #   >   K   |  t        |       E d {    y 7 wN)r!   r   s    r    node_and_parentsr$      s     
Jt}s      codec                 >    t        t        j                  |             S r#   )listdisget_instructions)r&   s    r    r*   r*      s    $$T*++    )z***@z///%+-z<<z>>&^|c            
       P   e Zd ZdZdedee   dej                  de	de
f
dZded	e	d
dfdZdedej                  d
efdZdedej                  d
dfdZd
e	fdZedej                  ded
efd       Zdedej                  d
dfdZd	e	d
eej                     fdZdej                  d
eej                     fdZd	e	d
efdZdZej:                  dk\  rej<                  fZdej>                  ej@                  ejB                  ejD                  gefd	e	de#e   de$e%df   d
efdZ&y)PositionNodeFindera%  
    Mapping bytecode to ast-node based on the source positions, which where introduced in pyhon 3.11.
    In general every ast-node can be exactly referenced by its begin/end line/col_offset, which is stored in the bytecode.
    There are only some exceptions for methods and attributes.
    framestmtstreelastisourcec                    t        |j                        D ci c]  }|j                  | c}| _        || _        || _        d | _        | j                  |      dk(  r|dz  }| j                  |      dk(  r	 | j                  |      | _	        | j                  |      }|J | j                  | j                  |      | _	        | j!                  | j                  |       | j#                  | j                  |       | j                  | j%                  | j                  |       y t'        | j                  | j                  j(                  v        y c c}w # t        $ rh | j                  |      dv rt        j                  f}n&| j                  |      dv rt        j                  f}n | j                  |d|      | _	        Y 8w xY w)NCACHE   )LOAD_METHOD	LOAD_ATTR
STORE_ATTRDELETE_ATTR)CALLCALL_KW)end_col_offset
end_lineno)match_positionstyp)r*   f_codeoffsetbc_dictr7   r;   	decoratoropname	find_noderesultr   ast	AttributeCallinstruction
fix_resultknown_issuestest_for_decoratorverifyr   decorator_list)	selfr7   r8   r9   r:   r;   bcrH   rS   s	            r    __init__zPositionNodeFinder.__init__I   s   -=ell-KMrbiilM
04 kk% G+QJE kk% G+	../DK> &&u-&&&oodkk;?$++{3U3 >>!KK[1DNNdkk&@&@@Aq N   	 {{5! &  }}&U#'::
 xxk.. @ ) DK1	s   E8E A-GGr   indexr   Nc                 <   t        |j                  t        j                  t        f      r||j                  j
                  v r|j                  }	 | j                  |dz
        dk(  st        j                  dk\  r| j                  |      dk(  sy |dz  }| j                  |      dv r|dz  }| j                  |      dv r| j                  |      j                  d      r#| j                  |      |k(  r|| _        || _        y t        j                  dk  r|dz  }y y )N   PRECALL      rC   r>   )r=   EXTENDED_ARGSTORE_)
isinstancer   rP   ClassDefr   rX   rM   sysversion_info
startswithrN   rO   rL   )rY   r   r\   	node_funcs       r    rV   z%PositionNodeFinder.test_for_decorator   s   t{{S\\3F$GH222I& [[+y8C<L<LPW<WE*f4
kk%(,EEQJE kk%(,EE KK&11(;u-:"+DK%)DN##g-QJEM 	 3 Ir+   rS   c                    t         j                  dk\  rV|j                  dv rHt        |j                  t
        j                        r$||j                  j                  u r|j                  S t         j                  dk\  r|j                  dv rt        |j                  j                  t
        j                  t
        j                  t
        j                  t
        j                  f      rRt        |j                  t
        j                        r.||j                  j                  u r|j                  j                  S t         j                  dk\  r|j                  dk(  r| j                  |      }|z|j                  dk(  rk|j                  |j                  k(  rRt        |j                  t
        j                        r.||j                  j                   u r|j                  j                  S t         j                  dk\  ra|j                  dk(  rRt        |j                  t
        j                        r.||j                  j                   u r|j                  j                  S t         j                  dk\  r|j                  dk(  r| j                  |      }||j                  dk(  ry|j"                  d	v rk|j                  |j                  k(  rRt        |j                  t
        j                        r.||j                  j                   u r|j                  j                  S t         j                  dk\  rYt        |t
        j$                        r?t        |j&                  t
        j(                        r|j                  d
k7  r|j*                  S |S )N)ra   rb      GET_ITERFOR_ITER)ra   rb      rC   
LOAD_CONSTBEFORE_WITHra      LOAD_SPECIAL)	__enter__
__aenter__	UNARY_NOT)rg   rh   rM   re   r   rP   ForiterListCompSetCompDictCompGeneratorExpcomprehensioninstruction_before	positionswithitemcontext_exprargreprUnaryOpopNotoperand)rY   r   rS   befores       r    rT   zPositionNodeFinder.fix_result   s    
*""&>>4;;0(((  ;; 
*""&>>""s{{CLL#:J:JK 4;;s'8'89(((
 ;;%%%y([-?-?6-I,,[9F"MM\1$$(=(==t{{CLL9DKK4444 {{))) 	)""m34;;5000 ;;%%%w&;+=+=+G,,[9F"MM^3NN&@@$$(=(==t{{CLL9DKK444{{)))w&:dCKK+HZX\X_X_`c`g`gMhmxmm  CN  nN<< r+   c                    |j                   dv rt        |t              rt        |t              rt	        j
                  |j                        D cg c]6  }t        |t        j                        rt        |j                        dkD  r|8 }}t        |d       t        |      dk(  rt        t        |d         x}| _        nt        d|z        t        d|z        t        j                   d d dk(  rOt        |t        j                        r5|j                   d	k(  r&t#        d
 t%        |      D              rt        d      t        |t        j&                        rt        d      t#        d t%        |      D              rt        d      t        j                   dk\  r[t        |t        j(                        r@t        |j*                  t        j,                        r|j*                  j.                  dk(  r|j0                  }t3        |d      rmt        |t        j4                  t        j6                  f      sC|j0                  }t3        |d      r+t        |t        j4                  t        j6                  f      sCd }t3        |d      r?g |j8                  j:                  |j8                  j8                  }|r|d   j<                  }|j                   |j>                  fdd|fd|fd|ffv rt        d      | jA                  ||      rt        d      |j                   dk(  r|j>                  dk(  rt        d      |j                   d	k(  rSt        |t        j(                        s9t#        d tC        |      D              rt        j                   dk\  rt        d      t        j                   dk\  r|j                   d v rt        d!|j                    d"      |j                   d#v r|j>                  d$k(  rt        d%      |j                   d&k(  rst        |t        jD                        rYt        |jF                  t        j                        r5t        |jH                  t        jJ                        r|jF                  | _        t        j                   d'k\  r| jM                         x}rtO        | jP                  jS                               d(   }	|d)z  |jT                  cxk  r|	d*z
  k  st        d+       t        d+      | jV                  jX                  jZ                  d,k(  r|j                   d-k(  rt        d.      | jV                  jX                  jZ                  d,k(  r%t        |t        j\                        rt        d/      t        |t        j^                        rB| jV                  jX                  jZ                  |j`                  j.                  k(  rt        d0      |j                   dk(  r|jb                  d,k(  rt        d1      |j                   d2k(  r&t        |t        j,                        rt        d3      y y y c c}w )4N
COMPARE_OPIS_OPCONTAINS_OPr   z expected at least one comparisonr   z4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixedra   )ra      r   rC   c              3   P   K   | ]  }t        |t        j                           y wr#   re   rP   Assert.0ns     r    	<genexpr>z2PositionNodeFinder.known_issues.<locals>.<genexpr>>  s     N!Jq#**-N   $&zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921assertc              3   P   K   | ]  }t        |t        j                           y wr#   )re   rP   patternr   s     r    r   z2PositionNodeFinder.known_issues.<locals>.<genexpr>J  s     Jaz!S[[)Jr   z)pattern matching ranges seems to be wrongr`   superr   args)
LOAD_DEREF	__class__	LOAD_FASTLOAD_FAST_BORROWr   zsuper optimizationzCexeption cleanup does not belong to the last node in a except block
STORE_NAME__classcell__zstore __classcell__c              3   P   K   | ]  }t        |t        j                           y wr#   r   )r   ps     r    r   z2PositionNodeFinder.known_issues.<locals>.<genexpr>  s     E!Jq#**-Er   )ra   r   r>   z&exception generation maps to conditionra      )STORE_FAST_STORE_FASTSTORE_FAST_LOAD_FASTLOAD_FAST_LOAD_FASTzcan not map z to two ast nodesr   r   r   z^loading of __class__ is accociated with a random node at the end of a class if you use super()r   rs   r>   r^   zAsynthetic opcodes in annotations are just bound to the first node__annotate__STORE_SUBSCRz"synthetic code to store annotationz<some opcodes in the annotation are just bound specific nodesz7some opcodes in the annotation are just bound TypeAliaszjust a store of the annotationr   z3part of a check that a name like `all` is a builtin)2rM   re   types_cmp_issuetypes_cmp_issue_fixrP   walktestComparelenopsr   r   r   rO   r   rg   rh   anyr$   r   rR   funcNameidr   r   AsyncFunctionDefFunctionDefr   posonlyargsargargvalis_except_cleanupr!   r   r   r   r   annotation_header_sizer(   rK   keysrJ   r7   rI   co_name	AnnAssign	TypeAliasnamer   )
rY   r   rS   r   comparisonsr   	first_argr   header_lengthlast_offsets
             r    rU   zPositionNodeFinder.known_issues  s\   !GGJ/M
 $ 34 !XXdii0!!S[[1c!%%j1n   %GH{#q()-k;q>)JJD4;$NRVW  !!NRV!WXX Ra J.4-""f,N7G7MNNT  dCJJ' X&&J3CD3IJJHII '4*499chh/		'
 ;;D$)*s++S__=3 {{	 $)*s++S__=3 ItV$@..@@ $QI""K$6$67+i(#Y/y)	<  !!566!!+t4bcc-+2D2D2W 233 &(tCHH-Ewt}EE  J.EFFw&!! & 
 !<0B0B/CCT!UVV!!%EE+J\J\`kJk !t 
 ""l2tS[[1t||CKK8tww0 #llv% !% ; ; ==}= !2!2!45b9&q;+=+=L{1}L %%hii M %%hii::$$,,n<ASASUcAc$%IJJ::$$,,n<DQTQ^Q^A_$%cdd$/TZZ5F5F5N5NPTPYPYP\P\5\ !Z[[!!\1k6I6I^6[ !ABB!!W,D1J !VWW 2K,1 &As   ;Yc                    t         j                  dk\  rnt        j                  | j                  j                         d      D cg c]  }|j                   }}t        |      dk(  r|d   dv r|d= d}n|d= d}|g dk(  r|S yc c}w )Nrs      r   )COPY_FREE_VARS	MAKE_CELL   )RESUMEr   LOAD_SMALL_INTr   POP_JUMP_IF_FALSE	NOT_TAKENLOAD_COMMON_CONSTANT)rg   rh   	itertoolsislicerK   valuesrM   r   )rY   instheaderheader_sizes       r    r   z)PositionNodeFinder.annotation_header_size  s    f$,5,<,<T\\=P=P=RST,UVDDKKVFV6{A~!9 >>q	 !Kq	 !K   '&+ Ws   Br   c                 $     j                   dvryt        |t        j                        rXt        |j                  t        j
                        r4 j                   j                  d      rt        |       j                  k(  ryt        |t        j                        rXt        |j                  t        j                        r4 j                   j                  d      rt        |       j                  k(  ryt         fdt        |      D              S )N)r   
STORE_FASTSTORE_DEREFSTORE_GLOBALDELETE_NAMEDELETE_FASTDELETE_DEREFDELETE_GLOBALFrd   DELETE_c              3      K   | ]F  }t        |t        j                        xr& |j                  xr t	        |      j
                  k(   H y wr#   )re   rP   ExceptHandlerr   r   r   )r   r   r   s     r    r   z7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  sD      
 q#++,ZZLOt{{<ZZ
s   AA)rM   re   rP   r   ctxStoreri   r   r   Delr   r!   )r   r   s   ` r    r   z$PositionNodeFinder.is_except_cleanup  s    ;; 	
 	
 , tSXX&488CII.&&x0T"dkk1  tSXX&488CGG,&&y1T"dkk1  
T]
 
 	
r+   c           	      d   j                   }d }t        d      }dt        t        t        t           f   dt
        dt        ffd}dt        t        t        t        df   f   dt
        dt        ffd	}|d
k(  ry |d      r' |t        j                  t        j                  f      ry |d      rE |t        j                  t        j                  t        j                  t        j                  f      ryt         j"                  dk\  r> |d      r6 |t        j                  t        j                  t        j                  f      ry |d      r' |t        j$                  t        j&                  f      ry |d      r |t        j(                        ry |dd      r |t        j*                        ry |dd      s |dd      s |d      r |t        j,                  t        j.                  t        j0                        rUt3        t5        t        j.                  t5        t        j,                        j6                        j8                  t              ry |d      r |t        j*                        ry |d      r2 |t        j:                  j<                  t        j>                        ry |d      r= |t        j@                        s& |t        j,                  t        j0                        ry |d      r |t        j                        ry |dd       r |t        j.                        ry |d!      r/ |t        jB                        rj<                  tE              k(  ry |d"      r] |t        jF                  t        jH                  f      r7tK        fd#t5        t        jF                        jL                  D              ry |d$      rt |t        jN                  t        j$                  t        jP                  f      s& |t        j:                  t        jR                  %      rj<                  tE              k(  ry	  |d&      r@jZ                  j]                  d'      }|d(k7  r  |t        j^                  t`        |         ry |t        jb                  t        j>                  %      r |d)tE                    ry |d*      r |t        jd                        ry |d+      r' |t        jf                  t        j>                  %      ry |t        j:                  t        jh                  %      sJ |t        j:                  t        jR                  %      rwt3        jj                  t        j^                        rS |d,      rKt3        j<                  tl              rtE              j<                  v ryj<                  tE              k(  ry |t        j:                  t        j>                  %      r |d-tE                    ry |t        j.                        r- |d.t5        t        j.                        j8                        ry |t        j                  t        j                  t        j                  t        j                  t        jn                  f      r	 |d/      ryt         j"                  dk\  r |t        jp                  t        jr                        r |d0d12      ry |t        jf                        r	 |d3      ry |t        jH                        r |d0d42      ry |t        jt                        s$t3        jj                  t        j                        r |d0d52      ry |t        j:                        r |d6d7      ry |t        jv                        r2 |d0d82      s' |d9d:2      s |d9d;2      s |d<tE              2      ry |t        jx                        r |d0d=2      s |d<jz                  2      ry |t        j|                        r |d0d>2      s |d<jz                  2      ry |t        j~                        r1 |d0d?2      s& |d"jz                  j                  2      s |d      ry |t        j$                        r8j                  r, |d@dA2      ry |dBdC2      ry |d0dD2      ry |d6d7      ry |t        jN                  t        jP                  f      rTj                  rH |d      ry |d9dE2      ry |dFdG      ry |dFdH      ryt         j"                  dIk\  r |dJdK      ry |dLdM      ry |t        j@                        r |dd      s |dN      ry |t        j                        r	 |dO      ryt         j"                  dPk\  r |dQ      ry |dR      r |t        jd                        ry |dS      r' |t        j&                  t        j$                  f      ry |dFdA      ry |dFd7      ry |dT      rc |t        jN                  t        j$                  t        j~                  t        jv                  t        j                  t        jP                  f      ry |dF      r: |t        j~                        r$jz                  j                  j<                  k(  ry |dLdU      ry |dT      r%t3        jj                  t        jv                        ry |d9dV2      r6 |t        jv                  t        j|                  t        jx                  f      ryt         j"                  dIk\  rn |d&d(2      r |t        jf                        ry |dWd7      ry |dXdY      ry |dJ      r/ |t        j:                        rj                  j<                  v ryt        d      }	t        d      |j                  dZ      r"t        jf                  }	t        jh                  }n|j                  d[      r*t        j,                  }	t`        jZ                     fd\}nE|j                  d]      r`t        jp                  }	t        t        jr                  t        j                  t        j                  t        j                  ^      |   fd_}n|d`v r&t        jb                  }	t        jh                  }fda}n|dbv r&t        j:                  }	t        jh                  }fdc}n|dv rt        j(                  }	dd }nh|j                  de      r!t        jR                  }t        jf                  }	n6|j                  df      r%t        jR                  }t        jb                  }	fdg}t        dhd      }
|t        d      uxs t        dh       xs t3        |
|      }t3        |	      r|r	 |      rydit              j                  djj                   }t        |      )kzE
        checks if this node could gererate this instruction
        c                      y)NT es    r    <lambda>z+PositionNodeFinder.verify.<locals>.<lambda>  s    r+   Nopnameskwargsr   c           	          t        | t              r| g} j                  | v xr ||D ci c]  }|t        |       c}k(  S c c}w )a)  
            match instruction

            Parameters:
                opnames: (str|Seq[str]): inst.opname has to be equal to or in `opname`
                **kwargs: every arg has to match inst.arg

            Returns:
                True if all conditions match the instruction

            )re   strrM   getattr)r   r   krS   s      r    
inst_matchz-PositionNodeFinder.verify.<locals>.inst_match  s\     '3'")%%0 V4:@/07;**@ 6  @s   A	node_type.c                 d    t        |       xr" t        fd|j                         D              S )a  
            match the ast-node

            Parameters:
                node_type: type of the node
                **kwargs: every `arg` has to be equal `node.arg`
                        or `node.arg` has to be an instance of `arg` if it is a type.
            c              3      K   | ]<  \  }}t        |t              rt        t        |      |      nt        |      |k(   > y wr#   )re   typer   )r   r   vr   s      r    r   z@PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>:  sM      7 Aq a& 74+Q/T1%*+7s   AA)re   allitems)r   r   r   s     r    
node_matchz-PositionNodeFinder.verify.<locals>.node_match1  s5     dI. 3 7 #LLN	7 4 r+   r=   rC   )rC   r   r   r`   )LOAD_FAST_AND_CLEARr   )rC   CALL_FUNCTION_EXr   	LOAD_NAME__annotations__)r   r?   joinr@   )rC   BUILD_STRING)leftr   r   )r   r   )r   r   r  )r   )rr   WITH_EXCEPT_START)r   r   __doc__)r   r   r   r   )r   r   r   r   c              3   j   K   | ]*  }t        t        t        |            j                  k(   , y wr#   )r   r   r   r   )r   aliasrS   s     r    r   z,PositionNodeFinder.verify.<locals>.<genexpr>  s)     {UZLk5!9:k>P>PP{s   03)r   r   r   r   )r   	BINARY_OP=z[]rB   )JUMP_IF_TRUE_OR_POPJUMP_IF_FALSE_OR_POPPOP_JUMP_IF_TRUEr   DELETE_SUBSCR)r   r   LOAD_FAST_CHECKr   LOAD_GLOBALr   LOAD_FROM_DICT_OR_DEREF!LOAD_FAST_BORROW_LOAD_FAST_BORROW)r   r   r   )rq   r   rm   CALL_INTRINSIC_1INTRINSIC_UNARY_POSITIVE)r   BINARY_SLICEINTRINSIC_IMPORT_STARINTRINSIC_ASYNC_GEN_WRAPr   __classdict__INTRINSIC_TYPEVARCALL_INTRINSIC_2INTRINSIC_TYPEVAR_WITH_BOUND"INTRINSIC_TYPEVAR_WITH_CONSTRAINTS)r   r   INTRINSIC_TYPEVARTUPLEINTRINSIC_PARAMSPECINTRINSIC_TYPEALIAS)r   r   r  z.type_params)r   r   z.generic_baseINTRINSIC_SUBSCRIPT_GENERIC"INTRINSIC_SET_FUNCTION_TYPE_PARAMSr   	.defaults.kwdefaultsrs   r  )r   r!  r   __classdictcell__)LIST_APPENDrC   FORMAT_VALUEr   NOPTO_BOOLrD   r   __static_attributes__INTRINSIC_SET_TYPEPARAM_DEFAULTr   )r   r   __conditional_annotations__)BINARY_SUBSCRzSLICE+BINARY_c                 `    t        t        t        j                  |       j                        S r#   )re   r   rP   BinOpr   r   op_types    r    r   z+PositionNodeFinder.verify.<locals>.<lambda>  s    ZSYY0B0E0Ew%O r+   UNARY_)UNARY_POSITIVEUNARY_NEGATIVErx   UNARY_INVERTc                 `    t        t        t        j                  |       j                        S r#   )re   r   rP   r   r   r.  s    r    r   z+PositionNodeFinder.verify.<locals>.<lambda>  s    ZS[[!0D0G0G%Q r+   )r@   r?   LOOKUP_METHODLOAD_SUPER_ATTRc                 4    t        |       j                  k(  S r#   r   r   r   rS   s    r    r   z+PositionNodeFinder.verify.<locals>.<lambda>      \!_8J8J%J r+   )r   r  r   r   LOAD_CLASSDEREFc                 f    t        t        j                  |       j                  j                  k(  S r#   )r   rP   r   r   r   r9  s    r    r   z+PositionNodeFinder.verify.<locals>.<lambda>  s#    T#((A%6%9%9[=O=O%O r+   c                 b    t        t        t        j                  |       j                        dk(  S )Nr   )r   r   rP   r   r   r   s    r    r   z+PositionNodeFinder.verify.<locals>.<lambda>  s!    Sckk1)=)A)A%Ba%G r+   )STORE_SLICEr   rA   c                 4    t        |       j                  k(  S r#   r8  r9  s    r    r   z+PositionNodeFinder.verify.<locals>.<lambda>  r:  r+   r   zast.z is not created from )MrM   r   r   r   r	   r   boolr   r   rP   With	AsyncWithr{   r~   r|   r}   rg   rh   rf   rR   r   r   r-  ConstantModre   r   r  valuer   r   r   	JoinedStrr   r   Import
ImportFromr   namesr   r   r   MatchAsMatchSequence
MatchValuer   removesuffix	AugAssignop_type_maprQ   BoolOp	SubscriptLoadr   tuplery   r   UAddYieldTypeVarTypeVarTupler   	ParamSpecr   r   type_paramsFormattedValueLambdari   dictUSubr   Invertr   r   __name__r   )rY   r   rS   op_nameextra_filterr   r   r   r   rH   node_ctx	ctx_matchtitler/  s    ``          @r    rW   zPositionNodeFinder.verify  sK   
 $$6DJ	c8C=&8 9 	S 	T 	&	%eD#I.>(>"? 	3 	SW 	  gf*chh-F"G>?J\\3++S[[#,,GE
  '@ACLL#++s||DE23
\\388$9
 <=*KKC
 k*;<MMB
  =8k&9673993<<CGGD4d399d.C.H.HIOOQTU n%*S]]*C 45*HH++;
 n%s}}%CII#'')J9:z#((?S4YGJLLM
  RS3,,-""l4&88  RSCJJ78{^bcfcmcmos^t^z^z{{  RSCOOS\\3;O;OPQHH		
 ""l4&88 k"##005CDyZ;s;KLcmm1j,t"47
 
 $o&:cmm+Q sxxSXX.3883t{{CMM:	
 9C;CUCUV[8\L+"4"44  ##|D'99chhCGG,<\RVEW2
 cll#
+Dt4L4R4R)
 \\3;;c6F6FP
12w&#++#((3
",F9 #--(Z-G#..)j",C/  399%DKKAQAQ)R/9ST#((#
<(W#++&-7JK&0N &0T ;\RVEWX#**+-7OP;TYYO#--(-7LM;TYYO #--(1;PQ!R\`\e\e\h\h "&) #,,'D,<,<L* 9?S&0M l/B3??3+?+?@AdFVFVf%&0T k=k?##w.!"EMhi,/BC
 #--(;v656#,,-*^2Lw&% )$CJJ)?)$SXXs||4L)M+n=+o>:;
OOLLMMKKJJ((	A  ;'s}}-IILLK$6$66,.EF:;
4;;WZWbWb@c,5VW\fhkhshstw  uB  uB  CF  CS  CS  hT  ]Uw&+d3
3==8Q,_E4=Z[=>:chhCW\`\c\cgrgygy\y
 JT
9:--C((C	*))C!+"5"56GOL)++C"xx"xx'' ZZ	
 G RLWW--C((CJL 
 
 ((C((COL>>++CGL ?@))C--C-))C--CJL4- tDz! )4'')(C( 	 dC Y<3E
 J

 eT;77r+   c                 :    | j                   j                  |d       S r#   )rK   get)rY   r\   s     r    rS   zPositionNodeFinder.instruction  s    ||d++r+   c                 T    | j                   j                  |j                  dz
  d       S )Nr>   )rK   rf  rJ   )rY   rS   s     r    r   z%PositionNodeFinder.instruction_before  s&     || 2 2Q 6==r+   c                 B    | j                  |      }|y|j                  S )Nr=   )rS   rM   )rY   r\   is      r    rM   zPositionNodeFinder.opname  s#    


5
!9xxr+   r   r`   )linenorF   
col_offsetrE   rG   rH   .c                     | j                  |      }|J |j                  j                  J t        fd| j                  j
                  j                     D              S )Nc              3      K   | ]i  t              r[t        t        j                        sAt        t        j                        s't	        fd D              rt        t               k yw)c              3   P   K   | ]  }t        |      t        |      k(    y wr#   )r   )r   attrr   positions     r    r   z9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  s,       $'74+>>s   #&N)re   rP   ExprrL  r   r   r   )r   r   rG   rp  rH   s    @r    r   z/PositionNodeFinder.find_node.<locals>.<genexpr>
  s[      
$$dCHH-dCNN3 +  d#
s   A/A3)rS   r   rj  r   r;   _nodes_by_line)rY   r\   rG   rH   rS   rp  s     `` @r    rN   zPositionNodeFinder.find_node  sn    " &&u-&&&((#(CCC 
228??C
 
 	
r+   )'r_  
__module____qualname__r  r   r
   r   rP   Moduleintr   r[   rV   r)   InstructionrT   rU   r   staticmethodr@  r   rW   r   rS   r   r   rM   extra_node_typesrg   rh   
type_paramexprstmtexcepthandlerr   r	   rS  r   rN   r   r+   r    r6   r6   B   s   9Bi 9BK0@ 9B

 9B[^ 9Bhn 9Bv-{ -3 -4 -^ee.1ooe	eNfX fX3?? fXt fXTc 2 5
 5
{ 5
t 5
 5
nJ8; J8S__ J8 J8X, ,#//)B ,>??>	#//	">
C C  
6!NN,
*
 HHHHKK	!

 !
"
"
 "#"
 49"
  
!"
r+   r6   )?rP   rg   r)   typesr   r   typingr   r   r   r   r	   r
   r   r   r   r   	executingr   r   r   r   r   r   _exceptionsr   r   _utilsr   	functoolsr   r   r!   r$   r(   rw  r*   IfExpIfr   Whiler   r{   r|   r}   r~   r   PowMultMatMultFloorDivDivrD  AddSubLShiftRShiftBitAndBitXorBitOrrO  objectr6   r   r+   r    <module>r     sR   
 
 
 % ] ] ] ` ` 4    
+ (;"7 ; 8K+@ 
 3,8 ,S__(= , ,
 IIFFJJII	  &LLKKLL	)  ''		
,,				
**
**			"S
 S
r+   