
    [Rj`                       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	Z	ddl
Z
ddlZddlZddlmZ  ed      ZdZedz  Zedz  Zed	z  Zed
z  Zedz  Z ed      Zd*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 Z"d Z#d Z$d Z%d.dZ&d Z'd Z(d Z)d-dZ*d  Z+d! Z,d" Z-d/d#Z.d$ Z/d.d%Z0d-d&Z1d' Z2d( Z3e4d)k(  r e5 e3             y)0a)  Unified, guarded MCSJ user/operator facade.

Read-only commands: state, find, proof, ready.
Navigation commands: open (exact unique JAB target), close (exact JavaFX _Close or Escape fallback).
No unguarded field mutation is exposed; future adapters must require expected-old values and read-back.
    )annotationsN)PathzC:/MCSJAgentzhttp://127.0.0.1:8765zmcsj-fast-swing.pyzmcsj-fast-fx.pyzmcsj-fast-operator.ps1zprintwindow-shot.ps1proofzOC:/Users/Administrator/AppData/Local/Programs/Cua/cua-driver/bin/cua-driver.exec           
     :   t        j                  t        t              d| dt	        j
                  |d      gdd|      }|j                  xs |j                  j                         }t	        j                  |      S # t        $ r d||j                  dcY S w xY w)	Ncallz--json),:)
separatorsTcapture_outputtexttimeoutERROR)statusmessage
returncode)
subprocessrunstrCUIjsondumpsstdoutstderrstriploads	Exceptionr   )toolpayloadr   pr   s        C:/MCSJAgent/mcsj-user.pycua_callr"      s    nnc#hvd8DJJwR[4\]mqw{  EL  MA
((
ahh	%	%	'D

4 	 Xw1<<XXXs   )A> >BBc                    | dk(  ryt        j                  t        |       j                  d            j	                  d      j                  d      S )N .utf-8ascii=)base64urlsafe_b64encoder   encodedecoderstrip)values    r!   _protor/      sB    by##CJ$5$5g$>?FFwOVVWZ[[    c                   dd l }|j                  dd      5 }|j                  d       |j                  | j	                         dz   j                  d             |j                  |j                         g }	 |j                  d      }|sn|j                  |       &	 d d d        d	j                        j                  dd
      j                         }t        j                  |      S # 1 sw Y   NxY w# t        $ r	 dd|dcY S w xY w)Nr   )z	127.0.0.1iZ&     r      
r&   i   r0   replace)errorsr   znon-JSON AgentV18 response)r   r   raw)socketcreate_connection
settimeoutsendallr-   r+   shutdownSHUT_WRrecvappendjoinr,   r   r   r   r   )commandr9   sockchunksdatar8   s         r!   agent18rF   "   s    		!	!"4Q	!	?4T\\7>>+;D+@*H*H*QRTXTaTabhbpbpTq5!DMM$  
@ 	y9??AC

3	 
@	? `w9U\_```s   BC-C9 -C69D
Dc           	         dt        |      z   }dt        |       t        |      |||t        |      fz  }t        |      S )Nz	commit64:z!FXTABLECELL %s 0 %s 0 %d %d %s %s)r/   rF   )panelheaderrowcolumnexpectedr.   actionrB   s           r!   v18_commit_cellrN   0   sD    ve}$F/6%=PSTZ[abhiqbr2ssG7r0   c                \    t        dt        |       t        |      t        |      |fz        S )NzFXCOMBOOPTIONS %s %s %s %drF   r/   )rH   
node_classnode_id
occurrences       r!   v18_combo_optionsrT   6   s-    /6%=
ASTZ[bTcdn2ooppr0   c                    t        dt        |       t        |      t        |      |t        |      t        |      fz        S )NzFXSELECTCOMBO %s %s %s %d %s %srP   )rH   rQ   rR   rS   rL   r.   s         r!   v18_select_comborV   :   s_    4ufZFXY_`gYhistz  |D  uE  FL  MR  FS  8T  T  U  Ur0   c                H    t        t        j                  | dd              |S )N   )indentr
   )printr   r   )objcodes     r!   emitr]   >   s    	$**St
45d{r0   c                   t        j                  | D cg c]  }t        |       c}dd|      }|j                  r1t	        |j
                  xs |j                  j                               |j                  j                         S c c}w )NTr   )r   r   r   r   RuntimeErrorr   r   r   )cmdr   xr    s       r!   r   r   B   sh    nnc*cc!fc*$DQXYA||AHH0779::88>> +s   Bc           	         t        | |      }t        j                  |      S # t        j                  $ r}t	        d| d    d|d d        |d }~ww xY w)Nznon-JSON output from r   z: i  )r   r   r   JSONDecodeErrorr_   )r`   r   r   excs       r!   json_runre   I   s^    	S	D

4 	 sl=RSVWXSYRZZ\]abfcf]g\h;i.jps(sss   " AAAc                   d }i }|(t        j                  |      j                         }d|d<   t        j                  j                  t        |z   |||       }t        j                  j                  |d      5 }t        j                  |j                         j                               cd d d        S # 1 sw Y   y xY w)Nzapplication/jsonzContent-Type)rE   headersmethodx   r3   )r   r   r+   urllibrequestRequestJAB_BASEurlopenr   readr,   )rh   pathr   rE   rg   reqrs          r!   jabrs   O   s    	DrwZZ '')CU7>+Bx}$wfUC			C		0AdjjIZ>[	0	0	0s   :1B55B>c                     t        dd      S # t        $ r' t        t        j                  t
        dz  dgd      cY S w xY w)NGETz/statezmcsj-jab-client.pystate   )rs   r   re   sys
executableROOT r0   r!   	jab_readyr|   W   s>    E(#	# O-A(A'J2NNOs    -==c                 D    t        t        j                  t        dgd      S Nrv   <   )re   rx   ry   FXr{   r0   r!   fx_stater   ^   s    x7 ;B??r0   c                 D    t        t        j                  t        dgd      S r~   )re   rx   ry   SWINGr{   r0   r!   swing_stater   _   s    (CNN5#A"EEr0   c                    t               } t               }t               }| j                  d      r(|j                  d      dk7  s|j                  d      dk7  rt	        d      g }|j                  dg       D ]  }g }|j                  dg       D ]6  }|j                  dD ci c]  }||v s||j                  |       c}       8 |j                  |j                  d      |j                  d	      ||j                  d
g       d        |j                  dg       }d| j                  d      | j                  d      ||D cg c]  }|d   	 c}t        |      t        |j                  d            |j                  dg       d|j                  dg       || j                  d      | j                  d      d|j                  d      |j                  d      dd|j                  d      ddg ddS c c}w c c}w ) Nokr   OKz/one or more MCSJ control surfaces are not readypanelscontrols)classidr   visibledisabledfocusededitablebound
panelClass	rootClasstables)r   rootr   r   internalFramesREADYtitlepidr   
popupCount
popupItems)r   javaFxPanelsmodalOrChildOpenmenuOpen	menuItemsmenuscache_count)r   
cacheCountportownerPid)r   r   iR&  
panelCount)r   r   )rs   swingjavaFx)	findopencloseinspect-form	set-fieldset-cellset-cell-optionpress-buttonr   )r   databaseTitler   screenr   r   controlSurfacessafeActions)r|   r   r   getr_   r@   bool)	jsfr   r    r   ckinternals	            r!   normalized_stater   b   s[   kA[]1hjA55;!%%/4/155?D3HLMMFUU8Bz"%AOO1x  D1xA|}  BC  }CQquuQxZ1x  D  E &quu\2!%%:LX`jkjojopxy{j|}~	  
 UU#B'HwaeeEl#+PV;WPV1AgJPV;Wkopxky  FJ  KL  KP  KP  Q]  K^  F_  lm  lq  lq  r~  A  lB  Cgb!6'(uuT{m@T!Ufgfkfklrfs  @A  @E  @E  FP  @Q  _R  dh  vw  v{  v{  |H  vI  \J  K|  D
 <Xs    	G:*G:G?c                   |rt        ddddd       t        ddt        j                  j                  |       z         }|j	                  d      xs g }|D cg c]U  }|j	                  d	      xs d
j                         j                         | j                         j                         k(  sT|W }}d| t        |      t        |      |d d dS c c}w )NPOST/refresh
     	max_depth	max_nodesru   z/find?text=hitsnamer$   r   rw   )r   querycount
exactCountr   )rs   rj   parsequoter   r   casefoldlen)r   refreshoutr   hexacts         r!   r   r   v   s    F:2#&FGE- 2 24 889C		BD
`dquuV}299;DDF

H]H]H__1dE
`$s4yc%jX\]`^`Xabb as   AC.Cc                     fd} |       }d}t        |      dk7  rt        ddddd        |       }d	}t        |      dk7  rd
d t        |      ||dS t               }|d   }t        ddd|d   i      }t        j                  d       t               }|j                  d      rdndd||j                  d      |j                  d      |j                  d      d|d   |d   |dS )Nc            	        t        d      } | d   }|D cg c]y  }|j                  d      xs dj                         j                         j                         j                         k(  sT|j                  d      sf|j                  d      sx|{ }}|D cg c]  }|j                  d      dv s| }}i }|D ]  }|j                  d	      xs i }|j                  d      |j                  d      |j                  d
      |j                  d      |j                  d      |j                  d      f}|j	                  ||        t        |j                               S c c}w c c}w )NFr   r   r$   r   enabledrole)menuz	menu itemzpush buttonboundsra   ywidthheight)r   r   r   r   
setdefaultlistvalues)	resultr   r   r   
actionablededupbsigr   s	           r!   resolve_actionablez&open_exact.<locals>.resolve_actionable   sL   DfVn  O$Q155=#6B"="="?"H"H"JDJJLLaLaLc"chihmhmnwhx}~  ~C  ~C  DM  ~Nq$  O$\u!f9[([Au
\AeeHo#AvquuV}QUU3Zc
155>RSRWRWX`RabCS#  ELLN## O\s$   AE%-E%?E%E%E*4E*z	hot-cache   r   r   r   r   r   zbroad-refresh-recoveryREJECTEDzEtarget must resolve to exactly one visible enabled actionable control)r   reasonr   exactActionableCount
candidatesrouter   z/clickr   g      ?r   r   r   r   r   r   )r   r   r   r   )r   rM   r   targetbeforeScreenafterScreenverifiedState)r   rs   r   timesleepr   )r   r   r   r   beforer   clickedafters   `       r!   
open_exactr   ~   sp   
$ "#J;U
:F:2#>?%'
/G
:#-t  ~B  Z]  ^h  Zi  wA  JO  P  	PFjmvxfTl 34GJJrN

E$[[.TGVTYioisistxiy  BH  BL  BL  MS  BT  \b  \f  \f  gm  \n  do  E  FN  O  ^c  dl  ^m  ~C  D  Dr0   c            
     :   t               } g }| d   D ]]  }|d   D ]S  }|j                  d      dv s|j                  d      s)|j                  d      r;|j                  |d   |d   f       U _ t        |      dk(  r^|d	   d	   d
vrT|d	   \  }}t	        t
        j                  t        dd|d|gd      }t        j                  d       t               }ddd||dS t	        dddddt        ddgd      }t        j                  d       t               }ddd||dS )Nr   r   r   )_CloseCloser   r   r   r   r   )javafx.embed.swing.JFXPanelNfire-button--panel-class--text-   皙?r   r   zguarded-javafx-fire)r   rM   r   r   r   powershell.exe
-NoProfile-ExecutionPolicyBypass-FilepressEscaperw   333333?zescape-fallback)r   r   r@   r   re   rx   ry   r   r   r   OP)rv   r   rH   r   r   r   r   s          r!   close_currentr     s/   

EJxz"AuuV} 22quuY7GPQPUPUV`Pa!!5>!F)"<= # ! :jmA.6ZZa=
dcnnRoeHUYZ[]^

2.0w7LVYjopp"<0B8GTVW^_ghiklCJJrN*,E73Dcbghhr0   c            
        t               } g }| d   D ]  }|d   dk(  rg }g }t        |d         D ]c  \  }}i |d|i}|j                  dd      }|j                  d      sd|v sd	|v sd
|v r|j                  |       d|v sS|j                  |       e |j                  |d   |||j                  dg       d        d| d   | d   t	        |      |dS )Nr   r   r   r   indexr$   r   FieldComboBoxCheckBoxButtonr   )r   fieldsbuttonsr   r   r   r   )r   r   r   	formCountforms)r   	enumerater   r@   r   )	rv   r  r    r  r  ir   itemclss	            r!   inspect_formr     s    

EBe8_W:44h27Qz]+CAa AgaDgb!CuuZ GsNjC6G:Y\K\d#3t$ , 	1W:vYZY^Y^_ghjYklm  %*@%PX/fijofpy~r0   c                4   g }| j                  dg       D ]  }|j                  d      |k7  r|j                  dg       D ]T  }|j                  d      |k(  s|j                  d      |k(  s-||j                  d      |k(  sD|j                  |       V  |S )Nr  r   r  r   r   r   r   r@   )snapshotrH   rQ   rR   	node_textmatchesformfields           r!   _form_matchesr     s    GWR(88L!5((XXhr*Eyy!:-%))D/72JPYPaejenenouev  yB  fBu% + )
 Nr0   c                H    | dk(  rydj                  d | D              }d|z   S )Nr$   z^a{BACKSPACE}c              3  8   K   | ]  }|d v rd|z   dz   n|  yw)z
+^%~()[]{}{}Nr{   ).0chs     r!   	<genexpr>z$_sendkeys_literal.<locals>.<genexpr>   s%     Mu""4CF3J"<us   ^a)rA   )r.   escapeds     r!   _sendkeys_literalr&     s)    byGGMuMMG<r0   c                   t               }t        || |||      }t        |      dk7  rddt        |      | |||ddS |d   }|j                  d      |k7  rdd||j                  d      d	S |j                  d
      s|j                  d      sdd|dS t        j
                  t        dd| d|d|d|d|g}	||	d|gz  }	t        j                  |	D 
cg c]  }
t        |
       c}
ddd      }d}|j                  xs |j                  j                         }t        j                  |      }|j                   dk7  rg|j                  d      sdd||dS |j                  dd      }t#        d d!d"d#d$t$        d%z  d&|d't'        |      g
d(      }d)}t)        j*                  d*       t               }t        || ||d       }t        |      dk(  r|d   j                  d      nd }d+}||k7  r8d,|v r4t-        |t              r$|j/                         |j/                         k(  rd}n||k7  r	dd-||||d.S d/d0|| ||||d1||||||d   d2
S c c}
w # t        j                  $ r	 d|d}Y 6w xY w)3Nr   r   z1field must resolve to exactly one current control)r   r   r   r   )r   r   
matchCountguardr   r   zexpected prior value mismatchr   r   rL   actualr   r   z!target is not visible and enabled)r   r   r   editr   --class--id
--expectedz--newr   Tr   r   zguarded-agentv10r   )r   r8   r   z^semantic mutation failed and exact target is not uniquely focused; keyboard fallback forbidden)r   r   semanticResultr   r   r$   r   r   r   r   r   sendkeys-title.ps1-Title-Keysrw   zfocused-keyboard-fallbackr   F	MaskField!post-operation read-back mismatch)r   r   r   	requestedr+  r   r   r   )r   r   r   r   rL   )
r   rM   r   r)  r6  r+  maskNormalizedr   beforeField
afterField)r  r  r   r   rx   ry   r   r   r   r   r   r   r   r   r   rc   r   re   rz   r&  r   r   
isinstancer-   )rH   rQ   rR   r  rL   r.   r   r  r   r`   ra   procr   detailr   r   r   after_matchesr+  
normalizeds                       r!   	set_fieldr?     s6   >F=jQZ#[7
7|Q#-`nqrynz  RW  `j  pw  H  DI  J  	J1:Fzz&8##-LX`jpjtjtu{j|}}zz*VZZ	%:#-PZ`aa	6/%	*VT[\hiqryz  	ACchy%99c	-AQ-TtTV	WD
EKK&4;;--/F

6"zz)$'  2R  dj  tz  {  {jj,),7I(SZ[_`t[tu}  D  EL  M^  _d  Me  f  gi  j)

2
.EeE*WUY(Z-+.}+=q+@='dFJu}
2z&7MRXR_R_RachcococqRq
	#-PY^kp  {A  KQ  R  	R;uSXakqx  AJ  V^  F_  lq  {A  S]  gm  |B  P]  ^_  P`  a  a' . G'(GGs   II I$#I$c                    g }| j                  dg       D ]W  }|j                  d      |k7  r|j                  dg       D ]+  }||j                  d      xs g v s|j                  |       - Y |S )Nr  r   r   columnsr  )r  rH   rI   r  r  tables         r!   _find_tablerC     sl    GWR(88L!5((XXhr*E%))I.4"5w~~e7L + ) Nr0   c                	   t               }t        || |      }t        |      dk7  rddt        |      dS |d   }	|	j                  d      xs g }
|	j                  d      xs g }|dk  s!|t        |
      k\  s|dk  s|t        |      k\  rddt        |
      t        |      d	S |
|   |   }||k7  rdd
||dS t	        t
        j                  t        dd| d|dt        |      dt        |      ddd|gd      }t               }g }g }|j                  dg       D ]  }|j                  d      | k7  r|j                  dg       D cg c]d  }|j                  d      s|j                  d      r'|j                  d      s9d|j                  dd      vsN|j                  d      |k(  sc|f }}||z  }||D cg c]  }|j                  d      s| c}z  } t        |      dk(  r|n|}t        |      dk(  r|d   }t        | |d   |j                  d d      |j                  d      |j                  dd      |      }|j                  d!      xs i }|j                  d"      dk(  xr@ |j                  d#      d$k(  xr* |j                  d"      d%k(  xr |j                  d&      |k(  }|j                  d"      d%k7  r	|sdd'||d(S |rd)n|j                  d*      }|j                  d      |j                  d       d+}nt        |      dk(  r|j                  d,      d-k(  r|j                  d.      |k(  rm|j                  d/      |k(  rYd0t        |      z   }t	        d1d2d3d4d5t        d6z  d7|j                  d8d      d9|g
d:      }|j                  d8d      ||d;}d<}d=dd+}ndd>||d?S t        | |||||      }|j                  d"      d%k7  s|j                  d,      d@k7  rddA|||dBS t        j                  dC       t               }t        || |      }d } t        |      dk(  r?|d   j                  d      xs g }!|t        |!      k  r|t        |!|         k  r|!|   |   } dD}"| |k7  rHdE|j                  dd      v r4t        | t              r$| j!                         |j!                         k(  rdF}"n| |k7  r
ddG|| |||dHS d%dI| |||||   |dJ|| |"||||dK
S c c}w c c}w )LNr   r   5table must resolve uniquely by panel and exact headerr   r   r(  r   rowsrA  row or column out of ranger   r   rowCountcolumnCountexpected prior cell mismatchr*  cellr   --header--row--column--actionr,  r/  r   r  r   r  r   r   r   FakeFocusTextFieldr   r$   r   r   r   r   r   r   r5  r   r+  zcell editor value entry failed)r   r   entry
activationztransient-editor-agentv10r   )r   r   verificationzediting-cell-readbackselectedRowselectedColumnr$  r   r   r   r   r   r1  r2  r   r3  rw   )r   keystypedz!exact-editing-cell-title-sendkeysztransient-javafx-table-editorz6exact cell activated but editor did not resolve safely)r   r   focusedEditorsrT  backing-row-commit-readbackz$AgentV18 guarded table commit failed)r   r   rT  rS  commit皙?Fr4  Tz!committed cell read-back mismatch)r   r   r6  r+  rT  rS  r\  r   r   rI   rJ   rK   
columnNamerL   )
r   rM   r)  r6  r+  r7  editorrT  
entryRouter\  )r  rC  r   r   re   rx   ry   r   r   r?  r&  rz   rN   r   r   r:  r-   )#rH   rI   rJ   rK   rL   r.   r\  r   r   rB  rG  rA  actual_before	activatededitingr   r   r  r   eligibleresolvedr`  enteredsemantictransient_agent_okentry_routeeditor_inforX  rY  commit_resultr   after_tablesactual_after
after_rowsr>  s#                                      r!   set_cellrp     s   >F+fU6"B6
6{A~#-druv|r}~~
)E%))F+1rT599Y;O;USU7
1uSY&(fc'l.B#-IUXY]U^mpqxmyzzs)F#Mh#-KW_ivwwr&zRXY`adehaijtuxy  vA  BL  MS  T`  ai  j  km  nINGBG2
GB'88L!5((!XXhr2  F2aeeI6FquuU_O`efejejkuev  |P  XY  X]  X]  ^e  fh  Xi  |i  no  ns  ns  tz  n{  }E  nE!2  Fh
x<x!155+;Ax<<	 (
 GaWZH
8}a{%w

40CVZZPVEWX^XbXbcijlXmnstX&,"#KK1:=  @'++hBWY|B|  @  BJ  BN  BN  OW  BX  Z^  B^  @  ck  co  co  px  cy  {@  c@;;x $&/A'1QZaoxyy3E/7;;W^K_#ZZ0fjj6FG	WqY]]>:<SSXaXeXefsXtvyXy  H  L  L  M]  ^  `f  f#E**(6HRYZ^_sZst|  ~D  ~H  ~H  IX  Y[  ~\  ^e  fj  k  ln  oOB7US7<"E#-ew~  MV  W  	W!%s6(5IM"D(M,=,=n,MOl,l#-Sajsz  ER  S  	SJJrN
.E{5v'F,L
<!?&&v.4"
s:6#jo*>#>ZX[_]cMdJU{koogb.IIjYefiNjo{  pC  pC  pE  GL  GS  GS  GU  pU  bf  Wa	u	#-P]blx  GP  Y`  jw  x  	x:ESY`cms  BI  JP  BQ  ]e  7f  sx  BN  `j  t  MV  do  yF  G  GE F<s0   SS+S=SS'S7S!S!c                :	   t               }t        || |      }t        |      dk7  rddt        |      dS |d   }|j                  d      xs g }	|j                  d      xs g }
|dk  s!|t        |	      k\  s|dk  s|t        |
      k\  rddt        |	      t        |
      d	S |	|   |   }||k7  rdd
||dS t	        t
        j                  t        dd| d|dt        |      dt        |      ddd|gd      }t               }g }|j                  dg       D ]  }|j                  d      | k7  r|j                  dg       D cg c].  }d|j                  dd      v sd|j                  dd      vs-|0 }}t        |      D ]h  \  }j                  d      sj                  d      r*j                  d      |k(  s?t        fd|d | D              }|j                  |f       j  t        |      dk7  rdd t        |      |d!S |d   \  }}t        | |d   |j                  d"d      |      }|j                  d#      d$k7  s|j                  d%      |k7  rdd&|||d'S |j                  d(g       D cg c]
  }||k(  s	| }}t        |      dk7  r!dd)|t        |      |j                  d(g       d*S t        | |d   |j                  d"d      |||      }|j                  d#      d$k7  s|j                  d+      |k7  rdd,||d-S t        j                  d.       t               }t        || |      }d }t        |      dk(  r?|d   j                  d      xs g }|t        |      k  r|t        ||         k  r||   |   }d$d/|d0}||k7  r@t!        | |||||      }|j                  d#      d$k7  s|j                  d1      d2k7  rdd3|||d4S t        j                  d.       t               }t        || |      }d } t        |      dk(  r?|d   j                  d      xs g }!|t        |!      k  r|t        |!|         k  r|!|   |   } | |k7  r	dd5|| ||d6S d$d7| ||||
|   |d8|| |j                  d      |j                  d"      |d9||||d:
S c c}w c c}w );Nr   r   rE  rF  r   rG  rA  rH  rI  rL  r*  rM  r   rN  rO  rP  rQ  r,  r/  r   r  r   r  r	  r   r$   rR  r   r   r   c              3     K   | ]P  }|j                  d       j                  d       k(  s'|j                  dd      j                  dd      k(  sMd R yw)r   r   r$   r   N)r   )r!  priorr   s     r!   r#  z"set_cell_option.<locals>.<genexpr>;  ss       M.>U%))GBTVWV[V[\cVdBdinirirswxzi{}~  ~C  ~C  DH  IK  ~L  jLq.>s   (A%AAzEactive combo editor must resolve uniquely by panel/current cell value)r   r   r(  rT  r   r   r   currentz(combo options/current-state guard failed)r   r   r`  rS   optionsru  z)requested option must appear exactly once)r   r   r6  r  ru  r+  z combo selection read-back failed)r   r   	selectionru  r]  zcombo-selection-event-readback)r   rU  r+  rU  r[  z,combo selected but backing-row commit failed)r   r   rv  r\  r+  z#final combo cell read-back mismatch)r   r   r6  r+  rv  r\  r   r^  )r   r   rS   )
r   rM   r)  r6  r+  r`  ru  rT  rv  r\  )r  rC  r   r   re   rx   ry   r   r   r  sumr@   rT   rV   r   r   rN   )"rH   rI   rJ   rK   rL   r.   r   r   rB  rG  rA  rb  rc  rd  r   r  r   combo_fieldsr  rS   r`  ru  ra   exact_optionsselectedmid
mid_tables
actual_midmid_rowsr\  r   rm  rn  ro  s"                   `                 r!   set_cell_optionr  *  s   >F+fU6"B6
6{A~#-druv|r}~~
)E%))F+1rT599Y;O;USU7
1uSY&(fc'l.B#-IUXY]U^mpqxmyzzs)F#Mh#-KW_ivwwr&zRXY`adehaijtuxy  vA  BL  MS  T`  ai  j  km  nINGrJGB'88L!5((!%(2!6  M!6A*gVXHY:Y^rz{zz  AH  IK  {L  _La!6  M\*CAauuYj(9aeeFmX>U  Ml2A.>  M  M
!!1Z.1 + ( :#-t  CF  GQ  CR  `i  j  	j mF:eF7OFJJtB4G
SG{{8d"gkk)&<h&F#-Wagu  KR  S  	S%kk)B7D71e817MD
=1#-Xejux  zG  vH  SZ  S^  S^  _h  ik  Sl  m  	meF7OFJJtB4G
S[\abH||Ht#x||H'=u'D#-O\dovwwJJrNC;s53P
J
:A""6*0bs8}HSM(:!:xPS}U[G\J)IS]^F5uVCxF::h%N)CEb)b'1_lt  E  OY  Z  ZJJrN,.E{5v7V,L
<!?&&v.4"
s:6#jo*>#>ZX[_]cMdU#-R_dnz  HP  Z`  a  	a#45Z`gjtz  IP  QW  IX  dl  >m  z  IU  hn  hr  hr  sz  h{  AG  AK  AK  LP  AQ  _i  _j  u|  JS  `h  rx  y  yE M Es   RR0R9
RRc                    t         j                  t        dd| d|g}|r|j                  d       t	        |d      }t        j                  d       dd| ||d	|t               d
S )Nr   r   r   --expected-disabledr   r  r   r   )r   r   expectedDisabled)r   rM   r)  r   r   )rx   ry   r   r@   re   r   r   r   )rH   r   expected_disabledr`   r   s        r!   press_buttonr  ]  sp    	=xMC#**%:;CFTZZ^>UYm~:  JP  aq  as  t  tr0   c           
     j   | sCt         j                  j                         j                  d      }t	        t
        d| dz        } t        dddddt        d	| gd
      }|j                  d      r|j                  d      s!t        dt        j                  |      z         di |ddit               dS )Nz%Y%m%d-%H%M%Sz
mcsj-user-z.pngr   r   r   r   r   z-Pathrw   r   bytesz)occlusion-safe PrintWindow proof failed: r   sourcez win32-printwindow-occlusion-safe)r   r   rv   )dtdatetimenowstrftimer   PROOFre   PRINTWINDOWr   r_   r   r   r   )rp   stampr   s      r!   r   r   d  s    kkoo((9E7$//0"<0B8GT_`ghlmnpqC774= 0FtzzRUVWW"US"U2T"U^n^pqqr0   c                 V    dt               t        t        t        dz              d   dS )Nr   zmcsj-user-ready.pngr   )r   rv   r   )r   r   r   r  r{   r0   r!   readyr  n  s)    "2"4U3uMbGbCc=del=mnnr0   c            	     
   t        j                  d      } | j                  dd      }|j                  d       |j                  d       |j                  d       |j                  d	       |j                  d
      }|j	                  d       |j	                  dd       |j                  d      }|j	                  d       |j                  d      }|j	                  dd       |j                  d      }|j	                  dd       |j	                  ddd       |j	                  dd       |j	                  d       |j	                  dd       |j	                  dd       |j                  d      }|j	                  dd       |j	                  dd       |j	                  dt
        d        |j	                  d!t
        d        |j	                  dd       |j	                  dd       |j	                  d"d#d$gd#%       |j                  d&      }|j	                  dd       |j	                  dd       |j	                  dt
        d        |j	                  d!t
        d        |j	                  dd       |j	                  dd       |j                  d'      }|j	                  dd       |j	                  dd       |j	                  d(d       | j                         }	 |j                  dk(  rt               }n|j                  dk(  rt               }n|j                  d	k(  rt               }n|j                  d
k(  r"t        |j                  |j                        }n|j                  dk(  rt        |j                        }n|j                  dk(  rt               }np|j                  dk(  rNt!        |j"                  |j$                  |j&                  |j                  |j(                  |j*                        }n|j                  dk(  rXt-        |j"                  |j.                  |j0                  |j2                  |j(                  |j*                  |j4                        }n|j                  d&k(  rMt7        |j"                  |j.                  |j0                  |j2                  |j(                  |j*                        }nP|j                  d'k(  r,t9        |j"                  |j                  |j:                        }nt=        |j>                        }tA        ||jC                  d)      d*v rd+      S d,      S # tD        $ r"}tA        d-tG        |      d.d,      cY d }~S d }~ww xY w)/Nz Unified guarded MCSJ user facade)descriptionr`   T)destrequiredrv   r  r   r   r   r   z	--refresh
store_true)rM   r   r   rp   ?)nargsr   z--panel)r  r-  rQ   r.  r   r/  z--valuer   rN  rO  )typer  rP  z--commitTabEnter)choicesdefaultr   r   r  r   )r   r   r   rX   r   )r   r   )$argparseArgumentParseradd_subparsers
add_parseradd_argumentint
parse_argsr`   r   r  r  r   r   r   r   r  r?  rH   rQ   r   rL   r.   rp  rI   rJ   rK   r\  r  r  r  r   rp   r]   r   r   r   )apsubr    argsr   rd   s         r!   mainr  r  s3   +MNB
ud3CNN7S^^G4cnnW6Ms~~^lOm	nnVAannV4ann[Xdn6e	nnVAannV4	nnWAq~~f3~?	nn[!A1>>)T>#JANN[djv  AEN  MF  HI  HV  HV  W]  gk  HV  Hl  no  n|  n|  }E  nF  HI  HV  HV  Wc  mq  HV  Hr  tu  tB  tB  CL  VZ  tB  t[	nnZ A!..D."I1>>Zdnr>Ksuv  vD  vD  EL  RU  _c  vD  vd  fg  ft  ft  u  EH  RV  ft  fW  YZ  Yg  Yg  ht  ~B  Yg  YC  EF  ES  ES  T]  gk  ES  El  no  n|  n|  }G  QV  W^  P_  hm  n|  nn	nn&'A	4)PRSR`R`akuyR`Rz|}  }K  }K  LS  Y\  fj  }K  }k  mn  m{  m{  |F  LO  Y]  m{  m^  `a  `n  `n  o{  EI  `n  `J  LM  LZ  LZ  [d  nr  LZ  Ls	nn^$AannYn&Mq~~^fpt~Ouwx  xF  xF  G\  dp  xF  xq	DR88W"2"4cXXwEGXX~%<>sXXv4		$,,#?sXXv:dii#8sXXwMOXX{"	$**T__TWWUYU^U^_c_l_lmqmwmw(xCXXz!x

4;;txxPTP[P[\`\i\ijnjtjtuy  vA  vA  (B3XX((odjjUYU]U]^b^i^ijnjwjwx|  yC  yC  /D#XX~%<

499TMcMc+ds		"cCSWWX..@HHaHHQD7SX)Nq$QQQs%   6IU U 	U9U4.U94U9__main__)r   )r   )r   )N)F)r  )6__doc__
__future__r   r  r)   r  r  r   r   rx   r   urllib.parserj   urllib.requestpathlibr   rz   rm   r   r   r  r  r  r   r"   r/   rF   rN   rT   rV   r]   r   re   rs   r|   r   r   r   r   r   r  r  r  r&  r?  rC  rp  r  r  r   r  r  __name__
SystemExitr{   r0   r!   <module>r     s+   # b b b b b 	.	 
  ''
7l	Z[Y\
aqUCt\O @ E(cD8i$@ aB0Gf0yftroR6 Zz$&11r0   