Loading files
ea39f3ad2This file is pinned to the selected release. Download the original to open it in your design tool.
// ═══════════════════════════════════════════════════════════
// PatternFlow - Device web console home (PROGMEM HTML bundle)
//
// Served at http://patternflow.local/ by core_audio_ws.h. A live status line
// (pattern, fps, heap, signal — one small JSON poll) above the feature rows,
// grouped by what they are for:
//
// PATTERNS 01 the library → /patterns
// SETUP 02 Wi-Fi, 03 MQTT → /wifi, /mqtt
// DEVICE 04 update, 05 status → /update, /status
// EXPERIMENTAL 06 audio sync → /audio
//
// The look is the device's own, not the marketing site's: near-black,
// cream type, the LED orange doing the accent work — the console is opened
// next to a glowing panel in a dark room, and a live LED frame reads right
// on black in a way it never did on paper cream. patternflow.work stays
// paper; the instrument is dark.
//
// The update banner is the browser's doing: it fetches the public flasher
// manifest over HTTPS and compares against this device's version. The
// device never talks to the internet — same ferrying trick as the community
// installer — so the check costs the firmware nothing. Silently absent when
// the site is unreachable (offline LAN) or CORS says no.
//
// License: MIT
// ═══════════════════════════════════════════════════════════
// The page body below is generated from console/home.html — edit that,
// then run: python firmware/toolchain/console_pages.py build
#pragma once
#include <pgmspace.h>
const char HOME_INDEX_HTML[] PROGMEM = R"HTML(<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="/pf-console.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Patternflow</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' fill='%230C0B09'/%3E%3Crect x='5' y='5' width='6' height='6' fill='%23FF5C2E'/%3E%3C/svg%3E">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
@font-face{font-family:'Pretendard';font-weight:700;font-style:normal;font-display:swap;
src:url('https://cdn.jsdelivr.net/npm/pretendard@1.3.9/dist/web/static/woff2/Pretendard-Bold.woff2') format('woff2')}
:root{--bg:#0C0B09;--panel:#131110;--ink:#EDE7DB;--muted:#8A8272;--faint:#5A5546;
--ghost:#221F18;--rule:#242118;--led:#FF5C2E;--ok:#57B87F;--warn:#D9A03F;
--sans:'Inter',ui-sans-serif,system-ui,sans-serif;
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
--pretendard:'Pretendard',ui-sans-serif,system-ui,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
body{min-height:100vh;background:var(--bg);color:var(--ink);
font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;
padding:24px 24px 64px}
.panel{width:100%;max-width:560px;margin:16px auto 0}
header{display:flex;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--rule);margin-bottom:28px}
.dot{width:7px;height:7px;background:var(--led);border-radius:1px}
h1{font-size:15px;font-weight:600;letter-spacing:.01em;margin:0;flex:1}
.sub{font-family:var(--mono);font-size:11px;color:var(--faint)}
/* ── Device card (one small status poll — the device never streams pixels) ── */
.screen{background:var(--panel);border:1px solid var(--rule);padding:20px 20px 6px}
.now-hdr{display:flex;justify-content:space-between;align-items:center}
.now-k{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.now-nav{display:flex;gap:5px}
.now-btn{
background:transparent;border:1px solid var(--rule);color:var(--muted);
font-family:var(--mono);font-size:12px;line-height:1;width:28px;height:24px;
border-radius:2px;cursor:pointer;display:inline-flex;align-items:center;
justify-content:center;transition:all .15s ease
}
.now-btn:hover{color:var(--ink);border-color:var(--led)}
.now-btn:active{background:var(--ghost);transform:scale(0.92)}
.now{font-size:25px;font-weight:600;letter-spacing:-.02em;line-height:1.15;margin:7px 0 3px;min-height:29px;overflow-wrap:anywhere}
.now-sub{font-family:var(--mono);font-size:11px;color:var(--muted);min-height:15px}
/* ── Panel switch ─────────────────────────────────────────────
A segmented pair, not a sliding toggle: /mqtt already picks between
states this way (.ch / .role with an .on class) and this is the same
gesture, so the console keeps one vocabulary. It also shows which state
you are in rather than asking you to read a label and infer it. */
.pwr{display:flex;align-items:center;gap:12px;margin-top:16px;
padding-top:13px;border-top:1px solid var(--rule)}
.pwr-k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;
text-transform:uppercase;color:var(--faint);flex:1}
.pwr-btns{display:flex;gap:6px}
.pwr-b{font-family:var(--mono);font-size:11px;letter-spacing:.08em;
text-transform:uppercase;padding:6px 14px;cursor:pointer;
background:transparent;color:var(--muted);border:1px solid var(--rule);
transition:color .15s ease,border-color .15s ease}
.pwr-b:hover{color:var(--ink);border-color:var(--muted)}
.pwr-b.on{color:var(--ink);border-color:var(--led);box-shadow:inset 0 0 0 1px var(--led)}
.pwr-note{font-family:var(--mono);font-size:10.5px;color:var(--faint);
min-height:14px;margin-top:7px}
.pwr-note.err{color:var(--led)}
/* ── Brightness ── under the switch: the other thing a hand at the panel
does (K1's long-press session), so the console has it too. */
.bri{display:flex;align-items:center;gap:12px;margin-top:10px}
.bri .pwr-k{flex:none}
.bri-v{font-family:var(--mono);font-size:11px;color:var(--muted);width:34px;text-align:right;flex:none}
/* ── Live parameter sliders (K1..K4) ────────────────────────── */
.ctrls{margin-top:16px;padding-top:14px;border-top:1px solid var(--rule)}
.ctrls-hdr{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.ctrls-k{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.slider-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.slider-row:last-child{margin-bottom:0}
.s-label{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--muted);width:20px;flex:none}
.slider-row input[type=range],.bri input[type=range]{
flex:1;height:6px;appearance:none;-webkit-appearance:none;background:var(--ghost);
border-radius:3px;outline:none;cursor:pointer;accent-color:var(--led);touch-action:none
}
.slider-row input[type=range]::-webkit-slider-thumb,.bri input[type=range]::-webkit-slider-thumb{
appearance:none;-webkit-appearance:none;width:18px;height:18px;border-radius:50%;
background:var(--ink);border:2px solid var(--led);cursor:pointer;transition:transform .1s ease
}
.slider-row input[type=range]:active::-webkit-slider-thumb,.bri input[type=range]:active::-webkit-slider-thumb{
transform:scale(1.2);background:var(--led)
}
.slider-row input[type=range]::-moz-range-thumb,.bri input[type=range]::-moz-range-thumb{
width:18px;height:18px;border-radius:50%;background:var(--ink);border:2px solid var(--led);cursor:pointer
}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:0 20px;margin-top:16px}
.stat{padding:10px 0 9px;border-top:1px solid var(--rule)}
.stat .k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.stat .v{font-family:var(--mono);font-size:12.5px;color:var(--ink);margin-top:4px;
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat .bar{height:3px;background:var(--ghost);margin-top:7px}
/* The edition block is a link, so it must not inherit link styling and
must not look clickable in the middle of a list of readouts. The
sub-line is where the one thing worth saying goes. */
a.stat{display:block;text-decoration:none;color:inherit}
a.stat:hover .v{color:var(--led)}
a.stat:hover .sub{color:var(--ink)}
.stat .sub{font-size:11px;line-height:1.45;color:var(--faint);margin-top:5px;
white-space:normal}
.stat .bar i{display:block;height:100%;width:0;background:var(--led);transition:width .3s}
/* ── Update banner (hidden until the browser proves it) ───── */
#upd{display:none;margin-top:14px;border:1px solid var(--led);padding:11px 14px;
font-size:13px;color:var(--ink);text-decoration:none;
display:none;align-items:baseline;gap:10px}
#upd .tag{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--led);
text-transform:uppercase;white-space:nowrap}
#upd:hover{background:rgba(255,92,46,.06)}
#upd .go{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}
/* ── Feature rows ─────────────────────────────────────────── */
.rows{margin-top:36px}
.pf-kicker{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
color:var(--faint);margin-bottom:6px}
.pf-kicker + nav{margin-bottom:28px}
nav{border-top:1px solid var(--rule)}
nav:last-of-type{margin-bottom:0}
.pf-row{display:block;position:relative;padding:16px 92px 16px 0;border-bottom:1px solid var(--rule);
color:var(--muted);text-decoration:none;overflow:hidden;transition:color .15s ease}
a.pf-row:hover{color:var(--ink)}
a.pf-row:hover .pf-ghost{color:var(--muted)}
.pf-ghost{position:absolute;right:-2px;top:50%;transform:translateY(-50%);color:var(--ghost);
font-size:52px;font-weight:300;letter-spacing:-.04em;line-height:1;pointer-events:none;transition:color .15s ease}
.pf-row-t{font-size:17px;font-weight:500;letter-spacing:-.01em;line-height:1.3;color:var(--ink)}
.pf-row.soon .pf-row-t{color:var(--muted)}
.pf-row-d{max-width:36ch;margin-top:3px;color:var(--muted);font-size:13px;line-height:1.45}
.pf-row.soon,.pf-row.soon .pf-row-d{color:var(--faint)}
.tag{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
border:1px solid var(--faint);color:var(--muted);padding:3px 8px 2px;margin-left:10px;vertical-align:2px}
footer{margin-top:34px;display:flex;justify-content:space-between;gap:16px;
font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
footer a{color:var(--muted);text-decoration:none}
footer a:hover{color:var(--ink)}
@media(max-width:560px){body{padding:12px 14px 52px}
.pf-ghost{font-size:42px}.pf-row{padding-right:70px}
}
/* Desktop: the whole console on one screen — panel pinned left, rows
right — instead of a phone column floating in empty space. */
@media(min-width:960px){
.panel{max-width:1120px}
.grid{display:grid;grid-template-columns:500px minmax(0,1fr);gap:60px;align-items:start}
.left{position:sticky;top:44px}
.rows{margin-top:0}}
</style></head><body>
<main class="panel">
<header><span class="dot"></span><h1>Console</h1><span class="sub">device</span></header>
<div class="grid">
<div class="left">
<div class="screen">
<div class="now-hdr">
<span class="now-k">Now playing</span>
<div class="now-nav">
<button class="now-btn" id="pat-prev" title="Previous pattern" type="button">←</button>
<button class="now-btn" id="pat-next" title="Next pattern" type="button">→</button>
</div>
</div>
<div class="now" id="now">—</div>
<div class="now-sub" id="nowsub"></div>
<div class="now-sub" id="nowperf" hidden></div>
<div class="pwr">
<span class="pwr-k">Panel</span>
<div class="pwr-btns">
<button class="pwr-b" id="p-on" type="button">On</button>
<button class="pwr-b" id="p-sleep" type="button">Sleep</button>
</div>
</div>
<div class="pwr-note" id="pwrnote"></div>
<div class="bri">
<span class="pwr-k">Brightness</span>
<input type="range" class="pf-slider" id="bri" min="2" max="100" step="1" value="80" aria-label="Panel brightness">
<span class="bri-v" id="bri-v">—</span>
</div>
<div class="ctrls" id="ctrls">
<div class="ctrls-hdr">
<span class="ctrls-k">Live Knobs</span>
</div>
<div class="slider-row">
<span class="s-label">K1</span>
<input type="range" class="pf-slider" id="sl-0" min="0" max="100" step="1" value="50">
</div>
<div class="slider-row">
<span class="s-label">K2</span>
<input type="range" class="pf-slider" id="sl-1" min="0" max="100" step="1" value="50">
</div>
<div class="slider-row">
<span class="s-label">K3</span>
<input type="range" class="pf-slider" id="sl-2" min="0" max="100" step="1" value="50">
</div>
<div class="slider-row">
<span class="s-label">K4</span>
<input type="range" class="pf-slider" id="sl-3" min="0" max="100" step="1" value="50">
</div>
</div>
<div class="stats">
<div class="stat"><span class="k">Patterns</span><div class="v" id="s-pat">—</div></div>
<div class="stat"><span class="k">Storage</span><div class="v" id="s-fs">—</div>
<div class="bar"><i id="s-fsbar"></i></div></div>
<div class="stat"><span class="k">Wi-Fi</span><div class="v" id="s-wifi">—</div></div>
<div class="stat"><span class="k">Address</span><div class="v" id="s-ip">—</div></div>
<div class="stat"><span class="k">Memory</span><div class="v" id="s-heap">—</div></div>
<div class="stat"><span class="k">Uptime</span><div class="v" id="s-up">—</div></div>
<div class="stat"><span class="k">Firmware</span><div class="v" id="s-fw">—</div></div>
<!-- Which edition this panel is running. It was a line of small print in
the footer, which is where you put something nobody needs — and this
is the first thing to know when a feature you expected is not here.
Same block as everything else, and a link either way: on an edition
it goes to that edition's card, on the default it goes to the shelf,
because "where are the other ones" is the question the default
raises. -->
<a class="stat" id="s-ed-block" href="https://patternflow.work/editions">
<span class="k">Edition</span>
<div class="v" id="s-ed">—</div>
<div class="sub" id="s-ed-sub"></div>
</a>
</div>
</div>
<!-- Points at the SITE, not this device's own /update: that page reads the
release manifest and hands the new image to this board over Wi-Fi, so
there is no .bin to find and nothing to download by hand. -->
<a id="upd" href="https://patternflow.work/update" target="_blank" rel="noopener">
<span class="tag">update</span>
<span id="updtext"></span><span class="go">how to update →</span></a>
</div>
<div class="rows">
<span class="pf-kicker">Patterns</span>
<nav>
<a class="pf-row" href="/patterns">
<span class="pf-ghost">01</span>
<div class="pf-row-t">Pattern library</div>
<div class="pf-row-d">Drop in a <b>.pfm</b> module or a whole <b>.zip</b> pack — play, arrange, delete.</div>
</a>
</nav>
<!-- Whatever features this firmware carries, one row each. The rows are
not written into this page: they arrive from /api/status featureNav,
contributed by the loaded features, so a page the core has never heard
of still gets a row and a build with none gets no group. This page
used to hand-write rows for /show, /mqtt and /weather - capability-
gated, so they degraded, but named in a core page all the same, and
the first feature page the list did not know about proved the point by
having no row at all. -->
<span class="pf-kicker" id="featKick" hidden>Features</span>
<nav id="featRows" hidden></nav>
<span class="pf-kicker">Setup</span>
<nav>
<a class="pf-row" href="/wifi">
<span class="pf-ghost">03</span>
<div class="pf-row-t">Wi-Fi</div>
<div class="pf-row-d">Remember several networks — the device joins whichever one it finds.</div>
</a>
<a class="pf-row" href="/knobs">
<span class="pf-ghost">04</span>
<div class="pf-row-t">Knobs</div>
<div class="pf-row-d">Which way each encoder counts, and how many edges make a click — for the parts that differ. Nothing to rebuild.</div>
</a>
</nav>
<span class="pf-kicker">Device</span>
<nav>
<a class="pf-row" href="/update">
<span class="pf-ghost">05</span>
<div class="pf-row-t">Firmware update</div>
<div class="pf-row-d">Drop a .bin — the device flashes itself over the LAN and reboots. Patterns and Wi-Fi are untouched.</div>
</a>
<a class="pf-row" href="/status">
<span class="pf-ghost">06</span>
<div class="pf-row-t">Status</div>
<div class="pf-row-d">Frame rate, memory, storage and network — what the device is actually doing.</div>
</a>
</nav>
</div>
</div>
<footer><span id="host"></span>
<a href="https://patternflow.work" target="_blank" rel="noopener">patternflow.work</a></footer>
</main>
<script>
function $(i){return document.getElementById(i)}
$('host').textContent=location.hostname;
// ── What this build actually has ───────────────────────────────
// Feature rows are not written into this page. Whatever features the firmware
// carries report their pages in /api/status featureNav — path, label, one
// line — and the Features group is built from that. A build with none gets
// no group, and a page the core has never heard of still gets a row. This
// used to work the other way round: rows for every feature in the markup,
// deleted when the capability was absent, which meant a core page naming
// features and a new feature's page getting no row at all.
//
// Rebuilt from scratch on every status (gate can fire twice at load), then
// everything renumbers so the list still reads 01, 02, 03.
function gate(s){
var i,nav=(s&&s.featureNav)||[];
var f=$('featRows'),fk=$('featKick');
if(f){
f.innerHTML='';
for(i=0;i<nav.length;i++){
var e=nav[i];if(!e||e.length<2)continue;
var a=document.createElement('a');
a.className='pf-row';a.href=e[0];
a.innerHTML='<span class="pf-ghost">00</span>'+
'<div class="pf-row-t"></div><div class="pf-row-d"></div>';
a.querySelector('.pf-row-t').textContent=e[1];
a.querySelector('.pf-row-d').textContent=e[2]||'';
f.appendChild(a);
}
f.hidden=fk.hidden=!f.querySelector('.pf-row');
}
var ghosts=document.querySelectorAll('.rows .pf-ghost');
for(i=0;i<ghosts.length;i++)
ghosts[i].textContent=(i+1<10?'0':'')+(i+1);
}
document.addEventListener('pf-status',function(e){gate(e.detail)});
if(window.pfStatus){gate(window.pfStatus)}
// ── Device card ───────────────────────────────────────────────
// One status JSON, ~1.7 KB every 3 s — everything on the card comes out of
// it. The device streams no pixels: a frame-preview endpoint existed for one
// day and captured the render loop — see the note in core_patterns_http.h.
function dur(s){
var d=Math.floor(s/86400),h=Math.floor(s%86400/3600),m=Math.floor(s%3600/60);
if(d)return d+'d '+h+'h';if(h)return h+'h '+m+'m';
if(m)return m+'m';return s+'s';
}
// Optional status chips from feature appendStatus fields. Labels stay
// feature-agnostic so this core page never names a feature (R5).
function paintPerf(s){
var el=$('nowperf');if(!el)return;
var t=[];
if(s.mqttRole==='publisher')t.push('Pub');
else if(s.mqttRole==='subscriber')t.push('Sub');
if(typeof s.sequenceMode==='boolean')
t.push(s.sequenceMode?'Playlist':'Browse');
if(t.length){el.hidden=false;el.textContent=t.join(' · ')}
else{el.hidden=true;el.textContent=''}
}
function tick(){
if(document.hidden)return;
fetch('/api/status',{cache:'no-store'}).then(function(r){return r.json()}).then(function(s){
if(s.version){var pv=document.getElementById('pfVer');if(pv)pv.textContent='v'+s.version}
// Three states, in the order the device resolves them. Asleep outranks
// paused: a sleeping device is asleep whatever this page is doing to its
// memory, and the frame rate below would be a number from before it went
// dark either way.
if(s.sleep){
$('now').textContent='Asleep';
$('nowsub').textContent=s.active?(s.active+' resumes on wake'):'panel off';
}else if(s.consolePaused){
// While this page is open the pattern is deliberately paused (the
// console borrows its RAM) — say so instead of showing a make-believe
// frame rate from the paused loop.
$('now').textContent='Paused';
$('nowsub').textContent='resumes when you close the console';
}else{
$('now').textContent=s.active||'—';
$('nowsub').textContent=(s.frameUs?Math.round(1e6/s.frameUs)+' fps · ':'')+
(s.activeIsModule?'module':'built in');
}
paintPerf(s);
paintPower(s.sleep);
paintBrightness(s.brightness);
$('s-pat').textContent=s.patterns+' ('+s.presets+' built in + '+s.modules+' modules)';
if(s.fsMounted){
$('s-fs').textContent=Math.round((s.fsTotal-s.fsUsed)/1048576*10)/10+' MB free';
$('s-fsbar').style.width=(s.fsTotal?s.fsUsed/s.fsTotal*100:0)+'%';
}else{$('s-fs').textContent='not mounted'}
$('s-wifi').textContent=s.wifi?(s.ssid+' · '+s.rssi+' dBm'):'offline';
$('s-ip').textContent=s.wifi?s.ip:'—';
$('s-heap').textContent=Math.round(s.heapInternal/1024)+'K + '+
Math.round(s.heapPsram/1048576)+'M psram';
$('s-up').textContent=dur(s.uptime);
$('s-fw').textContent='v'+s.version;
// Edition. The default build says what it is and where the others are,
// because "the feature I wanted is missing" is the question it provokes;
// an edition says which one and links to its own card.
var ed=s.variant&&s.variant!=='core'?s.variant:'';
if(ed){
$('s-ed').textContent=ed+(s.variantVersion?' '+s.variantVersion:'');
$('s-ed-sub').textContent='This panel runs the '+ed+' edition. '+
'Tap for what it carries, or to go back to the standard firmware.';
$('s-ed-block').href='https://patternflow.work/editions#'+encodeURIComponent(ed);
}else{
$('s-ed').textContent='Patternflow';
$('s-ed-sub').textContent='The standard firmware. Other editions carry '+
'what this one does not — tap to see them. Installing one is a click '+
'and keeps your patterns and settings.';
$('s-ed-block').href='https://patternflow.work/editions';
}
if(s.params)updateSliders(s.params);
checkUpdate(s.version,s.variant);
}).catch(function(){$('nowsub').textContent='cannot reach device';var p=$('nowperf');if(p){p.hidden=true;p.textContent=''}});
}
// ── Panel switch ──────────────────────────────────────────────
// The switch is a VIEW of the device's state, not its own truth: K1 on the
// device and an MQTT message change the same thing, and the 3 s poll is what
// keeps this honest when they do.
//
// The one exception is the moment after a click. POST /api/sleep only queues
// the transition — loop() performs it on its next pass — so a poll landing in
// between still reports the old value and would snap the switch back under the
// cursor. settleUntil suppresses that for a beat, which is long enough for the
// device to have actually moved.
var settleUntil=0;
function paintPower(asleep,force){
if(!force&&Date.now()<settleUntil)return;
$('p-on').className='pwr-b'+(asleep?'':' on');
$('p-sleep').className='pwr-b'+(asleep?' on':'');
}
function note(t,cls){$('pwrnote').textContent=t||'';$('pwrnote').className='pwr-note'+(cls?' '+cls:'')}
function setPower(asleep){
settleUntil=Date.now()+1500;
paintPower(asleep,true);
note(asleep?'sleeping…':'waking…');
fetch('/api/sleep',{method:'POST',cache:'no-store',
headers:{'Content-Type':'application/x-www-form-urlencoded'},
body:'on='+(asleep?'1':'0')})
.then(function(r){if(!r.ok)throw 0;return r.json()})
.then(function(){
note(asleep?'panel off — any knob or button wakes it':'');
// Confirm from the device rather than trusting the optimistic paint.
setTimeout(function(){settleUntil=0;tick()},600);
})
.catch(function(){
settleUntil=0;
note('cannot reach device','err');
tick();
});
}
$('p-on').addEventListener('click',function(){setPower(false)});
$('p-sleep').addEventListener('click',function(){setPower(true)});
// ── Brightness ────────────────────────────────────────────────
// A view of the device's value like the switch above: K1's long-press
// session moves the same number, and the 3 s poll keeps the slider honest
// unless a hand is on it. GET /api/display?brightness= is the write - one
// request in flight, the newest value waiting behind it, so a drag cannot
// queue up on the one-connection server.
var briActive=false,briInFlight=false,briQueued=-1,briSettleUntil=0;
function briPct(b){return Math.max(2,Math.min(100,Math.round(b*100/255)))}
function paintBrightness(b){
if(briActive||Date.now()<briSettleUntil||typeof b!=='number')return;
var p=briPct(b);$('bri').value=p;$('bri-v').textContent=p+'%';
}
function pumpBri(){
if(briInFlight||briQueued<0)return;
var p=briQueued;briQueued=-1;briInFlight=true;
var v=Math.max(5,Math.min(255,Math.round(p*255/100)));
fetch('/api/display?brightness='+v,{cache:'no-store'})
.catch(function(){note('cannot reach device','err')})
.finally(function(){briInFlight=false;if(briQueued>=0)pumpBri()});
}
$('bri').addEventListener('input',function(){
var p=parseInt(this.value,10);if(isNaN(p))return;
$('bri-v').textContent=p+'%';briQueued=p;briSettleUntil=Date.now()+1500;pumpBri();
});
(function(){
var sl=$('bri');
var on=function(){briActive=true},off=function(){briActive=false;briSettleUntil=Date.now()+1500};
sl.addEventListener('touchstart',on,{passive:true});sl.addEventListener('touchend',off,{passive:true});
sl.addEventListener('mousedown',on);window.addEventListener('mouseup',off);
})();
// ── Update check (runs in the browser, never on the device) ───
var updChecked=false;
// The manifest at patternflow.work describes CORE releases. Offering one
// of those to a panel running somebody else's firmware would talk a
// person into flashing away the thing they deliberately chose, with a
// version comparison that means nothing across two release lines. So on
// a variant this stays quiet: that maintainer announces their own
// updates, and the footer already links to them.
function checkUpdate(deviceVersion,variant){
if(updChecked||!deviceVersion)return;
if(variant&&variant!=='core')return;
updChecked=true;
fetch('https://patternflow.work/flash/manifest.json',{cache:'no-store'})
.then(function(r){if(!r.ok)throw 0;return r.json()})
.then(function(m){
var latest=String(m.version||'').replace(/^v/,'');
if(latest&&latest!==deviceVersion){
$('updtext').textContent='v'+latest+' is out — this device runs v'+deviceVersion+'.';
$('upd').style.display='flex';
}
}).catch(function(){/* offline LAN or no CORS — say nothing */});
}
// ── Live parameter sliders (K1..K4 · 0..100) ──────────────────
var activeSlider = -1;
var inFlight = false;
var queuedParams = {};
var lastReported = [50, 50, 50, 50];
function updateSliders(params) {
if (!params || params.length < 4) return;
for (var i = 0; i < 4; i++) {
if (activeSlider === i) continue;
var v = Math.round(params[i] / 10);
if (v < 0) v = 0; if (v > 100) v = 100;
var sl = $('sl-' + i);
if (sl) {
sl.value = v;
lastReported[i] = v;
}
}
}
function pumpParams() {
if (inFlight) return; // Drop redundant updates while in-flight; keep newest in queue
var keys = Object.keys(queuedParams);
if (!keys.length) return;
var bodyParts = [];
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
bodyParts.push(k + '=' + encodeURIComponent(queuedParams[k]));
}
queuedParams = {};
inFlight = true;
fetch('/api/params', {
method: 'POST',
cache: 'no-store',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: bodyParts.join('&')
}).catch(function() {
}).finally(function() {
inFlight = false;
if (Object.keys(queuedParams).length) {
pumpParams(); // Flush pending latest updates
}
});
}
function onSliderInput(idx, val) {
var v = parseInt(val, 10);
if (isNaN(v)) return;
lastReported[idx] = v;
// pX on the 0..1000 bus. The device derives the clicks a legacy pattern
// reads from the change in the held value, so no dX alongside — sending
// both counted every move twice.
queuedParams['p' + (idx + 1)] = v * 10;
pumpParams();
}
function initSliders() {
for (var i = 0; i < 4; i++) {
(function(idx) {
var sl = $('sl-' + idx);
if (!sl) return;
var onStart = function() { activeSlider = idx; };
var onEnd = function() {
activeSlider = -1;
pumpParams();
};
sl.addEventListener('touchstart', onStart, {passive: true});
sl.addEventListener('touchend', onEnd, {passive: true});
sl.addEventListener('mousedown', onStart);
window.addEventListener('mouseup', onEnd);
sl.addEventListener('input', function() {
var v = sl.value;
onSliderInput(idx, v);
});
})(i);
}
}
initSliders();
// ── Quick pattern stepping (← / →) ───────────────────────────
function stepPattern(dir) {
var prev = $('now').textContent;
$('now').textContent = dir > 0 ? 'Next…' : 'Prev…';
fetch('/api/patterns/select?step=' + dir, {cache: 'no-store'})
.then(function(r) { return r.json(); })
.then(function(d) {
if (d.ok && d.name) {
$('now').textContent = d.name;
$('nowsub').textContent = 'switched';
}
setTimeout(tick, 300);
})
.catch(function() {
$('now').textContent = prev;
});
}
$('pat-prev').addEventListener('click', function() { stepPattern(-1); });
$('pat-next').addEventListener('click', function() { stepPattern(1); });
tick();
setInterval(tick,3000);
document.addEventListener('visibilitychange',function(){if(!document.hidden)tick()});
</script>
</body></html>
)HTML";
// <gz:HOME_INDEX_HTML> GENERATED by firmware/toolchain/console_pages.py build — do not edit.
// gzip -9 of HOME_INDEX_HTML (29924 bytes → 9594 bytes), served with Content-Encoding: gzip.
const uint8_t HOME_INDEX_HTML_GZ[] PROGMEM = {
0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xcd,0x7d,0xdd,0x76,0xdb,0x48,
0x92,0xe6,0xbd,0x9e,0x22,0x8b,0x9e,0x32,0xc8,0x12,0x09,0x92,0xfa,0xb3,0x4d,0x8a,
0x72,0xdb,0x2e,0x7b,0xd7,0x53,0xe5,0x2a,0xb7,0xed,0xea,0x9a,0x3d,0x3e,0xde,0x3e,
0x20,0x91,0x24,0x51,0x02,0x01,0x34,0x12,0x14,0xad,0x96,0x35,0xa7,0xaf,0xe6,0x7a,
0xce,0x9e,0x79,0x86,0x7d,0x85,0xbd,0xdf,0x47,0xa9,0x27,0xd9,0x2f,0x22,0x33,0x81,
0x04,0x7f,0x24,0xd9,0xee,0x3d,0xdd,0xae,0x92,0x45,0x02,0x99,0x91,0x91,0xf1,0x1f,
0x91,0x01,0xf8,0xf4,0x9b,0x30,0x9d,0x14,0x97,0x99,0x14,0xf3,0x62,0x11,0x9f,0xed,
0x9d,0xd2,0x2f,0x11,0x07,0xc9,0x6c,0xd4,0x90,0x49,0x83,0x2e,0xc8,0x20,0xc4,0xaf,
0x85,0x2c,0x02,0x31,0x99,0x07,0xb9,0x92,0xc5,0xa8,0xb1,0x2c,0xa6,0x9d,0x87,0x74,
0x57,0x4d,0xf2,0x28,0x2b,0x84,0xca,0x27,0xa3,0x46,0x37,0x9b,0x76,0x26,0x69,0xa2,
0xd2,0x58,0xfa,0xbf,0xa9,0xc6,0xd9,0x69,0x57,0xdf,0xb5,0xb3,0x93,0x60,0x21,0x47,
0x8d,0x8b,0x48,0xae,0xb2,0x34,0x2f,0x1a,0x02,0x63,0x0b,0x99,0x00,0xda,0x2a,0x0a,
0x8b,0xf9,0x28,0x94,0x17,0xd1,0x44,0x76,0xf8,0x4b,0x3b,0x4a,0xa2,0x22,0x0a,0xe2,
0x8e,0x9a,0x04,0xb1,0x1c,0xf5,0x69,0xa9,0x22,0x2a,0x62,0x79,0xf6,0x3a,0x28,0x0a,
0x99,0x27,0xd3,0x38,0x5d,0x9d,0x76,0xf5,0xa5,0xbd,0xd3,0x38,0x4a,0xce,0x45,0x2e,
0xe3,0x51,0x23,0x02,0xd0,0x86,0x98,0xe7,0x72,0x3a,0x6a,0x84,0x41,0x11,0x0c,0xa2,
0x45,0x30,0x93,0x5d,0x75,0x31,0xdb,0xff,0xb8,0x88,0xdb,0xdf,0x1e,0x3e,0xc3,0x47,
0x81,0x8f,0x89,0x1a,0x79,0xf3,0xa2,0xc8,0x06,0xdd,0xee,0x6a,0xb5,0xf2,0x57,0x87,
0x7e,0x9a,0xcf,0xba,0x07,0xbd,0x5e,0x8f,0x06,0x7b,0x82,0xd0,0x7c,0x9a,0x7e,0x1c,
0x79,0x3d,0xd1,0x13,0xfd,0x13,0xfc,0xef,0x7d,0x7b,0xf8,0x1c,0xf3,0x73,0x39,0x29,
0x84,0xc6,0xd8,0xc3,0x45,0x31,0x97,0xd1,0x6c,0x5e,0xe8,0xcf,0xd3,0x28,0x8e,0x47,
0xde,0xb7,0x07,0x87,0xbd,0x67,0xbd,0xa7,0xbd,0x47,0x5e,0xd7,0x99,0x02,0x50,0xc7,
0x9e,0xb8,0xe4,0xbf,0xcd,0x74,0x67,0xb6,0x3b,0xf9,0xc5,0x8b,0xe3,0x67,0x07,0xcf,
0xed,0x64,0x42,0x07,0x9f,0x1a,0xb5,0x6d,0x66,0x00,0x99,0x26,0x09,0xe0,0xda,0xcd,
0xd2,0x5e,0x14,0x36,0x33,0x05,0x51,0x95,0x3f,0x4b,0xd3,0x59,0x2c,0x83,0x2c,0x52,
0xfe,0x24,0x5d,0x7c,0xe6,0x5c,0x55,0x04,0x45,0x34,0xe1,0x89,0x62,0x92,0xa7,0x4a,
0xa5,0x79,0x34,0x8b,0x12,0x0b,0xe4,0xf6,0xf5,0xba,0x13,0xa5,0x0e,0x1e,0x4f,0x83,
0x45,0x14,0x5f,0x8e,0x5e,0x82,0xc9,0xf9,0x60,0x85,0x5d,0xfe,0xe1,0xb0,0xd7,0x1b,
0x1e,0xe1,0xe7,0xb8,0xd7,0xbb,0x6f,0xee,0xfe,0xab,0x2c,0x9e,0xe6,0x41,0x94,0xa8,
0xfd,0x57,0x69,0x92,0xea,0x61,0x76,0x48,0x18,0xa9,0x2c,0x0e,0x2e,0x47,0x6a,0x15,
0x64,0x0d,0x8d,0xbb,0x2a,0x2e,0x63,0xa9,0xe6,0x52,0x16,0x2c,0x7c,0xf4,0xed,0x6c,
0x4f,0x88,0x3f,0x10,0x16,0x9d,0x69,0x30,0x91,0x57,0xe6,0x13,0x01,0x1f,0x78,0xaf,
0x73,0x09,0x09,0x0b,0x83,0x3c,0xf4,0x86,0x7c,0x63,0xc5,0xe4,0x1e,0x3c,0xc0,0x0a,
0xfc,0x9d,0x21,0x0c,0x92,0x34,0x5f,0x04,0xb1,0xbe,0x62,0x16,0x1d,0xd0,0xa2,0x43,
0x80,0x16,0x24,0xdb,0x83,0x65,0x1e,0x37,0x3d,0xbb,0xe5,0x49,0x98,0x40,0xbe,0x43,
0x19,0x47,0x17,0xb9,0x9f,0xc8,0xa2,0x9b,0x64,0x8b,0x6e,0x56,0x2e,0xf5,0x87,0xbe,
0x7f,0xe8,0x3f,0xea,0x02,0x50,0xd1,0x5d,0xc9,0x71,0x57,0x93,0xb3,0xbb,0x4a,0xa7,
0xd3,0x83,0x6e,0x85,0x51,0xe7,0x69,0x1a,0x87,0x3e,0x5f,0xf5,0x5a,0x62,0x4a,0x28,
0x14,0x4d,0xcf,0x7c,0xbf,0xc6,0xca,0x83,0x3c,0x4d,0x8b,0xab,0x4e,0x67,0x3c,0x1b,
0xdc,0xd3,0xf2,0x34,0xec,0x74,0xb2,0x20,0x91,0xf1,0xe0,0x5e,0xff,0xb0,0xdf,0xef,
0xf7,0xf0,0x1d,0x0c,0x19,0xdc,0x7b,0xfe,0xfd,0xf3,0x07,0xdf,0x3f,0xc5,0xb7,0xc5,
0xb2,0x90,0xe1,0xe0,0xde,0xc3,0x27,0x0f,0x0f,0x1e,0x1c,0xe0,0xfb,0x14,0x94,0x2d,
0x06,0xf7,0x8e,0x9f,0x1c,0x1f,0x1f,0x9d,0xe8,0xdd,0xd0,0x9f,0x4e,0x67,0x36,0x4f,
0x15,0x6e,0x1c,0x1c,0xf4,0x5f,0xf4,0x1f,0x62,0x60,0xbe,0x04,0x19,0xee,0x1d,0x1c,
0x1d,0xf4,0xf9,0x6b,0x4c,0x50,0xb4,0x18,0xe2,0x5b,0x8a,0x25,0x8e,0x1f,0x3c,0x7d,
0xf8,0xe0,0x05,0xbe,0xac,0x82,0x3c,0x19,0xdc,0xfb,0xfe,0xd1,0x93,0xde,0xe1,0x0b,
0x17,0xa2,0x0a,0x12,0x35,0xf0,0x98,0xd9,0x5e,0x7b,0x19,0xf1,0xf7,0x8e,0x92,0x79,
0x34,0x6d,0xab,0x4b,0x55,0xc8,0x45,0x67,0x19,0xb5,0xab,0x8b,0xee,0xd4,0x05,0x71,
0xde,0x2b,0x25,0x41,0x90,0x24,0x30,0x0c,0xba,0xa1,0x32,0x70,0xb5,0xfd,0xf6,0x05,
0x5d,0xec,0xbc,0x91,0xb3,0x65,0x1c,0xe4,0xed,0x57,0x32,0x89,0xd3,0x76,0x79,0xdb,
0x05,0x56,0xf1,0xa1,0xc6,0xfe,0x3b,0xa0,0x44,0x34,0xff,0xee,0x6a,0x9c,0x7e,0xec,
0xa8,0xe8,0xaf,0x51,0x32,0x1b,0x8c,0xd3,0x3c,0x94,0x79,0x07,0x57,0x86,0x8b,0x20,
0x87,0x06,0x0c,0x7a,0xc3,0x2c,0x08,0x43,0xba,0xd7,0xa3,0xd1,0xe3,0x34,0xbc,0xbc,
0x5a,0x44,0x49,0x47,0x6b,0xf1,0xa0,0xdf,0xeb,0x5d,0xcc,0x87,0xe3,0x60,0x72,0x3e,
0xcb,0xd3,0x65,0x12,0x0e,0x2e,0x82,0xbc,0x49,0x0c,0x6c,0x0d,0x27,0x69,0x9c,0xe6,
0xe6,0x3b,0x78,0xd6,0x2a,0x51,0x26,0xa1,0x1b,0xf4,0x8f,0xb3,0x8f,0xdd,0xbe,0x7f,
0x7c,0x2c,0xf4,0x08,0x42,0xaa,0x35,0x84,0xb4,0x8e,0xcf,0x23,0x48,0x33,0x4b,0xea,
0x02,0xd2,0x30,0xa7,0xa5,0x83,0x84,0x2c,0x63,0x14,0x28,0x19,0x96,0x50,0x2c,0x5a,
0x07,0x47,0xd9,0x47,0xc1,0x7f,0x9d,0xe0,0x2f,0xc2,0xd1,0x67,0x89,0xb9,0x62,0x8b,
0x43,0x08,0x7e,0x8b,0xbd,0x7c,0xd4,0x46,0x76,0x70,0x7c,0xd2,0xcb,0xca,0xbd,0xf5,
0x4f,0x30,0x2b,0x58,0x16,0xa9,0xe0,0xbd,0x91,0xd9,0x97,0xf9,0x95,0x55,0x87,0x69,
0x2c,0x3f,0x0e,0xb1,0xea,0x2c,0xe9,0x44,0xa0,0x9c,0x1a,0x4c,0x24,0xb1,0x7a,0x38,
0x0b,0xb2,0xc1,0x43,0x00,0x31,0x08,0x80,0x58,0x45,0x91,0x2e,0x06,0xfd,0x03,0x5c,
0x2b,0xe9,0xa7,0x2f,0x01,0x3c,0x5c,0x43,0x14,0x9a,0x3d,0x92,0xc8,0xb5,0xcc,0xe2,
0x76,0xcc,0xc1,0x43,0x83,0x74,0x08,0xc9,0xd7,0x38,0x3e,0x00,0x20,0x43,0x5e,0xfa,
0xb8,0x41,0x5c,0x88,0x6a,0xcb,0xae,0x94,0x07,0x61,0xb4,0x54,0xb4,0x12,0xef,0xa0,
0xaf,0x8d,0x01,0xb8,0x29,0x99,0xc2,0x35,0x13,0x70,0x02,0x13,0x10,0x4b,0xf2,0x25,
0x1d,0x92,0x21,0x22,0x9e,0xdf,0xeb,0xcb,0x45,0xc5,0x6a,0xda,0xf2,0xa0,0xcf,0xe8,
0xa8,0xe5,0xb8,0x66,0x58,0xf4,0xd2,0x24,0x7f,0xad,0xa1,0xb3,0x06,0x16,0xae,0x31,
0x9a,0xd5,0x0f,0xba,0x0c,0x10,0xdd,0xef,0xc4,0xef,0xff,0xf5,0x37,0xfc,0x2f,0xbe,
0x67,0x37,0x27,0x26,0x90,0x4a,0xd1,0x4c,0x13,0x29,0x14,0x6c,0x4f,0x2c,0xc8,0x4a,
0x2c,0x95,0xc8,0x52,0x7c,0xfe,0xfd,0x6f,0xff,0x25,0x8a,0xb9,0x14,0xda,0x23,0x8a,
0x44,0x5e,0xc8,0x1c,0x03,0x72,0x19,0x2c,0x30,0x22,0xfa,0x28,0x63,0xd5,0xb2,0xe0,
0xbe,0xeb,0x32,0x82,0x93,0x5c,0xca,0xe4,0x6a,0x83,0x3a,0xcc,0x7c,0x4b,0x9f,0x1d,
0x2c,0x28,0x65,0xa7,0x47,0xb2,0x43,0x7f,0x9d,0x18,0x2e,0x24,0xe9,0xaa,0x33,0x0f,
0xd7,0x84,0xe0,0xb7,0xa5,0x2a,0xa2,0xe9,0x65,0xc7,0x78,0xef,0x01,0x6b,0x60,0x67,
0x2c,0x8b,0x15,0x30,0xd8,0x22,0x22,0x25,0xa4,0xf3,0xbb,0x90,0x90,0x04,0x72,0x9d,
0x2d,0xfd,0x23,0xb0,0xa5,0x90,0x1f,0x8b,0x4e,0x91,0x43,0x31,0xc8,0x54,0x0e,0x96,
0x59,0x26,0xf3,0x09,0x74,0x60,0x2b,0xc1,0xcd,0x8a,0x49,0x70,0x51,0xc7,0x9d,0xa4,
0xf5,0xd8,0xd9,0xdc,0xb8,0x48,0xae,0x58,0x85,0x1c,0xc2,0xf1,0x1a,0x59,0x90,0x03,
0xf9,0x9b,0xe9,0xe6,0x2e,0xcc,0x86,0xd7,0x28,0xf5,0x1d,0x76,0x49,0xda,0x01,0x5f,
0x2a,0x4b,0xc3,0x31,0xd4,0xc2,0x4e,0xf2,0x6f,0xa5,0x9d,0xb4,0x58,0x03,0xac,0x4b,
0x37,0xcd,0x9d,0x2c,0x73,0x38,0xe5,0x41,0x96,0x46,0xac,0x84,0x76,0x8f,0x51,0xc2,
0x40,0x77,0xe9,0x2a,0x03,0x5b,0x67,0x9f,0xb9,0xc7,0xbb,0x46,0xc8,0x95,0x26,0x03,
0x92,0x46,0xbf,0x7f,0xac,0x84,0x04,0x79,0x31,0xc7,0xa5,0xd6,0x60,0x9e,0x42,0x16,
0xaf,0x36,0xac,0x99,0x41,0xd1,0xbd,0x4e,0x8a,0x59,0x9b,0x1a,0x4c,0x8a,0xe8,0x42,
0x6e,0xca,0x28,0xfb,0xa2,0xd6,0xb0,0xe2,0x2d,0xc7,0x7c,0xcd,0x9e,0xff,0xe8,0xa0,
0x04,0xe0,0x68,0xf2,0xc1,0x1d,0x34,0xb9,0xe3,0xf7,0x0e,0x20,0x33,0x35,0x12,0x63,
0x4b,0x56,0xb7,0x61,0x48,0x10,0xd4,0x1d,0x92,0xed,0xab,0x8c,0xf7,0xc1,0x23,0x7c,
0xa7,0xdd,0x51,0x68,0xd9,0x59,0xe5,0x10,0x95,0x20,0xb9,0x5c,0xcd,0x65,0x2e,0xcb,
0x6d,0x7c,0xa1,0x1d,0x30,0xd2,0xe1,0x7a,0x0a,0x23,0x85,0x95,0x59,0x78,0x4d,0x9a,
0x2a,0xd4,0x2a,0x2a,0x26,0x73,0x73,0xed,0x1f,0xfe,0xbf,0xf6,0x2e,0x4f,0x84,0x92,
0xb3,0x05,0x89,0x49,0x08,0x3f,0x13,0xe5,0x6d,0x91,0xa4,0x85,0x08,0x84,0x82,0x42,
0x80,0xd8,0xa2,0x48,0x67,0x88,0xfd,0x06,0xa2,0xbb,0xf8,0x4b,0x81,0xeb,0x31,0xcc,
0x54,0x78,0x09,0x33,0x35,0x39,0x57,0xc2,0x98,0x05,0x0d,0x88,0x4c,0x9c,0x54,0xb0,
0x6c,0x91,0x12,0xab,0xe0,0x52,0x34,0x7d,0x6c,0xb5,0x2b,0xfc,0x1c,0x09,0x03,0x42,
0xe2,0x62,0x2e,0x82,0x44,0xf8,0x69,0x22,0x26,0x71,0xa0,0x60,0xe1,0x82,0x24,0xd4,
0x83,0x23,0xc5,0xe6,0x50,0x21,0x7f,0xd0,0x90,0x66,0x52,0x15,0xcb,0x5c,0xb6,0xa1,
0x95,0x7c,0xc7,0x64,0x1d,0xe2,0x5c,0xca,0x4c,0x09,0x32,0xaa,0x17,0xe9,0x24,0x18,
0x53,0xac,0x70,0xe9,0x8b,0x97,0x84,0x15,0x46,0xaa,0x79,0xba,0xc2,0xca,0xf3,0x08,
0xcb,0x32,0x2e,0x1a,0xd8,0x65,0xba,0x14,0x50,0x77,0x11,0x25,0x22,0x0f,0x00,0x2d,
0x07,0x48,0x20,0x12,0xa8,0x73,0xda,0x1d,0xdd,0x85,0x4f,0xa4,0x4d,0x61,0xcf,0x71,
0x30,0x06,0x97,0x08,0xb1,0x28,0x99,0x62,0x64,0x54,0xf8,0xc6,0x02,0x67,0xab,0xbb,
0x39,0x4b,0xd6,0x7d,0xe3,0xf5,0x8a,0x34,0x63,0xb7,0xbb,0xee,0xc6,0xf5,0x8d,0xc3,
0xca,0x85,0xf2,0xf7,0x6d,0x46,0xe8,0xda,0x2c,0xfd,0x15,0xc6,0x15,0x7a,0x62,0x97,
0xff,0x0c,0x1b,0xeb,0x7a,0x47,0x5a,0x1f,0x0a,0xae,0x36,0x6d,0xad,0x75,0x24,0x3c,
0xe2,0xae,0x9a,0xb3,0xe1,0x95,0x1f,0xde,0x05,0x45,0xeb,0xc5,0x28,0x8a,0xe9,0x1f,
0x6d,0xda,0x48,0x0b,0x60,0x87,0xa5,0xdf,0xa2,0xae,0x37,0x1a,0xff,0x12,0x9f,0xca,
0x6e,0x32,0x88,0xca,0x72,0xb6,0x5d,0x9b,0x58,0x5d,0xae,0xe8,0xf1,0x19,0xb6,0x54,
0x63,0x54,0x4d,0x85,0x92,0xdc,0xd9,0x06,0x0f,0x39,0xa2,0x9d,0x07,0x61,0xba,0x82,
0x83,0x40,0xf6,0x2e,0x7a,0xfc,0x1f,0xed,0x6b,0xcd,0x52,0x13,0x6c,0xe8,0xb6,0xbc,
0x93,0x2c,0xf9,0xc7,0x5b,0xa3,0x9d,0x92,0x32,0xae,0xb5,0x3b,0xaa,0xcb,0xfc,0x03,
0x47,0x2c,0x68,0x3d,0x5f,0xe6,0x75,0x3a,0x58,0x8c,0x2a,0xf3,0xf8,0x34,0x27,0x48,
0x89,0x54,0xca,0x5e,0x01,0x07,0x59,0x55,0xa5,0x31,0x9a,0x03,0xfe,0x9c,0x1a,0x05,
0x26,0xd5,0x0d,0xc4,0x9c,0x34,0x35,0x28,0xf8,0x0e,0x87,0x42,0x1a,0xb9,0x30,0x85,
0x19,0x6a,0xfe,0xd0,0xf7,0x94,0x88,0x53,0xa8,0x1b,0x72,0x06,0xc0,0x55,0xf8,0x0b,
0x7c,0x6c,0x6d,0x58,0x95,0x79,0x00,0x13,0x04,0x20,0x69,0x6a,0x95,0x7d,0x9c,0x47,
0x5f,0xa6,0xec,0x3d,0xb3,0x73,0x00,0x28,0xf5,0x96,0x14,0x29,0x81,0xcd,0xb2,0x37,
0x3a,0x17,0x5f,0xe1,0x63,0x74,0x1c,0x71,0x48,0x04,0x67,0x55,0x61,0xc4,0x06,0x4c,
0xbc,0xa1,0xb3,0x52,0x8d,0xb6,0x3f,0xc2,0x2d,0x83,0x3c,0x39,0xcc,0x6b,0x41,0x81,
0x26,0x64,0x5d,0xe6,0x4c,0x20,0xdf,0xff,0xe1,0xa8,0xf5,0x77,0xf6,0x46,0x86,0x84,
0x93,0x22,0x8f,0xd5,0xd5,0xba,0x21,0xac,0x19,0xc0,0xa3,0xbb,0x1a,0x40,0x86,0xf5,
0x35,0x91,0xea,0x18,0x8a,0x49,0xc1,0xc2,0x5a,0x3a,0x42,0xec,0x73,0x16,0xf8,0x72,
0x1b,0x7b,0xf0,0x05,0x01,0xac,0x66,0x43,0x27,0x47,0xf0,0xf3,0xb9,0xa2,0xb6,0x8e,
0x7e,0x05,0x6a,0x00,0xcf,0x5a,0x74,0x26,0xf3,0x28,0x0e,0xaf,0xea,0x83,0x7b,0x7a,
0x64,0x87,0x3d,0xdc,0x5d,0x05,0x70,0x3d,0x0c,0xdb,0x29,0x90,0x94,0x56,0x0c,0xeb,
0x92,0x5e,0x21,0x05,0x5f,0x9a,0x2d,0x8b,0xf7,0x54,0x85,0x1c,0x81,0x3e,0x33,0xf9,
0xa1,0xcd,0x0a,0xb2,0x71,0x59,0xc7,0xea,0xda,0xf3,0xd8,0x30,0x99,0xa4,0x26,0x00,
0x2d,0x21,0xbe,0xc9,0x44,0x32,0xf8,0x32,0x71,0x5e,0xbf,0xbe,0x2b,0xf4,0xdc,0x12,
0x65,0x93,0xf3,0x4d,0x97,0x05,0x09,0x85,0x9e,0xbb,0xe6,0x4e,0x82,0x09,0xd1,0x7e,
0xd3,0xd8,0x16,0xe9,0x72,0x32,0xef,0x50,0xa8,0x0b,0x8f,0x40,0x13,0x6d,0x00,0x7d,
0xd3,0x76,0x07,0x03,0x8b,0xb1,0x19,0x55,0xcc,0x97,0x8b,0xf1,0x0e,0x22,0x6c,0x1f,
0xac,0x49,0x73,0x57,0x42,0x98,0x6a,0x80,0x93,0x6d,0xf0,0xe7,0x3a,0x09,0x8e,0x7b,
0xdf,0x0e,0xd7,0x93,0xa3,0x0d,0x77,0x43,0xe9,0x48,0x4d,0x2b,0x99,0x0a,0x6b,0xc4,
0x72,0x9c,0x64,0xa9,0x00,0xf0,0x88,0xf5,0x0c,0xe3,0x46,0x02,0xe9,0xdc,0xe1,0xf3,
0xe8,0x74,0xd3,0x1c,0x4d,0xae,0xf5,0x94,0xa3,0xef,0x1f,0xb4,0xb6,0x57,0x18,0xee,
0xc8,0xc5,0x45,0xfa,0xd7,0x0e,0x7f,0xb9,0x8d,0x83,0x6b,0x03,0x35,0x3a,0x77,0xe6,
0xca,0xd7,0x32,0x84,0x77,0xc3,0xdb,0x41,0x14,0x5c,0x85,0x6d,0xb3,0x3c,0x0a,0x87,
0xf4,0x57,0x07,0xc6,0x05,0x57,0x0a,0x49,0xf2,0xbd,0x5c,0x24,0x6a,0xd0,0x9f,0xe6,
0x02,0x3f,0x6c,0x69,0x7a,0x5c,0x24,0x58,0x8f,0x61,0xaf,0x2d,0xbc,0x2b,0x1b,0x89,
0x91,0x29,0x44,0x9c,0xf1,0xe8,0xae,0x56,0x9c,0x26,0x0b,0xff,0xab,0x02,0xd9,0xcf,
0xb6,0xb1,0xbc,0xe4,0x9d,0xfc,0xed,0xc1,0x46,0xbc,0xc3,0x44,0x77,0xa8,0x70,0xe4,
0x04,0xf2,0x48,0x32,0x40,0x3d,0x76,0x38,0xd0,0x38,0x4a,0x26,0xcb,0xd4,0x72,0x30,
0x8f,0xc2,0x10,0xfe,0x87,0x71,0x2d,0x2f,0xca,0x38,0x8e,0x32,0x15,0x29,0x07,0xad,
0x71,0x90,0x5f,0x19,0x39,0x38,0xdc,0x56,0xf9,0x32,0xc6,0x6b,0x33,0xae,0x82,0x67,
0x7f,0x87,0xf0,0x45,0x86,0xac,0x72,0x62,0x1c,0xa7,0x93,0x73,0xca,0xa1,0x90,0xbe,
0x00,0x67,0x0e,0x6f,0x10,0xce,0x2c,0xe0,0x1d,0x39,0x93,0x8b,0x12,0x84,0x4c,0xb8,
0xc0,0xc5,0x7d,0x2a,0x88,0x73,0xec,0x94,0x84,0x7a,0x2f,0xe5,0xb0,0x38,0x4d,0xcf,
0x91,0x99,0x21,0xad,0x0b,0xc6,0x31,0x67,0x4b,0x14,0x23,0x2d,0xb0,0x19,0x7c,0x4b,
0xa7,0x0c,0x1d,0x43,0xf1,0x89,0x72,0x25,0xd8,0x4e,0xe5,0x13,0x1a,0x26,0xf5,0x5b,
0x8e,0x3b,0x64,0x4b,0x09,0x0d,0x4e,0xa9,0x75,0xb0,0x96,0x48,0x13,0xaa,0xad,0xd2,
0x1c,0xe9,0x9f,0x0a,0x2e,0xe9,0xcb,0x0c,0xe1,0x99,0x89,0xb4,0x02,0x2d,0x52,0x56,
0x42,0x79,0x2b,0x9a,0x72,0xa1,0x9c,0xa4,0x48,0xd7,0xac,0x99,0x35,0x9c,0x31,0x7b,
0xb9,0x2e,0xa7,0xea,0x20,0x9b,0x78,0xbc,0x2d,0xbe,0xac,0x8f,0xa1,0xec,0x7e,0x9d,
0xc1,0x0e,0x3f,0xca,0xe4,0xdf,0x49,0x55,0x6a,0x05,0x86,0xa3,0xe3,0x6d,0xf1,0xb0,
0xc3,0x9f,0xe3,0x9d,0x12,0x42,0xe7,0x0f,0x75,0xd6,0x8b,0x68,0x6d,0xd7,0x55,0x8d,
0xf9,0x5b,0x63,0xbf,0x7b,0x3b,0xaa,0xa1,0x8e,0xb9,0xe5,0x81,0xc2,0x3f,0x54,0x6b,
0x21,0xdf,0x2f,0x59,0x08,0xf5,0x86,0x65,0x4f,0x12,0xec,0xbc,0xa9,0x45,0x12,0x21,
0x75,0x11,0xc5,0xcc,0x99,0x31,0x2c,0x9c,0xc2,0x9d,0x2c,0x07,0x69,0x28,0xfa,0xdd,
0x88,0x02,0x35,0x7f,0xee,0x2d,0xb3,0xb0,0xc4,0x93,0xf9,0xe0,0x9a,0x85,0x2a,0x80,
0xdb,0x50,0x7b,0x46,0xb4,0xb4,0x14,0x7d,0x9b,0xb4,0xb9,0x55,0x71,0x43,0xe7,0xc3,
0x6d,0x6a,0xb7,0x55,0x04,0xec,0xe4,0x1a,0x3e,0x5b,0xc3,0x3c,0x0e,0x98,0x4c,0x2c,
0x4e,0x5b,0x10,0x7e,0x11,0xcc,0xbe,0xd4,0xf0,0x70,0x7e,0xba,0x11,0x08,0xdc,0x9a,
0xb0,0x6e,0x9a,0x08,0x8b,0x8d,0x49,0x0c,0x1d,0xe6,0xe6,0xb3,0x71,0xd0,0x3c,0x38,
0x3e,0x6e,0x3f,0x3a,0x68,0x1f,0x9d,0xb4,0xfd,0xde,0x49,0xab,0x42,0x7d,0x96,0xda,
0x50,0x2e,0x96,0xd3,0x62,0x40,0x25,0xfc,0xe1,0x57,0x24,0x10,0x5b,0xd0,0xaa,0x89,
0xce,0x0b,0x19,0x50,0xed,0x45,0x90,0x84,0xfc,0xe3,0x0b,0x55,0x26,0x9b,0x20,0x64,
0xdc,0x64,0xe2,0xb0,0xac,0x3c,0x4c,0x3b,0xe7,0x30,0x59,0xce,0x49,0x86,0xd6,0xa6,
0x2f,0xac,0x45,0xdc,0x5c,0x8a,0xb6,0x3c,0xdf,0x6d,0x05,0x4c,0xb0,0xbd,0x81,0x9d,
0xd8,0x17,0x54,0xac,0xde,0x7e,0x1a,0x42,0x77,0xee,0xe2,0x41,0x31,0x4e,0xc7,0xf7,
0xe9,0xb4,0x43,0xe1,0xc6,0xd6,0x08,0x1f,0x4b,0xba,0x29,0x85,0xa6,0x46,0x96,0x1a,
0x7b,0x91,0x4b,0xb8,0x7d,0x44,0x4d,0x95,0x6a,0x52,0x3d,0xe5,0x11,0xc5,0x14,0xfc,
0xa9,0x77,0xa7,0x43,0x9d,0x6d,0x74,0x30,0xe2,0xb5,0x55,0x71,0x37,0x5c,0xe3,0xce,
0xa2,0x8a,0x36,0xda,0x7a,0x0f,0x3b,0xea,0x27,0x9b,0x43,0x78,0xd3,0xec,0x2d,0xaf,
0x76,0x15,0x55,0xec,0xfd,0x92,0x10,0xc1,0x18,0xdb,0xc2,0x80,0x21,0xa7,0xce,0x83,
0x0e,0x65,0x57,0x6c,0xc2,0x61,0x7d,0x2b,0xd6,0xf3,0x27,0x0a,0x94,0xfe,0x47,0xb3,
0x83,0x3b,0xf5,0x33,0x01,0x37,0xb9,0xa8,0x99,0xb4,0xe3,0x83,0xb5,0xd4,0xe9,0x70,
0x6b,0x05,0xfb,0x68,0xbd,0x82,0x3d,0x34,0xe1,0x5b,0x47,0x5e,0x20,0xf7,0x50,0x9a,
0x76,0x37,0xd3,0xca,0xd0,0xa1,0x53,0xb8,0x9e,0xeb,0xc1,0xda,0xf2,0xc7,0x5b,0x97,
0xef,0x6f,0x14,0xd0,0x0f,0x87,0x5b,0xbd,0xa3,0x5e,0xc2,0x57,0x29,0x62,0x8d,0x6a,
0xbd,0xdd,0x94,0xa6,0xfb,0x94,0x7d,0xda,0x53,0xc8,0xc3,0x93,0xc9,0xdc,0x75,0x1b,
0x87,0xdb,0x0d,0xd3,0x9a,0x4b,0x58,0x77,0xbd,0xeb,0xa8,0xb4,0xb7,0xe2,0x15,0x5e,
0xed,0x88,0x04,0xc9,0xfe,0xaf,0x1d,0xa3,0xdc,0xd9,0x50,0xec,0x74,0x0a,0xb7,0x1a,
0x8a,0x1d,0xce,0xd1,0xd8,0x8c,0x2d,0x44,0xb0,0x6a,0x09,0x0a,0x88,0x87,0x74,0x5c,
0x57,0x05,0xe2,0x6c,0xfc,0x19,0x17,0x88,0x7c,0x11,0x21,0xa1,0x31,0xc5,0x1f,0x53,
0x05,0x98,0xa6,0x29,0x30,0xac,0x19,0x49,0xf2,0xb8,0x9f,0x51,0x31,0x61,0xaf,0x79,
0xb2,0xee,0xa5,0xbf,0xb0,0xa0,0xfb,0x99,0xa1,0xba,0xc6,0x5e,0x04,0x57,0x77,0xb4,
0x29,0xee,0x9c,0x1b,0x0c,0xc5,0x1f,0x16,0x88,0x92,0x83,0xe6,0xda,0x91,0x78,0xeb,
0x8a,0x4f,0xf6,0x4b,0x1b,0x78,0x60,0xc2,0x13,0x71,0x6c,0x68,0xc9,0x7f,0x2a,0xab,
0x51,0xed,0xf7,0x88,0x06,0x58,0x1b,0x6b,0x8b,0x59,0xb9,0xe9,0x39,0x71,0xe6,0x9a,
0x30,0xfd,0x7b,0xa9,0xce,0x89,0x13,0x1c,0x73,0xad,0xe6,0x54,0x6c,0xb4,0x45,0x47,
0x08,0x2d,0x1f,0x0e,0xf3,0xc1,0x2e,0x9f,0x08,0x73,0x01,0x53,0x64,0x11,0x42,0xb6,
0x50,0x10,0xb7,0xdb,0xec,0x83,0x35,0x48,0x5e,0x83,0x87,0x45,0x89,0x2a,0xe8,0xb0,
0x82,0x43,0xf2,0x6c,0x4e,0x40,0x74,0x16,0x27,0x60,0x62,0x41,0x20,0x04,0xd8,0x88,
0xdd,0x91,0xe0,0x15,0x97,0x82,0xf9,0x6b,0x42,0x6d,0x4b,0x0a,0x08,0x87,0x26,0xc5,
0x23,0x4d,0x8a,0x6a,0xbb,0xdc,0x48,0x50,0x91,0xaa,0xdf,0x3f,0x70,0xb7,0xe4,0x53,
0xe6,0x78,0x97,0x5c,0x12,0xe6,0x06,0xa4,0xc4,0x3a,0x00,0xd5,0xec,0xb5,0x91,0x56,
0xb6,0xf4,0x61,0x01,0xc9,0xae,0x1b,0xae,0x21,0x16,0xce,0x8b,0x0a,0x3e,0x6d,0xb9,
0x32,0xd0,0x10,0xd4,0xc9,0xf9,0x25,0xdb,0xe4,0xa3,0x23,0x17,0x8d,0xf5,0x50,0xa0,
0x77,0x7d,0xbd,0x77,0xda,0xd5,0xad,0x42,0xa7,0x5d,0xee,0x66,0x3b,0x25,0xf6,0x9e,
0xed,0xe1,0xcf,0xe9,0x02,0x12,0xa6,0xcf,0x9b,0x46,0x0d,0xde,0x60,0x83,0xfa,0x89,
0x4e,0x75,0xf7,0xc3,0xd9,0x29,0x08,0x54,0xde,0x0e,0xd3,0x82,0x7b,0xda,0x70,0xe9,
0xec,0x74,0xde,0x3f,0x7b,0xa6,0x39,0x05,0x98,0xfd,0xfa,0x40,0x24,0x0a,0x8d,0x33,
0x7d,0x76,0x6f,0x87,0x77,0x0d,0x40,0x0a,0xa5,0x4e,0xc3,0xe8,0xc2,0x0e,0x25,0x0a,
0xe9,0x15,0x9d,0x8b,0xb4,0xd1,0x8d,0x8b,0x5a,0x10,0xf8,0x72,0xfd,0x86,0x39,0xa4,
0x37,0x77,0x70,0xcf,0x45,0x85,0xcf,0xdd,0x1b,0x67,0x3f,0xa5,0x2b,0x41,0x6c,0x01,
0xf3,0x0d,0x46,0x76,0xf0,0x1a,0x20,0x84,0x10,0x25,0x20,0xdc,0x1d,0x2f,0xe1,0xe5,
0x6b,0xc0,0xc6,0x45,0xd2,0x10,0x51,0x48,0xc4,0x2a,0xa8,0x6e,0x7e,0xd1,0x10,0xdc,
0x84,0x37,0x6a,0xbc,0xc6,0x97,0x28,0xa5,0x16,0x06,0xdd,0xa1,0x87,0x1b,0x54,0xf2,
0x68,0x68,0x18,0x8d,0xb3,0xfb,0x71,0x90,0xe7,0xc3,0xd3,0xae,0xfe,0x7e,0xf7,0x45,
0x12,0x68,0x77,0xb9,0xc8,0x4f,0xf8,0xb2,0x73,0x81,0x7c,0xdb,0x02,0xa7,0x5d,0x6c,
0xd1,0x50,0xcd,0xf9,0x58,0xdf,0xb7,0x5e,0x8d,0x3e,0x9c,0xdd,0x5f,0x84,0x81,0x9a,
0x0f,0x77,0x8f,0xa5,0x43,0xe0,0x72,0x3c,0xb3,0xfa,0x8e,0x63,0x61,0xe0,0xa6,0x0d,
0xa1,0x43,0x1c,0x3b,0x67,0x63,0x52,0xb6,0xda,0xc1,0x49,0x3e,0x2c,0x68,0x9c,0xf1,
0x31,0xf1,0x6e,0x1e,0xda,0xa3,0xb8,0xdd,0x4c,0xe4,0x11,0x86,0xba,0x9d,0x74,0x83,
0x88,0x3f,0x27,0xb7,0x72,0xa8,0x06,0x41,0xc5,0x52,0x66,0xeb,0x40,0xde,0xd2,0xc5,
0xcf,0x67,0x84,0x3d,0x0e,0x32,0xb0,0x57,0x39,0x7f,0xd9,0x45,0xde,0x71,0x1e,0xdd,
0x48,0xa9,0xea,0xc4,0x68,0x8d,0x5c,0x5c,0x8f,0x33,0x18,0x73,0x0d,0xae,0x51,0xce,
0x9c,0x9a,0x22,0xa1,0xc6,0x80,0x56,0x20,0x3b,0x35,0x6a,0x1c,0xe0,0x77,0xf0,0x71,
0xd4,0x40,0xf2,0xdd,0x10,0x30,0xaf,0x19,0x3e,0x36,0xe0,0xac,0xe3,0x25,0x60,0x3c,
0xc4,0xb5,0x20,0x8f,0x02,0x5d,0x3a,0x87,0x22,0xb0,0x9d,0x1e,0x97,0xcb,0x6f,0xc7,
0x92,0x0f,0x7a,0xca,0x75,0xf0,0xb1,0x92,0xbc,0x0a,0xdb,0x5d,0x52,0xc2,0xe7,0x11,
0x7a,0xb2,0xfe,0xb8,0x4d,0x16,0xca,0x53,0x11,0x57,0x18,0x5c,0x14,0xcc,0xa9,0x46,
0xe3,0x8c,0x0f,0x80,0x7e,0x48,0xd2,0xf1,0x3a,0xa9,0x2a,0xca,0xaf,0x19,0xa3,0xb2,
0x0c,0xba,0x0b,0xb6,0x39,0x48,0x68,0x9c,0xfd,0xd0,0xaf,0xc3,0xfc,0x1c,0x06,0xa8,
0xb8,0xd3,0x33,0x1c,0xe8,0xdd,0xc4,0x81,0xe3,0x5e,0xe3,0xef,0x8a,0xf2,0xc1,0x57,
0xa1,0xdc,0xff,0x47,0xa0,0x7c,0xf8,0x55,0x28,0x1f,0xfc,0x23,0x50,0x3e,0xfa,0x2a,
0x94,0x0f,0xbf,0x1c,0xe5,0x5d,0x5a,0xc5,0xd5,0xf0,0xad,0xaa,0x44,0x77,0x1a,0x75,
0x27,0xcf,0xb6,0x98,0xfd,0x90,0x55,0x1a,0x77,0x82,0xd1,0x6c,0xd5,0xc9,0x68,0x62,
0xcd,0xa7,0xec,0xa6,0xdd,0xd6,0x45,0xde,0x16,0x08,0x6b,0x67,0xf2,0xa6,0x35,0xa6,
0x6a,0x9b,0xdb,0xda,0xb0,0x97,0x01,0x0c,0xc1,0x69,0x54,0xce,0xd1,0xdf,0xbb,0xd1,
0xd9,0x17,0xa1,0xf5,0x6b,0xd4,0x79,0x11,0xdd,0x84,0xd4,0x2a,0x9a,0x46,0x5f,0xb7,
0xf3,0x27,0x61,0x98,0x57,0xd6,0x7b,0xeb,0x22,0x51,0xf6,0x75,0x4b,0xbc,0x92,0x8b,
0x34,0xbf,0xbc,0x69,0x05,0xc4,0x6d,0x5f,0xb9,0xc6,0x2f,0x59,0x11,0x2d,0x6e,0xe4,
0xdf,0xf2,0x2b,0x57,0x78,0x11,0xe5,0x8b,0x55,0x90,0xdf,0x2c,0x23,0xab,0x1b,0xd7,
0xf8,0xa6,0xd3,0x11,0xbf,0x72,0x63,0x94,0x3d,0x35,0xe0,0xc6,0x2b,0x9d,0x72,0xe0,
0x43,0xbe,0x4c,0x12,0x04,0x8f,0xdc,0x4b,0xb5,0x0a,0xcc,0x51,0x02,0x97,0xfd,0x75,
0xf7,0x6a,0x96,0x23,0x51,0x43,0x5e,0x51,0x4a,0x1e,0x55,0x3e,0x91,0xd3,0xe8,0x14,
0xac,0x6d,0x9a,0xae,0xca,0xe2,0x3f,0x35,0x55,0x91,0xaa,0xab,0x74,0x21,0xf5,0x01,
0x00,0x9c,0x0f,0x62,0x72,0x91,0x48,0x19,0x2a,0x4e,0x63,0x6c,0xf3,0x97,0x0b,0xd1,
0xf4,0x81,0x4d,0xa3,0x5c,0x15,0xe6,0xe0,0xa0,0x48,0xc5,0x39,0x62,0x2b,0x82,0x9b,
0x00,0xab,0xa9,0x29,0x4e,0xd2,0x02,0xf2,0x63,0x26,0x27,0xd4,0xb4,0x86,0x69,0x74,
0x80,0x41,0x2b,0xfb,0x2e,0xb8,0xb7,0xc1,0x42,0x9a,0xd3,0x11,0x6c,0x89,0x9a,0x6c,
0x2f,0x35,0x50,0x19,0x2b,0xd9,0x66,0x0c,0xf4,0x91,0x89,0x90,0x11,0xb7,0x95,0xac,
0x90,0xd8,0x50,0x62,0x06,0xea,0x1b,0x32,0xd5,0xb0,0x2b,0xf8,0xe4,0x82,0x50,0x2a,
0xe6,0x41,0x61,0x87,0x78,0x8a,0x7b,0x7d,0xdb,0x22,0x4d,0x4c,0x53,0xef,0x34,0x58,
0xc6,0x45,0x7d,0x38,0x12,0xbd,0xb9,0x8c,0xa7,0x6d,0x17,0xde,0x58,0x4e,0x82,0xa5,
0x92,0xa2,0xa1,0x69,0x16,0xd8,0x43,0x13,0x46,0x05,0x69,0x1d,0x05,0x00,0x9a,0x20,
0x7f,0x59,0x4a,0x65,0x98,0x56,0xc2,0x77,0x21,0xe5,0x41,0xa4,0xe8,0x48,0xa5,0xd3,
0x29,0x19,0x1e,0xd4,0x44,0xca,0x08,0x89,0x0c,0x75,0xd1,0x63,0xfd,0xb9,0x90,0xac,
0x7a,0xe6,0xc6,0x5f,0xa5,0xf9,0x79,0xd7,0x6c,0x4d,0xed,0x32,0xf2,0x10,0xca,0xe7,
0x7a,0xc8,0x86,0x8d,0xdf,0x26,0x9c,0x32,0xbc,0x8b,0x01,0x2b,0x63,0x69,0x46,0x74,
0x3d,0xf2,0x26,0xb3,0x1e,0xac,0x85,0x97,0x95,0xa1,0x67,0x01,0x7f,0x4d,0xe5,0x33,
0x65,0xfb,0x81,0xde,0xbe,0x7c,0xf7,0x5c,0xb7,0x32,0xb2,0xa8,0xeb,0x7c,0x0d,0xcc,
0x4a,0x57,0x89,0xe8,0x2e,0xf9,0x7c,0x64,0xa0,0x19,0x99,0xc1,0xfe,0xf2,0xa1,0x16,
0x53,0xdb,0xe2,0x96,0xcb,0x98,0xaa,0x6c,0xf0,0x3e,0x49,0x34,0x05,0xfd,0x59,0x5e,
0xa8,0xe1,0x48,0xf3,0x24,0x91,0x2b,0xc1,0xcf,0x1e,0x69,0x06,0x63,0x85,0x71,0x4a,
0x2d,0xdf,0x5c,0x90,0x64,0xeb,0x49,0x07,0x71,0x7b,0x95,0xae,0xe4,0x52,0x0b,0xaa,
0xf0,0xc7,0x74,0xb6,0x96,0x42,0xcc,0x49,0x00,0xf1,0x93,0xa4,0xa5,0xac,0x87,0xc0,
0x0e,0x59,0x7c,0x28,0xc6,0x97,0xbc,0x96,0xe5,0x29,0xf8,0x49,0x94,0x01,0xda,0xb7,
0xf2,0x4e,0x6f,0x0d,0x21,0x3b,0x52,0x64,0x7a,0x94,0xeb,0xcf,0xe3,0x38,0x48,0xce,
0xcd,0xf3,0x35,0x49,0x9a,0x66,0x32,0x91,0x36,0x64,0xac,0x31,0xb5,0x08,0x66,0x8d,
0x33,0x3d,0xbb,0x16,0xa3,0xf2,0x18,0xb3,0x3a,0x95,0x62,0xaa,0x24,0xd9,0x9d,0x3d,
0x4b,0x1b,0x67,0x73,0x28,0x2a,0x36,0xa1,0x61,0x08,0x9b,0xaf,0x99,0x0c,0x39,0x58,
0xe3,0x98,0xc3,0x79,0x4a,0xe9,0x75,0x42,0x5c,0x8b,0xf3,0x6d,0xf1,0x7c,0xc3,0x13,
0xd3,0x48,0x64,0xb2,0x06,0xbf,0xc0,0x99,0x40,0x81,0x89,0x21,0x90,0xa5,0xcc,0x8e,
0xf8,0xdc,0x16,0x77,0x1a,0x67,0xbd,0xfe,0x0d,0xf9,0x96,0x29,0x77,0x96,0x28,0xc0,
0x5e,0x8c,0xb1,0xaf,0xcb,0x9d,0x26,0xdc,0x16,0x22,0x1b,0x67,0xdf,0xe7,0x69,0x46,
0xa5,0x98,0x00,0x09,0xd6,0x99,0x9f,0x4d,0x17,0xc8,0x98,0xce,0xc4,0x22,0x0d,0x97,
0x54,0xfe,0xc9,0x71,0x5d,0x57,0x84,0xe8,0xee,0x5f,0xa3,0x8c,0xef,0x66,0x01,0x8c,
0x95,0x51,0x15,0xce,0xe8,0x61,0xa6,0x72,0x0e,0x95,0xda,0x90,0xe0,0x58,0x16,0xd2,
0xaf,0x05,0x3a,0x86,0xa8,0x4c,0x8c,0xbd,0xd2,0xce,0x83,0xfa,0x24,0x85,0xc6,0x58,
0x9a,0x8e,0xdc,0xa9,0xf1,0x22,0x64,0xad,0xf2,0x48,0xaa,0x36,0xd7,0x9f,0xa8,0xd3,
0x41,0x06,0x93,0x39,0x9f,0xe5,0xea,0x33,0x1f,0x8c,0xb1,0x62,0x4b,0xda,0xb3,0xca,
0x23,0xec,0x1c,0x12,0x90,0x58,0x41,0x27,0x7d,0xe1,0x92,0xd6,0x25,0x21,0x47,0xb9,
0xc5,0x34,0x4f,0x17,0xa2,0x1b,0x64,0x51,0xd7,0x3c,0xe6,0x60,0x96,0xfe,0x29,0xb8,
0x68,0x57,0x87,0x05,0x49,0x91,0x47,0x63,0x2a,0xe9,0x91,0x74,0x93,0x0e,0x91,0xa4,
0xe3,0x9b,0xc5,0x93,0x4f,0xae,0x03,0xad,0x8e,0xba,0x3f,0x2f,0xd7,0xcd,0x79,0xfa,
0x01,0x09,0xb8,0xea,0x3c,0xb4,0xd0,0xc8,0x33,0x15,0x11,0x3c,0x13,0x64,0x9c,0xdc,
0x15,0xed,0x43,0x1b,0xf4,0xf1,0x32,0x8a,0x43,0xdd,0x6e,0x4c,0x85,0x42,0x3d,0x00,
0x6a,0x47,0x47,0x6d,0x19,0x6d,0xd3,0xec,0xc0,0x42,0x82,0x09,0x0e,0x49,0x6a,0x49,
0xdd,0x3a,0xb4,0x59,0x43,0x86,0x29,0x58,0xd4,0xa5,0x96,0xe2,0xb6,0xed,0x7c,0x06,
0xf8,0xee,0x4a,0xea,0x16,0xe2,0x0e,0xc8,0x98,0x05,0xe3,0x28,0x8e,0x8a,0xcb,0x8e,
0x05,0x35,0x03,0xe1,0x43,0xdb,0x5e,0x78,0x09,0x86,0xcd,0x72,0xda,0x60,0x1b,0x38,
0x15,0xfc,0x74,0x64,0xa8,0xe5,0x81,0x37,0xc6,0xdb,0x24,0xdf,0x6a,0x5b,0x9f,0xdb,
0xd5,0xa1,0xbc,0x70,0xfc,0xa0,0x75,0x79,0x25,0x59,0xf8,0x18,0x3e,0x8c,0xd8,0x6e,
0x68,0xe7,0x18,0x8c,0x53,0x2c,0xc0,0x67,0xb9,0xa1,0xee,0x85,0x24,0x4b,0x08,0x2a,
0x5b,0x68,0xf3,0xe0,0x42,0x3b,0x61,0x4d,0x27,0xea,0x97,0x8e,0x4b,0xd3,0xb2,0x5d,
0xe7,0x58,0xe3,0x69,0xed,0x1f,0x22,0x76,0x18,0xba,0xac,0x61,0x0e,0x07,0xd7,0x14,
0xb1,0x1c,0xfb,0x86,0x14,0xb9,0x2a,0x81,0x94,0x62,0xb9,0x43,0xad,0xdf,0xca,0x62,
0x99,0x7d,0x96,0x4e,0xeb,0xa8,0xf3,0x16,0x7d,0x3e,0xbc,0x8b,0x3e,0x9b,0x00,0xf7,
0x56,0x2d,0x7e,0x23,0x17,0x72,0x31,0xa6,0xb6,0x49,0x12,0xc2,0x20,0x86,0x30,0x16,
0x64,0x67,0x55,0xa9,0xa6,0xce,0x93,0x3c,0xbf,0xa5,0xf4,0x7c,0x1b,0x07,0x43,0x2c,
0xb2,0x24,0x7f,0x88,0x03,0xc8,0xd2,0xab,0x2d,0x8a,0x7b,0xc3,0x46,0xcf,0x29,0x5b,
0xbf,0x75,0xa7,0x47,0x77,0xd9,0xa9,0x49,0xfc,0x6f,0xdd,0xa9,0x8e,0x0f,0xa9,0x71,
0x9f,0x0c,0x82,0x90,0xc9,0x24,0xa5,0x0e,0xdc,0x49,0xba,0x84,0x57,0xd5,0xe1,0x12,
0x19,0x78,0xf8,0x43,0x8c,0x08,0x67,0xb0,0x2b,0x8b,0xe0,0x5c,0x92,0x38,0x53,0xd3,
0x48,0x49,0x0e,0xd2,0x1b,0xdd,0x8f,0x9b,0x17,0x4a,0x3b,0xd8,0x30,0x9a,0x4e,0x65,
0xee,0x8b,0x9f,0x2a,0x47,0x97,0x4b,0xd6,0xd3,0x9b,0xad,0xd9,0x0e,0xb1,0xf9,0xde,
0x2d,0xbd,0xde,0x4d,0x6e,0x8c,0x53,0xbc,0x8d,0x9e,0xc7,0x77,0xa1,0xa7,0x0d,0xc7,
0x85,0xf5,0x95,0x77,0xf3,0x04,0x81,0x76,0xfc,0x5b,0xa4,0x66,0x8a,0xf1,0x73,0xee,
0xc2,0x50,0x88,0x11,0x75,0x04,0x41,0xb7,0x7f,0x7c,0xf2,0x13,0x53,0x1d,0xb4,0x42,
0x98,0x8d,0xf8,0xce,0xba,0x41,0xbe,0xca,0x02,0xcc,0x51,0x23,0xf8,0x43,0x5d,0x89,
0x32,0xfc,0x3c,0x11,0xd3,0xa6,0xfa,0x56,0x9a,0x9c,0xdc,0x85,0x26,0x6f,0x19,0xd6,
0x1d,0x48,0xf1,0x82,0xba,0x90,0xe9,0x39,0x0c,0x98,0xbb,0x05,0x67,0x67,0xb0,0x97,
0x3a,0x05,0xd6,0xb1,0x90,0xd6,0xae,0x92,0x4c,0xab,0xb9,0x09,0xe7,0x0c,0xad,0xa8,
0xcd,0x69,0x52,0x2c,0x61,0xbf,0x60,0x5f,0x53,0x4a,0x59,0x6e,0x94,0xa0,0x2d,0x91,
0xa2,0x4e,0x59,0xce,0xaa,0xb0,0x46,0xef,0xb3,0x16,0xf2,0x04,0xb7,0x04,0x59,0xb7,
0x46,0x57,0xeb,0x13,0x08,0xb3,0xd3,0xae,0x59,0x7a,0xef,0xb4,0x4b,0xc7,0x12,0x40,
0xe7,0xd4,0x3e,0x40,0x3f,0x5d,0x26,0xdc,0x52,0x2a,0xfe,0xa5,0x19,0xb5,0xae,0x72,
0xd8,0x45,0x84,0x1a,0x61,0x3a,0x59,0xd2,0x73,0x39,0x3e,0x56,0x7a,0x1e,0x4b,0xfa,
0xf8,0xf4,0xf2,0x65,0x88,0x11,0xd7,0x7b,0xff,0xd2,0xf4,0x08,0x6f,0xaf,0xe5,0x53,
0x48,0xf6,0xcc,0x3c,0x69,0x8f,0xe0,0x9e,0x8f,0xc8,0x7c,0xba,0x47,0x0e,0x67,0xb8,
0xb7,0xd7,0xed,0xda,0xce,0x8e,0x5f,0x35,0x2d,0x29,0x54,0x65,0x1f,0x59,0x12,0x92,
0x7c,0xec,0xff,0xdf,0x07,0x8d,0x80,0x44,0xad,0xaf,0x84,0xc4,0x76,0x77,0x70,0xe1,
0x6f,0x8d,0x61,0x64,0x19,0xc2,0x10,0x38,0x13,0xc5,0x80,0xf0,0xf4,0xb2,0x01,0xba,
0x1d,0xe5,0x3c,0x59,0x91,0x8f,0xdd,0x1e,0x8b,0x98,0x63,0xb6,0x62,0xde,0xd6,0x0f,
0xfa,0x70,0x08,0x44,0xc0,0x38,0xd9,0xad,0xb2,0x52,0x69,0x91,0x55,0x3a,0x6a,0x10,
0x86,0x64,0x85,0x0e,0x74,0xc8,0xa6,0xf9,0xe2,0xc9,0xd6,0x48,0x83,0xa0,0xd9,0x60,
0xc3,0xa6,0x98,0x37,0x06,0x34,0xdb,0x22,0x19,0x1d,0xa5,0x10,0x28,0x1b,0x9c,0xb0,
0x4e,0x54,0xd9,0x21,0x19,0x69,0xdd,0x39,0x54,0xc5,0x2a,0x9c,0xdf,0x96,0xd1,0x82,
0x6d,0xdf,0x0b,0xf2,0x73,0x20,0x42,0xa0,0x74,0xf8,0x18,0xea,0x4c,0x9a,0xb1,0x29,
0x03,0x18,0x9d,0xf2,0x8f,0x15,0x44,0xc8,0xa6,0xf2,0x0b,0x19,0x24,0x45,0x2d,0x54,
0x81,0x38,0x41,0xdd,0x08,0x52,0xc9,0x13,0xbd,0x3d,0xca,0x84,0xcc,0x25,0x4f,0xf3,
0x8f,0xb6,0x52,0x6c,0x06,0x1c,0x98,0x4b,0xd3,0xdf,0x48,0x87,0x96,0x50,0x80,0x80,
0x9e,0x88,0x83,0xe8,0xeb,0x0d,0x18,0xa6,0x35,0x29,0x96,0x02,0x8a,0x09,0x31,0x1d,
0xd4,0x5b,0x91,0xf2,0x07,0x05,0x87,0x8c,0xad,0x36,0xe1,0x9f,0x10,0x2c,0x27,0xa9,
0xcf,0x65,0xb2,0x24,0x47,0xad,0xec,0xe3,0x1d,0x1c,0x27,0x69,0xd2,0xea,0xe4,0xae,
0xd7,0x6f,0x8b,0xde,0x01,0x7e,0x0e,0xfd,0x4a,0xe1,0x68,0x9d,0xa6,0xe2,0x63,0xd0,
0x0b,0xea,0xca,0x6b,0xc3,0x76,0x8c,0x9a,0xea,0xfe,0x7d,0xe5,0x57,0x82,0xd3,0xfa,
0xf4,0xe9,0xfd,0x87,0xa1,0x19,0x32,0x1d,0x41,0xf9,0x6c,0xb4,0xe3,0xb5,0xda,0xd3,
0x73,0x7b,0x81,0x42,0x25,0x8f,0x3b,0x42,0xa2,0x69,0x73,0x6a,0x8e,0x56,0xa7,0x3e,
0x9d,0xe8,0xe6,0xff,0xfd,0xdd,0xab,0x1f,0x47,0x9e,0x67,0x1f,0x21,0xcd,0x9b,0xd1,
0xa8,0x37,0x8c,0xc8,0x75,0xf9,0xb1,0x4c,0x66,0xc5,0x7c,0x18,0xed,0xef,0x97,0xa7,
0xb1,0xb4,0x8e,0x1c,0xe1,0xe6,0xfb,0xe8,0xc3,0x10,0xc0,0xbe,0x91,0x9f,0x3e,0x49,
0x33,0xf0,0xf4,0xa0,0x45,0xb1,0x74,0x94,0x2c,0xcb,0x46,0x03,0x1a,0x1e,0x8c,0x4a,
0x7b,0x31,0xc1,0x7e,0x0b,0x69,0x4c,0x46,0xd3,0x0b,0xbc,0xb2,0x4b,0x25,0xf0,0xd9,
0x22,0xff,0x44,0x6f,0xea,0xf0,0xb4,0x55,0xf6,0x86,0x81,0xcf,0xd6,0x4e,0xbe,0xef,
0x7d,0xa8,0xc6,0x39,0x48,0xef,0xf2,0x0c,0x3d,0x63,0x33,0xbd,0xfd,0x32,0x9f,0xf7,
0xb6,0xbb,0x07,0x53,0x92,0xda,0xea,0x11,0xf4,0x3d,0xaf,0x5a,0xf9,0x2f,0x4b,0xf0,
0xf4,0x2d,0xa4,0x75,0x02,0xbf,0xd0,0xf4,0xca,0x96,0x93,0x35,0x5b,0x27,0xdf,0xf7,
0x3f,0xdc,0x3a,0x29,0xdc,0x98,0x74,0xf0,0xe1,0xd3,0x27,0xaf,0x5c,0x6d,0xea,0x53,
0xeb,0x7c,0x12,0x3e,0xa3,0x27,0x26,0x9a,0x81,0xa1,0xd3,0xb5,0x61,0x9c,0x0e,0x64,
0x47,0xd3,0x73,0xfb,0xe9,0x9b,0xe9,0x8e,0x85,0x34,0x85,0xaf,0x8d,0x84,0x30,0x81,
0x54,0xc5,0x8f,0xda,0x9c,0x27,0x71,0x8c,0x69,0xac,0xb6,0x65,0x87,0x81,0x9e,0x5e,
0x49,0x85,0x06,0xe0,0x0a,0x06,0x63,0xa4,0x2f,0x43,0x24,0x6a,0x7b,0x6a,0x46,0xfb,
0xfd,0xd3,0x7e,0xef,0xb1,0xd7,0xf3,0x06,0x9e,0xd7,0xda,0xa7,0xef,0x80,0x77,0xbd,
0x57,0xae,0x1f,0x84,0xe1,0x73,0x6a,0x29,0xfa,0x11,0x1a,0x41,0xfe,0xa9,0x49,0xac,
0xd7,0x8a,0xe6,0xb5,0xad,0x26,0x34,0x65,0xeb,0x8a,0x95,0x41,0xfa,0xa1,0x2c,0x82,
0x28,0x6e,0x5d,0x03,0x0a,0x64,0x6f,0x85,0xe8,0x15,0x36,0x29,0x9b,0x6a,0x27,0x6f,
0x46,0xad,0x5f,0xbd,0x76,0x3d,0x8d,0xfb,0x0c,0xfc,0x3f,0xc9,0xb3,0xae,0x95,0x23,
0xfa,0x99,0xda,0x2e,0xb4,0x95,0xf9,0xd7,0xb7,0x3f,0xff,0xd4,0x16,0xff,0xde,0xf7,
0x1f,0x88,0x1f,0x9e,0x1a,0x03,0x74,0x28,0x74,0x81,0xd2,0x31,0x2d,0xa9,0x35,0x98,
0xd8,0xce,0x24,0x5d,0xc0,0xf2,0x51,0xbe,0x95,0x4e,0x09,0x1a,0x3d,0x21,0xfa,0xae,
0x8a,0x4f,0xec,0x53,0xfc,0xb0,0x7c,0xfa,0x41,0xfe,0x01,0x55,0x2d,0x29,0xe8,0xe1,
0xd3,0xf4,0x08,0xb6,0x12,0xe2,0xa6,0xf3,0x33,0xf9,0x91,0xf8,0x11,0xb2,0xf5,0x36,
0x8e,0x28,0x84,0x61,0x27,0xab,0x0a,0xdb,0x4c,0xa6,0x47,0x3b,0x23,0x58,0x36,0x0a,
0xc4,0x63,0x44,0x17,0x8c,0x99,0x92,0xda,0x9d,0xd0,0xf1,0x29,0x19,0x7a,0xb2,0xd1,
0x7f,0xb6,0xd5,0x8e,0x3f,0x53,0xcc,0xe2,0xcf,0x1d,0x0b,0x17,0x2e,0x73,0xc7,0xc0,
0x85,0xa3,0x57,0x70,0x80,0x3e,0x22,0x13,0x48,0x9b,0xea,0x3e,0x3c,0x39,0xea,0xf5,
0x5a,0xed,0x79,0xed,0xea,0xb7,0x7c,0xb5,0x7b,0x78,0x42,0xb7,0x16,0xf5,0x5b,0x74,
0xb1,0x7b,0xd2,0xb3,0x56,0x2e,0x6c,0xd9,0x60,0x65,0xdf,0x0b,0x85,0xb7,0x3f,0xdf,
0xf7,0xe6,0x1e,0x59,0xac,0xb9,0xbd,0x41,0x57,0x70,0x63,0xb1,0xef,0x2d,0x3c,0x33,
0x69,0x61,0xef,0xe9,0x8b,0xe6,0x8b,0xda,0xf7,0x94,0x47,0x72,0x4b,0x3c,0xca,0x08,
0xf5,0xa0,0x7c,0x6d,0xc2,0x64,0x1e,0x65,0x4a,0x7b,0x0c,0xeb,0xe1,0xb4,0xe2,0xbe,
0x35,0x3e,0x3e,0x92,0x31,0x52,0x2c,0xf1,0x23,0xb9,0x75,0x45,0xb3,0x2e,0x1d,0x4f,
0xd5,0x09,0x66,0x49,0x4a,0x0d,0x25,0xda,0x35,0xc0,0x9b,0x3b,0x6e,0x8d,0x5d,0x31,
0xc5,0x4a,0xca,0xa9,0x2f,0x37,0xdf,0x1c,0xb7,0x1c,0x12,0x66,0xd4,0xa7,0xf4,0x5a,
0xe6,0x53,0x87,0x90,0x08,0xf8,0x60,0xf6,0xcd,0xb9,0x3f,0x14,0x98,0xad,0x74,0x6c,
0x76,0x66,0x7d,0x45,0x31,0xd2,0x7e,0x03,0x37,0x95,0x4f,0x55,0x84,0x37,0x69,0x2c,
0x47,0x23,0xd8,0xde,0xe5,0x18,0xfe,0x09,0xbe,0xdc,0x6b,0x15,0x7e,0xb6,0x54,0xf3,
0xa6,0xf7,0x7a,0x39,0xd6,0x76,0x80,0xca,0xd3,0x9b,0x33,0xd4,0x72,0x4c,0xd1,0xe2,
0xd8,0x9d,0xf2,0xd6,0x4e,0xc1,0x68,0x3a,0x56,0xa3,0x58,0xc2,0x57,0x12,0xf6,0x26,
0x99,0xc8,0x57,0x48,0xdf,0x68,0x22,0x92,0x87,0x18,0xde,0xdc,0xd3,0x36,0xc4,0x4c,
0xad,0x0f,0x7b,0xec,0xbd,0x8e,0x83,0x4b,0x72,0x98,0x30,0x21,0x4f,0xb9,0x37,0xbc,
0x82,0x6b,0xcc,0x50,0xeb,0x4a,0xc6,0xa5,0x45,0x0c,0x80,0xe2,0x10,0xdf,0x5d,0x3b,
0x54,0xf8,0x94,0xfe,0x36,0x3d,0xf1,0x7f,0xff,0x8f,0xd0,0x6f,0xb8,0xa1,0x8d,0x38,
0xb3,0x8a,0x7c,0xb9,0x31,0xc9,0xf3,0xae,0xc1,0xf1,0x92,0xd0,0xd4,0xf4,0xd3,0x64,
0x12,0x93,0x6c,0x59,0xfb,0xa5,0xe7,0x3b,0xa4,0x9d,0x4a,0xc4,0x0c,0x4d,0xcf,0x89,
0xf2,0xbc,0xf6,0xd5,0x04,0x59,0xab,0x1c,0x80,0x23,0x1d,0x4a,0x28,0xa4,0x77,0x0d,
0xd3,0x8f,0x30,0xa1,0x59,0x1a,0xb8,0xbc,0x8c,0xac,0x73,0xff,0x37,0x85,0x0b,0xad,
0x8d,0x21,0xca,0x78,0x60,0xa6,0x3e,0x04,0x83,0x1f,0x18,0xbd,0x22,0x4e,0x66,0x17,
0xa3,0x5d,0xf1,0x38,0xac,0xe9,0x9f,0x88,0x2b,0x24,0x02,0xd9,0x45,0x2b,0xbb,0xa8,
0xef,0xf0,0xc2,0xdb,0x2f,0x61,0x69,0xcf,0x02,0xc9,0x7c,0x07,0x97,0x2b,0xcd,0x13,
0xf3,0x6d,0x1b,0xad,0x71,0xb7,0xa0,0x9b,0xed,0x20,0xc8,0x4a,0xe3,0x0b,0x1d,0xfd,
0x2e,0x10,0x72,0x72,0x37,0x06,0x19,0x9f,0x1c,0x49,0x87,0xb2,0xb0,0x32,0x3a,0x46,
0x08,0x07,0xfc,0xc8,0x3e,0xee,0x93,0xc5,0x72,0xb2,0x25,0x3d,0x67,0x65,0x03,0xea,
0x32,0xc8,0xa6,0x9b,0x9c,0x41,0x51,0x7c,0x89,0xd4,0xd3,0x42,0xb3,0x59,0x99,0x0d,
0x85,0xa7,0x65,0xc6,0x26,0xa0,0x5b,0x74,0x14,0x93,0x2e,0x11,0xf6,0x8e,0x29,0xf3,
0xd7,0x11,0x97,0xd6,0xcb,0xb1,0x9c,0x92,0x52,0x45,0x08,0xea,0xb1,0x6d,0x0b,0x2d,
0x44,0x00,0xea,0x1c,0xaf,0xf8,0x15,0x75,0x19,0xaf,0x32,0xe0,0xd1,0xaa,0xb4,0xe6,
0xad,0x3d,0xbd,0xe1,0xd2,0x5b,0xeb,0x41,0x8a,0x84,0xbe,0x36,0x4e,0xf9,0xfa,0x59,
0xb0,0xc7,0x4d,0xfb,0x69,0xdf,0x23,0xda,0x2d,0xd9,0x54,0x27,0x58,0xf8,0x1c,0xf2,
0x3c,0xf0,0xf4,0x71,0x57,0x3a,0x9d,0x1a,0x88,0xd7,0x95,0xa6,0x99,0xb6,0xbc,0xd7,
0x4c,0xca,0x12,0x2b,0x6c,0xe0,0x57,0x44,0x06,0xb2,0x4e,0x35,0x4a,0xf2,0x4c,0x89,
0x43,0xd7,0x84,0xf9,0x78,0x21,0x26,0xd5,0x04,0x95,0x90,0x4f,0x69,0x86,0x88,0x66,
0x75,0x9a,0x40,0x09,0x8b,0x69,0xfc,0x1b,0xa7,0x39,0x3b,0x7f,0x90,0x5c,0xbc,0x79,
0xf2,0xaa,0xa5,0x4d,0x3a,0xec,0x3e,0x3d,0xb6,0x53,0xf5,0xf6,0x51,0xe5,0x51,0x3f,
0xe4,0x4c,0x55,0x96,0x0e,0x48,0x1f,0x81,0x7f,0x15,0x38,0x87,0x2d,0x26,0x29,0x91,
0x76,0x5d,0x72,0x14,0xfe,0x8d,0x74,0xd5,0xdb,0xbc,0x95,0xae,0x9e,0xa5,0x21,0xe7,
0x0c,0x74,0xe6,0x36,0x89,0x53,0x25,0xdd,0x87,0xa7,0x5d,0x4a,0xde,0xc8,0x4b,0xcb,
0x19,0x44,0x5f,0xd8,0xf0,0xad,0x4b,0x83,0x25,0xbc,0xc3,0x5f,0xd4,0x63,0x76,0x3f,
0x9c,0xed,0x34,0xfb,0xf2,0xa4,0x5b,0xde,0x68,0x81,0xc9,0x53,0x78,0x05,0x32,0x37,
0x1c,0xf8,0x94,0x51,0x68,0x29,0x06,0x2f,0xd5,0x2b,0x2e,0xb7,0x3f,0xf6,0x74,0xd9,
0x1d,0xe3,0x74,0xee,0x11,0x25,0x5e,0x2d,0xd6,0x73,0x0d,0xfc,0xd0,0xb9,0x92,0xae,
0x10,0x2d,0x59,0x59,0x75,0x6e,0x54,0xcd,0x47,0xb8,0x5b,0xb5,0x02,0x99,0x21,0xd8,
0x14,0x77,0x06,0x6c,0x90,0xc0,0x3a,0x69,0x60,0x2e,0x9a,0x64,0x16,0xe8,0xc9,0x74,
0xa4,0x7d,0xf8,0x6e,0xf1,0x12,0xfb,0x82,0x6e,0x68,0x7c,0xe9,0x86,0xf9,0xd4,0x32,
0x24,0x63,0x69,0x9d,0x62,0x5f,0x4b,0x7a,0x61,0x87,0xab,0x3f,0x74,0xe8,0xbf,0xb6,
0xa2,0x43,0x3a,0x9e,0xf5,0x2e,0x2d,0xe8,0x9d,0x7b,0xf8,0xf4,0x0b,0x89,0x79,0xb7,
0xdf,0x3b,0x7a,0x78,0xfc,0xe0,0xe4,0xbb,0x7e,0x8f,0x3e,0x63,0xb1,0x57,0x4f,0x21,
0x4d,0x52,0xba,0xec,0x31,0xbd,0x04,0x80,0xcc,0x3d,0x96,0xbe,0x7e,0xb7,0x5d,0x05,
0xee,0xb1,0x05,0xd7,0x2d,0x2f,0x01,0x5e,0x6f,0xd0,0x03,0x7f,0xbe,0xad,0x89,0xc7,
0x76,0x1c,0x3d,0xaa,0x03,0x2c,0xf4,0x76,0xbc,0xeb,0x8a,0x7e,0x54,0xea,0xdd,0x20,
0x20,0x5d,0x24,0x2d,0x57,0x2a,0x42,0xc0,0xc1,0xac,0x07,0xb1,0x72,0x7c,0xc5,0xb7,
0xf0,0xe9,0x82,0xb4,0x1c,0xfa,0x4d,0xf9,0xbc,0xe7,0xf0,0x22,0xca,0xb6,0x43,0x52,
0x7e,0x94,0x0d,0x1c,0x79,0xe4,0xc1,0xd4,0x12,0xb0,0x9b,0x8e,0xca,0xa7,0xfb,0xfc,
0x1e,0x34,0xc4,0x27,0xa0,0xda,0xc1,0x11,0x36,0xfa,0x03,0xb3,0xcd,0x10,0x6d,0x63,
0xf4,0x6b,0x05,0x89,0xb5,0xc4,0xc6,0xe8,0x57,0x22,0xa3,0x2b,0xee,0xa2,0xcb,0xf5,
0x25,0x39,0x6a,0xf3,0x97,0xdc,0x5c,0xe0,0x8a,0xd5,0x74,0x43,0x99,0x5d,0xff,0x32,
0xdc,0xb3,0x86,0xd7,0x9c,0xcf,0xda,0xe0,0x54,0x9f,0x49,0xeb,0x8a,0x05,0x8c,0x8d,
0xd2,0x85,0x35,0x18,0xeb,0x48,0xa7,0xf1,0xce,0x43,0x7b,0x64,0xab,0xb9,0x42,0xd3,
0xb6,0xb0,0xca,0x93,0x6a,0xf6,0x07,0x26,0x44,0x7a,0x09,0xb3,0x9a,0x98,0xe3,0xf7,
0x45,0x04,0x0e,0x24,0xb3,0xcd,0x03,0xeb,0x48,0x1f,0x4b,0xa4,0xe7,0x52,0x0d,0x2d,
0xb4,0xea,0x74,0xdd,0x62,0x12,0x71,0x01,0x40,0x17,0x00,0xe9,0x3c,0x5e,0x19,0x97,
0xc4,0x67,0xb5,0x14,0x75,0x6b,0x6b,0xc6,0x51,0x57,0x08,0xde,0x5d,0x50,0x3b,0x5e,
0x52,0x50,0x8e,0x6e,0x3e,0x7e,0x83,0x38,0x87,0x62,0x3a,0xef,0x71,0x79,0x69,0xe0,
0x55,0x1a,0xb3,0xae,0x28,0x72,0x23,0x2f,0x0c,0xf7,0x9b,0xe5,0xcc,0x3f,0x69,0x5a,
0x3e,0xf6,0x58,0xb8,0xea,0x17,0xc9,0xd0,0x0c,0xeb,0xa0,0x3a,0x5b,0x0c,0xe7,0xbb,
0xaa,0xbb,0x22,0x5f,0x26,0x9a,0x28,0xde,0xbe,0x24,0x99,0x95,0x96,0x31,0x6e,0xda,
0xfc,0x2e,0xc8,0x38,0x0d,0xb0,0x5c,0xa9,0xce,0xe8,0x72,0xa2,0xc5,0x2c,0xe5,0x87,
0xb4,0xcb,0x5e,0x82,0x22,0xe0,0xb7,0xde,0x95,0x05,0x31,0xdf,0x5b,0xc7,0x89,0xcf,
0xf9,0x81,0x15,0x67,0xf6,0xde,0xad,0x07,0xfd,0xf7,0x80,0x1c,0xd7,0xfb,0x7f,0x79,
0xf3,0xf2,0x59,0xba,0xc8,0xc0,0x8d,0xa4,0x68,0x96,0xcf,0xb9,0xad,0x9b,0xf7,0x2d,
0x14,0xf4,0x9c,0x17,0x77,0x7a,0x77,0xa2,0xd0,0xb6,0x7d,0x88,0x9f,0x39,0x52,0xb0,
0x68,0x31,0x1d,0x2e,0x6b,0x94,0x5a,0x95,0x45,0x4c,0x92,0x18,0x7e,0xd3,0x07,0x19,
0x10,0x7e,0xa5,0x1a,0x88,0x08,0x0a,0x99,0xf4,0x08,0xf1,0xd2,0x4b,0xb8,0xd3,0x20,
0x8e,0x75,0x0a,0xa7,0xa3,0x21,0x73,0x58,0xe1,0x42,0x24,0xa9,0xd3,0x2f,0x16,0x82,
0x87,0xcb,0xad,0x53,0xd7,0x6a,0xa1,0x74,0x21,0x4b,0x7d,0x35,0x81,0x3d,0xd7,0xdb,
0xb0,0x0d,0xe7,0x17,0x72,0xa8,0x96,0x3e,0x44,0x78,0xab,0xdf,0xc9,0x51,0x5d,0xd6,
0xc3,0x11,0xd0,0x4e,0xce,0xf5,0xb3,0x9c,0x55,0x3c,0xda,0x2e,0x65,0x52,0x17,0x1d,
0x5a,0xfe,0x84,0x4a,0x68,0x55,0x10,0xdb,0xba,0xda,0xe9,0xd0,0x27,0x41,0x42,0xd4,
0xca,0xf9,0x84,0xc7,0xb4,0x44,0x0c,0x39,0xbc,0xdd,0x48,0x66,0x10,0x9b,0x65,0xb5,
0xc8,0x3d,0x5b,0x0f,0xdc,0xaf,0xb9,0xca,0xe0,0xa4,0xfd,0xff,0x8c,0xef,0xb8,0x32,
0x49,0xff,0xbb,0xf2,0x3d,0x32,0x5a,0x0c,0xfe,0xf4,0xf2,0xf9,0xaf,0x14,0x66,0x55,
0xc1,0xb6,0xa7,0x74,0x38,0xae,0x7b,0x46,0xac,0xf5,0xc1,0xce,0x8b,0xf9,0x40,0xfc,
0xd0,0x37,0x45,0x00,0x5d,0x49,0xe5,0xe0,0x9a,0xab,0x9f,0x89,0x78,0xf5,0xc7,0x77,
0xef,0x10,0x34,0x2b,0x45,0xd1,0xe1,0x64,0x4e,0x67,0xf5,0xe5,0x91,0xae,0x6e,0x62,
0xaa,0x62,0x69,0xaa,0x2d,0xf0,0x1b,0x00,0x23,0x6d,0x80,0x09,0x9a,0x16,0x3d,0x96,
0x68,0x7a,0x98,0x43,0x15,0x65,0x85,0x96,0x4e,0x38,0x6c,0xd1,0xf4,0x9d,0x79,0x9c,
0x5a,0x7e,0x9c,0xc8,0x4c,0x9b,0x56,0x6d,0x55,0x16,0x29,0xe5,0x21,0x22,0x98,0xf2,
0xa3,0x30,0x5a,0xbc,0x7d,0xf1,0xfa,0xe7,0xb7,0xef,0x4c,0x11,0x5c,0xa7,0x0c,0x09,
0xc2,0x52,0x58,0x65,0xd8,0x65,0x82,0x46,0x13,0xab,0x07,0xcb,0x58,0x79,0x28,0x68,
0x6c,0xb6,0x04,0xf1,0x3f,0xcd,0x17,0xfc,0x42,0x1c,0xb6,0xdf,0x54,0xac,0xe6,0x9e,
0x7c,0xa5,0xcb,0x22,0xfa,0x88,0x9e,0xf6,0x10,0x63,0x57,0xfa,0x69,0x93,0x3d,0xf6,
0x11,0xfc,0x10,0x51,0x59,0x70,0xa5,0xaa,0xbc,0xc6,0x30,0x8d,0x43,0xdd,0xaf,0xa9,
0x1d,0x0d,0x67,0x0f,0x2a,0x21,0x5d,0xad,0x78,0xc2,0xd6,0xad,0x7c,0xe3,0x0f,0xd7,
0xf7,0xf9,0x8d,0x06,0x3e,0x6b,0x60,0x2c,0x7f,0xe1,0x27,0x97,0xd5,0x32,0xe3,0x57,
0xf9,0x48,0x73,0xae,0x38,0xe5,0x2e,0x8a,0x31,0x1c,0x92,0xd3,0x81,0x46,0x6f,0xfc,
0x11,0x32,0x49,0x97,0xb3,0xb9,0x3d,0x8b,0x74,0x98,0xc6,0x07,0xfd,0x17,0xb2,0x3a,
0xfb,0x58,0xd0,0xa1,0xb9,0xbf,0x47,0x3a,0xe0,0x2c,0x35,0xea,0x0d,0xd7,0xb3,0x7f,
0x0e,0x05,0x75,0x36,0xd5,0x06,0xdc,0x89,0xb4,0x69,0xea,0x37,0xfc,0xed,0xfe,0xfd,
0xef,0x21,0x3c,0xf4,0x16,0xb9,0x66,0xeb,0xd4,0x81,0xe4,0x64,0xad,0xd0,0x30,0x6a,
0xc9,0x87,0x4e,0xba,0x45,0x58,0xea,0xb6,0xf7,0xf6,0x0d,0xe4,0xc7,0x1e,0x42,0x54,
0x91,0x9a,0xe8,0x94,0x27,0xe8,0x14,0xe8,0xc6,0x39,0x34,0x41,0x3b,0x26,0x27,0x95,
0xa6,0xea,0x50,0xb3,0x68,0x4f,0x62,0xc5,0xf6,0xc0,0xb4,0xdb,0xaf,0x19,0x84,0x82,
0x8b,0xa1,0xb5,0xdb,0x6b,0xeb,0xf0,0xd5,0xfd,0x26,0xc0,0xb0,0x3f,0xc4,0x6f,0x5a,
0xc9,0x59,0x07,0x7b,0x75,0x69,0xc3,0x54,0x71,0x29,0x59,0x91,0x65,0xbf,0x4f,0x4f,
0x22,0xee,0x89,0x2d,0x04,0x25,0x03,0xc3,0x5b,0x66,0xac,0xed,0xbe,0x6c,0x3a,0xfb,
0xfb,0xdf,0xfe,0x37,0xf6,0x87,0x2c,0xce,0x7c,0x6e,0x6d,0xd4,0x00,0x98,0x46,0xed,
0x2b,0xea,0x36,0x4c,0xe9,0xc5,0xb0,0x10,0x7f,0xaf,0xbd,0x5e,0x10,0xb0,0xad,0x28,
0xfa,0x59,0x1d,0x35,0xb8,0xf2,0x0c,0x19,0x3a,0xef,0x2e,0x33,0xca,0x0d,0x82,0x2c,
0x83,0xfa,0xf0,0x09,0x5a,0xf7,0x63,0x67,0xb5,0x5a,0x75,0x48,0x17,0x3a,0xcb,0x3c,
0xd6,0xce,0x11,0xf1,0xa9,0x85,0x41,0xdd,0x8c,0x08,0x35,0x93,0x91,0xc3,0x86,0x3e,
0x40,0xf4,0x40,0x1b,0x5d,0x68,0xd9,0x2c,0x3e,0x90,0xac,0xe4,0x7e,0x7a,0xde,0x2a,
0xe6,0x74,0x2a,0xd2,0x1b,0x6e,0x54,0x23,0xb6,0x4d,0x2c,0x23,0x97,0x1a,0x69,0xca,
0x54,0xd6,0x1c,0x5b,0x5d,0x52,0x27,0xc8,0x98,0xc2,0x05,0xf3,0x30,0x07,0xe5,0xbc,
0xa4,0xc5,0x9e,0x1b,0xb1,0x40,0x0f,0xb0,0x65,0xf2,0xb6,0x55,0xd2,0x68,0x4b,0x0d,
0xce,0xab,0xf1,0xc0,0x0d,0xc5,0xe7,0x37,0xac,0xbe,0x14,0x82,0x46,0x5c,0x3d,0x63,
0xbe,0xd9,0xcc,0x12,0x3c,0x7e,0x87,0xd8,0x34,0x5d,0x16,0x2e,0xae,0x75,0x1d,0xd2,
0xe5,0x9c,0xeb,0x36,0x15,0x12,0x8d,0x03,0x34,0x7b,0xdc,0x70,0x59,0x15,0x54,0x57,
0x07,0x9d,0x9d,0x6f,0xf5,0x5d,0x6d,0x4f,0xe6,0x79,0xb5,0x3f,0xbd,0x9e,0x5d,0x89,
0xd4,0xa1,0xd2,0xb9,0xcd,0x22,0x38,0xdb,0x4a,0xa7,0x00,0xce,0xd8,0x6b,0xb1,0xe4,
0x02,0x17,0x17,0xc0,0x6b,0x3a,0xf8,0x59,0x30,0x58,0xa6,0x09,0x84,0xe3,0x21,0x37,
0x5e,0x73,0xf6,0xcf,0xe5,0x25,0x9f,0xf0,0x6b,0xd1,0x37,0xfc,0xa2,0xb6,0xde,0x71,
0x74,0x2e,0x5d,0x9b,0x1d,0x8c,0x61,0x3a,0xc9,0x35,0xd6,0x5e,0xb3,0x46,0x60,0xcc,
0x9b,0xd6,0xd8,0xb6,0x56,0xaf,0x76,0x34,0xd5,0xa2,0x2d,0xde,0xd0,0xba,0x40,0x69,
0xde,0x4d,0x66,0x1c,0x21,0x1f,0x80,0x26,0x31,0x11,0xcb,0xbc,0xea,0x8d,0xa3,0x3e,
0x2e,0xb9,0xff,0xb7,0xe7,0xc6,0xbf,0x99,0x07,0x12,0x1f,0x57,0x49,0xf8,0xc8,0xba,
0x46,0xdd,0xcc,0xd5,0xb1,0xb5,0xf5,0x5c,0x72,0x5a,0x42,0x39,0x36,0x12,0x44,0x0c,
0x6e,0xdb,0x46,0x4e,0xba,0xaa,0xf7,0xb8,0x0a,0x22,0x16,0xfc,0xb1,0x9c,0x53,0x77,
0x66,0x54,0x98,0x9e,0xb4,0x30,0x0f,0x66,0x42,0x0b,0x20,0x81,0x62,0x4f,0x2a,0x96,
0x99,0x3d,0x19,0xc0,0x0a,0x1d,0xf3,0xce,0x75,0x6d,0x12,0x73,0xc4,0x6a,0xda,0xa9,
0x00,0xaf,0x27,0x5c,0x8b,0xd0,0x45,0xd3,0x36,0xbe,0xbf,0x4c,0x5e,0xf0,0xfa,0xd5,
0x95,0x3f,0x12,0xbc,0x70,0xd4,0xe9,0xd3,0x97,0xb7,0x3b,0xdc,0x10,0x6e,0xbd,0x9e,
0x14,0xcd,0x71,0x59,0xc5,0xe4,0x3c,0x93,0x1e,0xb2,0x3c,0x68,0xeb,0x8f,0x51,0xd2,
0x44,0xe6,0xdd,0x76,0xf2,0xcf,0x31,0xa5,0xe2,0xdd,0x83,0xe3,0xe3,0x56,0xcb,0xb5,
0xd9,0xeb,0x35,0x8c,0xb1,0xf5,0x65,0x25,0xb6,0x9f,0x3e,0x39,0xee,0xac,0x8e,0xd4,
0xa7,0x4f,0xa6,0xd4,0x3c,0xa6,0xac,0x4b,0x33,0xd5,0x5b,0xab,0x7b,0x67,0xa3,0x12,
0x5b,0xf2,0x2e,0xf8,0x02,0xed,0xd1,0x0f,0x6d,0x64,0xe6,0x42,0xe7,0x62,0xcd,0x17,
0x65,0xba,0x5e,0xe0,0xa2,0xb9,0x5c,0x64,0xc0,0xb2,0xe9,0x60,0x67,0x69,0xf7,0xe9,
0x53,0x49,0xb6,0xd3,0xde,0xb6,0xc5,0xf5,0xbd,0xa1,0x4b,0xdc,0xa1,0x4b,0x7b,0x0e,
0x69,0xcd,0x84,0x8b,0x51,0x49,0xca,0xe3,0x8a,0x94,0xf4,0x3e,0x0e,0x87,0x94,0xd9,
0x77,0xb8,0x80,0x24,0xbe,0x07,0x52,0xae,0xfb,0x9f,0x2d,0x42,0xe8,0xed,0x5f,0x6c,
0x2b,0x49,0xef,0xb0,0x7e,0xb7,0x5a,0x38,0x3b,0x73,0x1a,0x25,0x14,0xb6,0xb8,0x73,
0x37,0x24,0x6a,0xa8,0x49,0xa5,0xf7,0x7d,0x36,0xea,0xb5,0x4a,0x3a,0x96,0x36,0x51,
0x33,0x64,0xd3,0x9c,0xf1,0x13,0x3a,0x35,0x73,0x56,0xd2,0x34,0xa3,0x7f,0x1a,0xe2,
0x25,0xb2,0x42,0x0a,0x55,0x35,0x2f,0xdb,0xfd,0x1e,0xa7,0x0a,0x11,0xe2,0x85,0x9f,
0x90,0x30,0xd4,0x63,0x9d,0xdd,0x3c,0xae,0x98,0x92,0x0d,0xd7,0x04,0x7e,0x3d,0x5a,
0x28,0x51,0x07,0xe2,0xf8,0x69,0x6e,0x62,0xa6,0xf8,0x1c,0x86,0x37,0x64,0xf9,0x09,
0xb7,0x5c,0xa7,0x8f,0xd1,0x40,0xe2,0xf9,0x75,0x1b,0x4e,0x73,0xfb,0x6d,0x4d,0xbc,
0x9b,0x11,0xba,0xa6,0x35,0x54,0xbc,0x85,0x74,0xdc,0x83,0xc5,0x8f,0x34,0x7b,0x6d,
0x24,0x69,0x57,0x14,0x31,0xd3,0xfb,0xc9,0x78,0xd1,0xd6,0x70,0xf7,0x1c,0x99,0x84,
0x1e,0x21,0xb5,0x31,0x65,0xd7,0x4a,0x8b,0x94,0xaa,0xb7,0xc8,0x4e,0x68,0x21,0x7a,
0x03,0x1f,0x9f,0xc4,0xee,0x18,0xb7,0xcc,0x18,0x38,0xd3,0xaf,0x59,0x77,0x46,0xe6,
0x25,0x41,0x9c,0x64,0x8a,0x26,0xd7,0x29,0xcc,0x41,0x84,0x79,0x3d,0x50,0xdb,0x9c,
0x8e,0x95,0x4f,0x1e,0x90,0x44,0x3a,0x6f,0x0a,0x62,0x03,0x87,0x04,0xf6,0x19,0x41,
0x00,0x37,0x35,0x01,0x6d,0xba,0x52,0x35,0xce,0x97,0x8f,0xf4,0x96,0x79,0x31,0x60,
0xe9,0xc3,0x2c,0x25,0x9e,0xfd,0xfc,0xe6,0xb9,0x6d,0xb6,0x57,0xbe,0xf8,0x99,0x5a,
0x05,0x4d,0xc6,0x4e,0x90,0xd8,0x17,0x71,0xd1,0x59,0xf7,0x06,0x9b,0x92,0x0a,0x3d,
0xad,0xc2,0x8f,0x97,0xf0,0x63,0x25,0x54,0x9e,0xf0,0x9c,0x16,0x67,0x9d,0x64,0x20,
0xf7,0x3f,0x17,0x01,0x01,0x41,0x56,0xa3,0x52,0xd3,0x65,0xc4,0xdd,0x76,0x5c,0x59,
0xa7,0x2e,0x1a,0xce,0x84,0xe6,0x26,0xd6,0xb9,0xac,0x97,0xf1,0x27,0xb4,0x6e,0xdb,
0xbc,0xb9,0x98,0xc0,0x98,0x04,0x9c,0xce,0x80,0xa1,0x0d,0x91,0x62,0xba,0x60,0x77,
0xd4,0x2c,0xa3,0xca,0x36,0xfe,0x80,0xff,0x4d,0x0d,0x51,0xac,0xd2,0xf2,0x19,0x02,
0xaa,0x47,0x62,0x6f,0x6f,0x53,0xec,0x8a,0x00,0x05,0xc2,0x64,0xf0,0x3a,0xef,0xa3,
0xe3,0x4a,0x05,0xa7,0x12,0xc9,0xc2,0x3c,0x92,0x40,0xfd,0x61,0x05,0x7e,0x28,0xa7,
0x83,0x4d,0x80,0xb4,0x6a,0x47,0x1a,0xe5,0x94,0x95,0xb2,0x63,0x64,0xe6,0x29,0xe7,
0x9c,0xc6,0xbc,0x0d,0xc1,0xbc,0x9f,0xb9,0xac,0xa3,0x71,0x29,0xa4,0xb2,0xa9,0x6e,
0x49,0x41,0x33,0xd4,0x54,0xb6,0xda,0xb6,0xa8,0x60,0x8c,0x6d,0xc5,0xd7,0x4f,0x9f,
0xbe,0xa9,0x8d,0x74,0xd4,0x1c,0xe3,0xca,0x62,0xdc,0x7a,0x29,0xce,0x19,0xe6,0xc8,
0x88,0xb5,0xbb,0xc6,0x7c,0xee,0x2c,0x9c,0x30,0x9b,0xba,0x56,0x86,0x38,0x42,0xf6,
0x76,0x1b,0xd4,0xbf,0x53,0xac,0xbd,0xa8,0x35,0xe0,0xd0,0x5b,0x0d,0x54,0x31,0x7a,
0x5b,0x90,0x3c,0x36,0x17,0xb6,0xfe,0x42,0x29,0x53,0xcb,0x47,0x86,0x1b,0x07,0x13,
0xd9,0xec,0xfe,0xcf,0x8b,0x6e,0xdb,0x09,0xb1,0xb1,0xb0,0x9e,0x77,0xff,0xbe,0xfe,
0x0d,0x7a,0xd4,0xa9,0x57,0xbe,0x71,0x81,0x8c,0xa4,0x79,0xa6,0x62,0x4b,0x4d,0x57,
0xcf,0xde,0xf7,0x38,0xe8,0x59,0x9a,0x0a,0x57,0xf5,0x24,0x8b,0xae,0x2b,0x62,0x5c,
0x0d,0xf8,0xbe,0x57,0x55,0xaa,0x2c,0xfc,0xb2,0x72,0x6f,0xff,0xbd,0x15,0x8f,0xde,
0x05,0x52,0x0e,0xbb,0x36,0xd1,0xf2,0xa6,0x53,0xea,0x7e,0x27,0x4c,0x2d,0x9d,0x5b,
0x51,0x91,0x5b,0x24,0x29,0xa9,0xeb,0xdb,0xf2,0xc8,0xca,0x8a,0xfc,0x77,0xdd,0x8d,
0x5a,0xd0,0xcd,0x2f,0x9d,0xa5,0xca,0x7d,0xcf,0xf7,0xc9,0x9b,0x7e,0x61,0x20,0xcc,
0xb6,0x47,0x9f,0xf2,0xe8,0xe2,0x99,0x18,0x09,0xb8,0x78,0xbe,0x1c,0x19,0x77,0x88,
0x4b,0xc6,0x24,0xd1,0x55,0x0e,0xda,0xc2,0xd7,0x5c,0x5f,0xc3,0x9d,0xab,0x6b,0x7d,
0x99,0xde,0xa8,0xf4,0x86,0xcb,0x15,0x32,0xc4,0xe5,0xf7,0xc7,0xbd,0xb6,0xa8,0x7e,
0x3e,0xc0,0x62,0x96,0xba,0x53,0xaf,0xd5,0x99,0x4a,0x9d,0xd0,0xfa,0x22,0x9a,0xdf,
0xe8,0x0b,0xe2,0xd3,0x27,0xbd,0x6f,0xdb,0xbf,0x23,0x4e,0xc5,0x51,0x4b,0x38,0x87,
0xd7,0x20,0x64,0x93,0xd1,0xc4,0x72,0xbd,0x21,0x7e,0x61,0x00,0x7e,0xed,0xef,0x6b,
0x58,0x1a,0x5a,0x7d,0x6b,0x23,0x04,0xb5,0x2d,0x51,0x6f,0xfb,0xe2,0xc8,0x05,0x20,
0xdc,0x18,0x85,0xd7,0x7d,0x1f,0x7d,0x10,0x5d,0xd1,0xb7,0x29,0x17,0x41,0xbb,0xc0,
0x1a,0x20,0xf5,0x85,0x59,0x91,0xaf,0x9c,0x09,0x26,0x3f,0x5d,0xeb,0xf7,0x7a,0x15,
0x4c,0x15,0xe3,0x0a,0x95,0x39,0xe3,0x8e,0x27,0xf6,0xb1,0x6e,0x05,0x46,0xc5,0x16,
0x45,0x76,0x4d,0x3a,0x66,0x1e,0x89,0x0b,0x2b,0x4b,0x2e,0x2d,0x09,0x8b,0xf2,0xd6,
0x35,0x77,0x47,0x5d,0xef,0xd5,0x63,0x3b,0xcd,0x8b,0x66,0x45,0x42,0xcb,0xb8,0x92,
0x5c,0x94,0xb1,0x72,0xf7,0x74,0x2e,0x43,0x6c,0x90,0x2c,0xa6,0x31,0x7c,0x54,0xf0,
0xe1,0xd7,0x14,0x76,0x74,0x30,0x3f,0xe4,0x2c,0xc2,0x46,0xf3,0xf0,0x63,0xcc,0x6e,
0x13,0x10,0x9c,0xcb,0x4b,0x62,0xf9,0xcf,0xe3,0xdf,0x10,0xa1,0xfb,0xf4,0xad,0xe9,
0x4a,0x83,0x69,0x75,0x00,0x0b,0xe9,0x96,0xed,0x77,0x28,0x59,0x66,0x80,0x90,0xa7,
0x79,0xcd,0x4d,0xed,0x90,0x92,0x0f,0xbb,0x38,0xe9,0x40,0xa8,0xf1,0x94,0xd1,0xc0,
0x30,0xba,0x4f,0x4d,0x7d,0x7b,0xb6,0x8a,0xc0,0x20,0x75,0x53,0xc6,0x39,0x9d,0x22,
0x8d,0x88,0xe8,0x5b,0x8a,0xf1,0x2e,0xc2,0xef,0xcf,0x3f,0xb4,0xca,0x8e,0xb3,0x2d,
0x72,0x2d,0x5c,0x15,0xd0,0x16,0x77,0x2d,0x62,0xd5,0x92,0xe2,0xb5,0x0d,0x76,0xa6,
0x70,0x22,0x4c,0xe5,0x44,0x17,0x9f,0xd9,0xd6,0x8a,0xf5,0xfa,0x89,0xad,0x9e,0x88,
0x2b,0xb1,0x56,0x3f,0x11,0x77,0x28,0xa0,0x08,0x53,0x41,0xe1,0xfa,0x89,0xb3,0x7f,
0xdd,0x3a,0x72,0x9f,0x9b,0x54,0xb6,0xd8,0x22,0x46,0x13,0xd7,0x37,0xc3,0x5f,0xab,
0x32,0x1b,0x2a,0x6f,0x65,0x76,0x27,0xd3,0x4b,0x3e,0x5b,0x89,0x76,0x45,0x92,0x25,
0xef,0x45,0x0c,0xae,0x08,0x6a,0x33,0x22,0x23,0xa7,0x0d,0xb2,0x95,0xbf,0x4a,0xac,
0xb5,0xe5,0x2b,0x05,0x3b,0x4d,0xb4,0xd2,0xbe,0xa4,0x50,0xba,0x19,0x85,0x1f,0xdb,
0x94,0x5b,0xea,0x55,0xac,0xca,0x96,0xb1,0x34,0xee,0xb4,0xad,0xa6,0xb2,0x02,0x70,
0x24,0x7d,0xd1,0x72,0xed,0x45,0x5d,0xa9,0xc2,0x8f,0x46,0xad,0xf6,0x74,0xef,0xc7,
0xbf,0xd9,0xe8,0x4c,0x9b,0xd3,0x9e,0x18,0x2f,0x55,0xad,0x23,0x0d,0xa8,0x44,0x36,
0x0d,0xe7,0x6a,0x05,0x3f,0xdd,0x2b,0x67,0xc1,0xe4,0xd2,0x86,0x65,0x1a,0x94,0x6e,
0x92,0x2d,0xeb,0x42,0xa6,0x94,0x6d,0x22,0xc2,0xb9,0xb4,0x55,0x5c,0xce,0x88,0xe1,
0x08,0xc2,0x7f,0x43,0xac,0x81,0xb4,0x5f,0x61,0xb3,0xa6,0x2d,0x8d,0xe9,0xa4,0x81,
0x8d,0xe1,0x19,0xf4,0xa3,0x23,0xb0,0xaa,0xba,0xb1,0x8e,0xaa,0x01,0xba,0x91,0xd7,
0x5f,0x93,0xda,0xf7,0x5e,0x46,0x42,0x4f,0xc4,0xc2,0xaf,0x7e,0x8b,0x77,0x28,0xbe,
0x03,0x61,0x78,0x9b,0x35,0xbe,0xd4,0x68,0x4d,0xff,0x8a,0x9c,0x35,0xc7,0x9a,0xc2,
0xb7,0x1b,0xd7,0x4a,0x76,0xb0,0x5c,0xc5,0xfc,0x6d,0x96,0x0f,0xf7,0x2b,0xb7,0x0e,
0xeb,0x40,0xe6,0xaf,0xe2,0x8b,0x9d,0x05,0x86,0x53,0xd4,0x4f,0x92,0xe7,0x48,0xe5,
0xba,0x6f,0x02,0xb0,0xa1,0xb8,0xae,0xcf,0x7b,0x9e,0x84,0x6b,0xb3,0x4a,0xd7,0xbd,
0xc5,0xb3,0xd9,0x5b,0x75,0x72,0x18,0x27,0x3e,0xac,0xac,0xf2,0xcd,0xa9,0x89,0x45,
0x17,0x9a,0x6f,0xd3,0x0d,0x51,0xe5,0x1b,0x37,0x83,0xe0,0x4c,0x45,0xe3,0xfd,0x99,
0xd3,0x9d,0x94,0xc5,0x22,0x50,0x4e,0xb8,0x3d,0x7f,0xd1,0x4b,0xde,0xbc,0x82,0xc9,
0x5c,0xb7,0x53,0xd3,0xea,0x9d,0xf5,0x59,0x15,0x31,0xb7,0x69,0x6b,0x45,0xd5,0xb2,
0x94,0xd8,0x8c,0x8c,0xb9,0xbd,0xde,0xab,0xc9,0x5c,0x2d,0x9f,0xfa,0xe3,0x92,0x8e,
0x16,0x6d,0x53,0x10,0xbd,0xab,0x82,0x7b,0xb1,0x9a,0xbf,0xff,0xc7,0x7f,0xc2,0x1f,
0xff,0xfe,0x1f,0xff,0xab,0xf5,0xf7,0x2f,0xfa,0x39,0x75,0x78,0xac,0x67,0xce,0x60,
0x9b,0x61,0x94,0x57,0x06,0x87,0xfa,0x4e,0xb5,0x5c,0x6f,0x74,0xe5,0x98,0x4c,0x7d,
0xe3,0x3a,0x86,0x03,0x04,0x22,0x84,0x9e,0x78,0x2c,0x3c,0x7a,0x29,0x13,0x95,0xdd,
0x05,0xf9,0x07,0x00,0xa3,0xcf,0xc3,0x0d,0x7f,0xa2,0x4f,0x4d,0xbb,0x8a,0xdb,0x9c,
0x1f,0xf3,0x9b,0x3a,0x48,0x89,0x42,0xfa,0x07,0x65,0xae,0x36,0x7c,0xc9,0xae,0xc0,
0x1d,0x8a,0xb3,0x16,0xa9,0x0f,0xc5,0xf6,0xb1,0x61,0xc5,0x60,0x52,0xce,0x10,0xc1,
0xbe,0xb8,0x7f,0x5f,0x84,0x3e,0xf5,0x72,0xba,0xcc,0xdf,0xb5,0x41,0x5f,0x3f,0x20,
0x53,0x1f,0xb6,0x71,0x66,0x8a,0x91,0x9e,0x2e,0x78,0x3a,0x0d,0x53,0xd7,0x9b,0x35,
0x70,0x2a,0x3d,0xb7,0xc5,0xe1,0xad,0x85,0x6e,0x71,0x53,0x97,0x14,0xb9,0x06,0x10,
0x78,0xbd,0x80,0x6d,0x5e,0xc5,0x75,0x53,0x01,0xba,0x6e,0x7b,0x5c,0x59,0xe8,0xf4,
0x99,0x84,0x43,0x0b,0x29,0xd1,0xe9,0xc6,0x17,0x40,0xb2,0x80,0xf6,0x6c,0x99,0x1d,
0xdb,0xe7,0x46,0x18,0xe8,0x94,0xde,0x3f,0xb6,0x4f,0xfb,0xbf,0xa1,0xf1,0xfc,0x22,
0x52,0x91,0x7e,0xe8,0x44,0xfb,0x97,0x5a,0xad,0x89,0x92,0xb6,0xf5,0xa6,0x4f,0x73,
0x84,0x00,0xa8,0xce,0x3f,0x37,0xda,0xe5,0x17,0xbc,0x9d,0x76,0xf5,0xbf,0x69,0xfa,
0xff,0x00,0xc8,0x28,0x3e,0xf5,0xe4,0x74,0x00,0x00,
};
constexpr size_t HOME_INDEX_HTML_GZ_LEN = sizeof(HOME_INDEX_HTML_GZ);
// </gz:HOME_INDEX_HTML>