
    UHjZ                    "   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ej                  j                  d e e	e      j                         j                               ddlmZmZ ddlmZ  e	e      j                         j*                  d   Zedz  Zd	Zd
ZdZdZdZdZdZdZd%dZ d%dZ!d&dZ"d'dZ#d(dZ$d)dZ%d*dZ&d+dZ'd,dZ(d+dZ)d-dZ*d.dZ+	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/dZ,d0dZ-d1dZ.d2d Z/d2d!Z0d3d"Z1d4d#Z2e3d$k(  r e2        yy)5zRCheck whether selector 1:0 rewrites secondaryBranchState after its strongest fill.    )annotationsN)Path)read_sectionsva_to_offset)handler_entry   out
0x00478364z2:0i+T i*T iD+T i+T i)T i*T c                    d| dS )N0x08x values    K/home/exedev/hwanse/tools/summarize_save_selector_predecessor_tail_reset.pyhex32r          c{    c                    d| dS )Nr   02xr   r   s    r   hex8r   "   r   r   c                    t        | d      S )N   )intr   s    r   	parse_hexr   &   s    ub>r   c                X    | j                  dd      \  }}t        |      t        |      fS )N..r   )splitr   )r   startends      r   parse_ranger!   *   s*    T1%JE3UYs^++r   c                v    t        ||      }||dz   t        |       kD  ry t        j                  d| |      d   S )N   z<Ir   )r   lenstructunpack_from)exesectionsvaoffsets       r   dword_atr+   /   s?    (B'F~!c#h.dC033r   c           	         | dz  dk7  ry | dz	  dz  }| dz	  dz  }| dz	  dz  }|dk(  rdnd}|dk  }|d	k  }t        |       t        |      t        |      t        |      ||||dk(  xr |xr |d
S )N   r         r   primaryBranchStatesecondaryBranchState      )valueHexstreamPlus1HexhelperArgumentHexstreamPlus3Hex
stateTablehelperDispatchValidscriptShapedvalidSecondaryFill)r   r   )r   stream_plus_1
helper_argstream_plus_3state_tablehelper_validscript_shapeds          r   decode_op10rB   6   s    aZ4'M2+%Jb[D(M*71*<&BXK%L!T)M%L}-!*-}-!+%)-CCffYf	 	r   c                L    | j                  d       d| j                  d       S )Ngroup:slotgetrows    r   selector_keyrK   K   s&    gggq 122r   c                .    t        fd| D        d       S )Nc              3  L   K   | ]  }|j                  d       k(  s|  yw)selectedPointerHexNrG   ).0rJ   root_hexs     r   	<genexpr>z(find_selector_by_root.<locals>.<genexpr>P   s"     WSWW5I-Jh-VWs   $$next)	selectorsrP   s    `r   find_selector_by_rootrU   O   s    W	WY]^^r   c                .    t        fd| D        d       S )Nc              3  @   K   | ]  }t        |      k(  s|  y w)N)rK   )rO   rJ   keys     r   rQ   z'find_selector_by_key.<locals>.<genexpr>T   s     F\#->#-EFs   rR   )rT   rX   s    `r   find_selector_by_keyrY   S   s    F	FMMr   c                    t        |      }| D cg c]+  }t        |j                  d      t              r
|d   |kD  r|- }}|j	                  d        |r|d   S d S c c}w )NselectedPointerc                    | d   S )Nr[   r   rI   s    r   <lambda>z%next_selector_by_va.<locals>.<lambda>]   s    s#45 r   rX   r   )r   
isinstancerH   r   sort)rT   rP   rootrJ   laters        r   next_selector_by_varc   W   sr    XD cgg/0#63?P;QTX;X 	E  
JJ5J658&$&s   0Ac                \    |y | D ]$  }|d   }||d   z   }||cxk  r|k  sn |d   c S  y )Nr)   raw_sizenamer   )r(   r)   sectionr   r    s        r   section_name_for_varh   a   sM    	z #gj))B6?"	#
 r   c                    || |k(  ry| t         k(  ry| t        k(  ry| t        k(  ry| t        k(  ryt        | cxk  r	t
        k  ry |||| cxk  r|k  sy  y | t         k  ryt         | cxk  r|k  ry y	y	)
Ncurrent-root-exactcurrent-readerfrontier-leafsource-recordtarget-recordleaf-table-windowzcurrent-root-before-readerzpost-reader-current-rootzcurrent-root-other)CURRENT_READERFRONTIER_LEAFSOURCE_RECORDTARGET_RECORDLEAF_TABLE_STARTLEAF_TABLE_END)r   current_rootcurrent_ends      r   classify_current_route_pointerrx   l   s    E\$9#51>1" 2{2,%:]R]:] ;^~+++) ,r   c                P   ddddddddddddddi }g }g }t        ||d      D ]N  }	t        | ||	      }
|
t        ||
      }|r2dxx   dz  cc<   |dk(  rdxx   dz  cc<   n|dk(  rd	xx   dz  cc<   t        |
||      }|rd
xx   dz  cc<   |j	                  |d      dz   ||<   |dk(  rdxx   dz  cc<   n^|dk(  rdxx   dz  cc<   nK|dk(  rdxx   dz  cc<   n8|dk(  rdxx   dz  cc<   n%|dk(  rdxx   dz  cc<   n|dk(  rdxx   dz  cc<   |
dz  }t        | ||      }|j	                  d      dk(  rdxx   dz  cc<   |j	                  d      rdxx   dz  cc<   t        | ||	dz         }|t        |||      nd }|rfdxx   dz  cc<   t        |      dk  rK|j                  t        |	      t        |
      t        |      |j	                  d      t        |      |d       |s|s|j	                  d      dk(  st        |      d k  s|j                  t        |	      t        |
      t        |      |||j	                  d      |j	                  d      d!       Q t        fd"d#D              }t        |t        |      nd ||t        |       d$t        |       nd t        t              t        t              t        t              t        t              d%t!        t#        |j%                                     ||||rd&d(S d'd(S ))Nr   )pointerDwordCountdataPointerDwordCounttextPointerDwordCountcurrentRootRangePointerCountcurrentRootExactRefCountfrontierLeafRefCountcurrentReaderRefCountsourceRecordRefCounttargetRecordRefCountleafTableWindowPointerCountdataHandlerLowByteCountbranchCapableRowCountbranchToCurrentRouteCountr#   rz   r   z.datar{   z.textr|   r}   rj   r~   rl   r   rk   r   rm   r   rn   r   ro   r   r-   handlerSectionr   canJumpToDwordAtPlus4r   r   r/   handlerVaHex)vaHexr4   	opcodeHexr   targetVaHextargetClass    )r   r4   lowOpcodeHexpointerSectioncurrentRoutePointerClassr   r   c              3  .   K   | ]  }|   d kD    yw)r   Nr   )rO   rX   countss     r   rQ   z)route_bridge_tail_scan.<locals>.<genexpr>   s!      
 	sa
s   )r~   r   r   r   r   r   r   )currentSelectorcurrentRootHexcurrentRootRangeHexsourceRecordHextargetRecordHexfrontierLeafHexcurrentReaderHexztail-current-route-bridgezno-tail-current-route-bridge)currentRoutePointerClassesbranchTargetRows
sampleRowsdirectCurrentRouteBridgeFoundclassification)ranger+   rh   rx   rH   r   r$   appendr   r   anyCURRENT_SELECTORrr   rs   rq   rp   dictsorteditems)r'   r(   
tail_starttail_endrv   rw   pointer_classesbranch_target_rowssamplesr)   r   pointer_sectionpointer_classopcodehandlerbranch_targettarget_classdirect_route_bridger   s                     @r   route_bridge_tail_scanr      s    !"!"()$% !!" ! !'(#$!"%&F ')OGJ!, 8h+=-h>&'1,'')./14/ G+./14/6ulKX12a72-<-@-@PQ-RUV-VOM* 4412a72/1-.!3."22./14//1-.!3./1-.!3."5545:5Xv6;;'(G3,-2-;;./*+q0+$S(BF;Mgt  hA9-Wbc  GKL23q83)*R/&--!&r$)%L%)&\(/N(C',]';'3/  Ow{{;K/LPW/W7|b "2Y %e$(L&50=$+KK$?&-kk2B&C  a8r  


 
 ,1=1I%-t 'K,C \"#2eK&8%9: / / /!.1  '+6/2G2G2I+J&K.)<9L5# " Sq# r   c                   t        |       }t        d |j                  d      xs g D        d       }|t        dt               t        |d         \  }}t        |j                  d      xs g d       }|st        d      |d	   }t        |d
         }	|	dz   }
g }i }t        |
|d      D ]  }t        | ||      }|t        |dz        }|j                  |d      dz   ||<   t        |      }t        |      t        |      ||d}|s|dv sd|cxk  rdk  son r|j                  |        |D cg c]  }|j                  d      s| }}|D cg c])  }|j                  d      xs i j                  d      s(|+ }}t        |t              }t        |t              }t!        |t"              }|rt        |d         nd }|rt        ||d         nd }|rt        |d         nd }t%        | ||
|||      }d|d    d|d    d|d    d|d    d|d    d|d    d|d     d!}i d"|rt'        |      nd d#t        d$|d   d%|xs i j                  d&      xs g d'|r|j                  d      n
t        |      d(|rt'        |      nd d)t        |
       d*t        |       d+|D cg c]  }|d
   	 c}d,|d
   d-|d.   d/t)        d||
z
  dz        d0t+        |      d1t+        |      d2t-        t        |j/                                     d3|d4|d5|d   |d   |d   |d   |d   |d   |d    |d6   t1        |      d7g d8|d9S c c}w c c}w c c}w ):Nc              3  R   K   | ]  }|j                  d       t        k(  s| ! yw)rootHexN)rH   PREDECESSOR_ROOT_HEXrO   rJ   s     r   rQ   z build_summary.<locals>.<genexpr>   s!     d9KOc9cds   ''rootszmissing predecessor fill root rootRangeHexfillsc                    t        | d         S )Nr   )r   rI   s    r   r]   zbuild_summary.<locals>.<lambda>   s    9SQX\CZ r   r^   zpredecessor root has no fillsr   r#   r-   r   r   )r   r4   r   op10>   $ *@  r   i  @ i  ` r   r;   rN   aD  Within selector root 1:0, the strongest secondaryBranchState fill sites are at 0x004844d0 and 0x004844d8. The tail from 0x004844dc to the next root boundary has no opcode 0x10 rows and no valid secondaryBranchState helper fill, so this root does not locally reset the predecessor fill after it is written. The same tail has r}   z pointer(s) into the current 2:0 root range, but exact current-root/frontier-leaf/current-reader/source-record/target-record refs are r~   /r   r   r   r   z;, and branch-capable rows targeting current-route data are r   z. This narrows the persistence gap, but it still does not prove runtime execution order or rule out resets in untraced VM/helper paths outside this root.predecessorSelectorpredecessorRootHexpredecessorRootRangeHexpredecessorFieldMaps	fieldMapsnextRootHexnextRootSelectortailRangeHexr   predecessorFillVaslastFillVaHexlastFillValueHexr4   tailDwordCounttailOpcode10RowCounttailValidSecondaryFillCounttailLowOpcodeCountstailRowstailCurrentRouteBridge tailCurrentRootRangePointerCountr   blocked)zJprove selector 1:0 executes before selector 2:0 in the normal runtime pathzjprove no global VM/helper reset outside the 1:0 root clears secondaryBranchState before the current readerz1find strict map1_01a source coordinate or hotspot)tailCurrentRootExactRefCounttailFrontierLeafRefCounttailCurrentReaderRefCounttailSourceRecordRefCounttailTargetRecordRefCounttailBranchToCurrentRouteCount!tailDirectCurrentRouteBridgeFoundlocalTailResetFoundpromotionStatusremainingProofs
conclusion)r   rS   rH   
ValueErrorr   r!   r   r   r   r+   r   rB   r   r   rc   rU   rY   r   r   rK   maxr$   r   r   bool)r'   rT   
fill_rootsr(   predecessor
root_startroot_endr   	last_filllast_fill_var   	tail_rowslow_opcode_countsr)   r   
opcode_hexdecodedrJ   	op10_rowsvalid_secondarynext_selectorpredecessor_selectorcurrent_selectorrv   current_nextrw   tail_route_bridger   s                               r   build_summaryr      s   S!Hd
w/52dK 9:N9OPQQ&{>'BCJ;??7+1r7Z[E899b	IYw/0L!JI(*J!, "h+=%$,'
(9(=(=j!(Lq(P*%e$2Ye&	
 e::zU?`V`?`S!" !*=SWWV_=I=&/esCGGFO4Ir3N3NOc3dseOe'	3GHM0<PQ+I7GHHX9-.BCD^bL]m&y2BCW2XYswLCO)L)=>?UYK.sHj(T`bmn	 //MNO Pd78
9;LMc;d:eef45
6a8IJ`8a7bbc34
55p89
: ;6
	6 !EY|,@A_c!2! 	";~#>! 	!5!; @ @ M SQS	!
 	-}(()=>UZ[cUd! 	=L7d! 	5,-Rh/@A! 	u=s7|=! 	7+! 	Ij1! 	#a(Z"7A!=>! 	I! 	&s?';! 	tF+<+B+B+D$EF! 	I!  	!"3!!" 	+,=>\,]#!$ )::T(U$56L$M%67N%O$56L$M$56L$M):;V)W->?^-_#O4$

 !A! !- >e: >s   7MM)MM2M c                V    dj                  d | j                         D              xs dS )N, c              3  0   K   | ]  \  }}| d |   yw)rE   Nr   )rO   rX   r   s      r   rQ   z format_counts.<locals>.<genexpr>P  s     G*#uuAeW%Gs   -)joinr   )r   s    r   format_countsr   O  s"    99GGGN3Nr   c                @   g ddd| d    d| d    dd| d	    dd
| d    d| d    dddj                  d | d   D               d| d    dd| d    d| d    d| d    d| d    d| d    d| d    d| d    dd!dt        | d"         dd#dd$| d%   d&    d| d%   d'    dd(| d%   d)    d*| d%   d+    d,| d%   d-    d.d/| d    d0| d1    d2| d3    d2| d4    d2| d5    d2| d6    
d7| d%   d8    d9| d%   d:    d;| d<    d=| d%   d>    ddd?d@}| d%   dA   D ]~  }|j                  dB|dC    dD|dE    dD|dF    dG|j                  dH      xs dI dJ|j                  dK      xs dI dL|j                  dM      xs dI dN|j                  dO      xs dI dP        |j	                  g dQ       | dR   D ]}  }|j                  dS      xs i }|j                  dB|dC    dD|dE    dD|dF    dG|j                  dT      xs dI dJ|j                  dU      xs dI dJ|r|j                  dV      ndI dP        |j	                  g dW       |j	                  dX | dY   D               |j                  d       dZj                  |      S )[Nz&# Save Selector Predecessor Tail Reset z- predecessor: `r   z` root `r   `z- root range: `r   z- next root: `r   z` `r   z- fill sites: r   c              3  (   K   | ]
  }d | d   yw)r   Nr   )rO   r)   s     r   rQ   zmarkdown.<locals>.<genexpr>Z  s     "UQrd!9"Us   r   z- tail range after last fill: `r   z- tail opcode 0x10 rows: r   z- tail valid secondary fills: r   z- local tail reset found: r   z$- tail current-root-range pointers: r   z*- tail direct current-route bridge found: r   z- promotion status: r   r   z## Tail Opcode Countsr   z!## Tail Current-Route Bridge Scanz- current selector/root: `r   r   r   z- pointer dwords: rz    (data r{   , text r|   )z- current root range pointers: zJ- exact current/frontier/current-reader/source-record/target-record refs: r   r   r   r   r   r   z- leaf-table window pointers: r   z;- branch-capable rows / branch targets into current route: r   z / r   z- classification: `r   zM| va | value | low opcode | pointer section | current route class | handler |%| --- | --- | --- | --- | --- | --- |r   z| `r   z` | `r4   r   z` | r   r   z | r   z | `r   z` r   z |)r   z## Tail Evidence Rowsr   zM| va | value | low opcode | op10 table | op10 helper | valid secondary fill |r  r   r   r8   r6   r;   )r   z## Remaining Proofsr   c              3  &   K   | ]	  }d |   yw)z- Nr   rO   items     r   rQ   zmarkdown.<locals>.<genexpr>  s     D2dVDs   r   
)r   r   r   rH   extend)summarylinesrJ   r   s       r   markdownr
  S  s   !0!
! 7#89:(7K_C`Baabc! '";<=Q?	!
 !345S9O8PPQR! "Uw?S7T"UUVW! *'.*A)B!D! $G,B$C#DE! )1N)O(PQ! %W-B%C$DE! /w7Y/Z.[\! 5W=`5a4bc! w'89:;! 	! 	!  	!!" 	 #!$ 	%!& 	g345'!( 	)!* 	,+!, 	-!. %W-E%FGX%Y$ZZ]^ef~^  AV  _W  ^X  XY  	Z/!0 W%=>?RSTT[\cd|\}  V  ]W  \X  X_  `g  h@  `A  BY  `Z  _[  [\  	]1!2 *'2T*U)VW3!4 UU\]{U|T}}~  @G  Hb  @c  d  de  fm  nI  fJ  eK  KL  MT  Uo  Mp  Lq  qr  sz  {U  sV  rW  	X5!6 )1I)JKh)i(jk7!8 FgNfFgh  GA  FB  BE  FM  Nm  Fn  Eo  	p9!: g&>?@PQRRST;!< 	=!> 	X?!@ 	0A!ED /0> 
#g,uS_$5U3~;N:Otww'(/C0CGG<V4W4^[^3_ `'.3/r#'':J2K2Rs1SSUW	

 
LL   z" 
wwv$"#g,uS_$5U3~;N:Otxx%,-S:M1N1URU0VVY15txx,-3?rC	

 
LL01	LLD1B)CDD	LL99Ur   c           '     B   dj                  d | d   D              }dj                  d | d   D              }| d   }dj                  d |d	   D              }dj                  d
ddd| d    d| d    d| d    d| d    d	d| d    d| d    d| d    d| d    d| d    d | d!    d"t        j                  | d#          d$d%t        j                  | d&          d$d't        j                  t        | d(                d$d)d*t        j                  |d+          dt        j                  t	        |d,                d-|d.    d/|d0    d1|d2    d3| d    d4| d5    d6| d7    d6| d8    d6| d9    d6| d:    d;| d<    d=t        j                  |d>          dd?|d@dA|d@dB| dCg      S )DNr  c              3  T  K   | ]  }d t        j                  |d          dt        j                  |d          dt        j                  |d          dt        j                  |j                  d      xs i j                  d      xs d       d	t        j                  |j                  d      xs i j                  d
      xs d       d	t        j                  t        |j                  d      r$|j                  d      xs i j                  d      nd             d " yw)<tr><td><code>r   </code></td><td><code>r4   r   </code></td><td>r   r8   r   	</td><td>r6   r;   
</td></tr>N)htmlescaperH   strr   s     r   rQ   zhtml_page.<locals>.<genexpr>  s     
 	[[W./ 0[[Z12 3[[^!456 7{{CGGFO1r66|DKLM N{{CGGFO1r667JKRsST U{{3TWT[T[\bTc 52::;OPilmno p	
s   D&D(r   r   c              3  N   K   | ]  }d t        j                  |       d  yw)z<li>z</li>N)r  r  r  s     r   rQ   zhtml_page.<locals>.<genexpr>  s#     \tDKK-.e4\s   #%r   r   c              3     K   | ]  }d t        j                  |d          dt        j                  |d          dt        j                  |d          dt        j                  |j                  d      xs d       dt        j                  |j                  d	      xs d       d
t        j                  |j                  d      xs d       dt        j                  |j                  d      xs d       d  yw)r  r   r  r4   r   r  r   r   r  r   z</td><td><code>r   z</code> r   r  N)r  r  rH   r   s     r   rQ   zhtml_page.<locals>.<genexpr>  s      
 	[[W./ 0[[Z12 3[[^!456 7{{377#34;<= >{{377#=>E#FG H[[!8!?C@A$++VYV]V]^nVoVvsvJwIx y	
s   C<C>r   zX<!doctype html><meta charset="utf-8"><title>Save Selector Predecessor Tail Reset</title>z<style>body{font-family:system-ui,sans-serif;background:#111;color:#eee;max-width:1100px;margin:24px auto}table{border-collapse:collapse}td,th{border:1px solid #444;padding:6px 8px;vertical-align:top}code{color:#9bd4ff}</style>z-<h1>Save Selector Predecessor Tail Reset</h1>z<p>Predecessor <code>r   z</code> root <code>r   z</code>; next root <code>r   z</code> <code>r   z</code>.</p>z<p>Tail range <code>r   z </code>; tail opcode 0x10 rows: r   z; tail valid secondary fills: r   z; local tail reset found: r   z$; tail current-root-range pointers: r   z*; tail direct current-route bridge found: r   z; promotion status: r   z</p>z<p>r   z<p>Tail opcode counts: r   z'<h2>Tail Current-Route Bridge Scan</h2>z <p>Current selector/root: <code>r   r   z</code>. Pointer dwords: rz   r   r{   r   r|   z ); current root range pointers: zJ; exact current/frontier/current-reader/source-record/target-record refs: r   r   r   r   r   r   z%; branch targets into current route: r   z; classification: <code>r   z<table><thead><tr><th>va</th><th>value</th><th>low opcode</th><th>pointer section</th><th>current route class</th><th>handler</th></tr></thead><tbody>z</tbody></table>z<table><thead><tr><th>va</th><th>value</th><th>low opcode</th><th>op10 table</th><th>op10 helper</th><th>valid secondary fill</th></tr></thead><tbody>z<h2>Remaining Proofs</h2><ul>z</ul>)r   r  r  r   r  )r  rowsproofsbridgebridge_rowss        r   	html_pager    sO   99 
 :&
 
D WW\IZA[\\F-.F)) 
 ,'
 
K 99d 	n7
(= >??RSZ[oSpRq  rK  LS  Tf  Lg  Kh  hv  w~  L  wM  vN  NZ  	[
w~677WX_`vXwWx  yW  X_  `}  X~  W  Y  Za  bw  Zx  Yy  y]  ^e  fH  ^I  ]J  Jt  u|  }`  ua  tb  bv  w{  wB  wB  CJ  K\  C]  w^  v_  _c  	d
dkk',/016
!$++mGDY<Z.["\!]]ab1
*4;;v>O7P+Q*RR`aealalmpqw  yN  rO  nP  bQ  aR  Rk  lr  sF  lG  kH  HO  PV  Wn  Po  Op  pw  x~  V  xW  wX  Xx  y@  Ac  yd  xe  eo  pw  xV  pW  oX  XY  Za  b|  Z}  Y~  ~  @G  Hc  @d  e  ef  gn  oI	  gJ	  fK	  K	L	  M	T	  U	o	  M	p	  L	q	  q	V
  W
^
  _
~
  W

  V
@  @X  Y]  Yd  Yd  ek  l|  e}  Y~  X  K  	L 	a 	a
'xu5!  r   c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  t	        |       d	       y )NT)parentsexist_okz)save_selector_predecessor_tail_reset.jsonFr3   )ensure_asciiindentr  utf-8encoding)save_selector_predecessor_tail_reset.html)mkdir
write_textjsondumpsr  )r  out_dirs     r   write_outputsr*    sf    MM$M.::FF

7q9D@ G  ::FFyQXGYdkFlr   c            	        t        j                         } | j                  dt        t        dz         | j                  dt        t
        dz         | j                  dt        t
        dz         | j                  dt        t
               | j                         }t        |j                  j                         t        j                  |j                  j                  d	
            t        j                  |j                  j                  d	
                  }t        ||j                          t#        d|j                   dz          y )Nz--exezHwanse2.exe)typedefaultz--selectorszsave_scene_selectors.jsonz--fill-rootsz'save_selector_secondary_fill_roots.jsonz	--out-dirr!  r"  z wrote predecessor tail reset -> r$  )argparseArgumentParseradd_argumentr   ROOTOUT
parse_argsr   r'   
read_bytesr'  loadsrT   	read_textr   r*  r)  print)parserargsr  s      r   mainr:    s   $$&F
dD=4HI
D#@[:[\
T3Aj;jk
$<D

4>>++W+=>

4??,,g,>?G
 '4<<(	,T\\<g-g,h
ijr   __main__)r   r   returnr  )r   r  r<  r   )r   r  r<  ztuple[int, int])r'   bytesr(   
list[dict]r)   r   r<  
int | None)r   r   r<  dict | None)rJ   r   r<  r  )rT   r>  rP   r  r<  r@  )rT   r>  rX   r  r<  r@  )r(   r>  r)   r?  r<  
str | None)r   r   rv   r?  rw   r?  r<  rA  )r'   r=  r(   r>  r   r   r   r   rv   r?  rw   r?  r<  r   )r'   r=  rT   r>  r   r   r<  r   )r   zdict[str, int]r<  r  )r  r   r<  r  )r  r   r)  r   r<  None)r<  rB  )4__doc__
__future__r   r.  r  r'  r%   syspathlibr   pathinsertr  __file__resolveparentprobe_exe_scene_tablesr   r   %summarize_save_selector_stream_tracesr   r  r1  r2  r   r   rp   rq   rr   rs   rt   ru   r   r   r   r!   r+   rB   rK   rU   rY   rc   rh   rx   r   r   r   r
  r  r*  r:  __name__r   r   r   <module>rO     sg   X "     
  3tH~--/667 8 > ? H~''*
Ul#   ,
4*3_N' ,p	pp p 	p
 p p 
pfWtO:z*Zmk  zF r   