#!/usr/bin/env python3
"""Reproduce the narrow diagnostic-path normalization; never print private path values."""
from pathlib import Path
import hashlib,re,sys,json
p=Path(sys.argv[1]);data=p.read_bytes();before=hashlib.sha256(data).hexdigest();offsets=[]
marker=b'/work/approved-attacks-v3/renderer/'
allowed={b'SDL_render_sw.c',b'SDL_gpu.c',b'SDL_render_gles2.c'}
for match in reversed(list(re.finditer(rb'/Users/[^\0\r\n]+(?=\0)',data))):
 raw=match.group();assert raw.rsplit(b'/',1)[-1] in allowed,'Unexpected personal diagnostic path; inspect privately before proceeding'
 boundary=raw.find(marker);assert boundary>len(b'/build/'),'Unrecognized build prefix; inspect privately'
 prefix=raw[:boundary];neutral=b'/build/'+b'_'*(len(prefix)-len(b'/build/'))
 start=match.start();data=data[:start]+neutral+data[start+len(prefix):];offsets.append(start)
assert b'/Users/' not in data,'Unexpected remaining personal source path'
if before=='58fc85b88bfd7d46563b714b6e6eca33ae1dd3b6dc7cbfe22e946ad61cf80105':
 assert len(offsets)==3
 assert hashlib.sha256(data).hexdigest()=='8b89af7e67dd505d69ec7d9869a549a5b60254cea202d35369316017612de21b'
p.write_bytes(data)
print(json.dumps({'changedDiagnosticStrings':len(offsets),'offsets':sorted(offsets),'beforeSHA256':before,'afterSHA256':hashlib.sha256(data).hexdigest()}))
