import quickjs,json,re
s=open('commonChunk.AUoCIbzg.js',encoding='utf-8',errors='ignore').read()
def be(src,key):
    i=src.find(key);j=src.find('{',i);d=0;k=j;instr=None;esc=False
    while k<len(src):
        c=src[k]
        if instr:
            if esc:esc=False
            elif c=='\\':esc=True
            elif c==instr:instr=None
        else:
            if c in '"\'`':instr=c
            elif c=='{':d+=1
            elif c=='}':
                d-=1
                if d==0:return src[i:k+1]
        k+=1
    return src[i:]
ctx=quickjs.Context()
ctx.eval(be(s,'function Kg')); ctx.eval(be(s,'function mr'))
base=json.loads(ctx.eval('JSON.stringify(Kg())')); L=len(base)
calls=set()
for m in re.finditer(r'Et\(\s*["\']([^"\']{1,8})["\']\s*,\s*(-?\d+)\s*\)',s):
    calls.add((m.group(1),int(m.group(2))))
print('Et calls:',len(calls))
def pr(x): return isinstance(x,str) and len(x)>0 and all(32<=ord(c)<127 for c in x)
best=(0,None,None)
for r in range(L):
    rot=base[r:]+base[:r]
    ctx.set('_R',json.dumps(rot)); ctx.eval('Kg=function(){return _R}')
    ok=0;tot=0;sample=[]
    for key,idx in calls:
        tot+=1
        try: v=ctx.eval(f'mr(${idx+196},{json.dumps(key)})')
        except Exception: continue
        if pr(v): ok+=1; 
        if len(sample)<6 and pr(v): sample.append((key,idx,v))
    sc=ok
    if sc>best[0]: best=(sc,r,sample)
print('BEST rot',best[1],'score',best[0],'/',len(calls))
print('samples:',best[2])
