
    uYf9              
       p   d dl Z d dlZd dlmZ d dl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mZmZmZ d dlZd dlmZ d dlmZ d dlmZmZmZmZmZm Z   edd	
      Z! edd
      Z" G d d	ejF                  eeeee f            Z$d Z%e G d d             Z& G d d      Z' G d dejP                        Z)y)    N)defaultdict)	dataclass)AnyDict	GeneratorIterableIteratorListOptionalSetSupportsIndexTupleTypeVarUnionoverload)ConcreteInstr)CompilerFlags)UNSETInstrLabel	SetLinenoTryBeginTryEndT
BasicBlock)boundUControlFlowGraphc            	       
    e Zd Z	 ddeeeeeee	f         ddf fdZ
deeeeee	f      fdZededeeeee	f   fd       Zedededefd	       Z fd
Zdee   fdZdedef fdZdedefdZded    fdZdefdZ xZS )r   Ninstructionsreturnc                 8    d | _         |rt        | 	  |       y y N)
next_blocksuper__init__)selfr    	__class__s     L/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/bytecode/cfg.pyr&   zBasicBlock.__init__    s!     37G\*     c           	   #      K   d}|t               k  rW |   }|dz  }t        |t        t        t        t
        f      s"t        d|j                  j                  z        t        |t              r|j                         r|t               k  r2t         fdt        |t                     D              rt        d      t        |j                  t              s)t        dt        |j                        j                        t        |t              rCt        |j                  t              s)t        dt        |j                        j                        | |t               k  rVy y w)Nr      zJBasicBlock must only contain SetLineno and Instr objects, but %s was foundc              3   D   K   | ]  }t        |   t                y wr#   )
isinstancer   ).0ir'   s     r)   	<genexpr>z&BasicBlock.__iter__.<locals>.<genexpr>8   s!      -34JtAw.-s    z8Only the last instruction of a basic block can be a jumpz%Jump target must a BasicBlock, got %sz)TryBegin target must a BasicBlock, got %s)lenr.   r   r   r   r   
ValueErrorr(   __name__has_jumpanyrangeargr   typetarget)r'   indexinstrs   `  r)   __iter__zBasicBlock.__iter__+   s6    c$iKEQJEei&%IJ ').)A)AB 
 %'ENN,<3t9$ -8=eSY8O- * %U  "%))Z8$?UYY00 
 %*!%,,
;$CU\\*33 
 K? c$is   E&E-+E-r;   c                      y r#    r'   r;   s     r)   __getitem__zBasicBlock.__getitem__N   s     	r*   r'   c                      y r#   r?   r@   s     r)   rA   zBasicBlock.__getitem__T       r*   c                     t         |   |      }t        |t              r" t	        |       |      }| j
                  |_        |S r#   )r%   rA   r.   slicer9   r$   )r'   r;   valuer(   s      r)   rA   zBasicBlock.__getitem__X   s=    #E*eU#DJu%E#Er*   c                 L    t        |       D ]  }t        |t              s|c S  y r#   )reversedr.   r   )r'   r<   s     r)   #get_last_non_artificial_instructionz.BasicBlock.get_last_non_artificial_instruction`   s)    d^ 	E%'	 r*   c                 d     t        |       t        | 	               }| j                  |_        |S r#   )r9   r%   copyr$   )r'   newr(   s     r)   rK   zBasicBlock.copyg   s)    d4j(
r*   first_linenoc                 f   g }d}|}t        |       D ]  \  }}t        |t              r |j                  x}}|j	                  |       6t        |t
        t        f      rM|||_        W|j                  t        u r||_        q|j                  ~|j                  } t        |      D ]  }| |=  |S )zFCheck that all the element of the list are valid and remove SetLineno.N)		enumerater.   r   linenoappendr   r   r   rH   )r'   rM   
lineno_pos
set_linenocurrent_linenoposr<   r0   s           r)   legalizezBasicBlock.legalizel   s    

%#D/ 	.JC%+.3ll:
^!!#&%(F!34%)&-)!&	. *% 	AQ	 r*   c                     | sy | j                         }||j                         sy |j                  }t        |t              sJ |S r#   )rI   r5   r8   r.   r   )r'   
last_instrtarget_blocks      r)   get_jumpzBasicBlock.get_jump   sI    ==?
Z%8%8%:!~~,
333r*   c                     |dz   t        |       k  r1t        | |dz      x}t              r|S |dz  }|dz   t        |       k  r1y Nr,   )r2   r.   r   )r'   r;   bs      r)   get_trailing_try_endzBasicBlock.get_trailing_try_end   sN    ai#d)#tEAI.!7QJE ai#d)#
 r*   r#   )r4   
__module____qualname__r   r   r   r   r   r   r   r&   r	   r=   r   r   rA   r   rE   rI   rK   intrV   rZ   r^   __classcell__r(   s   @r)   r   r      s   
 		+U5)Xv=>?
	+
 
	+!(5	8V)K#LM !F "	ui61	2 
 ! E a  Xe_ 1  
S S 4
(<0 
# r*   c                 t    || z  }|dk  rd}t        |      ||z  }t        ||      }t        ||      }|||fS )Nr   z.Failed to compute stacksize, got negative size)RuntimeErrormaxmin)	pre_delta
post_deltasizemaxsizeminsizemsgs         r)   _update_sizern      sR    IDax>3JD'4 G'4 G'!!r*   c                       e Zd ZU dZeed<   ee   ed<   eeee	ee
e   f      f   ed<   ee   ed<   eeef   ed<   eeef   ed<   y)	_StackSizeComputationStoragezMCommon storage shared by the computers involved in computing CFG stack usage.check_pre_and_postseen_blocksblocks_startsizes
try_beginsexception_block_startsizeexception_block_maxsizeN)r4   r_   r`   __doc__bool__annotations__r   ra   r   r   r   r
   r   r?   r*   r)   rp   rp      sj    W  S CU3+>%?!@@AA X
  $CH~-
 "#s(^+r*   rp   c                   ,   e Zd ZU dZeed<   eed<   eed<   eed<   eed<   ee	   ed<   ee
   ed<   dedededededee	   dee
   d	d
fdZd	eed ef   ed
f   fdZee
   ed<   deded	d
fdZdede	d	eed ef   ed
f   fdZdedeeee	   f   d	e	fdZy
)_StackSizeComputerz4Helper computing the stack usage for a single block.commonblockrj   rk   rl   exception_handlerpending_try_beginr!   Nc                 t    || _         || _        || _        || _        || _        || _        || _        || _        y r#   )r|   r}   rj   rk   rl   r~   r   _current_try_begin)r'   r|   r}   rj   rk   rl   r~   r   s           r)   r&   z_StackSizeComputer.__init__   s?     
	!2!2"3r*   c              #   "  K   t        | j                        }| j                  | j                  f}t        | j                        | j                  j
                  v s| j                  ||      s| j                   | j                  j
                  j                  |       | j                  j                  |   j                  |       | j                  | j                  dd| j                  z          t        | j                        D ]?  \  }}t        |t              rt        |t              rL| j                  J | j                  j                   j#                  |       || _        | j                  | _        tt        |t&              r|j(                  | j                  urt        |j(                  j*                  t,              sJ | j/                  |j(                  j*                  |j(                  j0                        E d{    d| _        |j3                         r| j                  j4                  r|j7                  d      n|j9                  d      df}t        g || j                  | j                  | j$                   \  }}}t        |j:                  t,              sJ t=        | j                  |j:                  |||d|j?                         r| j                  jA                  |      rdn| j                        }tC        | j                  |      | _        |jE                         r| j                  jA                  |      x}	r|	j(                  | j                  u sJ t        |	j(                  j*                  t,              sJ | j/                  |	j(                  j*                  |	j(                  j0                        E d{    | j                  j
                  jG                  t        | j                               | j                   | j                  j4                  r|j7                  d      n|j9                  d      df} | j                  |  |j?                         su| j                  jA                  |      x}	rht        |	j(                  j*                  t,              sJ | j/                  |	j(                  j*                  |	j(                  j0                        E d{    | j                  j
                  jG                  t        | j                               | j                   B | j                  jH                  r^t=        | j                  | j                  jH                  | j                  | j                  | j$                  d| j                        | _        | j                  j
                  jG                  t        | j                               | j                   y7 7 47 w)z;Iterate over the block instructions to compute stack usage.Nr   r,   T)jumpF)%idr}   rj   r~   r|   rr   "_is_stacksize_computation_relevantrk   addrs   rn   rO   r.   r   r   r   rt   rQ   rl   r   entryr:   r   &_compute_exception_handler_stack_usage
push_lastir5   rq   pre_and_post_stack_effectstack_effectr8   r{   is_finalr^   rf   is_uncond_jumpremover$   )
r'   block_idfingerprintr0   r<   effect
taken_sizerk   rl   tes
             r)   runz_StackSizeComputer.run   s     djj>
 yy$"8"89djj>T[[44477+N,, 	##H- 	%%h/33K@ !!-aT%;%;!;< "$**- u	#HAu%)- %*..666&&--e4*/'#yyE6* ;;d&=&== "%++"4"4jAAAFFKK&&KK**   +/' ~~ {{55 333>,,$,7; 
 0< 00!YY0(,06:ll0,
GW "%))Z888 2KKII ~~'DJJ,K,KA,N 00!    #4<<9 '') "ZZ<<Q??r?!xx4+B+BBBB)"((//:FFF#'#N#NHHOOHH//$  
 KK++222djj>B,,&
 ;;11 //U/;((e(4a8 
 Dv& ~~ 88;;2;%bhhoozBBB#JJ++   
 ''..r$**~>ll"ku	#n ::  !3

%%		''" DL 	&&r$**~6llAf.s@   HXX	GXX	B%X=B X=X>D	X	XXr   rh   ri   c                     t        ||| j                  | j                  | j                        \  }}}|| _        || _        || _        y r#   )rn   rj   rk   rl   )r'   rh   ri   rj   rk   rl   s         r)   rn   z_StackSizeComputer._update_size  sA    !-z499dllDLL"
gw 	r*   r   c           	   #   ^  K   t        |      }| j                  | j                  j                  |   k  rxt	        | j                  || j                  | j
                  | j                  |d       }| j                  | j                  j                  |<   || j                  j                  |<   y y wr#   )r   rl   r|   ru   r{   rk   rv   )r'   r}   r   b_id
block_sizes        r)   r   z9_StackSizeComputer._compute_exception_handler_stack_usage  s      %y<<$++??EE1  J ;?,,DKK11$78BDKK//5 Fs   B+B-r   r   c                     t         j                  dk\  r|| j                  j                  |   vS | j                  j                  |   x}r|d   t	        d |D              kD  S y)N)      r   c              3   &   K   | ]	  }|d      yw)r   Nr?   )r/   fs     r)   r1   zH_StackSizeComputer._is_stacksize_computation_relevant.<locals>.<genexpr>  s     +@QAaD+@s   T)sysversion_infor|   rs   rf   )r'   r   r   sizess       r)   r   z5_StackSizeComputer._is_stacksize_computation_relevant  sg     w& dkk&C&CH&MMM 55h??u?"1~+@%+@(@@@r*   )r4   r_   r`   rw   rp   ry   r   ra   r   rx   r   r&   r   r   r   rn   r   r   r   r?   r*   r)   r{   r{      sO   > )(  I L
 L  ~%  ))4,4 4 	4
 4 4 $D>4 $H-4 
4&dYu%93%>?dJK dP !**c s t CC-1C	5-s23S$>	?C&*/Xd^0C*D	r*   r{   c            
           e Zd Zd" fdZd"dZdedefdZdeddfdZ	 d#de	e
eeef         defd	Zd
d
ddededefdZdefdZdefdZdedef fdZdefdZdee   fdZedeeef   defd       Zedededefd       Zd Zdeeef   ddfdZdededefdZdee   fdZ e!de"jF                  dd fd       Z$de"jF                  fdZ%	 d#d
d
dd e	e   dedede&jN                  fd!Z( xZ)S )$r   r!   Nc                 l    t         |           g | _        i | _        g | _        | j                          y r#   )r%   r&   _blocks_block_indexargnames	add_block)r'   r(   s    r)   r&   zControlFlowGraph.__init__  s.    )+,.#%r*   c                 `    | j                   }| j                  D ]  }|j                  |      } y)zLegalize all blocks.N)rM   r   rV   )r'   rT   r}   s      r)   rV   zControlFlowGraph.legalize  s.    **\\ 	<E"^^N;N	<r*   r}   c                 d    	 | j                   t        |         S # t        $ r t        d      w xY w)Nz&the block is not part of this bytecode)r   r   KeyErrorr3   )r'   r}   s     r)   get_block_indexz ControlFlowGraph.get_block_index  s:    	G$$RY// 	GEFF	Gs    /c                     t        | j                        }| j                  j                  |       || j                  t	        |      <   y r#   )r2   r   rQ   r   r   )r'   r}   block_indexs      r)   
_add_blockzControlFlowGraph._add_block  s6    $,,'E"'2"U)$r*   r    c                 >    t        |      }| j                  |       |S r#   )r   r   )r'   r    r}   s      r)   r   zControlFlowGraph.add_block  s     <(r*   Trq   compute_exception_stack_depthsrq   r   c                   | syt        |t               | D ci c]  }t        |      t                c}t        j	                  | D cg c]  }t        |       c}d      t        j	                  | D cg c]  }t        |       c}d      g       }d}t
        j                  dk\  rA| j                  t        j                  t        j                  z  t        j                  z  z  rd}t        || d   |dddd      j                         }g }|j                  }|j                  }	d}
	 	 |j!                  d      }
t#        |
t$              r) |	       }|j!                  |
      }
t#        |
t$              r) ||       |
j                         }cc c}w c c}w c c}w # t&        $ r |
t#        |
t$              sJ t)        |
g|j*                  j-                          }
| D ]M  }|j.                  t        |         r|D ]-  }t#        |t0              s|j2                  t4        u s'd|_        / O |rA|j6                  D ]2  }|j8                  t        |j:                           }|dk\  sJ ||_        4 |
cY S w xY w)zCompute the stack size by iterating through the blocks

        The implementation make use of a generator function to avoid issue with
        deeply nested recursions.

        r   i   i )rr   rs   ru   rv   rt   )r   
   r,   N)rp   setr   dictfromkeysr   r   flagsr   	GENERATOR	COROUTINEASYNC_GENERATORr{   r   rQ   popsendr.   ra   
IndexErrorrf   rv   valuesrs   r   stack_depthr   rt   ru   r:   )r'   rq   r   r]   r|   initial_stack_sizecoro
coroutinespush_coroutinepop_coroutineargsr}   r0   tbrj   s                  r)   compute_stacksizez"ControlFlowGraph.compute_stacksize  sX     .59:r!uce|:&*mmD4IqRU4I5&Q$(MM$2GQ2a52G$P
 w&4::##%%&++,,

 "# "DG/AtT

#% 	
 RT
#**",	 yy !s+(?D99T?D !s+ t$xxz ; ;4I2GV  	 #
4(===
 tFf<<CCEFD  2//5	:" 2%a2q}}7M,1AM22 . ++ *B!;;BryyMJD19$9%)BN*
 K7	s>   FF3F(A
F 3F AI6:I6I6#AI65I6c                 2    dt        | j                        z  S )Nz<ControlFlowGraph block#=%s>r2   r   r'   s    r)   __repr__zControlFlowGraph.__repr__M  s    -DLL0AAAr*   c           	         g }i }| D ]  }t        |      D ]  \  }}t        |t              rst        |j                  t              sJ |j                  |t        |             |j                  d||   | j                  |j                        |j                  f       t        |t              r!|j                  d||j                     f       t        |t              r|j                         s|j                         r|j                         ra|j                  }t        |t              sJ t!        |j"                  | j                  |      |j$                        }|j                  |       n|j                  |       |j'                  |      x}r |j                  d||j                     f        |j                  |         |S )Nr   r   )location)rO   r.   r   r:   r   
setdefaultr2   rQ   r   r   r   r   r   r5   r   r8   r   namer   r^   )	r'   r    rt   r}   r;   r<   rY   c_instrr   s	            r)   _get_instructionsz"ControlFlowGraph._get_instructionsR  s     *,
 %	/E )% 0 $/ueX.%ellJ???))%ZA ''&&u- 00>!,,	  v. '':ekk3J(KLu-NN$(8~~'',yy),
CCC #0!JJ 00>%*^^#
 %++G4$++E2"77>>r>$++Xz"((7K,LM ''.I$/%	/N r*   otherc                     t        |       t        |      ury| j                  |j                  k7  ry| j                         }|j                         }||k7  ryt        |   |      S )NF)r9   r   r   r%   __eq__)r'   r   instrs1instrs2r(   s       r)   r   zControlFlowGraph.__eq__  sa    :T%[(==ENN*((*))+g w~e$$r*   c                 ,    t        | j                        S r#   r   r   s    r)   __len__zControlFlowGraph.__len__  s    4<<  r*   c                 ,    t        | j                        S r#   )iterr   r   s    r)   r=   zControlFlowGraph.__iter__  s    DLL!!r*   r;   c                      y r#   r?   r@   s     r)   rA   zControlFlowGraph.__getitem__  rC   r*   r'   c                      y r#   r?   r@   s     r)   rA   zControlFlowGraph.__getitem__  rC   r*   c                 b    t        |t              r| j                  |      }| j                  |   S r#   )r.   r   r   r   r@   s     r)   rA   zControlFlowGraph.__getitem__  s+    eZ(((/E||E""r*   c                 <   t        |t              r| j                  |      }| j                  |   }| j                  |= | j                  t        |      = t        |t        |             D ]1  }| j                  |   }| j                  t        |      xx   dz  cc<   3 y r\   )r.   r   r   r   r   r   r7   r2   )r'   r;   r}   s      r)   __delitem__zControlFlowGraph.__delitem__  s    eZ(((/EU#LLbi(5#d), 	.ELL'Ebi(A-(	.r*   c                    t        |t              st        d      | j                  |      }|dk  rt	        d      | j
                  |   }|dk(  r|S |t        |      kD  rt	        d      ||d  }|s|dz   t        |       k  r| |dz      S ||d = t        |      }||_        | |dz   d  D ]"  }| j                  t        |      xx   dz  cc<   $ | j
                  j                  |dz   |       |dz   | j                  t        |      <   |S )Nzexpected blockr   zindex must be positivezindex out of the blockr,   )r.   r   	TypeErrorr   r3   r   r2   r$   r   r   insert)r'   r}   r;   r   r    block2s         r)   split_blockzControlFlowGraph.split_block  s!   %,,--**5119566[)A:L3u:566UV}QT*K!O,,%&ML)!+/+, 	.Ebi(A-(	. 	K!OV4(3a"V*%r*   c                    | sg S t               }| d   g}|r|j                         }t        |      |v r |j                  t        |             |D ]  }t	        |t
              r6t	        |j                  t              r|j                  |j                         It	        |t              sZt	        |j                  t              sJ |j                  |j                          |r| D cg c]  }t        |      |vs| c}S c c}w )Nr   )r   r   r   r   r.   r   r8   r   rQ   r   r:   )r'   seen_block_idsstackr}   r0   r]   s         r)   get_dead_blocksz ControlFlowGraph.get_dead_blocks  s    Ia	IIKE%yN*r%y) +a'Jquuj,ILL'8,%ahh
;;;LL*+   ?a2a5#>???s   +D>Dbytecodec                 z   i }g }i }t        |       D ]  \  }}t        |t              r|||<   t        |t              r8t        |j                  t              r|j                  ||j                  f       dt        |t              r:t        |j                  t              sJ |j                  ||j                  f       t        |t              s|||j                  <    i }|D ]  \  }}||   }|||<    t               }	|	j                  |        t        | j                        |	_        |	d   }
i }g }i }t        t              }d }d}d }t        |       D ]&  \  }}d }||v rO||   }|dk7  r=|
j                         x}r+|
}|	j!                         }|j#                         s||
_        |}
||
||<   n||
j                         rl|j|j#                         r|
}|	j!                         }
nG|j'                         r7t        |j                  t              sJ |
}|	j!                         }||
_        |}
||}d}|F|C|j#                         rFt        |t              r6|sJ |j)                         }||   d   |_	        |j                  |       d }:||j'                         rb||v r^||j                     ||   k\  rIt        |j                  t              sJ ||j                     j                  t        ||   d                |j#                         rirg|j                  t        ||   d                t        |j                  |j*                        }|
j                  |       ||   j                  |       d}d }t        |t              r;t        |t        t        t        f      r|j)                         }t        |t              r!|J |}d}t        |t              sJ |g||<   n}t        |t              r.t        |t              sJ ||j                     d   |_	        d }d}n?|}t        |j                  t              r#t        |t              sJ |j                  |       |}|
j                  |       ) |j-                         D ]  \  }}||   }
t/               }d}|t1        |
      k  rF|
|   }|dz  }t        |t              r|j3                  |j                         nn|t1        |
      k  rF|D ]A  }|j                  |vs||   j5                  d|       |j3                  |j                         C  |D ]*  }|j                  }t        |t              sJ ||   |_        , |j-                         D ]4  \  } }!| j                  }t        |t              sJ |!D ]  }"||   |"_         6 |	S )Nr   FTr,   )rO   r.   r   r   r8   rQ   r   r:   r   r   r   _copy_attr_fromlistr   r   rI   r   r   r$   r5   rK   r   itemsr   r2   r   r   )#r   label_to_block_indexjumpstry_end_locationsr;   r<   block_startstarget_indextarget_labelbytecode_blocksr}   labelsjumping_instrsrt   add_try_endactive_try_begintry_begin_inserted_in_blockrX   	old_block	old_labelli	new_blocktempntenew_tbrL   labtesexisting_te_entriesr0   r   labelb_tbc_tbsc_tbs#                                      r)   from_bytecodezControlFlowGraph.from_bytecode  s     "%h/ 		7LE5%'.3$U+E5)jE.JeUYY/0E8,!%,,666eU\\23E6*16!%++.		7 */ 	6&L,/=L)5L&	6 +,''1#'(9(9#:   "&( 68
 2=T1B 04&+#&*
%h/ v	 LE5+/I $(/	 A:)R)R)T#T2#T %I / 9 9 ;I ;;=+4(%E((-F9% ::<AW &&( %I+557E  ((*%jnne<<< %I / 9 9 ;I'0E$%E $2.3+$)? &&(Zv-F+++**,C *+; <R @CI$$S)'+$ &1
 #++-,0AA 1@01ABC  **..%@@@#JNN3::":.>#?#CD "**,!((
;K0LR0P)QR!),335E5P5P" V, ##34;;FC6:3J%' %%6!:;jjleX.+333',$26/%c8444),Ju%v.%c6222 *5;; 7 ;CI'+$27/!&J!%))U3)#u555&--c2LLmv	 t $))+ 	6HC3KE"%%E #e*$%L
a('++AGG4 #e*$  688#663K&&q"-'++BHH56	6& $ 	&EIIEeU+++uEI	& &++- 	,KD%KKEeU+++ ,$Um,	, r*   c                 z   t               }| D ]`  }|j                         }||j                  t        |             d |D        D ]&  }|j                  t        |j                               ( b i }g }i }t               }g }	d}
d}| D ]  }t        |      |v r)t               }||t        |      <   |	j                  |       |D ]M  }t        |t        t        t        f      r|j                         }t        |t              rP|
_|
\  }}|j                  |j                  u sJ |j                  |j                  k(  sJ t        |j                  |j                        |_        ||\  }}|j                  }|j                  |j                  u r|j                  |j                  k(  r|j                  t         u r*|j                  t         u sJ t         |j                  _        n/t        |j                  |j                        |j                  _        |j                  ||<   |	j#                  |       st        |t              sJ |||<   ||f}
d}nt        |t              rXt        |t              sJ |j                  |v r|j                  |j                         ||j                     |_        d}
||f}nBt        |j$                  t&              r&t        |t              sJ |j                  |       d}nd}|}|	j                  |       P  |D ]  }|t        |j$                           |_        ! t        |j)                               D ]  }|t        |j                           |_        ! t+        j,                         }|j/                  |        t1        | j2                        |_        |	|dd |S )zConvert to Bytecode.Nc              3   B   K   | ]  }t        |t              s|  y wr#   )r.   r   )r/   r0   s     r)   r1   z/ControlFlowGraph.to_bytecode.<locals>.<genexpr>  s     CQ:a+BqCs   )r   rZ   r   r   r:   r   rQ   r.   r   r   r   rK   r   rg   r   r   r   r   r8   r   r   	_bytecodeBytecoder   r   r   )r'   used_blocksr}   rY   r   r   r   rt   seen_try_endr    last_try_beginlast_try_end	new_labelr<   rL   cfg_tbbyt_tbcfg_tebyt_ter   r   s                        r)   to_bytecodezControlFlowGraph.to_bytecode  st    e 	/E >>+L'< 01C%C /299./	/ 
&)eOQ <@59 B	+E%yK'!G	$-r%y!##I. <+eeXv%>?**,C!%2 *5-;NFF#(<<6==#@@#@#(#3#3v7H7H#HH#H14 & 2 2E4E4E2F. (3-9NFF$*LLE % <$)$4$48H8H$H $)#4#4#=+0+<+<+E$E+E?DFLL$<?B(-(9(95;L;L@&FLL$< 5;LL
5 1 , 3 3F ; ()#x888,/
5)*/'+#E62)#v666 ;;,6$$((5$.u{{$;	)-(-s|#EIIz:)#u555S)'+'+E##E*y<+B	+J  	.Er%))}-EI	. j'')* 	.Br"))}-BI	. %%'  & /"r*   	stacksizec                t    || j                  ||      }| j                         }|j                  |dd      S )zConvert to code.r   F)r  rq   r   )r   r  to_code)r'   r  rq   r   bcs        r)   r  zControlFlowGraph.to_code  sT     ..#5/M / I zz$+0  
 	
r*   )r!   Nr#   )*r4   r_   r`   r&   rV   r   ra   r   r   r   r   r   r   r   r   rx   r   strr   r
   r   r   r   r   r	   r=   r   rA   r   rE   r   r   r   staticmethodr  r  r  r  typesCodeTyper  rb   rc   s   @r)   r   r     s   <GZ GC G3
 3t 3 KO$XeE94D.E%FG	 $(/3	\ !\ )-	\
 
\|B# B
-	-^%C %D %! !"(:. " sJ!7 J   ! E a  #
.sJ!7 .D . C J B@j!1 @( C	 2 2 C7I C CJiY// iZ $(
 $(/3
C=
 !	

 )-
 

r*   )*r   r  collectionsr   dataclassesr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r  bytecode.concreter   bytecode.flagsr   bytecode.instrr   r   r   r   r   r   r   r   
_InstrListr   rn   rp   r{   BaseBytecoder   r?   r*   r)   <module>r'     s    
  # !   "  + ( K KC|$C)*y%%eE9h,N&OP yx" , , ,<B BJW	
y-- W	
r*   