From e55d37772a49e5c3399d350b8553c8e5f585245b Mon Sep 17 00:00:00 2001 From: matze19999 Date: Tue, 6 Oct 2026 19:05:06 +0200 Subject: [PATCH] Add resilient handover, live LED layout refresh and TV calibration profiles --- .gitignore | 4 + HyperDRM.manifest.json | 8 +- ...M_0.9.0_arm.ipk => HyperDRM_0.10.0_arm.ipk | Bin 1177866 -> 1183836 bytes README.md | 20 +++- app/app.js | 17 ++- app/appinfo.json | 2 +- app/index.html | 9 +- app/remote.js | 2 +- docs/publishing-review.md | 10 ++ native/calibration.h | 84 ++++++++++++++ native/diagnostics.h | 103 ++++++++++-------- native/handover.h | 43 ++++++-- native/layout.h | 13 +-- native/layout_refresh.h | 34 ++++++ native/service.c | 55 ++++++++-- native/spatial_image.h | 6 +- native/test_calibration.c | 26 +++++ native/test_handover.c | 88 ++++++++------- native/test_layout_refresh.c | 35 ++++++ native/test_spatial_image.c | 7 ++ package/packageinfo.json | 2 +- profiles/README.md | 35 ++++++ service/histogram-service | Bin 78228 -> 80400 bytes tests/layout-proxy.py | 63 +++++++++++ tests/receiver-ui.test.js | 7 +- tests/remote-navigation.test.js | 4 + 26 files changed, 543 insertions(+), 134 deletions(-) rename HyperDRM_0.9.0_arm.ipk => HyperDRM_0.10.0_arm.ipk (89%) create mode 100644 native/calibration.h create mode 100644 native/layout_refresh.h create mode 100644 native/test_calibration.c create mode 100644 native/test_layout_refresh.c create mode 100644 profiles/README.md create mode 100644 tests/layout-proxy.py diff --git a/.gitignore b/.gitignore index 75c495a..0118843 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ tests/receiver-proxy.log test-spatial-image test-diagnostics + +test-calibration +test-layout_refresh +test-spatial_image diff --git a/HyperDRM.manifest.json b/HyperDRM.manifest.json index 215e00e..4d005af 100644 --- a/HyperDRM.manifest.json +++ b/HyperDRM.manifest.json @@ -1,15 +1,15 @@ { "id": "org.webosbrew.histogramhyperion", - "version": "0.9.0", + "version": "0.10.0", "type": "web", "title": "HyperDRM", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "iconUri": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/app/icon.png", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM", "rootRequired": true, - "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.9.0_arm.ipk", + "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.10.0_arm.ipk", "ipkHash": { - "sha256": "f9cb0b4035a0b4f527da814ecb0ea1e0c184fc92154f60899b6425c84e0d2d9b" + "sha256": "0ad040adfc0be402f5c83e783a8f9b4e78b33b59e5b04fa3d52652bf48ddda70" }, - "ipkSize": 1177866 + "ipkSize": 1183836 } diff --git a/HyperDRM_0.9.0_arm.ipk b/HyperDRM_0.10.0_arm.ipk similarity index 89% rename from HyperDRM_0.9.0_arm.ipk rename to HyperDRM_0.10.0_arm.ipk index 374788703c1009966d3b1ad1cf2cfd1a1f8c065d..94982c8330bba42cd764b7c2ebdcd666363e9a4a 100644 GIT binary patch delta 104050 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�YnxpM*yRw^5fb+?RFzS2BK1Y=bz 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

&vz{& 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μ< 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 - if(result.version)document.getElementById('diagnostics').textContent='Version '+result.version+' · '+(result.uid===0?'Root service':'Service needs root elevation')+' · '+result.captureState+' · Playback: '+result.playbackProtection+' · Capture recoveries: '+result.captureRecoveries+' (last: '+result.lastRecoveryMs+' ms)'+(result.lastOutputAgeMs>=0?' · Last histogram output: '+result.lastOutputAgeMs+' ms ago':'')+(result.retryScheduled?' · Retry in '+result.retryInMs+' ms · Attempts: '+result.retryAttempts:'')+(result.piccapError?' · '+result.piccapError:''); + if(result.version)document.getElementById('diagnostics').textContent='Version '+result.version+' · '+(result.uid===0?'Root service':'Service needs root elevation')+' · '+result.captureState+' · Playback: '+result.playbackProtection+' · Capture recoveries: '+result.captureRecoveries+' (last: '+result.lastRecoveryMs+' ms)'+(result.lastOutputAgeMs>=0?' · Last histogram output: '+result.lastOutputAgeMs+' ms ago':'')+(result.retryScheduled?' · Retry in '+result.retryInMs+' ms · Attempts: '+result.retryAttempts:'')+(result.piccapError?' · '+result.piccapError:'')+(result.piccapCooldownMs?' · PicCap retry in '+Math.ceil(result.piccapCooldownMs/1000)+' s':'')+' · Layout updates: '+(result.layoutUpdates||0)+(result.layoutError?' · Layout: '+result.layoutError:''); var handover=document.getElementById('handover');handover.disabled=!result.piccapInstalled; handover.setAttribute('aria-checked',String(!!result.piccapHandover)); handover.textContent=result.piccapInstalled?'Auto PicCap: '+(result.piccapHandover?'On':'Off'):'Auto PicCap: Not installed'; @@ -32,6 +41,7 @@ function display(result){ } if(result.piccapHandover)document.getElementById('status').textContent+=' · HyperDRM · '+result.playbackProtection; if(result.piccapHandover && !result.piccapTargetCompatible)document.getElementById('status').textContent+=' · Auto PicCap unavailable for remote IPv6 target'; + if(result.colorValid && result.effectiveCalibration==='average')document.getElementById('status').textContent+=' · Average color output'; if(result.colorValid)document.getElementById('status').textContent+=result.spatialOutput?' · '+result.ledCount+' LEDs from 16 color regions'+(result.receiver==='HyperHDR'?' · Spatial image output':''):' · Output RGB: '+result.outputColor.join(', '); else if(result.returnValue!==false)document.getElementById('status').textContent+=' · No current color output'; if(result.blackBarDetection && result.running)document.getElementById('status').textContent+=result.letterboxDetected?' · Top/bottom black bars detected':' · Full-screen capture'; @@ -62,4 +72,7 @@ document.getElementById('saveTarget').onclick=function(){ button.disabled=true;call('settings',function(r){button.disabled=false;if(r.returnValue===false){document.getElementById('error').textContent=r.errorText;return;}targetDirty=false;document.getElementById('token').value='';document.getElementById('clearToken').checked=false;call('status',display);},settings); }; document.getElementById('testConnection').onclick=function(){if(targetDirty){document.getElementById('error').textContent='Save receiver settings before testing the connection.';return;}this.disabled=true;call('testConnection',function(r){if(r.returnValue===false)document.getElementById('error').textContent=r.errorText;call('status',display);});}; -setupRemoteNavigation(['start','stop','refresh','autostart','handover','receiver','host','port','piccapPort','token','clearToken','saveTarget','testConnection'].map(function(id){return document.getElementById(id);}),document,window); +document.getElementById('profile').onclick=function(){var keys=['auto','g4','average','custom'];profile=keys[(keys.indexOf(profile)+1)%keys.length];profileDirty=true;showProfile();}; +document.getElementById('customProfile').addEventListener('input',function(){profileDirty=true;}); +document.getElementById('saveProfile').onclick=function(){var data={profile:profile},button=this;if(profile==='custom'){try{var parsed=JSON.parse(document.getElementById('customProfile').value);data.model=parsed.model;data.points=parsed.points;}catch(e){document.getElementById('error').textContent='Custom profile must be valid JSON.';return;}}button.disabled=true;call('calibration',function(r){button.disabled=false;if(r.returnValue===false){document.getElementById('error').textContent=r.errorText;return;}profileDirty=false;call('status',display);},data);}; +setupRemoteNavigation(['start','stop','refresh','autostart','handover','receiver','host','port','piccapPort','token','clearToken','saveTarget','testConnection','profile','customProfile','saveProfile'].map(function(id){return document.getElementById(id);}),document,window); diff --git a/app/appinfo.json b/app/appinfo.json index 0460b9a..7671e8a 100644 --- a/app/appinfo.json +++ b/app/appinfo.json @@ -1 +1 @@ -{"id": "org.webosbrew.histogramhyperion", "version": "0.9.0", "vendor": "Local development", "type": "web", "main": "index.html", "title": "HyperDRM", "icon": "icon.png", "resolution": "1920x1080", "disableBackHistoryAPI": true, "largeIcon": "large-icon.png", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} +{"id": "org.webosbrew.histogramhyperion", "version": "0.10.0", "vendor": "Local development", "type": "web", "main": "index.html", "title": "HyperDRM", "icon": "icon.png", "resolution": "1920x1080", "disableBackHistoryAPI": true, "largeIcon": "large-icon.png", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} diff --git a/app/index.html b/app/index.html index 699918c..79ffa02 100644 --- a/app/index.html +++ b/app/index.html @@ -1,9 +1,9 @@ HyperDRM - +

HyperDRM

Ambient lighting for webOS, Hyperion and HyperHDR.

Checking service …

-

Use the arrow buttons to select a control and OK to activate it.

Autostart starts the service when the TV boots. Stop ends the current session. Auto PicCap uses installed PicCap for non-secure video and HyperDRM for protected or unknown playback. Keep PicCap's own autostart off.

+

Use the arrow buttons to select a control and OK to activate it.

Autostart starts the service when the TV boots. Stop ends the current session. Auto PicCap uses installed PicCap for non-secure video and HyperDRM for protected or unknown playback. Keep PicCap's own autostart off. Stable unprotected playback selects PicCap; five seconds of connection loss restores HyperDRM, with a 30-second retry cooldown.

Receiver settings @@ -12,7 +12,10 @@

Connection test: Not tested

Use the receiver's JSON TCP port, usually 19444. IPv4 and IPv6 addresses are supported. Leave the token blank to keep a saved token. Save applies the new target to a running session. Use Up/Down to move between fields; Left/Right edit text.

Auto PicCap uses the same receiver IP with its FlatBuffer port, usually 19400. Enable the FlatBuffer server on the receiver. When switching to PicCap, its saved address, port and Unix socket setting are updated; other PicCap preferences are preserved. PicCap supports IPv4 targets; remote IPv6 uses HyperDRM. The API token applies to JSON only.

+
TV calibration +

Detecting TV model...

+

Auto selects an imported profile matching this exact TV model, or the measured LG G4 profile. Other models use uniform average colors until calibrated. Select Custom and paste a measured model profile to import it. G4 can also be selected manually. Profiles change spatial mapping; adjust colors in Hyperion/HyperHDR.

Priority 149 · 10 updates per second

-

Adjust saturation, brightness and smoothing in your receiver. The receiver layout determines the number and positions of LEDs. Colors come from 16 LG histogram regions with interpolated edge colors. HyperHDR receives a generated color plane, which its image mapping converts to LED colors. Restart the service after changing the LED layout.

+

Adjust saturation, brightness and smoothing in your receiver. The receiver layout determines the number and positions of LEDs. Colors come from 16 LG histogram regions with interpolated edge colors. HyperHDR receives a generated color plane, which its image mapping converts to LED colors. The LED layout is checked every five seconds and updated automatically.

diff --git a/app/remote.js b/app/remote.js index 1af554f..d7fb942 100644 --- a/app/remote.js +++ b/app/remote.js @@ -11,7 +11,7 @@ function setupRemoteNavigation(buttons, doc, win) { event.key==='ArrowRight'||event.key==='ArrowDown'||code===39||code===40?1:0; var enter=event.key==='Enter'||code===13; if(!direction&&!enter)return; - var editing=doc.activeElement && doc.activeElement.tagName==='INPUT' && doc.activeElement.type!=='checkbox'; + var editing=doc.activeElement && (doc.activeElement.tagName==='INPUT' && doc.activeElement.type!=='checkbox' || doc.activeElement.tagName==='TEXTAREA'); if(editing && (enter||code===37||code===39||event.key==='ArrowLeft'||event.key==='ArrowRight'))return; event.preventDefault(); var enabled=buttons.filter(function(button){return !button.disabled;}); diff --git a/docs/publishing-review.md b/docs/publishing-review.md index 54760b6..f002fe7 100644 --- a/docs/publishing-review.md +++ b/docs/publishing-review.md @@ -89,3 +89,13 @@ ARM tests on the G4 passed connection diagnostics, fragmented replies, invalid l Switching the user playback back to DRM stopped PicCap automatically and resumed histogram output through the remote JSON relay. Seven actual HyperHDR LED-stream samples contained 89-91 distinct colors for 120 LEDs, with no all-black sample. Both test endpoints were restored to local defaults and the synthetic token was removed. The remote FlatBuffer relay received over 411 MB from PicCap during the test session. The final port validation also rejects explicit JSON null while retaining the default for older preferences without the new field. + +## Capture resilience, live layout and model profiles (0.10.0) + +Managed PicCap requires three clear media samples over two seconds before starting. Active PicCap has a bounded 1.5-second grace for unknown state; secure playback, manual Stop, handover disable and endpoint changes take precedence. Five seconds of reported receiver disconnection trigger a confirmed PicCap stop and histogram fallback, followed by a 30-second cooldown. A successful reconnection clears the loss timer. ARM controller tests passed stable gating, pause grace expiry, immediate secure transition, reconnect/loss/cooldown, exclusive capture, custom endpoints and request failures. + +A separate nonblocking authenticated receiver probe refreshes the LED mapping every five seconds. Invalid responses retain the good mapping. Tests passed 50-to-500 LED replacement, changed positions at the same count, unchanged mappings, obsolete profile-result cancellation and failure retention. The live relay test read 50 LEDs at frame 2, changed to 500 at frame 53, applied changed 500-LED positions at frame 101, retained output after an empty layout at frame 149, and restored the actual 120-LED layout at frame 195. Capture/output continued across these checks without resetting the frame counter. Receiver configuration and WLED settings were not modified. + +The app automatically detected OLED65G42LW.DEUQLJP and selected the measured G4 profile. A live switch to Average produced one unique output color across four HyperHDR LED-stream samples; switching back to G4 produced 80-97 unique colors. Auto and the original receiver/handover preferences were restored afterward. Custom profiles validate 2-16 sorted rim positions, bounded region indices and model identifiers, persist privately, and are selected automatically only for the exact imported model identifier. No measured spatial profile for other hardware is claimed. Native tests passed profile parsing/persistence, model selection and average fallback. The synthetic-image test verifies geometry cache replacement after a custom-profile change. + +The receiver UI and remote-navigation tests passed, including custom JSON input and profile controls. Diagnosis export was deliberately excluded from this release. Cold boot and other TV models remain unverified. diff --git a/native/calibration.h b/native/calibration.h new file mode 100644 index 0000000..27010dd --- /dev/null +++ b/native/calibration.h @@ -0,0 +1,84 @@ +#ifndef HYPERDRM_CALIBRATION_H +#define HYPERDRM_CALIBRATION_H +#include +#include "playback.h" +#define CALIBRATION_PREF "/media/developer/apps/usr/palm/services/org.webosbrew.histogramhyperion.service/calibration.json" +typedef struct {double position;unsigned char region;} RimPoint; +typedef enum {CAL_AUTO,CAL_G4,CAL_AVERAGE,CAL_CUSTOM} CalibrationKind; +typedef struct {CalibrationKind kind;char model[64];unsigned count;RimPoint points[16];} Calibration; +static Calibration calibration; +static char tv_model[64]; +static unsigned calibration_generation=1; +static inline unsigned calibration_revision(void){return calibration_generation;} +static const RimPoint g4_rim[]={ + {0.2078431373,7},{0.3176470588,3},{0.5490196078,11},{0.7529411765,12}, + {0.8392156863,13},{1.4941176471,10},{2.1843137255,9},{2.5490196078,1}, + {2.8666666667,5},{3.4,15} +}; +static inline const char *calibration_key(CalibrationKind kind){ + const char *keys[]={"auto","g4","average","custom"};return keys[kind]; +} +static inline bool calibration_model_valid(const char *model){ + if(!model[0] || strlen(model)>63)return false; + for(const unsigned char *p=(const unsigned char*)model;*p;p++) + if(!((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z')||(*p>='0'&&*p<='9')||*p=='.'||*p=='-'||*p=='_'||*p==' '))return false; + return true; +} +/* LG retail model identifiers: OLED + two-digit panel size + G4 series. */ +static inline bool calibration_is_g4(const char *model){ + return strlen(model)>=8 && !strncmp(model,"OLED",4) && model[4]>='0' && model[4]<='9' && model[5]>='0' && model[5]<='9' && model[6]=='G' && model[7]=='4'; +} +static inline CalibrationKind calibration_effective(void){ + if(calibration.kind!=CAL_AUTO)return calibration.kind; + if(calibration.count>=2 && tv_model[0] && !strcmp(calibration.model,tv_model))return CAL_CUSTOM; + return calibration_is_g4(tv_model)?CAL_G4:CAL_AVERAGE; +} +static inline bool calibration_parse(PlaybackJson *j,const char *text,Calibration *result){ + void *root=j->parse(text);if(!root)return false; + Calibration next=*result;bool valid=false; + for(unsigned k=0;k<4;k++)if(playback_is(j,root,"profile",calibration_key(k))){next.kind=k;valid=true;break;} + void *points=NULL; + if(j->type(root)==4 && j->get(root,"points",&points)){ + void *model=playback_field(j,root,"model"); + valid=valid && points && j->type(points)==5 && model && j->type(model)==6 && calibration_model_valid(j->string(model)); + size_t count=valid?j->length(points):0;valid=valid && count>=2 && count<=16; + if(valid){strcpy(next.model,j->string(model));next.count=count;memset(next.points,0,sizeof(next.points));} + for(size_t i=0;valid && iat(points,i),*position=playback_field(j,point,"position"),*region=playback_field(j,point,"region"); + valid=position && (j->type(position)==2 || j->type(position)==3) && region && j->type(region)==3; + if(valid){char *end;double x=strtod(j->string(position),&end);valid=end && !*end && isfinite(x) && x>=0 && x<4; + long r=strtol(j->string(region),&end,10);valid=valid && end && !*end && r>=0 && r<16 && (!i || x>next.points[i-1].position); + if(valid){next.points[i].position=x;next.points[i].region=r;} + } + } + } + if(next.kind==CAL_CUSTOM && next.count<2)valid=false; + j->put(root);if(valid)*result=next;return valid; +} +static inline bool calibration_save(const char *path,const Calibration *value){ + char temp[512],data[2048];int used=snprintf(data,sizeof(data),"{\"profile\":\"%s\"",calibration_key(value->kind)); + if(value->count){ + used+=snprintf(data+used,sizeof(data)-used,",\"model\":\"%s\",\"points\":[",value->model); + for(unsigned i=0;icount;i++)used+=snprintf(data+used,sizeof(data)-used,"%s{\"position\":%.12g,\"region\":%u}",i?",":"",value->points[i].position,value->points[i].region); + used+=snprintf(data+used,sizeof(data)-used,"]"); + } + used+=snprintf(data+used,sizeof(data)-used,"}\n"); + if(snprintf(temp,sizeof(temp),"%s.tmp",path)>=(int)sizeof(temp))return false; + int fd=open(temp,O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC,0600);if(fd<0)return false; + bool ok=write(fd,data,used)==used && fsync(fd)==0;if(close(fd)!=0)ok=false; + if(ok)ok=rename(temp,path)==0; + if(!ok)unlink(temp); + return ok; +} +static inline void calibration_load(PlaybackJson *j,const char *path){ + int fd=open(path,O_RDONLY|O_NOFOLLOW|O_CLOEXEC);if(fd<0)return; + char data[2048];ssize_t n=read(fd,data,sizeof(data)-1);close(fd); + if(n<=0 || n==(ssize_t)sizeof(data)-1)return; + data[n]=0;calibration_parse(j,data,&calibration); +} +static inline void calibration_colors(const unsigned char input[16][3],unsigned char output[16][3]){ + memcpy(output,input,48);if(calibration_effective()!=CAL_AVERAGE)return; + unsigned sum[3]={0};for(unsigned i=0;i<16;i++)for(unsigned c=0;c<3;c++)sum[c]+=input[i][c]; + for(unsigned i=0;i<16;i++)for(unsigned c=0;c<3;c++)output[i][c]=sum[c]/16; +} +#endif diff --git a/native/diagnostics.h b/native/diagnostics.h index f7df088..061fb2f 100644 --- a/native/diagnostics.h +++ b/native/diagnostics.h @@ -3,69 +3,76 @@ /* An independent nonblocking connection. Tests never send colors or acquire * capture. Work per timer iteration is bounded to keep output responsive. */ typedef enum {TEST_IDLE,TEST_CONNECT,TEST_SEND,TEST_LOGIN,TEST_LAYOUT,TEST_DONE,TEST_FAILED} TestStage; -static struct { +typedef struct { int fd;TestStage stage,after_send;TargetConfig target; uint64_t started,deadline,elapsed;unsigned leds; char request[384],error[128];size_t sent,used;char *response; -} connection_test={.fd=-1}; -static const char *test_stage_name(void){ + LedBlend *mapping; +} ReceiverProbe; +static ReceiverProbe connection_test={.fd=-1}; +static const char *probe_stage_name(const ReceiverProbe *probe){ static const char *names[]={"Not tested","Connecting","Sending request","Checking authentication","Reading LED layout","Passed","Failed"}; - return names[connection_test.stage]; + return names[probe->stage]; } -static bool test_busy(void){return connection_test.stage>=TEST_CONNECT && connection_test.stage<=TEST_LAYOUT;} -static void test_close(void){if(connection_test.fd>=0)close(connection_test.fd);connection_test.fd=-1;free(connection_test.response);connection_test.response=NULL;memset(connection_test.request,0,sizeof(connection_test.request));memset(connection_test.target.token,0,sizeof(connection_test.target.token));} -static void test_finish(const char *error,uint64_t now){ - test_close();connection_test.elapsed=now-connection_test.started; - connection_test.stage=error?TEST_FAILED:TEST_DONE; - snprintf(connection_test.error,sizeof(connection_test.error),"%s",error?error:""); +static bool probe_busy(const ReceiverProbe *probe){return probe->stage>=TEST_CONNECT && probe->stage<=TEST_LAYOUT;} +static void probe_close(ReceiverProbe *probe){if(probe->fd>=0)close(probe->fd);probe->fd=-1;free(probe->mapping);probe->mapping=NULL;free(probe->response);probe->response=NULL;memset(probe->request,0,sizeof(probe->request));memset(probe->target.token,0,sizeof(probe->target.token));} +static void probe_finish(ReceiverProbe *probe,const char *error,uint64_t now){ + probe_close(probe);probe->elapsed=now-probe->started; + probe->stage=error?TEST_FAILED:TEST_DONE; + snprintf(probe->error,sizeof(probe->error),"%s",error?error:""); } -static void test_request(bool login,uint64_t now){ - if(login)snprintf(connection_test.request,sizeof(connection_test.request),"{\"command\":\"authorize\",\"subcommand\":\"login\",\"token\":\"%s\"}\n",connection_test.target.token); - else snprintf(connection_test.request,sizeof(connection_test.request),"{\"command\":\"serverinfo\"}\n"); - connection_test.sent=connection_test.used=0;connection_test.after_send=login?TEST_LOGIN:TEST_LAYOUT; - connection_test.stage=TEST_SEND;connection_test.deadline=now+3000; +static void probe_request(ReceiverProbe *probe,bool login,uint64_t now){ + if(login)snprintf(probe->request,sizeof(probe->request),"{\"command\":\"authorize\",\"subcommand\":\"login\",\"token\":\"%s\"}\n",probe->target.token); + else snprintf(probe->request,sizeof(probe->request),"{\"command\":\"serverinfo\"}\n"); + probe->sent=probe->used=0;probe->after_send=login?TEST_LOGIN:TEST_LAYOUT; + probe->stage=TEST_SEND;probe->deadline=now+3000; } -static bool test_begin(const TargetConfig *target,uint64_t now){ - if(test_busy())return false; - test_close();memset(&connection_test,0,sizeof(connection_test));connection_test.fd=-1; - connection_test.target=*target;connection_test.started=now; - connection_test.response=malloc(2*1024*1024+1); - if(!connection_test.response){test_finish("Cannot allocate connection test buffer",now);return true;} - connection_test.fd=target_open(target); - if(connection_test.fd<0){test_finish("Cannot open receiver connection",now);return true;} - connection_test.stage=TEST_CONNECT;connection_test.deadline=now+3000;return true; +static bool probe_begin(ReceiverProbe *probe,const TargetConfig *target,uint64_t now){ + if(probe_busy(probe))return false; + probe_close(probe);memset(probe,0,sizeof(*probe));probe->fd=-1; + probe->target=*target;probe->started=now; + probe->response=malloc(2*1024*1024+1); + if(!probe->response){probe_finish(probe,"Cannot allocate connection test buffer",now);return true;} + probe->fd=target_open(target); + if(probe->fd<0){probe_finish(probe,"Cannot open receiver connection",now);return true;} + probe->stage=TEST_CONNECT;probe->deadline=now+3000;return true; } -static void test_tick(PlaybackJson *json,uint64_t now){ - if(!test_busy())return; - if(now>=connection_test.deadline){test_finish("Receiver timed out",now);return;} - int fd=connection_test.fd; - if(connection_test.stage==TEST_CONNECT){ +static void probe_tick(ReceiverProbe *probe,PlaybackJson *json,uint64_t now){ + if(!probe_busy(probe))return; + if(now>=probe->deadline){probe_finish(probe,"Receiver timed out",now);return;} + int fd=probe->fd; + if(probe->stage==TEST_CONNECT){ struct pollfd p={fd,POLLOUT,0};int error=0;socklen_t size=sizeof(error); if(poll(&p,1,0)<=0)return; - if(getsockopt(fd,SOL_SOCKET,SO_ERROR,&error,&size)!=0 || error){test_finish("Receiver connection refused or unreachable",now);return;} - test_request(connection_test.target.token[0]!=0,now);return; + if(getsockopt(fd,SOL_SOCKET,SO_ERROR,&error,&size)!=0 || error){probe_finish(probe,"Receiver connection refused or unreachable",now);return;} + probe_request(probe,probe->target.token[0]!=0,now);return; } - if(connection_test.stage==TEST_SEND){ - size_t length=strlen(connection_test.request); - ssize_t n=send(fd,connection_test.request+connection_test.sent,length-connection_test.sent,MSG_NOSIGNAL); + if(probe->stage==TEST_SEND){ + size_t length=strlen(probe->request); + ssize_t n=send(fd,probe->request+probe->sent,length-probe->sent,MSG_NOSIGNAL); if(n<0 && (errno==EAGAIN || errno==EWOULDBLOCK || errno==EINTR))return; - if(n<=0){test_finish("Receiver closed the test connection",now);return;} - connection_test.sent+=(size_t)n; - if(connection_test.sent==length){connection_test.stage=connection_test.after_send;connection_test.deadline=now+3000;memset(connection_test.request,0,sizeof(connection_test.request));} + if(n<=0){probe_finish(probe,"Receiver closed the test connection",now);return;} + probe->sent+=(size_t)n; + if(probe->sent==length){probe->stage=probe->after_send;probe->deadline=now+3000;memset(probe->request,0,sizeof(probe->request));} return; } - size_t available=2*1024*1024-connection_test.used;if(available>65536)available=65536; - if(!available){test_finish("Receiver response exceeds 2 MiB",now);return;} - ssize_t n=recv(fd,connection_test.response+connection_test.used,available,0); + size_t available=2*1024*1024-probe->used;if(available>65536)available=65536; + if(!available){probe_finish(probe,"Receiver response exceeds 2 MiB",now);return;} + ssize_t n=recv(fd,probe->response+probe->used,available,0); if(n<0 && (errno==EAGAIN || errno==EWOULDBLOCK || errno==EINTR))return; - if(n<=0){test_finish("Receiver closed the test connection",now);return;} - connection_test.used+=(size_t)n;connection_test.response[connection_test.used]=0; - char *end=strchr(connection_test.response,'\n');if(!end)return;*end=0; - void *root=json->parse(connection_test.response);bool success=playback_true(json,root,"success");if(root)json->put(root); - if(!success){test_finish(connection_test.stage==TEST_LOGIN?"Receiver authentication failed":"Receiver rejected serverinfo; check authorization",now);return;} - if(connection_test.stage==TEST_LOGIN){test_request(false,now);return;} + if(n<=0){probe_finish(probe,"Receiver closed the test connection",now);return;} + probe->used+=(size_t)n;probe->response[probe->used]=0; + char *end=strchr(probe->response,'\n');if(!end)return;*end=0; + void *root=json->parse(probe->response);bool success=playback_true(json,root,"success");if(root)json->put(root); + if(!success){probe_finish(probe,probe->stage==TEST_LOGIN?"Receiver authentication failed":"Receiver rejected serverinfo; check authorization",now);return;} + if(probe->stage==TEST_LOGIN){probe_request(probe,false,now);return;} LedBlend *mapping=NULL;unsigned count=0; - if(!layout_from_json(connection_test.response,&mapping,&count)){test_finish("Receiver returned an invalid or empty LED layout",now);return;} - free(mapping);connection_test.leds=count;test_finish(NULL,now); + if(!layout_from_json(probe->response,&mapping,&count)){probe_finish(probe,"Receiver returned an invalid or empty LED layout",now);return;} + probe->leds=count;probe_finish(probe,NULL,now);probe->mapping=mapping; } +static inline const char *test_stage_name(void){return probe_stage_name(&connection_test);} +static inline bool test_busy(void){return probe_busy(&connection_test);} +static inline void test_close(void){probe_close(&connection_test);} +static inline bool test_begin(const TargetConfig *target,uint64_t now){return probe_begin(&connection_test,target,now);} +static inline void test_tick(PlaybackJson *json,uint64_t now){probe_tick(&connection_test,json,now);} #endif diff --git a/native/handover.h b/native/handover.h index f076411..c9a1093 100644 --- a/native/handover.h +++ b/native/handover.h @@ -16,7 +16,12 @@ static bool (*call_once)(void*,const char*,const char*,Callback,void*,unsigned l static bool (*cancel_call)(void*,unsigned long,LSError*); static unsigned long piccap_token,media_token; static uint64_t piccap_deadline,media_deadline; -static unsigned clear_samples; +static unsigned clear_samples,piccap_fallbacks; +static uint64_t clear_since,unknown_since,piccap_disconnected_since; +#define CLEAR_STABLE_MS 2000 +#define UNKNOWN_GRACE_MS 1500 +#define PICCAP_LOSS_MS 5000 +#define PICCAP_FAILURE_COOLDOWN_MS 30000 static TargetConfig piccap_target; static char piccap_error[128]; static bool piccap_request(int command); @@ -38,7 +43,11 @@ static void handover_load(void){ static bool media_reply(void *h,void *m,void *ctx){ (void)h;(void)ctx;media_busy=false;media_token=0; protection=playback_classify(&playback_json,payload(m));protection_at=milliseconds(); - if(protection==PLAYBACK_CLEAR){if(clear_samples<2)clear_samples++;}else clear_samples=0; + if(protection==PLAYBACK_CLEAR){ + if(!clear_samples)clear_since=protection_at; + if(clear_samples<3)clear_samples++; + unknown_since=0; + }else {clear_samples=0;clear_since=0;if(protection==PLAYBACK_UNKNOWN && !unknown_since)unknown_since=protection_at;else if(protection==PLAYBACK_PROTECTED)unknown_since=0;} return true; } /* Commands: 0 status, 1 start, 2 stop, 3 getSettings, 4 setSettings. Confirm stopped status before VT reuse. */ @@ -50,10 +59,15 @@ static bool piccap_reply(void *h,void *m,void *ctx){ if(ok && running && playback_json.type(running)==1){ bool active=playback_json.boolean(running); piccap_connected=playback_true(&playback_json,root,"connected"); - if(active){if(capture_source==SOURCE_PICCAP_STARTING)capture_source=SOURCE_PICCAP;} + if(active){ + if(capture_source==SOURCE_PICCAP_STARTING)capture_source=SOURCE_PICCAP; + if(piccap_connected)piccap_disconnected_since=0; + else if(!piccap_disconnected_since)piccap_disconnected_since=milliseconds(); + } else if(capture_source!=SOURCE_PICCAP_STARTING || milliseconds()-piccap_action_at>=2000){ if(capture_source!=SOURCE_PICCAP_STOPPING)handover_cooldown=milliseconds()+10000; - piccap_owned=false;capture_source=SOURCE_HISTOGRAM;piccap_connected=false; + piccap_owned=false;capture_source=SOURCE_HISTOGRAM;piccap_connected=false;piccap_disconnected_since=0; + if(handover_cooldown=media_deadline){LSError e;error_init(&e);cancel_call(service_handle,media_token,&e);error_free(&e);media_busy=false;media_token=0;protection=PLAYBACK_UNKNOWN;clear_samples=0;} + if(media_busy && now>=media_deadline){LSError e;error_init(&e);cancel_call(service_handle,media_token,&e);error_free(&e);media_busy=false;media_token=0;protection=PLAYBACK_UNKNOWN;clear_samples=0;clear_since=0;if(!unknown_since)unknown_since=now;} if(piccap_busy && now>=piccap_deadline){snprintf(piccap_error,sizeof(piccap_error),"PicCap request timed out");LSError e;error_init(&e);cancel_call(service_handle,piccap_token,&e);error_free(&e);piccap_busy=false;piccap_token=0;capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} if(handover_enabled && piccap_installed() && !retries.paused && playback_json.lib && !media_busy && now>=next_media_probe){ LSError e;error_init(&e); @@ -92,13 +106,20 @@ static bool handover_tick(void){ media_deadline=now+3000; error_free(&e);next_media_probe=now+1000; } - bool clear=handover_enabled && target_piccap_compatible(&target) && piccap_installed() && !retries.paused && !retries.blocked && - protection==PLAYBACK_CLEAR && clear_samples>=2 && now-protection_at<3000 && now>=handover_cooldown; - if(capture_source==SOURCE_HISTOGRAM && clear){ - piccap_target=target;piccap_error[0]=0;stop_capture();retries.due=0;piccap_owned=true;capture_source=SOURCE_PICCAP_STARTING; - if(!piccap_request(3)){capture_source=SOURCE_PICCAP_STOPPING;handover_cooldown=now+10000;} + if(protection==PLAYBACK_CLEAR && now-protection_at>=3000){protection=PLAYBACK_UNKNOWN;clear_samples=0;clear_since=0;if(!unknown_since)unknown_since=now;} + bool session=handover_enabled && target_piccap_compatible(&target) && piccap_installed() && !retries.paused && !retries.blocked; + bool clear=session && protection==PLAYBACK_CLEAR && now-protection_at<3000; + bool stable=clear && clear_samples>=3 && now-clear_since>=CLEAR_STABLE_MS && now>=handover_cooldown; + if(capture_source==SOURCE_HISTOGRAM && stable){ + piccap_target=target;piccap_error[0]=0;piccap_disconnected_since=now;stop_capture();retries.due=0;piccap_owned=true;capture_source=SOURCE_PICCAP_STARTING; + if(!piccap_request(3)){capture_source=SOURCE_PICCAP_STOPPING;handover_cooldown=now+PICCAP_FAILURE_COOLDOWN_MS;} } - if(piccap_owned && (!clear || strcmp(piccap_target.host,target.host) || piccap_target.piccap_port!=target.piccap_port) && capture_source!=SOURCE_PICCAP_STOPPING){capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} + bool grace=protection==PLAYBACK_UNKNOWN && unknown_since && now-unknown_since=PICCAP_LOSS_MS; + if(lost){ + snprintf(piccap_error,sizeof(piccap_error),"PicCap receiver disconnected; histogram fallback");piccap_fallbacks++;handover_cooldown=now+PICCAP_FAILURE_COOLDOWN_MS; + } + if(piccap_owned && (!session || (!clear && !grace) || lost || strcmp(piccap_target.host,target.host) || piccap_target.piccap_port!=target.piccap_port) && capture_source!=SOURCE_PICCAP_STOPPING){capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} if(piccap_owned && !piccap_busy && now>=next_piccap_probe){ if(capture_source==SOURCE_PICCAP_STOPPING)piccap_request(2);else piccap_request(0); next_piccap_probe=now+1000; diff --git a/native/layout.h b/native/layout.h index b50a820..1f9b369 100644 --- a/native/layout.h +++ b/native/layout.h @@ -6,19 +6,18 @@ #include #include typedef struct {unsigned char a,b;unsigned weight;} LedBlend; -/* Measured G4 rim samples, independent of LED count and wiring order. */ -static const struct {double position;unsigned char region;} rim[]={ - {0.2078431373,7},{0.3176470588,3},{0.5490196078,11},{0.7529411765,12}, - {0.8392156863,13},{1.4941176471,10},{2.1843137255,9},{2.5490196078,1}, - {2.8666666667,5},{3.4,15} -}; +#include +#include +#include +#include "calibration.h" static double screen_perimeter(double x,double y){ double distances[]={y,1-x,1-y,x},positions[]={x,1+y,3-x,4-y};unsigned edge=0; for(unsigned i=1;i<4;i++)if(distances[i]=4?positions[edge]-4:positions[edge]; } static LedBlend layout_blend(double x,double y){ - double t=screen_perimeter(x,y);unsigned n=sizeof(rim)/sizeof(*rim),right=0; + const RimPoint *rim=calibration_effective()==CAL_CUSTOM?calibration.points:g4_rim; + double t=screen_perimeter(x,y);unsigned n=calibration_effective()==CAL_CUSTOM?calibration.count:sizeof(g4_rim)/sizeof(*g4_rim),right=0; while(right=next_layout_check){ + layout_probe_generation=calibration_generation;probe_begin(&layout_probe,&target,now);next_layout_check=now+LAYOUT_REFRESH_MS; + } +} +#endif diff --git a/native/service.c b/native/service.c index 0d1f3cf..243c7b8 100644 --- a/native/service.c +++ b/native/service.c @@ -114,7 +114,8 @@ static bool read_layout(void){ if(send_line("{\"command\":\"serverinfo\"}\n")==0){ while(used=0){if(clear_output && frames){char line[80];snprintf(line,sizeof(line),"{\"command\":\"clear\",\"priority\":%d}\n",PRIORITY);send_line(line);}close(output);output=-1;} @@ -137,6 +140,32 @@ static void release_capture(bool clear_output){ static void stop_capture(void){release_capture(true);} static bool respond(void *h,void *m,const char *s){if(!h||!m)return true;LSError e;error_init(&e);bool ok=reply(h,m,s,&e);error_free(&e);return ok;} #include "handover.h" +#include "layout_refresh.h" +static bool model_busy; +static unsigned long model_token; +static uint64_t model_deadline,next_model_probe; +static bool model_reply(void *h,void *m,void *ctx){ + (void)h;(void)ctx;model_busy=false;model_token=0; + void *root=playback_json.parse(payload(m)),*model=playback_field(&playback_json,root,"modelName"); + if(playback_true(&playback_json,root,"returnValue") && model && playback_json.type(model)==6 && calibration_model_valid(playback_json.string(model))){ + snprintf(tv_model,sizeof(tv_model),"%s",playback_json.string(model));calibration_generation++;layout_refresh_reset(milliseconds()); + } + if(root)playback_json.put(root); + return true; +} +static void model_tick(uint64_t now){ + if(model_busy && now>=model_deadline){LSError e;error_init(&e);cancel_call(service_handle,model_token,&e);error_free(&e);model_busy=false;model_token=0;} + if(!tv_model[0] && !model_busy && now>=next_model_probe){ + LSError e;error_init(&e);model_busy=call_once(service_handle,"luna://com.webos.service.tv.systemproperty/getSystemInfo","{\"keys\":[\"modelName\"]}",model_reply,NULL,&model_token,&e);error_free(&e);model_deadline=now+3000;next_model_probe=now+60000; + } +} +static bool set_calibration(void *h,void *m,void *ctx){ + (void)ctx;Calibration next=calibration; + if(!playback_json.lib || !calibration_parse(&playback_json,payload(m),&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Select a valid profile; custom profiles need a model and 2-16 sorted rim points (position 0-4, region 0-15)\"}"); + if(!calibration_save(CALIBRATION_PREF,&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Cannot save calibration profile\"}"); + calibration=next;calibration_generation++;layout_refresh_reset(milliseconds()); + return respond(h,m,"{\"returnValue\":true}"); +} static bool start_failure(void *h,void *m,const char *message){ retry_update(&retries,boot_enabled() && geteuid()==0,false,milliseconds()); char json[512];snprintf(json,sizeof(json),"{\"returnValue\":false,\"errorText\":\"%s\",\"retryScheduled\":%s,\"retryBlocked\":%s}",message,retries.due?"true":"false",retries.blocked?"true":"false"); @@ -182,7 +211,7 @@ static bool handover(void *h,void *m,void *ctx){ if(!playback_json.lib || geteuid()!=0)return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Root service and JSON-C are required\"}"); if(enabled && !piccap_installed())return respond(h,m,"{\"returnValue\":false,\"errorText\":\"PicCap is not installed\"}"); if(!handover_save(enabled))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Could not save PicCap handover preference\"}"); - handover_enabled=enabled;protection=PLAYBACK_UNKNOWN;clear_samples=0;next_media_probe=0; + handover_enabled=enabled;protection=PLAYBACK_UNKNOWN;clear_samples=0;clear_since=unknown_since=0;next_media_probe=0; return respond(h,m,"{\"returnValue\":true}"); } static bool settings(void *h,void *m,void *ctx){ @@ -190,7 +219,7 @@ static bool settings(void *h,void *m,void *ctx){ if(!playback_json.lib || !target_parse(&playback_json,payload(m),&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Enter a valid IPv4/IPv6 address, integer port (1-65535), receiver and optional API token\"}"); if(!target_save(TARGET_PREF,&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Could not save receiver settings\"}"); bool active=capture || piccap_owned || retries.due; - stop_capture();test_close();connection_test.stage=TEST_IDLE;target=next;last_error[0]=0;protection=PLAYBACK_UNKNOWN;clear_samples=0; + stop_capture();test_close();connection_test.stage=TEST_IDLE;target=next;last_error[0]=0;protection=PLAYBACK_UNKNOWN;clear_samples=0;clear_since=unknown_since=0; if(active && !retries.paused && !retries.blocked)retries.due=milliseconds(); return respond(h,m,"{\"returnValue\":true}"); } @@ -205,8 +234,11 @@ static bool status(void *h,void *m,void *ctx){ snprintf(endpoint,sizeof(endpoint),strchr(target.host,':')?"[%s]:%u":"%s:%u",target.host,target.port); for(size_t i=0;last_error[i] && n+2=32)safe[n++]=c;}safe[n]=0; uint64_t now=milliseconds(); - int used=snprintf(json,sizeof(json),"{\"returnValue\":true,\"piccapPort\":%u,\"connectionTest\":{\"state\":\"%s\",\"ledCount\":%u,\"elapsedMs\":%llu,\"error\":\"%s\"},\"lastOutputAgeMs\":%lld,\"retryInMs\":%llu,\"captureState\":\"%s\",\"piccapError\":\"%s\",",target.piccap_port,test_stage_name(),connection_test.leds,(unsigned long long)connection_test.elapsed,connection_test.error,last_output_at?(long long)(now-last_output_at):-1,(unsigned long long)(retries.due>now?retries.due-now:0),capture_source==SOURCE_PICCAP_STARTING?"Starting PicCap":capture_source==SOURCE_PICCAP_STOPPING?"Stopping PicCap":piccap_owned?"PicCap":capture?"Histogram":"Stopped",piccap_error); - used+=snprintf(json+used,sizeof(json)-used,"\"version\":\"0.9.0\",\"running\":%s,\"colorValid\":%s,\"frames\":%lu,\"captureRecoveries\":%u,\"lastRecoveryMs\":%llu,\"endpoint\":\"%s\",\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"tokenSet\":%s,\"piccapTargetCompatible\":%s,\"priority\":%d,\"uid\":%u,\"drmVerified\":false,\"mappingVerified\":false,\"outputColor\":[%u,%u,%u],\"error\":\"%s\",\"regions\":[",(capture||capture_source==SOURCE_PICCAP)?"true":"false",color_valid?"true":"false",frames,capture_recoveries,(unsigned long long)last_recovery_ms,endpoint,target.host,target.port,target.receiver,target.token[0]?"true":"false",target_piccap_compatible(&target)?"true":"false",PRIORITY,(unsigned)geteuid(),sent_rgb[0],sent_rgb[1],sent_rgb[2],safe); + int used=snprintf(json,sizeof(json),"{\"calibrationProfile\":\"%s\",\"effectiveCalibration\":\"%s\",\"tvModel\":\"%s\",\"customModel\":\"%s\",\"customPoints\":[",calibration_key(calibration.kind),calibration_key(calibration_effective()),tv_model,calibration.model); + for(unsigned i=0;inow?handover_cooldown-now:0)); + used+=snprintf(json+used,sizeof(json)-used,"\"returnValue\":true,\"piccapPort\":%u,\"connectionTest\":{\"state\":\"%s\",\"ledCount\":%u,\"elapsedMs\":%llu,\"error\":\"%s\"},\"lastOutputAgeMs\":%lld,\"retryInMs\":%llu,\"captureState\":\"%s\",\"piccapError\":\"%s\",",target.piccap_port,test_stage_name(),connection_test.leds,(unsigned long long)connection_test.elapsed,connection_test.error,last_output_at?(long long)(now-last_output_at):-1,(unsigned long long)(retries.due>now?retries.due-now:0),capture_source==SOURCE_PICCAP_STARTING?"Starting PicCap":capture_source==SOURCE_PICCAP_STOPPING?"Stopping PicCap":piccap_owned?"PicCap":capture?"Histogram":"Stopped",piccap_error); + used+=snprintf(json+used,sizeof(json)-used,"\"version\":\"0.10.0\",\"running\":%s,\"colorValid\":%s,\"frames\":%lu,\"captureRecoveries\":%u,\"lastRecoveryMs\":%llu,\"endpoint\":\"%s\",\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"tokenSet\":%s,\"piccapTargetCompatible\":%s,\"priority\":%d,\"uid\":%u,\"drmVerified\":false,\"mappingVerified\":false,\"outputColor\":[%u,%u,%u],\"error\":\"%s\",\"regions\":[",(capture||capture_source==SOURCE_PICCAP)?"true":"false",color_valid?"true":"false",frames,capture_recoveries,(unsigned long long)last_recovery_ms,endpoint,target.host,target.port,target.receiver,target.token[0]?"true":"false",target_piccap_compatible(&target)?"true":"false",PRIORITY,(unsigned)geteuid(),sent_rgb[0],sent_rgb[1],sent_rgb[2],safe); for(int i=0;i<16;i++)used+=snprintf(json+used,sizeof(json)-used,"%s[%u,%u,%u]",i?",":"",rgb[i][0],rgb[i][1],rgb[i][2]); used+=snprintf(json+used,sizeof(json)-used,"],\"ledCount\":%u,\"spatialOutput\":%s,\"blackPercent\":[",led_count,led_count?"true":"false"); for(int i=0;i<16;i++)used+=snprintf(json+used,sizeof(json)-used,"%s%u",i?",":"",black_percent[i]); @@ -214,7 +246,8 @@ static bool status(void *h,void *m,void *ctx){ } static int tick(void *unused){ (void)unused; - test_tick(&playback_json,milliseconds()); + uint64_t now=milliseconds(); + model_tick(now);test_tick(&playback_json,now);layout_refresh_tick(&playback_json,now,capture || capture_source==SOURCE_PICCAP); if(handover_tick())return 1; if(!capture){ retry_update(&retries,boot_enabled() && geteuid()==0,false,milliseconds()); @@ -257,14 +290,16 @@ static int tick(void *unused){ } for(int c=0;c<3;c++)sent_rgb[c]=(unsigned char)(aggregate[c]/16); unsigned char boosted_mean[3];boost_color(sent_rgb,boosted_mean);memcpy(sent_rgb,boosted_mean,3); + unsigned char mapped_rgb[16][3];calibration_colors(rgb,mapped_rgb); + interpolation_enabled=led_count && calibration_effective()!=CAL_AVERAGE; bool image_output=strcmp(target.receiver,"HyperHDR")==0; - size_t capacity=256+(size_t)led_count*12;char *line=image_output?spatial_image_command(rgb,PRIORITY):malloc(capacity); + size_t capacity=256+(size_t)led_count*12;char *line=image_output?spatial_image_command(mapped_rgb,PRIORITY):malloc(capacity); if(!line){set_error("Color buffer allocation failed");stop_capture();return 1;} if(!image_output){ size_t written=(size_t)snprintf(line,capacity,"{\"command\":\"color\",\"priority\":%d,\"duration\":1500,\"origin\":\"HyperDRM\",\"color\":[",PRIORITY); for(unsigned i=0;i +#include +#include "layout.h" +int main(void){ + (void)layout_from_json; + PlaybackJson json={0};assert(playback_json_init(&json)); + assert(calibration_effective()==CAL_AVERAGE); + strcpy(tv_model,"OLED65G42LW.DEUQLJP");assert(calibration_effective()==CAL_G4); + assert(!calibration_is_g4("OLED65G52LW") && !calibration_is_g4("LG G4")); + Calibration next=calibration; + const char *custom="{\"profile\":\"custom\",\"model\":\"OLED65C42LA\",\"points\":[{\"position\":0,\"region\":2},{\"position\":2,\"region\":10}]}"; + assert(calibration_parse(&json,custom,&next));calibration=next;calibration_generation++; + LedBlend b=layout_blend(.5,0);assert(b.a==2 && b.b==10 && b.weight>=16383 && b.weight<=16385); + const char *bad[]={"{}","{\"profile\":\"custom\",\"points\":null}","{\"profile\":\"other\"}","{\"profile\":\"custom\",\"model\":\"bad\\\"name\",\"points\":[]}","{\"profile\":\"custom\",\"model\":\"TV\",\"points\":[{\"position\":2,\"region\":1},{\"position\":1,\"region\":2}]}","{\"profile\":\"custom\",\"model\":\"TV\",\"points\":[{\"position\":0,\"region\":16},{\"position\":4,\"region\":2}]}"}; + for(unsigned i=0;i +#include +#include +#include "target.h" +#include "layout.h" +#include "diagnostics.h" +static unsigned led_count; +static LedBlend *led_blends; +#include "layout_refresh.h" +static void completed(unsigned count,unsigned generation){ + layout_probe.mapping=calloc(count,sizeof(LedBlend));assert(layout_probe.mapping); + for(unsigned i=0;i>4);actual[1]=(v[1]<<4)|(v[2]>>2);actual[2]=(v[2]<<6)|v[3];assert(!memcmp(expected,actual,3));free(command); puts("PASS: image command, exact neutral RGB base64, spatial edge differences and cached geometry");return 0; } diff --git a/package/packageinfo.json b/package/packageinfo.json index 0f922b7..76537ff 100644 --- a/package/packageinfo.json +++ b/package/packageinfo.json @@ -1 +1 @@ -{"id": "org.webosbrew.histogramhyperion", "version": "0.9.0", "vendor": "Local development", "app": "org.webosbrew.histogramhyperion", "services": ["org.webosbrew.histogramhyperion.service"], "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} +{"id": "org.webosbrew.histogramhyperion", "version": "0.10.0", "vendor": "Local development", "app": "org.webosbrew.histogramhyperion", "services": ["org.webosbrew.histogramhyperion.service"], "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} diff --git a/profiles/README.md b/profiles/README.md new file mode 100644 index 0000000..335bd44 --- /dev/null +++ b/profiles/README.md @@ -0,0 +1,35 @@ +# TV model calibration profiles + +The built-in LG G4 profile is measured. Other models do not have verified spatial +profiles yet. Auto uses uniform average colors on an unknown model, unless an +imported custom profile matches its exact reported model identifier. + +To import measured data, select Custom in the TV app, paste the profile JSON, +and select Save profile. Auto subsequently uses the custom profile on that exact +model. One custom model profile is stored in the own service container. Importing +another replaces it; switching to Auto, G4 or Average preserves the imported data. + +```json +{ + "model": "EXACT-MODEL-IDENTIFIER-FROM-APP", + "points": [ + {"position": 0.25, "region": 7}, + {"position": 2.25, "region": 9} + ] +} +``` + +This two-point example describes the file format, not a calibrated TV model. +Use 2-16 actual measured points sorted by position. Region indices are 0-15. +The clockwise perimeter position starts at the top-left corner: top 0-1, right +1-2, bottom 2-3, left 3-4. The final point interpolates back to the first. + +Use the coordinate-ramp calibration video with full-screen playback, observe +the LG histogram region colors, and derive their measured perimeter positions. +Validate all four edges against the receiver LED output before sharing a model +profile. A model match alone does not establish correctness on another panel, +SoC or firmware; document that test context with contributed profiles. + +Profiles only control spatial region assignment. Saturation, brightness and +smoothing remain receiver settings. Runtime selection invalidates the generated +HyperHDR geometry and refreshes the Hyperion LED mapping without capture restart. diff --git a/service/histogram-service b/service/histogram-service index 7bdbfcbb591b913ad92f83bcba91c03634a48565..e2ede4eeda37668165e782c37e8ad60ca54afff0 100644 GIT binary patch literal 80400 zcmb@v4`5W)nfHI^Pe=$U3=nOMX&oV2YEcJBZM0NJi9%a!2Z%PcX&EHg&_);`ZP_l? zfdmMcNQ8hGcq{vcm|qoB$N8^xqu zV!T)BiRNR5k#j}llM8xo7{1EpT$BQGx%2>O-F)ZVSia?yPPF6j&i$3WY#4F{PK?h< zKmC?roPNvaxSA2P|FX|eyDIJH|Di!SpX2)ZmQ#8ThGrVdxk}>Ya%u9D^e^YS`IgJ2 z&$62v`24#+)gQvmCOsd%QrePJdG$|zDNcBp{)yX+yC#3O@+Zr_y7_xAZo09teci3^ zd3MU;tD6?yd3966l}!s5eQDWMOBY`?#m!&il`q8ig+kHJ@Q${kVA+jEK}}R?AH{tV zXMCrs@1~nyKK+H^(|+-EcEj?QA3j-8a@|8Ce)Q_6F5dO=Y(hUD=pR&U=--KVxiJAoUw>hruq#-~j7!xS?{5tL`rHS;zE2PN9y28WgdyKY zhUDKgBt4M#J&wE!hva`FFFj0J%aHV&hJ621UVg!w9+JLnNctT^zONecy?@B}?L+GO z<&gA-A?cHbeE(p`_rKYpo`F>(Z`L7K5{^*eWQ-^%Ne@On{4*CAmknhBh?=KC(_q&Ir|7=Km z(}$%0U`YDoL(;`da(}|l=G+IqzUK`o{~q8u^OCrl_~1px1$;+}T_8j7iwOjC{6pV! zhUBl~yLKC8sCSG}VqB4zKTQ6LA^B_guKS+LPe&UgjjQ<9x}`srU�Q_AfGCCH^Fn z;4F)k(hG;A&*M8Eeq-+3r3;#uE}s9z#fj!?s*I)0OXes3f!O&?#LfNug68IhcP~)F zKimzU{vs)NEp47h*12B7T}u`$FdCZ3zjT4III&<6nZLBi$xCI;iyMr@;-)55+`Jf% zS{F1McP(D>MMX6&SY#|&Ft5S*($b~{3lfUrKV#{FMGeN?Uu;;ogw*+8rqQOiH>xr& zI1837Y&Pzm*95rAw(!pRbIH1-dG6iw7A~T`h6PKO03P5QOXe*E#4j&hlvuKGQS)8I z3S9Md*}S=TEnGCOY2jDZ6-q1y1~AdM#F+0^eb>@|STx_bd%@lF?@q`AX~tcNFE!5x zz(w=!rrNu_TE8-HVRK?(gRyks=c&<{zj)E21@oJYdGqHlSh`fTHZT5ClT(v}=ey=F zYHm7*%dae1*u21Lnr7zC1(HRJ=hC%#%?lSVG8Qgc&^$NMOlaPniw@cD&Hn-?spy>(jC;zbK;=iS+)O72{`)I;1{ zWA1{6dCl{@NQPoAQF9gL=1`M&FJ5#$`$s=XxMAUG=u2``zsM%RGO%=XVcx)3ex`DZ+T!1E1wrqeIaFY)}4=a+eYh35z9-vx+gMe<7w zqeOl=xRqat>@5Go#Dn7tVb3A?LCK)_2-Ris8IcP42$o^_@W@K}!wsZ@-GpBL`S3!8c2<9XqudErBO;dEYj zPhPk;FT67^oXQJ#=Y>1-!fkosWL|h#UO15#Zp;hE^TKs`;aFaHMqW6Y7p~3=NAkiG z^1|V~a9LhBlou|_3mbXif&M)F=Y{+7!e(ChcwYEuUieU6IGq>XlNavI3-8Per}Dzx zdEw5ya9dtDnHOG`7f$4b8}q{Pyl`D!IF=Wlkr$5Ug{$+zk-YGPyl|Ls|0l0}JvgJs zzWFz|TEXagv*aj#D3uvyq_UqM9DGAzKj8+#UuC|WSkq${CD)s9s_ZJCQGT?r$M%O( zS#}8K{p4}NiBx7U@rqlWi;Jc*yS%s+#KGYx^Qp1ENGf1NQgFan))#3B7{;8e5ldzM zk-C%b?y(DvRK^!tZ;lEYZ!~|t$8IKWSbV*yxaEbbo%ABo;>0U1>BR+zi+ORoytuc3 zKkCKB{HyICb^kkY5if2}z>PaYoYRj;DpLl`$EU1z`ZC9XJC-doR@)C7Z2G-&?ZgjU z=(b-$TA8ugUPD};7Z>*8RuXsIi>vhF?j`P!7dOF+TSnX-FK(h2x0JY@UR=bBTSQ#9 z7gy!QEhMfYvKe^iWUGl=2%KT>`!2$jUU)v?30^o(c%m0(-&Y**!gmm^a>6mjYR*{p z?8Os@_1NPsa>qMBTXm@p%ZSIU1wP~H`@*SgG4wJFyuR=jV+&>a*19o*}qti~T;Cx>XsXv`D3qpN*>Oc3`>gNdBTd(+dDl?q&h^_pQ!YIJ9P@ zvKlX^tT)dX`*H&w>I2p)>Wl#Ec+r)Y{^sCdahN#4{)v%EtH?-N=xb2vrLtEJLx!2s zV~chhD_?~qWc_BC}rCq_Sw)!T!yj1x@9(@;)RzV)OAF1rkzv-|_j&@l6>!0b{ zOa5qhEA@82raBE{qrHee?HuFM)n&k!dWSk0o9yYq!Bc|m+rTJXeCe&h@+R^&`vqtB zYnO+?J23d@v-)KJZSakzw+2tmAdk~tbff(waWlNOz?(ydMYO54=$Ptf>=Mvy9M^zr z#5LiXarZ=?vwO%xIpH*004@^Y7F%;Wj^BW5#5LiXarYPpZ1X`E=MzF(?Fcye>(#03 zgLk%>8;9>R58RN-+<5JLb0TSh_-1p%iV5cK$9wDp>vx)eU9{OMPQk;HI~f<_)cO(h zId3c*d_8tAeQB(Em9d$V?Pe?mkKiiQ7^gSc!SE)#eR3+Z(x1wdMCO>g-j!s{O`C=< zl^H)OnTe>~NlM#j8sTl`!~4?a%1cw3eV3#%+pk)giC#3%Y$4r8`o62TnZt}Z%#EL$ zzZx98ZaH`m@AwJ$4PMGx9bRvC5LX4y%<)1a9J74k)Y!e`iLsY4fA2HQz4*A3xD&YU z0XOb6;eOlz?hLN|>+B_P^1E=|xD>AcNz!rp?%s}k|8G8{=KmN*6hHl4!x#)8`=9n1 zd;j7y8lPq#g5Q8ISC6a3&Gg(1{2E*omkT#S{R2M)4&3e~>=XXXdB*$Lzd(7dgzIr7 zKKif+S)Xw7`?QB^`OU@CB;Oy~!Cs&j`ZH76U})>fcZtTr>;sG|?TVD)Q5xy7OT+H`^M^OSrn&Oo!K-~A|J&fH!{iA8!$itX zB%f$q^A9@6g!xujdCMs8kErY%r|ekf>+wGTBd(h|im0QSI;!*Qh)grLGyc;?uP`f# z-xun2*02ApzAozO#Lb|-GU}U2nVBBkM&u=jF1+?ftDO-0qd;VX1CyV5KY_S_(ev7o zvx9H^n6;^bZ)hg#^oMyBVjopQ{Uy{Nr2dlM;`4nJS}S>5-WD4eGompko_U};f`%J^ zi1-9;8&UD+38tku$bp|x!#V@_h>Yi)P7puKWbrF}!w!iz!|^j5(ah9D5R67~tS<(8liXp?BHr;zKa+ zf!?7?mBgG~mD~7W6@NI@}<<9>t{9X z=IU13i7sZVF^f4H8{0qa%GZ7IRG?DxES?$*F&D==ftmHlk^8}85$ljYNgu$obdKZ1zE(#+b(r?K{A@WksxqPCRO6Ea-%QJn);QRg4uYCR3Jo=n~55$puk)NQU zj4$feyLYtU2A8zeP5;%eD}ZSy@wxf2!Hd5RJeGO#7iz2GUN0WiR{3&d1;L>{G$RKz zQ(iKFc#q`GXOuSIF&?}q-=U*Xij8*;=E;#(v113oRj9!0*YapWwwUFJ?! zeVQ6SU=P$B$n@WQATxl=^>Hz6YF!%IclNcXni*r!WdwH=I;(_U_a%#r6MXL=T!LRj zd>3viuAT4xKA*7@zmsqAH_<|hK1_@;<}uBySe7|aru8^Xe*%$BuQ@b=yc-OsGG8RG zAG-f6e%WtanWB~Ya=bDreMwa7S1Pkm@*MSjkg-XI;REo3cM*RVW!0ZxxPx^hl`Y~s zdMWD&>HcbDys34N!d!p0RwaGY5xb3$Tr9?!0=u#9=dsY82!re_J8!^;b+BD6owBig%80$9iEv&=bZid5-&`<4xbcnNEnCh zVE@+AcxVf<`xe^>J($t=RPgT$Z$ReSZuMV&SaByExk-J4mf-!!@ds3v?YxWM{$U3) zlI4}R=rv$sgT4dVLwcZe zlAiPnV4vgY3ku(}+FEX`wmSam;`Ate+q;x~R03VY-D@oIpI?(!2o9b=7TCdF&!2Gj zcmAf;mguJ-lFD?l4-~xpD~@DNh1nkv?<0P|IFcE-^hhQ_y7=61;*>8#o_h9l8q@x1 zM>757>-QhY6w#je$g8C1>K+Ij$y9muzeIelp8nvGOxTM*Li}-PXMng|9cANzBZ=If zOpR@u)L|aI^g!k)?F5Jyzty;pOFz}^vitF;qd=prVsLSsIjK%QI)YxL$k!}jUExJ49ORPaI`V_h&qqvZL(M!ha zOs>DCSGU$b@sT3xzMndMDe7DzJS z+(EaIh<{TrO_8S8jpI zdF>QMUPZ?IiESWjX|5I_pBsFujMhcLm$}qTsi>#`qU zY~9;B@1o9O>~()J9g>ssQ-i|#L#y@v3!d2KVPA88+w|4Q;a zN1o~4oJH7xfP`DkqR$K#4d`0p_O|Zw_0dLVf)|%}PrLt4eQAMGx7ycc7!TMhV zj&eG!0QfG;>AaGz4Dc5DigIziZrr~UH^97g)}T%|?hJ8#xwxns_XpyRdvR6hz>Jg| z|2pvpz4!?61&sMg;tb<6%-6cHqRk4;HAnyc>9LYarSA~WGmJalrjHM#Qlot->E!Ql zc)8|VHF8)(s>5!?iGLiXymWEW$BrN@{&Ef9YWHQe%lwIfmrpRS6?fEuC6(Rb(Pag& zHn1+LzbfnK<){lCQgH+Nsa)NC%=a_sgA}K{jg-md&5*az%UeL%Uz1ngk{OLi%&Mh* z#=qFdUgZ~qgX`cA*GB);>QroLYXGoQ6Eaf9ro}r zYeovaFXQ58ys9ZzlLi;GRgI3O3OqWxv_#Ar2`&VmhnMnXq{FI-ZberO-l%T^elXN^ zvNVh?k$yLUPxaN~o8|dca5jw1dHg? zKYCxbB-DX?!#L9i=}ZU0`%JApVd8hdJC4Kqjj)-02wox>enUO&dGYODJa{ZW?sMf3 z^<#w>|8sCPfp(R~IgX|NiT}-{j-}*Ln(7U5j*#~1h>)f{U-atOM;*tDj%1EbaMwG* z=La{)HJPL1j%4O}`F=pYqr;D6j=!HZjdgLL@<`?mFRfQ;Gnoz4SjRo%XcWiqHNY-9a^D69evA@V0VNi|GrmM1Gsa-mj~#8hQvA zEq(XVm;A9RW2~l9CPrBUxg@Icgnb6<2;Vun*IalPdBp=0>p9oQHR2R*#x2LSdhX-{ zoSWk!ulS6?!9U#R@-6d*{u^CANg&P`$5I*XQ7rV92K22y9D-g#qv=0-6Mbvm%qG1g zl011gX#+-&T{o-MuAkRxKg{=qUu$J=9m_5cwA$L+-wY0X?0bO(Jv;oK@eZPUIjFTD zwuy6_C#*Q-gYh*^|N2+Bd&>uaqbTxjI~abqy~WhLy3K5y)T;F->yJEV>YTla?;!P# zGJe$e%!{qexn0b;$DDa5T;=MLe44AP_J35@kEm-`Uw}Fqu(1cG6}cb#gmqvQe6IXg_Nw60C!8iynIB5#1t%;HKQ@xc?$8f1bw)5gB>bA3 z8ECH->9QZ&zu)0uMaix9Pydk0-1Pb)vu%GW(=v`Zm##N=Ub!+82=6!j=x!%oy)sj> zPw`t!e`LF(zuk3xOQxN;k>M@oPjA?6Y8)?P40^+^-ZmcD0I%F&qbtm?ZWnLy;=8@I zd5Po%`1lyo+PpZ)I!W>cnUC6INq+EGxb$%y@CU=}mFbV@F~lBp<-Z~?Fpe>=?$^N8 z46m*?2uBUAP0$!?-nEn$ZuT$-`rZT=>lbHsu1sbAnS9c-?)VitK=9g%-?tW94O}m7 z2hMDD@f~9g)m}tvs&IM}brvySmWyuFTkQ>*eP)n3wEt>!@bACVY`+P7j*)Jl*4*`; z74U|Arf)QQfJ;_ng2<*N(Js>mKBMz`Z0W>zfK$mMt)%%$yM5GZYybM~rpM zhT4s7=!^(!zI4$CUpkcyd;4Im3Ay=G0z3)$MI3ie`k>u_--v6%HRHbK=$3AWmTnu1 zj23_f#%kRRCOfPm=9BoU*03u2Taw^A!Wh!$9KC*sv=I43JGs1COT!+{3}EeEb7A-j@tjo+!2nX^Hn<y_x6=6;@CeP9(^Z|0?l?f1Vq@#;>~+>Pdu?UGcN1Zq?`?#S=*;P+ zYv-FQ;2#gbKSqXUo8Latp7Es*o8lYeUTn{ZkBkg&FiS#@n=64)nyxkeAUE_P~MIrPYw6|kQkG)cJBOa4DkwIsE?m=X7_*Gihq8>K)n&<+U|Yb-Y8K(!4y_T$G=I59eS(26l8FYO4Tz!4@1i3gB_T?%*Q_ zi_TE0BV8915T6?(ho=JTe62C;Nvr5%F2CygTI|RL+FM>lyGeMn%86cb_87m{9La+x zGz1>#+kqiuxU#SC@d4T|NTxCeD677Gm2njvKwB9jw(eZ}=-IN;t(1{&L>>XRbF#ab z*OJe5rdLQkM)>DW_zA6d@Je4O3T@2FBz+y5whazG;-{Sy?Uc~|UC4HaJbo(p#gF#_ zUk(=~%%dXmX)YDhW{|$-@FF;4IXDx7Gim4gBsfb$9oFyvA~+wi3s@7L^WZEnX2S2{R$xtfu)=>&RU=cLJOW?e${Fg*KBH?Dwxswoa214iAtxnSt94Fv z`XyJdwq;3=eao+JwWJ5TKJtoP0bdoqe7&iF)|?Ua<(6M#t8vsF=fpV9Q{ygAxITj3 z>^Aq8HB#eH(0TB+Q^GIt@MzB7R#`sI zyP&`8dVQ=7PMP)Qi^{`3pZ#X>7U&3rI9Gd=A*0r~r z<@vK6Uwl=%0yoW#6CMJ+=mL6M7#{Qp;F3VGU^$^SdQ;i0(2{T`{Xpw?gN||4 zEuIMDbj}Nc;akq_^{*pMb!&`UZ!D$V+N|hT^{AY9NRV=p{}d;_BbzYjY^>IM?Ux0^ z{{e=fG+_J~x?aiY=?m*Vrpb z2N_JeYiUs@`)v4ybS|Mphm+QSC-fh2WsuaAgZACj8A@)o#mm~zhpx1cm#{P0`MU=) ze)Fg1$P9chz11H7hX*nNWac95NJfUYnVZ{x>e!haeleB##0yR47S<-&n@FyfEz04m zw;^k9G_gssc1~%v)o00LyT-S=asy|j*D`*MlU=zo6?h38!V@^Jt7DFee>?@<#F(eT zne0kchj3O#nc8vP4$iu#Ad`cqdT=)ZUJ{LVSe29)ZZ;uv3xA@IVf0gV?wQ{W?vR(m zsf_d`XK(!bG1)We{Fu~I?}>X{c#f0z_@yqc|FbbVeFj;cJo#g^iFPzDJ|mSK4IE|6 zGx6-r`wp1G`@Y4g%(R7fnJd}5BpCw({HNHz_`Uthc=j*CJ$6yh+%^aAIb07T?m2MX z3yyb#+i%iVj>d#5=~4QS9YwFTlQ(ikJ|}ZEc(3sKR7Ri5^78EfYRVJ^MO?HEkMcsnIS!`Hw$~AIGvEBCeA-;ZA(!FN#NJSk0JS2u@T^ z@~>p0UwivAWTN6YZK(d4E0HIXb(W8F6Ul%&pU&+$;!*6|aE-VoTmsjuuzvz@qY?59_H z`wr2%WM}Cr{)7Fk&X6^B@bFV7>60(P+Dcyzvp(i@7(UW=diiquxR7|ljnDM;zd3j+ z*N>rcKx%On{Ec3GX(9N>t+U%U2 zD_(pZI?6^u=)u8hG}dYx^gjassDgKhUx;t~-|&oT%Czir?E+=jTti)*V-J{V*@|H& z=!n5m`|%GrXdpM&pFs zF1zt!@aXihGiFKdHZB7%tK9KNF1H6NdpJ{aWj^usAoFBm6uyI#F1-xD2tE`{Y5!+9 z_M9br``B9*7@y9F*UKh7NPh|#H>WLV=?rb<@F}@M`fkZ{v_)Ro3A?yf+TWN%&77~u z{#`mH^-X!4x=8;EZA5xqdFM}rD`nVHfHNdF~uS2xqIR4QB1*qUT<0 zDZr(080kH~N55VBDPYLqIiIFRu!sEwWp(~Cf;IT#gaeeX3_paOb%!k*b=g}>uC1XS zrB!+3r?NMY|DD?8%(VP4>qV|j!K8LY4=OiFZPJGkMs4OQ!aMG9*A~%djy^Qb@1vf4 z8ckBC>bVVCoan%e4um^66M?k?S|}k-W9*BKx0J4NE{FuoKrEGsqQ85Ea^g2<;n9)w zR)^1MywjuLHN)f1cxzp8Y?|L;yfwB%WgW>sX=EMQ+2zK3JoHu*l743vXNj!^wc*wR z){$b)VzMoq=k29^AGZD)@0w7H^opl;Av=gK2nXkRgFA;bS1fGOWqX*zY5q8BzP$Pt zIPG@l=nOvR70PV^l@M~Z*&tA-I$7{BUy zY=>}N&vBxH>t+(oT#9b;S#;xHK^8gaGn#O_S%0L9o66b(eOlsu!uxV?9R}9}??aXo zuC4v(=v-Xi1g;&uIP18h7tcFqsN|d>rx#Cie@bT!TDv5}OE;b#`wLsTaRWVg`o8Vp zeHOB`QG9gDW@PW$%rW_qSIq0-L9LWm+0>NtHZnWMZ?<=l2OCFZpI6MEkuUD$o0?R< zy6hL=OVN~U@$SgpOx=wKe_8&?9WUhPh;>Ud#bnQ6|sgCFz=kTA)Lw_ zr_Tq+Zf2k1t~a5)biq24yD8}@&)EmL6B6YPPYrGcd31JTglU&N{g*wLnGs!GFf*~b z;7Mrd5V$-{y;a=l@`vev9)w1)oua;$ z0`*~L0v}xT7aYi(1;>5J0>ZhhL$Dc1N8 zQpY_JcibhL=Jef?XVTwO{AaT06wB-Aqv)nyKJ@TD!?-RVca6Z&h^)|vtntSeS6fA~ z4%_H;_p-vJ0+Pxq;(X09vi>f{>b&Ktq?dyKWwK1&pBfw z{wg~A>(yOWU3fLPdJ=i+j;!cVcVX&@n+3eW3p7{&g396br%qP6^bt*QCx!gm$#V?3 z;TZ9P!w5epy1~X8od;v@2UqU~FXH3WQQS*DqthK1;dXd3m6=YxTd)zy;c=0N$IEH6 zt=6?YyeIiGc&p1kPTZ1+!gCa6e!Ogdi1H05d+ayCkKGCBQ zKJ4H~^ti>NN5LpM9ZHh{Xs5n%wVi@4w}3~{(k+WtJN6Cz;pZ|T+B}1vVQ61UiLdAE z!jFy6*c%pSw!_okL)`K3v`pLBp|tudvlcy>`gI5W+DUy5%~ifc|7PnRX|d*^pKuv; zw~X-eD&{5go_30t52??g_wdincMT3+(Lh}d=tfkZKip*|I73TPzBUUzmA+)_d_GB> z@TIYT^TihQlC!eS#O3fe)HfoJ**X*c3q1ZK^r>VHXHE0n@e!{R|J}ryVSB$Tuf0LO zZsuvtq)iS@yvDbQydjvR-_Y72omJfFV{N8Ee)tvhe&(<4R4HE{YsoTr*78d6tp_td zW36fRi&kps*Yn6zv5e-hKlC&6$8QZ@fxQI0VWVAv+;Mn{>O0RHa`<`kt-{6W z@>upQ&V?uB+GZ{r$(RK`FYsZfI2#;)XZHJy zgScN6pufa#!2JOINB2JNKjG3%>}CILaIoPX^cct*dq}HEQ}ze0{=^`>?2DWQ{)^9; zxda&nzwbvrV+~q`Zu|)QUX`u#^Qk`hwpmKJ$Ke4e!6U$4;Vy5?-UDH?j_Q*ojbw z)nIgBf5Upfcsgg@ls$Bj@Wz>b)z6@fIoU?)8S|bMRuCCb<2&Nk4y!&5uOn?7_C|iA z)im};3*Zm_qtMPJ#QzlituOLNr#ySga(|dS&_$5>PFq=H@=f+7YHJ+p#&CFItjpdI zPn!qFxV8w<_upx*TA9kM@S}fE)|p@D&K?+d?(9wA&R)?9#dov+c-#!rH=WP!;?3v@I4P;r~H65{|_#Y3Zzp3=2>xXqbsi!-n*K4hg~`8h480`rMm_{UDZ8y zSGNm~;1CRIS9b-}?(zxn!bx4P75;9mwLGzwb;7kFDPT-}<*v@PD8atl?69At?!Da4 zSQaNAFtRUm>+&8$`@FiePm~JcG&SGb+d;q@Zv|%Ml6h+ z2riDdK9>{!a(*C!4>#7l(_p#!PQ4C{Q= zG}5W@$!5OesY{{sD`d}89DmL%jd$2h$h+7;_i4RoKqd{PJM2&YbhX20OTbSN-*bUG zbUE_MZ#UZ`BO5YNU=%EZQLq%ml4it{gHM-s+I5?;6}V^PYYX0+v}z`G+DDCjj{SBH zKSN<3KraCJXSe6tIC>Q@fz`EZW_?!!;GcUJ0KAAzRovR_5s4dA~YoHVxT zu4-MjjW-x(uGCp*UACR{EvsD{nQ@GhGp8m;ZOx&8vC`6*YyF)Fukx3~vX>wOydQqm zge)uC(|ipwH*WdhIYq( zlDbPhc*>xWlFNJS2}zeegT&v9-9ZWP9N&SRUy?h|q9@cqmOT}?_`fL1Kn-e=8g8z@P7E>tgLJoe^1$_f94H>US#tN zkYy;FFL(Z$^ag0&4__(`PqUT*BkM)>72=~`a&_cw#L2!f8tCZj$BuC#FiZp}JP@zY^!Tk#K}^Amll&F#Rm7r9vdH&Uz2V&YfLU2XZwzhD`0)@tee2)i~tFFW(x z7k=3eQcocL^2tKxyOHj&A5>qN;~``NgZsFuM>@X->Q;HxU&5J(#$Yq}hyjDz*SW(C z!ZYZPzVD-+DE*33F52bx@6NBSv4Zds)#02yby5!4ikXXf^Xwc?8V*kirhfpeE^J@O zhYkLtb)+EDYKmS=WL4iC3!J(`<6g2GuMv#1(O-1f_XFp4_5*3;OpT4^193mz{XLfk zdXaGjbH2SF>V)DgOI^6Tsar7LITUxO21BOUu~;ex9`EjXkz_dV;h>z#9`o zZ>XfQjmRp~>4#uo-(6nom6y%5&Mno>RIi;|scY(3mo}@tw5DrZ`kzMH1nSmWU+JYa zR=H`M0T!1YU@b{A552S~yj!y3r%BVA_67U_%YB3Cj3>v=9OvTfcG40K{^n#q28_qO z^kc}g(p8DBCz#MN^b$6h&mot#CA*8JXBgt~oXey->`*7XA_-4UV5?u$(f9Aa8+@Za zwAHR7Pmpnak#YGrwhKXT-`~8%#rfspWwfVyK2NyePIv4AgzKMj$88kh+Wl@n4-%f~ zck%Hw;hHfn-g*g7_23tdzs`4LgF8N(2~Sw*j$=FF@DjIe-i{bs4xrp9XN;NYu8 z)UPoV&VNBa6n{4~c;>q)Xhr$h0xs zatNuWfpeUN*s=T*y0`E1P5^OT#Dxg!bz+k;r;%x^3GX1Rv&168^@JOVKmJ9|eJEc~ zxt(*7t#@Phawl)V5noGqB7Tr~vypQl`#cRrfjZEkaLls`UAe6BJJnMG)3VuJIUG-43#lQZZpLAVeeH*GgVpR$Q&?a%nax0r&<7g}e2*Mt2===5gbYKAsNqv$Cz&Cuu$c&*;RDJDPn zhRry48jQq~j_tDUf*Xvp?n?v{ZRf^$KI42#Uf&w5|4HB6`w^>w|6{x@A(=;Kah2nG z?2koS9hp|Pb$b6|8n6c#7k|WsVE|rU#2H;aoZ9a$C!{OU-L?HNb{!(_$6~`E^A(LPs!4m zTnIOwGY`(KG8d311brl&J0q#gzag(^o)kcPf!J+kkZ|KH`j&W}eKdEU?x8>7R{PAI z2kj(%yAF6{@1piKFLU;!CB%!?EU!MzyFT-OG9K=H$kAL*m-t@l-9bIN2QNC+T^Z&1 ztar~vw5dLeRy23eW5N4&_4S4iXN+O3uj@|DviXb)PUBKceRb5Q@~SV_p6bb!Yb8$? z>)>J5nVGC3MF@Tq@wK*8EpT-|2jTgxtPye6)04RRZ?f~l-@}^Kh|_vd|K%Qg9yZ`Q zH>==m(wB1ipzIt`2NhR$c36(hDsx!l`oczgDwv|1T(d(WKs(sa6*?Ye2izy$V z>?Hhp_F_uUryK2uIRhyc9(0zh`F|03kltvXXWOiE)*SuoJpb$|mk%D#gU1If)zJB? zjNJfhl=`amiT#+RHq~F9@A8h5b1tkn?bn?7LqAKwk=}pHl?#T^IeF!TBgt^OcQ=B) zR*JQ0d06jx>AZe6w%HqP^o;Ay=RXg-_=5VVF`GgimB_}bFCu(2yE3W9LHO1kW$~ec zWb~Z9J2+-Y>hvxQcy!Odb9psB?*;A%<(1~dC%8w^3yomQr1iT9T;AaJZ(Tq84d)&- zeYk}5QRu#W#u(W;6#EkYLEE3wJ2J)L@blT++d8askA%b1t--M0x>oj4oQt9xdSou) zKY~k*Z2@Jpk5d2h$96Ack=sKFN8jgr+4tPH;j}-W5PlSR+_QW?wxJ`zCF`F3I=B>^ z>Qf~0sB5dixKCwG{61qZ{^gqp%@HR(=W^;Wi7!p^eqAz^iK2ffOR;z9>|jsxsPk@{ z?3FauMvD8Qq{&9?QsA!i>X&>o9$cOnBN}+rp`BpZwQ+LFkuF-6O@qov52Jc=^wUC` z>dxuiyV-AuN9NlN_^G4ZY4f3T@=t&`@npT}RzUuI{Atfo$38_gq`mC~`l)vF?Q*n# zuXbSOOc;94hZ#Jc(z);Rt;%_3}2!kv2 zi*_}R`@OUe(}s9}?2(aY93Ap7;E}za$|x^*c4W?Pd1bys{{*jK-9#huAQEo8y zrAg7{?OE9@$j;?II7`vpgaYc!A3M&PPVIJVB3xR@jZKc0*mD+7ppGSs(a`?>_;ucg z)!5OV_R6x^_9d~sX*d8pybp$MSujl}t?C=>r+Qd>SaV`KeMTj2!aUw`V-HjRBzB%S zUwkky;|caexG?T4>ss~Kc?%8Kzr$zL^1Tz^y$>6T&fM-Z_Fy!&oHLbv-g)u=$~}M3 z-dOKa9S1(GVerDI>*GDP>EGGU@V;FkZ-{RLR@T(-^PZO8)s-E$ z?mfw7swg$xf=^~>C!=*_S*X>KN7n#P8M2Y+Vi@CFN?2pBG0-}4f%nD?)t4Ve?vpI7 zb+?E-DfUU<&wInMm-!h^yF5Q%zyIpo4)px1`no7zvaiEzoU+AM9sY|`S<%F9V35Ai znMa-Q4BB#Z9~UolWX$2lD)U?9k=~=8I_|iy!xC?l&fckq`=!FE=KbU3lf9JWVSRs@ zZ{4}qxqY$jM|Q3?hljyG{n$pD>2QA-D4u0R2BgoXXvbKXB>W``a+2zb8l!My6Z- zi{lQQ25_#R+_}C)*P4hV&}~K6ug4HEa}=H6erN}QOJZSzcF`Wd1RKYJgMqt8LX) zN10$}(v&VpczL5QhX>v7=RGOr@%`k{8vK6YlCWO3t>< z*>4SblT!AR1PF%x~Nzx6k+wT;Gk;I=x>-ib=}xh$%kQgp&;lbtaqNI-zZW%OuY|x_G8#hk-i*W(zw~P+5I?j zEcZ2PXTy8r&~psEA9Jsib7=aXS$5YdyCS;DZocbTXB~9jh=_Nf>u_wYSz9-qTOW&{ z`w+AnR@u;c(|K!;I&%CFUdJ-XxfZng#^0pzdSvXiIe2DgNAiqTr{jZO#e?boZubRo^8%uaqVyF zXRWr4C2e+aL!0*er4l;+FvwO$?G!dqh-eTI3Pdlx~x|8~8l2>q2T zg^rTgcSqqb$h1ZA8O}aR=cJ-7;X-m(A^j=Sp649@KW|ekUSBFZBF05yo`&~I_R+i& z-wrdMZioNpbl0l02KbdpTCs+(7~xBd^}0og^#&>+~J84>V=PM4-)~V`bqFT zc$4^j9bw79*L=Ifx+cm{9p8?`u_47FnMbLdZDMq zJH@ZYk=Nz_bq@azFb8fWPGycz2Ac_oKW-=N=5zU@?qW|PpZdxA>+naF`JLJ!?)Sva zob2NCGU`mNKyS|65bgaMy~QU+a;KmB(vruGgsaOE@6da^G9`Aj~{!Sj;PYG_;D#0uoap3N1vzv2x3IliVqwLjyyX$#7+PTKA z!3|VCpXtBs`3!r~;upcK#z1XkDAyRk#*{e~XI;?!fnfNN{}sF5IChW?*x|8`ok~B7 z%(j6RZ->u+3Of}1)6AU#eDV9}gV?ITZO%T-IlwLGvGKb)T|Te5Rr^E6BsR;MhQ2~; zID9yBF?fz*Z=w01u{w7b2Rax*TJD}dV^dt=*`Ac?EYiEz|L@>Fcd!572%jyZ4e+Kp z8jq~t4TBZDVX%TX3|80)Tr=(jzn>tPu5pKSa(84mGVU{1N`|X*WVkeT6wVw4znYWN zq$5D*TlEHSYpg`alWetHTMydHS0A+dpb4yM&IlcI zmB?lO5A1jD_9%XoSNC$_eZU}E8(4cJ6N0Xo)6RD{?WrBL*T3#aW*TXS*Fe9NN7rlr z2W=|9^t`!zO1nvM(Dt86H<@d{^=yM~rth8DLnvPR-plxIeW=I2DC)jtX$E;2*?Y%A zI+$BL7+H{Cb>6!`t`uLWr3`q>NG39a>lh40) zO6@{3^TCgQSZx;l!F7UnGx0&kcEjZbp>YQsUh)%ki2cLZd)y*Efm|0|Z;p9a(wa{H zH0OixmrlwaLr-=Ln}|T<(bs}ut+#pyeZBcJ($eVB-ic1?em{6>rDL8)Ar?cKMN7^~# zXa^p>?elhBsov!|gdQ&UE{_Y(VF#Y$7Z9HZ&pO&Zggt|B!`n}%jAR#qH`+`k& zAKkczSkENKb-~ZJta8sc^`6W7DX+bD5%0Mue>dS0!sCfwhU}rW_FIheUc%??tByPI z1<+mLd)lzCYO_X=Uo;U+rF`NuQ*Q=N`d@f2cXFxs4$@^`Rf>+Pl0GO-V@qGM>%Fqb zc-XxhJ7@PYoPGYYdEc~$-ODk@?&bN%j}=sUjP6hS zD#?AJZ3pa2)CO~9Df3jg8Sb?yIAE#eU*%hOQa|Cv&n9k`SLWlC`4xRCBRxS}Gy1{` zaIAK^mbKWO6S!AM`wc<2&&xj~{^s66ndxt}W26bL&T4n>dJ*-BM}1cH^Zry(f_0=C z9X-7EA}7v0mx=*HR}p2vkz~3)+r=?+_vvohKZ}me&z%!zFG@XK)G>`ReZ&j4nSR*_ z#Kd!pkF&pa&Rl>a34A#@y_x)-U+J>Do}`^5_8pOjGQE@+AIs75Km4fGYAtNF6T^6; zM$X{e4%bb;2a+Gp^shdcQM=2>yL5Ozx)R~)GWt@1FIv(#YzKbLi|5&!)&{s^ESSKP za3g+DM?Z7?pq;!2Co`vz2Z!>5Bcz4Bw*E?6hlLl;UGzru7Ux~@dy~(%psV9M>8yQe@ z@fdJ9_k-x~G2&Cqt0d*R)7<^??K8J9e$L&mi@5vs|7S1BU7&qeZ!-(IFIF7hZ}umD zk_lhaYFA#~YJ&rZ58h3GL)L%K2Mfjjkf{Rj#NO~hr(Y*Vzn$+T=)+-TH1%yOeLHxg zD<{^{hQ@EtKJW@I|1$tbiRGNAg+Fj}0jMNbgNo;`|QZKIUz0+}ivv*OqT z=IaVjMU+pdc)PAZvYvQQZh!wKcFIPl_V?Hs5LS8ZQ*!%zcvI#R@G&r(eXnDWS(}}W zALRQw;?a6$e}>OpE6J6w?)|XK19NubppdfeZyoI*P3?=n<<2|BU&WhVXN>vHi`QGp zqqnKHuxHjA57T(#LG$$79nE*p`RIBz+AoehKSzDwZ$>CJ<<6H1bwe=IPof;3Hkg9{n-Pk3xU-x!AqMLVqKS#KF%)?b3 zdAL7sZ^`E2%HlmZ?!pwnpT3^=mPYO!jRNqZcQkUint*M*bY#L;xZK5;^WKApuLQVi z23H--zk2RQ2p5t^*dv#tC&>1%1qN^-d0G2!jj!%3i+*$#REn+3QEcPGl4Gc|Fnr$5 zMYw?WE*L@od;gny4C?9pFX|Zpcdnl5w(K3$*T{aWk-d~?t#*uaMeqPr$io6l0O;3*{iwp8RQ*z?u?-S>bvw=9DNrDJHb&M zd%xIv?kKwVshBUkftSk2K2|t5LRsOq6&xQTuV_p8b91Axuq z26I?#tsE^|iU&=-*KnBk4(`3=L2PffTk+CW-1k{!Urhf~0o|YA4R6|xf*;Ylqc7C_ zOmZ*qQ;Zon&FM5nZ${^No#q&D+y3tJJTHIDWLL$+D>hQdq1YTr_^|q#n^(K(XD@rCoE~^+ zKX<90(B^RCGnsD?Ry{e|WJSsvDSi)8dC&(mZGP7NFyR~=PY|xV-KE)Oz_z@SHHSN* z4{+BgN0ax03*Hoa{TO=+={O}@{cp%s%bb<4 zXL-lP{_lA5W86{1<|@w~?OT*hdi$|@?c2dgEBy}Or@(EZw%cxQ?Y85aTpppl`j{i! zBMG~Eg2t*B?E0#;cGER4P!=5nb9Nv+GxH(Q2>8%E{jYvMOEOdUZg-yM&MY3?mv-i< z^u(H{QQpQlxx<~Ox!=($W=?Az3mCVdV?Ay@!#%ZwweDEmRZX5zmA~80OxbEXa6=>ehXUm?(pQgOw%y#=h2?p;_hWRwmQxmO8cl&^nQ}P#Q!E9d&fe1tkt{ahxc$7;q%Q0SO?Cn_pAjY^VR~b0R=JE zfXKHU{`+%vrPtwEoXTWPJ zW_=X;lDs$_ewHsUYVO=bn#$$monppGWj{zCx~B-&vf-I#=I-n=Z`gigbLZ71J@Gl& zvlH7q>Kl5#^nT)S=iauu!y6lCTrU2JgPV{4Kkn}|&l1dUBeKnE#=i`FolymZZJdkFzy^E``zc)abZo;{qjQ%V!S6lccdf!k z;b!vVSK?9;Y|&eMMtCLdktynppP-lkZzI@5gNFVDSA z(fB#$&*CT01I=>ekp%pv`$G@g;5oBJe&iP>Z%JHH^KITdqAuBoe`4f1D;U;!NYWY> zadp5q@~+a%r(`4anQVwXSOs}=X}5o8t&?B!z=z0JKj~qc_cgO@o_V)(PWB(kuit(X z4}HUDtSjXVM(0@4slSZOeC$?N?=o|PbYP#(UKT_a@oYJs4H)IE(m!!N;7fgMOzV@a z7aXEY;u^)x$u9QuMn+_Y)paGb1w93Tp$@#Z-R+(!?Rwv4#XIL`j?El;&Yw}{PVN~V zN^t)wg|4-;-MYSahE);e{!6OE?u-`N?YK5v18e4pDEq-U`k=@+9D4@CB%A{Ov^A2t zr2`%bp8PrwF(0seC7;Vi!Shq;zq0;qVb8JMD&cp1-qgFB2H&B_E#>2!`PZ(MhHEesCzt36FE1goksTGI-_iu>gsSb@3arvv;ARgfb|~2!*=tq7tX;E zrCij>+humY5B?K=!qPhvsSk-4Jz;GjZU^Co^e>R!kYPpzm^Q^my3_Qf9yg8j7PA}6Sh`Q1Q`p?;f{-)7K0zSG^uulko3YeXug-<_}~_IB8<$>~->Zz>ZeUnOI% zx2g0djNUUE9&0g+gq*uH$j z@*R#^!_!+bItL3F^gqnq%Sg&M3><7Tc!!;P&LfRZb36TKqQnme+? z{JMuNx@Db!Hx#~yd(y^Q=7cK~y~X^N?qOq)H)Lm~vM1ShpL`g{K398q*@Oyy(dbp2 zFNA>OPygzc-2lI6-_vdHVGigmDcE^&FJ&uYjAe>(OCkq@C*40TgBHRG_ifm>^n1XJ zf$l2C2q&+FpM>Gj{Lb{UA94?d^3GXl6n;Q?BhGjwbUuZRMqb$)3D5M(K1bPL?>h7T z?{XiO^QHdy5r=ksv>};gJi5pf{rnx{7m97QQ;enFak~TC59uz7sHc?is~|0$faZJM zbA>%WXtDd*8{Y_g!a>xSZaq)`t&&vsFTw*nt`xeifREk*&p5<6s^)i!u=F32qx25G zh223RIN#OByLu11Hur_!c)+S-p7?jIvmOKHs@@LkLFNnRqUiO&7kCK9bf2Dk^y%L? z^Kh_fftBQb$Dr<;njLm~x*Z~WWseNlI^DPhG zp9o;r%ek%SQ|my0-wp_HmO6uYoww@TH3&X*=K8wIu>PSt{_)i5jIqJl5^>U%N1kV_ zz}Y+L%C$c^{dwdf_K79Hs5fke4f)-@4(jn4sqB|Hqm^IyY6tQM=jP}pPH+y{K0#~# zdUNNyU44^rQ_BUxJ6kT$UFq~@cTJHU+82=@wcgZEVy*Gw4S0cnm+bRuGeN?V9Y*ke zO6M?Orf)j0X|L|Icf$K`ALYsp+d1Evi5|jvhlt-jF($9IgYk9t-;m|%tEf*h!QTdp zZy&YJ`UGu;$y@*3b#Kpq=UV%ZGkeH)SPaO>|~Ge9qBh8 z=nF<3KG|ZlK!fYdz@&C_!sR;adR6pi^EQn5j`;T^_D|4VYSMUMz;7XL<5=v{@mm7P zHf$ht9`NbRDd+-8GW-32@ks48TkNVQw%AiI-(u@`jwkXhUR}qxpYNIS`Q8Da`uDOA_wP5ShTiSSe>c6K-!SmA zKEjuCzisU^(#|^><5@o>|CJ;+nnvg2=Gq5&Bjd5PncUkL`+L5@I?8)Y(B4`0)MweR zicfS;;5{aA7vzj10ZzU`diRVKcJG=Nd-p>v;AOUcbG-Oyjk`}3J?cDAzq29vM0?QN z;ji~T&~5pc2dru6M!#V-a<0_+p;o(XO{?AhP^%qh-R}(Y9(1MT{q^QEH>|Th&F?da z?<7O1?5W?Jr!CzHZoG?oWa#wTk@2;k9LBsF>ENc!?xK!p8rj&vjVl}fU*SeN2-a7< zAF`eIL$r@UKV)uE4@k-Xw2z7$LLikIta|3*WGQ3ML5*j5A8m-4>q{ULX-p-$A zdd-(Idf!j!oJ|#fkaqQ(_eGqKiVj*YpgqP!d0H=Mv5)h%QqhTG_P%cR_CtAA z9Jn+uW`GagbUL+cgUg2sKO$bkTFu%si#)Os05OkfUe-~M(nQzrp6n{pJ)B`D@XK>{ z0wWzef%D%W6gz=mI(7oW+4F?G-@v2lTHU=V&%kR~i?UxpW)Th|2686j7JxpC^snpy z@@5Hla{cMg*u0ft`taEoF;81e$$aD3S4*C{l(lQn@LPkdUxVR*6-`gK64+TAA=$nh z0QUzN2i}i?7G*!B_V>dJB`@7d+sh`o3gFWm!9O_&G;Dk>Q-=P4m%vJ zJ%wA_oco~#;3Ie=_(6Ua-u~%tgOBK)d(n3eXVo6go?zY`oOJvg&iI{nY%9)xKgRcS zeCth-N6Gs<;i|kh&9sl(1kUy*eMbDtyr=XPe8N@uXYcbF(KzRb_=mnm_y$G^*Z;4B zgL~K%#7}XT{9fK~T<$a4aR--h7w;eW?VQUD{>&SU8-FNgG`EI41R?@2oR}k*L5_oY9UqF{ZT$0Nx6@(bVC{cP>qsMMt07_OZt{ch+rf9=E>&`(v6Z~aZxt^X76)iJ+jpX7J%)X8)4 z{lHh?&vgo}QJm`i&T9YM3BKc5bX9H9`<;99^8F6ijoYzi%(Y|cWW8q0?`wuJh8(Ab@}&AoVeg{{;QDjy=snft!=%i%NRx(*J6xn>6$yiHMLKm?^j{H^bzbQ zT8;Hm-&L4<=D?TW?fJFqC10wXPv@ot9?Knk`MYA>^JTn8-hg*ddY^Evzw!MO`9hul zbF69T{4Pg+TsLazz_@tyu(xK^_7kibtvA+Mx9rRNS`O!^2NrJKCu|13TYY{OSq#H>pJ)4^cYJ75juY2opa1sda{cCN#Mkwz zVOs}uTW=p<3!YJ)+S%6dXMUUEPAWI-?0J2dFLSM_6*}slXO4`2KCmY@@@(zIa6?`0 zp7xh>Pvd>!W3y`~uEhI9);ET_>Gz2oThTqIpLZ$Vy^pq!@ts9%bO`5e;oZA4G|_!2#Vj9Bd zkKR9VXARFoe0Ac^rXRjpNuHyB?ZFsQ5x4{X>&H&M!{6Y*?Qb39{@Ac3$4+8SW3`|U zA{{?$Uh&&C>*o`8;2#A(h&k0<=l%(AUKLn~ImlJ{&o8Ql-Lxn7fS6ysbdqCE$!?~1qGVM8wYbTg4(VfwnhthxSQW*@AJMvt#Yo&eHwJI)gXW34ENWqu21Bu0-uCkJCbkN-8!)u z;S9sKbU1?sdne%x8qBfR?B7s3vH!b}eaN7;RVMr1a+h0+d4<%Ol@7*z*e#=H*B03= zE072E)BEtw`61Nh4TLj)%Gl`tkom)wn0^d-?uOmZJV{^UJ3R4W#NCBp-e=RarP#2&oQ-Zbl=IA?_WK-+<#G3GZ1w)v*z z`zFkJ;O=t@WxZFG^$29+;KtgCgU|hb{@m9i`STRg(cf&b-n8pJg+B8N(s||grt^ij za!6+?_Q|i}vZymUH zjP{VQe*z=3X#w5l;s^>1GE#{?=&$U`U z&x3rH%u9Wf&PyLCnwQ$xv+-%v@%h!Y6VES^{hqqO^5@2r7aW+lZ|>fS8&HPaG|Cj_ zZqUVA55I(ZRNC_QscgIU<--#vTJYWj?^URCah4d)QolRrbm2R`j{7Ix$1_KK z?AbQfi@E320OreR?GAGcdN$M8Ai zi>s^*#(|L^`fBVSApA9}C4zCYa|~nHS8=8(f4BVN9IWj*9g#8rN~|STj^t~m?8Z8x zJ?6vt&JWHU&Na<>Ah$R7h5UmvM{Sm&nrV=}8T2T7O(p1S>@m{v-Hk~r=qB#U2S8i1 za&Nu~>65mpaun(9E=m`cKldP==L^|bFFgd=`clrWszF`aeE*F3d6j=CZ&@qH&p+8% z;|o=c?Qss}EAV}iT{U~$?${t{us=J(A!*5!84v@A6v^7(RRazgPGc-Pv zyjN)wUwZD4NZ)p@8bg`v48HTQVJq&$Jk@8_HrzvJDgU$JuiQ4=L)FT^8ve>{!##AS z@;?*)%5B3vG+p^mhre>$a1WiK{Lg^Da@%kZO;i5U;IG^^+(T29|5W%Zw+;7DmGZBG zzjE7f4^2`2Q{b=MHrzv%%D)o+%5B3vRH6JU;IG^^+(SO)?}NW`+i(xr%HM{+a@%kZ z(S|3VE%+<94L90a$P>m4H2=tK$`;$J*6AJ#K+hA?mcs0J_OK7<3u3-SS*?J6*?ki0 zSS{aq>wtx`E&S_pr1jM-fZSo9)24-E0niM!;C)vI^d{uZX9a9)^k9u|^xm4oFCMG; zF783d$U|3*bD*D} z8yR144$gN)I?#GpTgi|4?AhZLt1#zTrTm=~zTq1mV;S&sx#{R{V@@s$Z2jG=m$4Vd z6xpw5<{aKl^Jrl;LfsV*_aLE*EQ}vq9q<-M?@<=$@_p8s>A*9Wa=!(OXg1VMHKvy~c+p;;;FV|4_aQeLOabGD83CTZ-qD)Hpt~Uh1=VjE{^K^xhQod(`Qz{iBD# z>qDq7^a6Ak(p-r5A<*Vc+!G5`9I2>5e{uqQeP?3*#c{S{Z3lYJIWUH`q1We(a_`pe zv6^a}1qT}ves9mg`k*t~{ev3d!2F?C{l1Y``ECOGbOiZ+3Hd%+*^Rn`u>8O|WZuM%Tz};JFXI2t5d0By}eEUo*6jboPdW$YW?Z z+^g9pAD?r(r=u9o{HVu}E@jQO10yw-gYy_Sim}c{KDO`NA?ERx1pz^x71U#tTl+&J zpuitLA`Eo8yR1?{Puj^+P!(-BCNA-yFKshxIJ%0XnV~V z6W^U$*Vw;ld1$Nxb3gQvr4I%U<+~k(cU_aK==g3B7n}?pAK4sfT{(>8B&sTM0e8jq&UiVw}%pvYuHjj28 z`ujXf*n}wG)A$yFIsyLh6Jvq4rLVv`OU3BbIp63tmN~Al4So3;V++o?EB{!_!Bg7N zYmjbL?sl9(d-82*Q#QlCTxmm>2|JPHpw7G-<)WSVNj#xbsax}RA`bm9*34r&^&^fB z+lw%5mqNG98)_NO+`wG$DxcM1KRa_|!Lu`SO}4e0x;C%V1K~XT zxnWUWm3AI`b|CwxgyUyZ?Ff z#X9iG{>wTb4_SANM=*|-`Yt$ty^^e@uoolr(mLb#3iL`XuVy)BKR>5|sO$c68U@ng_J2#u-)HKe`yXt>}ynb4l!*7Vu zcGcE*-eTH5@DJb6j{oYvp8TngGHP|?x%Z5nBcFeqBkz&V3V!#3F}3Lu*i+1J*4BhQ zduyV`flXoId%F3x3ES}x`OdFR)WD|8&Bh$eNw$s6x_EDX);_qqB4f)}?ZtPDJ1_Un+7hgQipLgZL=geJ{@d+l}|fXm`}(Z69b! zQ!Tz#dpu{4etyi#Jw9gROi|Psa*uq5f6V>NmwGe^gIu8B4CmG!25+C+pTG2b_y!s_ z-h7nz(xb@N>d2iB_k5IlEy~N^sc`)QXEV&@9yHU)FYw8>d=_43S?h3PT|qo+)bm31 z#A_|#4|_>GQ7-X3TRk!N6BzwTJTFjBG@QT}sV5jLFxErF6LKS-m@A4W9^%?Gm~>Oo zM4UjlH??h}yKx|tYK%p@8*g^I6Y1`hdvjwn9?djF8dnAC`=aSgqBj-l@AG0e_Pdd2 zs4?OWxUmG1Yz!rn>Bek2)tC&$`Ww@3Y9JbR(~XH#Z-bX)!+R2HP=t-$iA1I$-FND8 z{Hx2@km<+Av$xbGqv3EUxhWKnBnI46-I`1)>)uB8OcK@;ilt@XEp=`@)E#ppDuSf< z{3M}BBjskYsrWUaSk|puBm9@uxv5kl)#>ia)UB!8uq)|?Gj7CDksVYu=7!>Y8_F{L zzWCd~8Aq|nK`opswr{<%zSRk(Tqot;l#QlPNRigRtxY6@F&WMdJ*lXPgn zbrhR)9h_v!?Qv6XJnV|b+Y(Kuqw!uRJ=ou!h&hYXkkGB|8`_u`x+QB|A8tq|8t~4W zAec$)bmML+m<*-TuJTKC-w06)sz3(}D0vo#c_h(J6N;ZVkP!ijhs<%KqKGHyEKbZ2|O z5|0jQB@PJ>yHWI8gVrtMa?CFcs zs!xU!{rwO&^xiPKY6_8)P@1V|W)MUXYLAjUStO*EjmOc5N)4Q5|L$bfRYy*vgF9}2 zGBfDN_A)yB>FSGh2CF1r(KSP{lpBf+I=Y0Dl}*-xEg|Y4MLn5FVVMxtn$V&h0tudU zQvS$?0i~S z5<44&z@zGkY$`1JyLMBVY`>->*xIq)x~6SIE88HN4)!EcZf`1)jYoimd4i`>yX;@= zXPGDhoCK5;F4Y#0Q)!|!NSg*?unt;j!0m`8-B>j4GCwaJrH&%ev{GMg@#h4A+E61+O}7 zIJjsfQ;Cc)E#Mc&_>gwPSr`QoH=Kx2kD_meFm|K_b30Oro@fjv3VR{%i!&wM=|0G@=iD*0n!Tc!lUz~=el}Ja~ju6j=rsciVuDudwg}%9dSzRnN z2lwx+2eu&k~-747ZIKxd>4PnE~!c*ad76EV>rjjYy(Qf)4KvS?>1 zqlWtR?3BrDmyS>t(kK%XLS`5<%Dh>Z$MEN(Gu>#m!W^m4l&#W6(^-Us&e$$g zvSxP@oti2S8pf-HR5CG)z;3ELu}fA@n^+J%Y15&Sec*8v)*z}5-3bK+!m7yb`!%0<~^c9m@R@kpb`}lX72L(rd3WFS{eSSXul(?>@3k$bprLx%g}%vQ{Zk| zc@ZoGj5_APW-Y4|33{?=3{lqgDF5QLUKfy!aO!!xnyrY*o52ZP0pu-mx)SPEw1Kw@ za2hnv%iU$t`Oij^0!_PXo9R7xb-Z9*|; zUB_le+SX#6{X@$E%oM0|DFV0DO+GA?j;Xq!x*5w{1GQXb4Bl$dtm>DwXvWmU=;+ zytz1MkA)%>RFsa(H7O~qwBad_B?{WhU#d2NCL8zFt!%0Sivq8)<*s5TSIS0w~Vb0Lo=WI&!yWLp##54u#6fQpS z7b|ZeG3Vs+mR@XgFwubi??>MZr3Rh$%VBY=RnU?G6qT(%l-h|N&B=2-oAh{(b%rdu zFgrZPI1GkRZaSymAKyamdPplwLW5yo8n_MtKdP?Xy{9}IOO>A|a5b`HG zlh<1_%Y+MZDHJZr-1N?Mg5&s*wtx`Q+s<@iCZUUz+A-Jmc>R4cI! znSqA%V47l(;`(=Hu#w9L!e_Hu_Y!S0fOV3H=ISLVn>58S3k>ye5Kw&1q(X5yd$O$c zi4^8<9B43iE@oLV-vw7>EiZAfdg6xqIi2LX1m}_M+Waa>#9Xt9_J?}8USq6p(I!`h zEsWZg0a&%Lw77z^rcO^o5kthhIU33INpo1>K9}aN^guW155ZlR>g@)7oGe8OdQuBb z3p1W`Q4td}!VrSd6wqe~P^*D@wa~N=&GL&xip!6AT5oH?MJQ)b%!HvPj6rJ#+|YLcp`aIDxJv= z+`Mb>V}YjSE1FlXx_I>mKhQ{C;-_1b87@IY);L&G#_CJV?G1$o3o9*7e-tlw3=+#m7Qm`}S5W6KsvU+uURfAFfFZ zyDltDXtk!PXFUwxf_WSIgGaCMFjeqGa^gKgZ!_GO z2cm^6Ih(+qtI&9)?duQm)r2*m@PNXMi`5*l_Nw2#kj_y37VD<##W$m2$dOt#BdOJH z^={>J;ey8QXuL7qH+`YwNtq*5BD*b(3UBq&8EBfmWV+*oF z^RIi|>Rj(!Z~-FLEmFzVIrXuO)3iL`Tz`oZNg!&IMiOxs4>#PGa4wvL z--6e&jA7BIp`ba9_ErEcoPLpW=_H(fPmSxDR0C{cQBP-WBMiF6cs3SuE|@Os0F7u_ zpK-tO+0TCV#mn$*fw=B_V@qde=aI`Q6n^Ewzqsd~d-9j@ojb3e)ycB5_^u)Z1^q`Q|S#6NxkYzYOBCTh377$KUFXL?V?fw!#bN9Q)bN zepb~oMd20VI1~~w**X^;eTx3A;dPE#4n8HRf&fvH=dVYi7#$( zk*BN!FNRZR{`tJ$zPJ&aBHvQSH<&OMA}$S!1k5%%qj;z8nHk|!BAu?!U_}@!JkfZ4 zH^jD{vuPR}&>?C~_2Op0P%7L91smpqERqWKM^-h<*(Gx?Uu6!IIZ)<6nFD1GlsQo5 zK$!z&4wN}i=0KSPWe$`%Q073H17!}BIZ)<6nFD1GlsQo5K$!z&4wN}i=0KSPWe$`% zQ073H17!}BIZ)<6nFD1GlsQo5K$!#oKRM9$KAiD_9nhRtENdC=)wnm|?!ukHeJgH$ zml_}%Us_*j?U>vnv@vbeX_J2>nRNr-P!k&JZ=7<+FE{EOe7Ogx5o{62R+J`(2l zx7GNFmEYh#geSiX_T%Q>UcBUY!#?qy>oLTe13&H$b}sIBKuq^RM4p8w&M&cM ztY4oz$?xH({T9y%!m-C4PR>DD@Epa*!`SaP!F|F`_wt`)Y@e<^a38@9`91k3$c}QA%N+Ql;(+dl z`uRsyxN>329QYICz&?zP`*Gigdj$8RxF5s)1a4Yv?5FyQd>bdR-y|8d8g7R_*u^yr zcR>7l5wchA)JxO>p0vk;#ZUauVRc=as6<&iQOOtnfK@N*48!7k~Z;+ zE2pWs0l)jLZ~EXx%4w}z3d)ch>W*5r1Lu^Log1vG%4zl)_N>a;_8j|c``n7T_IWlo zrJnS{(T?J(5Vb`8JuD;8#^zO_ENI%;67!d0()N~E{!)%MvBb28=IOWRvw8If}Ui6tTJV~J_e&k+8ZBjSN@`OCdq zJuDO2?co|hIO1W>1mqlq&k8XkkaG};=kQ@2$DD*$g_>z-`@X`$0hi*E466_`4af>? zTV53wPI|xb+XZ~FVzCvM>K4XNFewTr- zQW!t2_R@dN2xtA@@ya_x)b|Y|oO>h@&q2fL@*U*_S6tPC{+NMpgg>$0pg;D0MGkJW zeAf8|jGw|wY|tMy!Uet3OPqo4AwBSFJal=Qjd0ShHt^jF?=t8gGr~!)^&ZpzjKU5? zUZ+320G{HK<$uM%Bk(6~$5Ye$>jW|WNc#B({xW=tD~l zaF+im1HY#5wNQPU{>X*!6qhW|oFxT30VnZ(gT8NBA)M)t7}$q$6L%Qpf5Yn(GW}x) zUI04cq(Q&7u{ixM1M?&R;!%U%Qsa;2ryk3QF9RL%qexQMceI3Fk6)y313mE~BmE=G zi_7zlfjdD*yu{$oQEt*MF2&D_3mC@313U8=xnC z5<{V;KX_#^y|yP51^hhdiTy@-4s{j6S)OAC{s+(#A2#T( z?JcH%!oa@)J@GI|ba__y71I}Nnra;GCT*NdMS(uKvzY!#11|+V@f}8c&(*e*YA?^0 z0$v3=;vGi%T{jh{ukAMS^X_VC$F;%K(B*&kW5x884|&P)Y{wl1O#V&#Q~^H)eh{~x zS4i&!m7ciJpHRNzIGMwG#>RMio{+b`|4;}=ajdQf3z+F^dxzy^_;C(S;*xlYvL`so z{VnQEyb0y7fj1$m-9Ddn2mFbz2A)>s!&oWt4q!j94vzspaYiA0FYuEFz6)xb5tyMfXD1br>=9R~gY@UVf`0^bMBCSd!WkMs`#OMahc zwITe(nLevUg>L~~4TD*y9|Udz*8I2;xXr-q7n^`}`R@eYY~arUw*v=M`hNv{D=;3S zJYR%kH?U6sVkETBz>gsO4g((o-VdzH|DS-5oK=Ybec;!Cb$R|9a1L14=S|?Z415Ck zm=WKHf*dz+4e$wIo!)%lca3n41J;Z}`m2Da8F&M*ADCq1|5b3z0p6|f4ZsJD@P6R? zjQAf19s$<*b6kGZ2>$}`Ap<`N{3I|QBEJ{lcnX*aF#jXOGYjG4z@xyLKfeHe9$1&p zhbht~e<7TQNOk~&Or*C6_*x@;C2$vTiwbWA9x>>*0Y3z+>k|fk)Cf-jKW2pA27Jf} z{}k{Oz`8!4A%=d^<@qA;lLr0@@KXl5ohj9x%emZ@r$u`Tb<_dld37FDbto>;6!P@3$UDej3~2?Wv9{+vh2S>+(|` z{xk4=)Q2k}#BTuW_9A{8crEyOhYJ6{z&T(|UqQuz_SmGtX97=q6gmqc#Q1Z8_40JigjQoZbz8skCd!NEvf!SW23SSTW+E<}76pjM3 zJ^Tva46Nmg<+~kt6Y|Tb@B_fC|2ya+4F5bZ-(~Wm{q+@K%3n;C_gf|S?}5$wJP&M^ z??=E(9tVwz|6|}bga7{<*evg_fzA3?po5$Bn+a^TM=kJS@F$?^696{(y&71rZ`sg~ z>wwMrZw01&I;#FVfZzBsuu88VnEhw9!ncxM=?n7b4q$SQ7t{X&u-RUZ03S#BwETP% z*p!!NfCC0UUIl&v?YT&#T5bJ92_8jOdOgaA^{96cZkF$tz|)NMsxVJ5<#i6QDQ^z2 z**@%_dOeX}79ctCz8?=%X@K2{r(Z*TrZ~mRs(y; z_GDLnM>D$wFDk*mD8VaB@Fg?6?8SFE9VOviCHN*_vpw%Z`Erm~T@68x(YY;6yxGEEH$Yf;Er6tRLq zyv7P-bZfIw)Cr-aO{PdR4VGF16;TWrEFLt7}aL`9IJZOnsoP*-z z2up6H9~1{8Sln|m$b*i8JEJ(V2pf_H=_UQuS%KINm8VHWEN|;lc|M#@iASV0V2{{z zhPzN>=Us6GNH8nT*C`5++pY(3)&){ipeL2+5AqPMB1&1{Zfpk|Z@}Sl8Eoon<{&oQ z406+H?3Rf9u$_6@4Tj~WzLq!=i~Fet5l0>FrVA@hsw+xM@k4AzuXf`Ns?B6o)&*bg z;9J8Oq&$ivrm|Ms#`lgDQfz zo2=k(8oMPc7K>t7^4J=yz>*+YWbQK??B!v8a);mEY$z28CUN+brJWHA4b44taYCOu zQboubPme+yh&{$FaR!dqR#`cFxG`~3ZCtERX%P)x;F%UQ6jUAFVu|D3g6U9yGUleS z8M`=a3Q~=2lXaMI$GI`FYzSFR3LnlGvN8ifaWsY{C=@5eu`N6bP|6@qaf1`5gvEJI zAa*y_=i&r)iNrqHs;{K6F@6x+h+Fb>BkTqp#CFe7oEIw3oj?!e5fvU1XVa;m?ra*p zP#j-}Ljyt)p6I19kF&v9iXqV!v0#E#RJ}P!vBJSCvVtNJ>6E(?7x=~4GQ>+=ZbwUL zff|rGi^f5Vi&LM1>P$1iA4MQpr~tMS#^%VLV29PgRyr~B@G;deDk9Ef5yy{#y*O4Y zD05XUAhm)DDQ*>U{FXPM2nJlsZ}Y-z=MgE(NeH;&z#qhU5U_Y3D!CCe^{rtFnM)-AToM;Nxu zM~4u5><{8VLFg~!D5SB__)>61UNVB&S>zD=fiVkh(Xa z++Gw`8=wb+MFt|$19vPV33}Zk!sXfM$Gm7!nKD0-39_1OPg(RxN~WkQA_!FjfGCnq zXuagcK${^%wj3O?A>b%5l@Ud2z@f51)qBx+3X&fz15~o8oTyJ))<;GVym4>xVuT|p z%~NP9Mr!-WmFu=_ZUu#ijZ+w9{6c$qk#Y2!XhY9~jL*gaJGZpzw!FN3>-u%=!L1uN zZr{)u>|D3LeFIy#SFyKH52I8O?uV}{#YC}DyjPy0`ebDjXhAHB6eD9Wwqe9g_n3_s zGnx$oIKTlMN5{5Y-oAN#YjAl(GmH-$#E>#PQlV(tH84gL9%ktItZ24+(t~j`4Kzcv zJ1ljVI26DnM(U`R=hKXmhIfT1oZ{>QBLI|{M9lCAZtmOy9jMg}SWRWqDUJsU2D{T~ zm1Pk6GZZl*(u^=5hEFKrOd@XhfnCvzf&1P5aB|S_2)g3L3~3r0{v<4^4>T?hHO1jp ztC~GZ@JW^tje?$@jYIYC^g^30L~j}p*7#VTwgApH0 z=`WSQ2v1`#G>za}Z$E4tX}7a+IW8IH4sPCxKp2-n9*jp3&fx4;g8)95H57Y<`%LDb zyQEU_1WvDzC;1t){W~L3lN1e(DjNi__f)1ut%t+@GVO_8R9&{XJch}PR}fin0f#`) zU@i)eowC7kGL0!b13ftXCZ6drV)x*fNwZU8+EpSUkr@2E7~u0jI{uzyxsln_;@+@InK_rZzdQ>@$PF z!U0G9nNT;LkO}eZ(=MEf<2Llhvkl$ZXe?46jaUuRinoMsUkIjoLu4?H6y!6Lk|ApA z{UQ)V7$%aWmyRSX-Aqp8oPwEy+;MzT7$w6byg}v!t!QBq*xygPR^*EVD^k(! zEaq=moH)&kudnc$L98P4+g9FO|J4`Qs(3ZvMv$Q6H?O>BGeBJoF&Zyq_lxmWIT;4z6I5j=x*u&EKo(OXu4G4}5Pd z@*Ty(Fz*N8r}JeL-u#A;zfGf?-`esHz|DM_mZp!v&Glu{@f%#;*MdNY^ND3Ei)Sa3 zZar@PE{^vxMRzXzG~J)W&Gh+-k89|>jpZ~i-9dv+|JLnY7D8Q2kM};@Iz6tT@s2&9 zh!hRcowzj}-wp9*x%I`gcn#ww9kb#ZCGYtQ0Mw=9@Ldq-l6&yX9FaG}bX|0M4@x?b z9^aAi)?oG7S9|0L3dn{vgAbmY@7 zaqILXxA8um9_k_;?{{%)I<8SWI5@>mK~tA*4}JqlH}mD%YGAr;9e$yZpr)G&FZu>l zeA0QJp2Ck|y#4rtw33R<+6uZ4XrO2aNo$BDz7w*oVZ3YS=d~Y2AnV}A%_6gG`l?=R cTW6B->S8*)xZZElo!e}S_hKRte>B~{0Ny2KP5=M^ literal 78228 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 vI}L@W$_#e<6wZXZZdH=2h~R diff --git a/tests/layout-proxy.py b/tests/layout-proxy.py new file mode 100644 index 0000000..99dbe7c --- /dev/null +++ b/tests/layout-proxy.py @@ -0,0 +1,63 @@ +"""Test-only JSON relay with a controlled serverinfo LED layout. + +Only the configured TV may connect. Receiver settings remain unchanged. +The control file can select count/shift, an invalid layout or passthrough. +""" +import argparse +import json +from pathlib import Path +import socket +import socketserver + +parser = argparse.ArgumentParser() +parser.add_argument('--bind', required=True) +parser.add_argument('--port', type=int, default=19445) +parser.add_argument('--upstream', required=True) +parser.add_argument('--upstream-port', type=int, default=19444) +parser.add_argument('--control-file', required=True) +args = parser.parse_args() + + +class Relay(socketserver.StreamRequestHandler): + def handle(self): + if self.client_address[0] != args.upstream: + return + try: + with socket.create_connection((args.upstream, args.upstream_port), timeout=3) as remote: + incoming = remote.makefile('rb') + while line := self.rfile.readline(2 * 1024 * 1024): + command = json.loads(line) + remote.sendall(line) + reply = incoming.readline(2 * 1024 * 1024) + if not reply: + return + if command.get('command') == 'serverinfo': + control = json.loads(Path(args.control_file).read_text(encoding='utf-8')) + response = json.loads(reply) + if control.get('invalid'): + response['info']['leds'] = [] + elif 'count' in control: + count = control['count'] + if not isinstance(count, int) or not 1 <= count <= 16384: + return + shift = control.get('shift', 0) + response['info']['leds'] = [ + {'hmin': (i + shift) / count, 'hmax': (i + 1) / count, + 'vmin': 0, 'vmax': .05} + for i in range(count) + ] + reply = json.dumps(response).encode() + b'\n' + print(json.dumps({'serverinfo': control}), flush=True) + self.request.sendall(reply[:10]) + self.request.sendall(reply[10:]) + except (OSError, ValueError, KeyError): + pass + + +class Server(socketserver.ThreadingTCPServer): + daemon_threads = True + + +with Server((args.bind, args.port), Relay) as server: + print('Layout relay ready', flush=True) + server.serve_forever() diff --git a/tests/receiver-ui.test.js b/tests/receiver-ui.test.js index dccf20a..57a7e31 100644 --- a/tests/receiver-ui.test.js +++ b/tests/receiver-ui.test.js @@ -1,10 +1,10 @@ 'use strict'; const assert=require('assert'),fs=require('fs'),vm=require('vm'); -const ids=['host','port','piccapPort','receiver','token','clearToken','endpoint','handover','autostart','error','status','regions','start','stop','refresh','saveTarget','testConnection','testResult','diagnostics']; +const ids=['host','port','piccapPort','receiver','token','clearToken','endpoint','handover','autostart','error','status','regions','start','stop','refresh','saveTarget','testConnection','testResult','diagnostics','profile','customEditor','customProfile','saveProfile','profileStatus']; const elements={}; ids.forEach(id=>elements[id]={value:'',textContent:'',disabled:false,checked:false,attributes:{},style:{},addEventListener(){},focus(){},appendChild(){},setAttribute(k,v){this.attributes[k]=v;},getAttribute(k){return this.attributes[k];}}); const requests=[]; -const status={returnValue:true,version:'0.9.0',host:'127.0.0.1',port:19444,piccapPort:19400,receiver:'HyperHDR',tokenSet:true,piccapInstalled:true,autostart:true,captureState:'Histogram',playbackProtection:'protected',connectionTest:{state:'Passed',ledCount:120,elapsedMs:300,error:''},uid:0}; +const status={returnValue:true,version:'0.9.0',host:'127.0.0.1',port:19444,piccapPort:19400,receiver:'HyperHDR',tokenSet:true,piccapInstalled:true,autostart:true,captureState:'Histogram',playbackProtection:'protected',connectionTest:{state:'Passed',ledCount:120,elapsedMs:300,error:''},uid:0,calibrationProfile:'auto',effectiveCalibration:'g4',tvModel:'OLED65G42LW.DEUQLJP',customModel:'',customPoints:[]}; class Bridge { call(uri,data){requests.push({uri,data:JSON.parse(data)});this.onservicecallback(JSON.stringify(uri.endsWith('/status')?status:{returnValue:true}));} cancel(){} @@ -21,4 +21,7 @@ elements.piccapPort.value='19446';elements.host.value='10.1.0.100';elements.toke const saved=requests.find(r=>r.uri.endsWith('/settings'));assert.strictEqual(saved.data.piccapPort,19446);assert.strictEqual(saved.data.host,'10.1.0.100');assert(!('token' in saved.data)); elements.testConnection.onclick();assert(requests.some(r=>r.uri.endsWith('/testConnection'))); assert.strictEqual(elements.token.value,'');assert(!elements.diagnostics.textContent.includes('fixture-token')); +elements.profile.onclick();assert(elements.profile.textContent.includes('LG G4'));elements.saveProfile.onclick();assert(requests.some(r=>r.uri.endsWith('/calibration')&&r.data.profile==='g4')); +context.profile='custom';context.showProfile();elements.customProfile.value='invalid';elements.saveProfile.onclick();assert(elements.error.textContent.includes('valid JSON')); +elements.customProfile.value=JSON.stringify({model:'OTHER-TV',points:[{position:0,region:1},{position:2,region:5}]});elements.saveProfile.onclick();assert(requests.some(r=>r.uri.endsWith('/calibration')&&r.data.model==='OTHER-TV'&&r.data.points.length===2)); console.log('PASS: receiver fields, port validation, saved-token retention, test control and diagnostics'); diff --git a/tests/remote-navigation.test.js b/tests/remote-navigation.test.js index 164ef9a..1cc26b0 100644 --- a/tests/remote-navigation.test.js +++ b/tests/remote-navigation.test.js @@ -30,6 +30,10 @@ key(39);assert.equal(doc.activeElement.id,'start');key(37);assert.equal(doc.acti buttons[2].tagName='INPUT';buttons[2].type='text';buttons[2].focus(); assert(!key(37));assert(!key(39));assert(!key(13));assert.equal(doc.activeElement.id,'refresh'); key(40);assert.equal(doc.activeElement.id,'autostart');key(38);assert.equal(doc.activeElement.id,'refresh'); +buttons[2].tagName='TEXTAREA';buttons[2].focus(); +assert(!key(37));assert(!key(39));assert(!key(13)); +key(40);assert.equal(doc.activeElement.id,'autostart'); +key(38);assert.equal(doc.activeElement.id,'refresh'); buttons[2].tagName='BUTTON'; buttons.forEach(button=>button.disabled=true);assert(key(39)); console.log('PASS: arrow navigation, wraparound, disabled controls, OK once per press, pointer handoff, focus recovery, Back preserved');