Loading files
98b423c28This file is pinned to the selected release. Download the original to open it in your design tool.
// ═══════════════════════════════════════════════════════════
// PatternFlow - /wifi page (served by core_wifi_http.h)
// Same cream/ink/LED tokens as the other consoles; no external assets.
// License: MIT
// ═══════════════════════════════════════════════════════════
// The page body below is generated from console/wifi.html — edit that,
// then run: python firmware/toolchain/console_pages.py build
#pragma once
#include <Arduino.h>
static const char WIFI_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 - Wi-Fi</title>
<style>
/* Dark instrument tokens — see patterns_index.h for the note. */
:root{--cream:#0C0B09;--ink:#EDE7DB;--muted:#8A8272;--faint:#5A5546;
--rule:#242118;--rule-soft:#1B1914;--led:#FF5C2E;--ok:#57B87F;--panel:#131110;
--sans:'Inter',ui-sans-serif,system-ui,sans-serif;
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);
line-height:1.5;-webkit-font-smoothing:antialiased}
.wrap{max-width:680px;margin:0 auto;padding:32px 20px 64px}
header{display:flex;align-items:center;gap:8px;padding-bottom:12px;
border-bottom:1px solid var(--rule)}
.dot{width:7px;height:7px;background:var(--led);border-radius:1px}
h1{font-size:15px;font-weight:600;margin:0;flex:1}
.sub{font-family:var(--mono);font-size:11px;color:var(--faint)}
section{margin-top:26px}
h2{font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
color:var(--muted);margin:0 0 8px}
ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule-soft)}
li{display:flex;align-items:center;gap:10px;padding:9px 2px;
border-bottom:1px solid var(--rule-soft);font-size:13px}
li .n{font-family:var(--mono);font-size:11px;color:var(--faint);min-width:20px}
li .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
font-family:var(--mono);font-size:12px}
.tag{font-family:var(--mono);font-size:10px;letter-spacing:.06em;
text-transform:uppercase;padding:1px 6px;border:1px solid var(--ok);
border-radius:2px;color:var(--ok)}
button{font:inherit;cursor:pointer}
button.del{font-size:11px;color:var(--muted);background:none;
border:1px solid var(--rule);border-radius:2px;padding:2px 8px}
button.del:hover{border-color:var(--led);color:var(--led)}
form{margin:0;display:grid;gap:10px;max-width:380px}
label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}
input{width:100%;font:inherit;font-family:var(--mono);font-size:13px;padding:7px 9px;
background:var(--card);color:var(--fg);border:1px solid var(--rule);border-radius:2px}
input:focus{outline:none;border-color:var(--led)}
.actions{display:flex;gap:8px;align-items:center;margin-top:2px}
button.primary{background:var(--ink);color:var(--cream);border:1px solid var(--ink);
border-radius:2px;padding:7px 16px;font-size:13px}
button.primary:hover{background:var(--led);border-color:var(--led)}
.check{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted)}
.check input{width:auto}
#msg{margin-top:12px;font-family:var(--mono);font-size:11px;min-height:16px}
#msg.err{color:var(--led)}
.note{font-size:12px;color:var(--faint);margin:8px 0 0;line-height:1.45}
footer{margin-top:32px;padding-top:12px;border-top:1px solid var(--rule);
font-family:var(--mono);font-size:11px;color:var(--faint)}
a{color:var(--muted)}
.tag.boot{font-family:var(--mono);font-size:10px;letter-spacing:.06em;
text-transform:uppercase;padding:1px 6px;border:1px solid var(--muted);
border-radius:2px;color:var(--muted)}
select{width:100%;max-width:380px;font:inherit;font-family:var(--mono);font-size:13px;
padding:7px 9px;background:var(--panel);color:var(--ink);border:1px solid var(--rule);
border-radius:2px}
button.secondary{font-size:13px;color:var(--ink);background:none;
border:1px solid var(--rule);border-radius:2px;padding:7px 16px}
button.secondary:hover{border-color:var(--led);color:var(--led)}
</style></head><body><div class="wrap">
<header><span class="dot"></span><h1>Wi-Fi</h1><span class="sub" id="st">-</span></header>
<section>
<h2>Saved networks</h2>
<ul id="list"></ul>
<p class="note" id="cap"></p>
</section>
<section>
<h2>Boot network</h2>
<div id="bootbox">
<label for="boot">Try first on power-up</label>
<select id="boot" disabled></select>
<div class="actions" style="margin-top:10px">
<button class="secondary" type="button" id="bootsave" disabled>Save boot preference</button>
<button class="primary" type="button" id="reboot" disabled>Reboot</button>
</div>
<p class="note">Stored on the device. Reboot to join the chosen network first —
the current session is not switched live.</p>
</div>
</section>
<section>
<h2>Add a network</h2>
<form id="f">
<div>
<label for="ssid">Network name</label>
<input id="ssid" name="ssid" maxlength="32" autocomplete="off" required>
</div>
<div>
<label for="pass">Password</label>
<input id="pass" name="pass" type="password" maxlength="63" autocomplete="off">
</div>
<div class="actions">
<button class="primary" type="submit">Save</button>
<span class="check">
<input type="checkbox" id="now"><label for="now" style="margin:0">switch now</label>
</span>
</div>
</form>
<div id="msg"></div>
<p class="note">Saved networks are tried in order starting from the boot slot above,
wrapping around — so the device joins whichever one it can find, useful if it
moves between home, a studio and a venue. A new network is only stored; leave
<em>switch now</em> unticked and this page keeps working. Ticking it drops the
current connection immediately.</p>
</section>
<section>
<h2>Hotspot</h2>
<p class="note" id="hsstate">-</p>
<div>
<label for="hsmode">Mode</label>
<select id="hsmode">
<option value="auto">auto — up whenever the panel has no Wi-Fi</option>
<option value="always">always</option>
<option value="off">off</option>
</select>
</div>
<div>
<label for="hspass">Password</label>
<input id="hspass" type="text" maxlength="63" autocomplete="off" spellcheck="false">
</div>
<div class="actions">
<button class="primary" type="button" id="hssave">Save</button>
</div>
<div id="hsmsg"></div>
<p class="note">The panel as a network of its own: <b id="hsssid">patternflow-????</b>.
Join it from a phone or a laptop and open <code>http://192.168.4.1/</code> — the
same console, anywhere. <em>auto</em> raises it about fifteen seconds after the panel
finds no network and drops it once one is joined; a network added above from the
hotspot is tried at once. The phone is told the network works, so it stays on it;
it has no internet through the panel.</p>
</section>
<footer><a href="/">Home</a> · <a href="/status">Status</a></footer>
</div>
<script>
function $(i){return document.getElementById(i)}
function say(t,err){$('msg').textContent=t;$('msg').className=err?'err':''}
var max=5;
// The list reloads every 5 s; an unsaved pick in the dropdown must survive
// that, or choosing a slot and reaching for Save loses the choice.
var bootDirty=false;
function load(){
fetch('/api/wifi').then(function(r){return r.json()}).then(function(d){
max=d.max;
$('st').textContent=d.connected?(d.ip):d.status;
$('list').innerHTML='';
var bootSel=$('boot');
var keep=d.bootIdx;
if(bootDirty){
var cur=parseInt(bootSel.value,10);
if(!isNaN(cur))keep=cur;
}
bootSel.innerHTML='';
if(!d.networks.length){
var li=document.createElement('li');
li.innerHTML='<span class="nm" style="color:var(--faint)">none saved yet</span>';
$('list').appendChild(li);
bootSel.disabled=true;$('bootsave').disabled=true;$('reboot').disabled=true;
bootDirty=false;
} else {
bootSel.disabled=false;$('bootsave').disabled=false;$('reboot').disabled=false;
}
if(keep<0||keep>=d.networks.length)keep=d.bootIdx;
d.networks.forEach(function(n,i){
var li=document.createElement('li');
var num=document.createElement('span');num.className='n';num.textContent=i+1;
var nm=document.createElement('span');nm.className='nm';nm.textContent=n.ssid;
li.appendChild(num);li.appendChild(nm);
if(d.connected&&n.ssid===d.current){
var t=document.createElement('span');t.className='tag';t.textContent='connected';
li.appendChild(t);
}
if(d.bootIdx===i){
var bt=document.createElement('span');bt.className='tag boot';bt.textContent='boot';
li.appendChild(bt);
}
var opt=document.createElement('option');
opt.value=String(i);
opt.textContent=(i+1)+'. '+n.ssid;
if(keep===i)opt.selected=true;
bootSel.appendChild(opt);
var b=document.createElement('button');b.className='del';b.textContent='forget';
b.onclick=function(){del(n.ssid)};
li.appendChild(b);
$('list').appendChild(li);
});
$('cap').textContent=d.networks.length+' of '+max+' slots used'+
(d.networks.length>=max?' — adding another replaces the last one':'');
}).catch(function(){$('st').textContent='disconnected'});
}
function saveBoot(then){
if($('boot').disabled){if(then)then(false);return}
var idx=parseInt($('boot').value,10);
if(isNaN(idx)){say('pick a network',1);if(then)then(false);return}
fetch('/api/wifi/boot',{method:'POST',
headers:{'Content-Type':'application/x-www-form-urlencoded'},
body:'bootIdx='+encodeURIComponent(idx)})
.then(function(r){return r.json()}).then(function(d){
if(!d.ok){say(d.error||'failed',1);if(then)then(false);return}
bootDirty=false;
if(then)then(true,idx);
else{say('boot slot '+(idx+1)+' saved — reboot to apply');load()}
}).catch(function(){say('failed',1);if(then)then(false)});
}
$('boot').onchange=function(){bootDirty=true};
$('bootsave').onclick=function(){saveBoot()};
$('reboot').onclick=function(){
if(!confirm('Save boot network and reboot the panel now?'))return;
saveBoot(function(ok,idx){
if(!ok)return;
say('rebooting'+(idx!=null?' — boot slot '+(idx+1):'')+'…');
fetch('/api/wifi/reboot',{method:'POST'}).catch(function(){});
});
};
function del(ssid){
if(!confirm('Forget "'+ssid+'"?\n\nIf the device is on this network it stays '+
'connected until the next drop.'))return;
fetch('/api/wifi?ssid='+encodeURIComponent(ssid),{method:'DELETE'})
.then(function(r){return r.json()}).then(function(d){
say(d.ok?('forgot '+ssid):(d.error||'failed'),!d.ok);load();
}).catch(function(){say('failed',1)});
}
$('f').onsubmit=function(e){
e.preventDefault();
var ssid=$('ssid').value.trim();
if(!ssid){say('enter a network name',1);return}
var now=$('now').checked;
if(now&&!confirm('Switch to "'+ssid+'" now?\n\nThis page will stop responding '+
'if the new network is different from the one you are on.'))return;
var body='ssid='+encodeURIComponent(ssid)+'&pass='+encodeURIComponent($('pass').value);
if(now)body+='&connect=1';
fetch('/api/wifi',{method:'POST',
headers:{'Content-Type':'application/x-www-form-urlencoded'},body:body})
.then(function(r){return r.json()}).then(function(d){
if(!d.ok){say(d.error||'failed',1);return}
$('pass').value='';$('ssid').value='';$('now').checked=false;
say(d.switching?('saved '+d.ssid+' — switching, reconnect on that network'):
('saved '+d.ssid));
load();
}).catch(function(){say('failed',1)});
};
function loadHotspot(){
fetch('/api/hotspot').then(function(r){return r.json()}).then(function(d){
var h=d.hotspot;
$('hsssid').textContent=h.ssid;
if(document.activeElement!==$('hsmode'))$('hsmode').value=h.mode;
if(document.activeElement!==$('hspass'))$('hspass').value=d.pass;
$('hsstate').textContent=h.up?('up: '+h.ssid+' on channel '+h.channel+', '+h.clients+' client'+(h.clients===1?'':'s')+', '+h.ip):'down ('+h.mode+')';
}).catch(function(){$('hsstate').textContent='-'});
}
function sayHs(t,err){$('hsmsg').textContent=t;$('hsmsg').className=err?'err':''}
$('hssave').onclick=function(){
var body='mode='+encodeURIComponent($('hsmode').value)+'&pass='+encodeURIComponent($('hspass').value);
fetch('/api/hotspot',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:body})
.then(function(r){return r.json()}).then(function(d){
if(!d.ok){sayHs(d.error||'failed',1);return}
sayHs('saved'+(d.hotspot.mode==='off'?' — hotspot off':''));loadHotspot();
}).catch(function(){sayHs('failed',1)});
};
load();loadHotspot();setInterval(load,5000);setInterval(loadHotspot,5000);
</script></body></html>)HTML";
// <gz:WIFI_INDEX_HTML> GENERATED by firmware/toolchain/console_pages.py build — do not edit.
// gzip -9 of WIFI_INDEX_HTML (12439 bytes → 4193 bytes), served with Content-Encoding: gzip.
static const uint8_t WIFI_INDEX_HTML_GZ[] PROGMEM = {
0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xcd,0x5b,0xdb,0x72,0xdb,0x48,
0x92,0x7d,0xe7,0x57,0x94,0xe9,0x59,0x83,0x68,0x91,0x20,0x29,0x5b,0xb2,0x0c,0x90,
0x54,0xb4,0x6f,0xd1,0x9e,0x98,0xee,0xed,0x68,0x7b,0x63,0x5e,0x26,0x62,0x02,0x22,
0x8a,0x44,0xb5,0x40,0x00,0x0b,0x14,0x44,0x73,0xd8,0x8a,0x98,0x8f,0xd8,0x6f,0xd8,
0x0f,0x9b,0x2f,0xd9,0x93,0x55,0x85,0x1b,0x41,0x4a,0x1a,0xcf,0xcc,0xee,0xfa,0x81,
0x04,0xaa,0xb2,0xb2,0xb2,0xf2,0x72,0x32,0x2b,0x29,0xcf,0x9e,0x05,0xc9,0x52,0xee,
0x52,0xce,0x42,0xb9,0x89,0x16,0xbd,0x19,0x7d,0xb1,0xc8,0x8f,0xd7,0xf3,0x3e,0x8f,
0xfb,0x34,0xc0,0xfd,0x60,0x31,0xdb,0x70,0xe9,0xb3,0x65,0xe8,0x67,0x39,0x97,0xf3,
0x7e,0x21,0x57,0xa3,0x2b,0x9a,0xcc,0x97,0x99,0x48,0x25,0xcb,0xb3,0xe5,0xbc,0x3f,
0x4e,0x57,0xa3,0x65,0x12,0xe7,0x49,0xc4,0x9d,0x5f,0xf3,0xfe,0x62,0x36,0xd6,0xb3,
0x20,0x53,0xab,0x63,0x7f,0xc3,0xe7,0xfd,0x3b,0xc1,0xb7,0x69,0x92,0xc9,0x3e,0x03,
0xad,0xe4,0x31,0xb8,0x6d,0x45,0x20,0xc3,0x79,0xc0,0xef,0xc4,0x92,0x8f,0xd4,0xcb,
0x50,0xc4,0x42,0x0a,0x3f,0x1a,0xe5,0x4b,0x3f,0xe2,0xf3,0x29,0x6d,0x25,0x85,0x8c,
0xf8,0xe2,0x67,0x5f,0x4a,0x9e,0xc5,0xab,0x28,0xd9,0xb2,0x11,0xfb,0xa3,0x18,0x7d,
0x14,0xb3,0xb1,0x9e,0x82,0x34,0x72,0x47,0xdf,0xe3,0xef,0xd8,0x7b,0x3f,0xbb,0x65,
0x22,0xce,0x65,0x56,0x6c,0xb0,0x07,0x93,0xc9,0x2d,0x8f,0x73,0xf6,0xb7,0xbf,0xfe,
0x17,0xcb,0x39,0x67,0xa9,0xe6,0x92,0xff,0x59,0xc4,0x01,0xff,0xea,0x84,0x6c,0x95,
0x64,0x4c,0x86,0x9c,0xc5,0x89,0xe4,0x0e,0xfb,0x6e,0xdc,0x73,0xb3,0x24,0x91,0xfb,
0xd1,0x68,0x99,0x71,0x7f,0xe3,0x3e,0x9f,0xbc,0x9b,0xbc,0x9d,0xbc,0xf1,0x46,0x23,
0x11,0xdf,0xba,0xcf,0x3f,0xbc,0xff,0xf0,0xfa,0xfd,0x5b,0xbc,0x6d,0x0a,0xc9,0x03,
0xf7,0xf9,0xd5,0xf7,0x57,0xe7,0xaf,0xcf,0xf1,0xbe,0xf2,0x45,0x2c,0xdd,0xe7,0x17,
0xdf,0x5f,0x5c,0xbc,0xba,0xf4,0x7a,0xa3,0x51,0x56,0x44,0xdc,0x7d,0x7e,0xfe,0xea,
0x7c,0x3a,0xbd,0xf2,0xf4,0xeb,0x28,0x4f,0x56,0xa0,0x99,0xbe,0x9d,0xbe,0x99,0xbe,
0xc2,0x58,0x44,0x1c,0x3e,0x7e,0xbc,0x78,0x77,0xfe,0x01,0x6f,0x09,0xd8,0x5f,0xbc,
0x7e,0x7b,0xf5,0xfa,0x23,0x5e,0x52,0x3f,0xe6,0x11,0x48,0x5f,0x4e,0xa7,0xd3,0x09,
0xb1,0xcb,0xfd,0x38,0x77,0xad,0x4f,0xd0,0x5b,0x66,0x0d,0x0b,0xa1,0xde,0x47,0x39,
0xcf,0xc4,0x6a,0x98,0xef,0x72,0xc9,0x37,0xa3,0x42,0x0c,0xeb,0x41,0x5a,0xb2,0x49,
0xe2,0xc4,0xb5,0x7e,0xcf,0xe5,0xdb,0x0c,0xc2,0xe5,0xec,0x47,0xbc,0xab,0xb5,0x34,
0x91,0xa7,0xfe,0x92,0x0f,0x3f,0x7f,0xa4,0xc1,0xd1,0x2f,0x7c,0x5d,0x44,0x7e,0x36,
0xfc,0x91,0xc7,0x51,0x32,0xac,0xa6,0xef,0x7b,0xdf,0xed,0x6f,0x92,0xaf,0xa3,0x5c,
0xfc,0x45,0xc4,0x6b,0xf7,0x26,0xc9,0x02,0x9e,0x8d,0x30,0x72,0xdf,0xbb,0x49,0x82,
0xdd,0x7e,0xe3,0x67,0x6b,0x11,0xbb,0x13,0xef,0xc6,0x5f,0xde,0xae,0xb3,0xa4,0x88,
0x03,0xf7,0xce,0xcf,0x06,0x46,0x77,0xb6,0xb7,0x4c,0xa2,0x24,0x33,0x43,0x50,0x9f,
0xed,0xad,0x60,0x78,0xa8,0x6a,0x23,0xa2,0x9d,0x19,0x26,0x91,0x6d,0xaf,0x17,0x89,
0x98,0x8f,0x42,0x2e,0xd6,0xa1,0x74,0xa7,0xce,0x85,0x37,0xda,0xf2,0x9b,0x5b,0x01,
0x5a,0x5a,0x90,0x6f,0x60,0x91,0x90,0x44,0xf0,0x63,0xf2,0x0d,0xe1,0xe7,0x3c,0xb8,
0xef,0x39,0xdb,0xcc,0x4f,0x21,0xc4,0x57,0xed,0x39,0xee,0xe5,0xd5,0x24,0xfd,0xea,
0x95,0x42,0x31,0xbf,0x90,0x89,0x97,0xfa,0x41,0x40,0x0b,0x5f,0x9e,0xa7,0x5f,0xd9,
0x39,0xe6,0xd9,0xe5,0xab,0x14,0xf2,0x93,0x6b,0xf3,0x6c,0x1f,0x88,0x3c,0x8d,0xfc,
0x9d,0xbb,0x8a,0xf8,0x57,0x0f,0x8c,0xd7,0xf1,0x48,0x40,0x97,0xb9,0xbb,0xe4,0xa4,
0x69,0x6f,0xed,0xa7,0xee,0x15,0x98,0x1a,0x36,0x38,0xbb,0x94,0xc9,0xc6,0x9d,0x82,
0x9b,0xd7,0xab,0xf4,0xa1,0xc7,0xc0,0x1b,0x01,0x20,0x02,0xa6,0x0f,0x46,0x06,0xb7,
0x21,0x64,0x00,0x67,0xd2,0xf2,0xbd,0xc6,0x22,0x73,0x44,0x7a,0xec,0x28,0x0d,0xee,
0x60,0x7b,0x86,0x69,0xe6,0x07,0xa2,0xc8,0x89,0x29,0x64,0x9d,0xee,0xb5,0x1a,0xc4,
0x5f,0xb8,0x3b,0xbd,0xc0,0x52,0xf5,0xba,0xd5,0xac,0x2e,0x27,0x93,0xea,0xcc,0x1e,
0x9d,0xc3,0x9d,0x62,0xd7,0xbc,0xb8,0xd9,0x77,0x95,0x4d,0x96,0x35,0x46,0xd0,0xcc,
0xc0,0xbf,0x65,0x24,0xe5,0xc5,0x90,0x3a,0xe7,0x4b,0x29,0x92,0xd8,0x58,0x78,0x24,
0x93,0xd4,0x3d,0xbf,0x54,0xb2,0x9c,0xef,0x0f,0x96,0x1f,0xca,0x12,0x71,0x0a,0xb0,
0x11,0x39,0x10,0x29,0xde,0x99,0xbc,0xe1,0x1b,0x4f,0xf2,0xaf,0x72,0x24,0x33,0xd8,
0x1a,0xe1,0xb6,0x71,0x8b,0x34,0xe5,0xd9,0x12,0x56,0xf4,0x7a,0xcd,0xdd,0x55,0x4c,
0xd9,0xb5,0x05,0x27,0xec,0x8a,0xf6,0x2c,0xa2,0x7d,0x24,0x72,0xec,0x49,0x31,0xee,
0xc6,0x49,0xcc,0xeb,0x03,0x97,0xf6,0x9d,0x94,0x8a,0x23,0x51,0x8f,0x99,0x42,0xc5,
0x1e,0x4e,0x16,0x89,0x27,0x19,0x7d,0x3a,0xa9,0xad,0xee,0xbe,0x21,0xdf,0x79,0x9a,
0xc5,0xf5,0x36,0x4d,0x15,0xbf,0xa4,0x23,0x44,0x82,0x39,0xf1,0xb7,0x1b,0xc4,0xdb,
0xc0,0x08,0xda,0x89,0xc8,0x87,0x0d,0xbf,0xcd,0x5e,0x9b,0xdb,0x4b,0xee,0x78,0x46,
0xb0,0xe8,0x86,0x22,0x08,0x78,0xac,0xb5,0x5d,0x0d,0xf2,0x28,0x12,0x69,0x2e,0x72,
0x6f,0x1b,0xe2,0x98,0xca,0x30,0xa4,0x45,0x0a,0x1e,0xaf,0xf7,0x04,0x91,0xce,0x69,
0x43,0x47,0xfa,0xeb,0xa7,0xc8,0x4f,0x6a,0xeb,0x78,0xc0,0x25,0x3c,0xa0,0x77,0xd2,
0x05,0x4a,0x2d,0x93,0x3a,0x2f,0x29,0x2e,0x94,0x92,0x3b,0xda,0x4d,0x00,0x1f,0xbd,
0x76,0x74,0x9c,0x1f,0x28,0x0b,0x24,0x40,0xa6,0x02,0xc6,0xd1,0xba,0x76,0x45,0x1c,
0x02,0x0c,0xa5,0xb7,0x2c,0xb2,0x1c,0x54,0x69,0x22,0xc8,0xc0,0x25,0x8d,0x13,0xf0,
0x68,0xff,0x80,0xee,0x8d,0x3b,0x36,0xe2,0x54,0xf9,0x5e,0xef,0x84,0x80,0x2a,0xe0,
0xbd,0xae,0x84,0xe5,0xf9,0x08,0x81,0x94,0x3f,0xd7,0xbb,0xbb,0x21,0x59,0x69,0x6f,
0xd6,0x34,0xf7,0x56,0x58,0x70,0x38,0x70,0xdf,0x23,0xd5,0xd5,0xb0,0x5b,0x3a,0xf2,
0x3a,0x13,0x41,0xed,0xb5,0x35,0x20,0xbe,0xbc,0xd2,0xce,0xe2,0xdf,0xe0,0xa0,0x25,
0xf1,0x4d,0x94,0x2c,0x6f,0x0f,0xec,0xeb,0x9d,0x8c,0xc2,0xd2,0xd7,0x95,0x17,0x8b,
0x38,0x2d,0x4a,0x30,0x9b,0x4e,0x26,0xff,0xe6,0xb5,0x94,0xfc,0x04,0xef,0x78,0xd9,
0x50,0x07,0x20,0x90,0xbd,0x51,0x41,0xd5,0x49,0x1e,0x7e,0x76,0x70,0xf8,0xd5,0xda,
0xf6,0xfe,0x3e,0xad,0x1b,0x61,0xdd,0x55,0xb2,0x2c,0xf2,0x7d,0x52,0x48,0x4a,0x30,
0xda,0x7e,0x27,0xb4,0x0d,0x1f,0xf7,0x15,0xe8,0xe5,0x6d,0x80,0x28,0x53,0xc0,0x11,
0xa0,0x68,0xa2,0x63,0xc3,0xb0,0x69,0x26,0x30,0xb3,0xdb,0x77,0x0e,0xa6,0x52,0x60,
0x73,0x5f,0x93,0x26,0x4f,0x1c,0x4d,0x91,0xf7,0x4e,0x3b,0x14,0x69,0x70,0x7a,0x59,
0x42,0x70,0x03,0x6d,0xda,0x72,0x94,0x4e,0xf6,0x50,0xba,0x39,0xa2,0x8c,0x65,0xc8,
0x97,0xb7,0x5d,0x55,0x5c,0x1e,0x57,0xc5,0xa3,0xfe,0x54,0x72,0x64,0x4d,0x27,0xa2,
0x14,0x7d,0xdf,0x7b,0xbe,0xc9,0xd7,0xcd,0x4c,0xa3,0x38,0x3c,0x11,0x2b,0x09,0x18,
0xcb,0xb2,0x41,0x25,0x28,0x62,0xe6,0xf0,0x2c,0xdb,0x1f,0x39,0x12,0x95,0x78,0xfb,
0x07,0x24,0x2d,0xc1,0x56,0xc7,0x17,0x8c,0x8e,0x0c,0x84,0x84,0xd6,0x2a,0x4d,0x5e,
0x5d,0x50,0x14,0x82,0x51,0xd6,0x14,0xf9,0x65,0xc3,0x2e,0xf5,0x19,0x1e,0x49,0x49,
0xf6,0x93,0xe0,0xf7,0x54,0x8a,0xf6,0xf7,0x47,0x95,0x0c,0x9c,0x76,0x6e,0xa8,0x80,
0xfd,0x3f,0x05,0x6b,0x83,0x21,0x8f,0xe0,0x75,0x29,0x74,0xce,0x23,0xd4,0x1b,0x4d,
0x60,0x39,0xc0,0xb0,0x6f,0x02,0x9a,0xde,0x21,0xd2,0x74,0x22,0x40,0x15,0xd9,0x47,
0xaa,0xd4,0x07,0xa1,0xa6,0x77,0x04,0x6b,0x4c,0xc0,0xa1,0x6a,0x4a,0xe2,0x80,0x42,
0xff,0x40,0x94,0xee,0x0e,0xff,0xa4,0x9c,0x52,0x42,0x40,0x57,0x84,0xbf,0x3b,0xb5,
0xe0,0xce,0xa6,0xee,0x50,0xb3,0xb1,0xbe,0xf6,0x51,0x85,0xbf,0x98,0x05,0xe2,0x8e,
0x2d,0x23,0x3f,0xcf,0x71,0x57,0x43,0xc1,0x50,0xde,0x0a,0x79,0xb6,0x98,0xc1,0x65,
0xe2,0x72,0x0e,0x45,0xae,0xba,0xf5,0x61,0x68,0x31,0x0b,0xa7,0x0b,0x73,0x3b,0xc3,
0x53,0x8b,0x0c,0x55,0x69,0x9f,0x89,0x00,0x0f,0x20,0x1f,0x95,0xf4,0x63,0xc3,0xb1,
0xd7,0xc3,0x3d,0x4e,0x17,0x9e,0x8b,0x1e,0x63,0xb3,0xf0,0x7c,0xf1,0xd9,0xbf,0xe3,
0x01,0x8b,0xb9,0xdc,0x26,0xd9,0x6d,0x0e,0xca,0x73,0x35,0x53,0x44,0x8a,0x0b,0x55,
0x85,0xb4,0x6d,0x11,0xa9,0xd1,0xb4,0xdc,0x86,0xe2,0x5c,0xef,0xb3,0x24,0x91,0x67,
0xe3,0x74,0x41,0xc7,0x2b,0x59,0x77,0x76,0x79,0x8b,0x78,0x29,0x37,0xa9,0xf6,0xa0,
0x93,0x13,0x0b,0x0a,0x26,0x5c,0x79,0xfa,0x34,0x88,0x61,0x95,0x4c,0xe9,0xd2,0xa8,
0x67,0xfa,0x8b,0x2f,0xd9,0x8e,0xad,0x44,0x96,0x4b,0x96,0xc4,0x2c,0x4d,0xb6,0xd0,
0x76,0x91,0xce,0xc6,0x8a,0xce,0xac,0xd1,0xfe,0x5d,0x71,0xeb,0x33,0xa0,0xaa,0x7f,
0x03,0xb5,0x93,0xca,0xd4,0x9c,0x21,0x6c,0x68,0xdb,0xe4,0xa2,0x3e,0x53,0x56,0x99,
0xf7,0x9b,0xf8,0x88,0x88,0x30,0xe2,0x60,0x8d,0x36,0x7c,0xa5,0xe1,0xd2,0xfe,0x7d,
0x46,0x57,0x7b,0x6c,0xa8,0xa6,0xfb,0xd5,0xe6,0x39,0x34,0xda,0x10,0x80,0x14,0xcc,
0x68,0x9c,0xa5,0x19,0x5f,0xf1,0x8c,0xc7,0x4b,0x3e,0x1b,0xeb,0x45,0x27,0xb6,0x30,
0x69,0xe5,0xd8,0x06,0x19,0x3f,0x38,0xdf,0x2f,0x6a,0xa0,0xcd,0x70,0x36,0xc6,0x31,
0xcd,0x63,0xdb,0x64,0x8b,0xcf,0x32,0xc9,0x60,0x6f,0xec,0x45,0x37,0x72,0xdd,0x16,
0x70,0x98,0x66,0x82,0x8b,0x3c,0xfb,0x15,0x05,0x9c,0x9a,0x5a,0x86,0x49,0xce,0xe3,
0xd2,0x66,0x46,0xff,0x2f,0x36,0x81,0x9f,0x87,0x9e,0xe2,0xac,0x88,0x8a,0x2c,0xa3,
0x0e,0x40,0xce,0xf3,0x1c,0xba,0x64,0x22,0xa7,0x4b,0x3e,0xcb,0xb7,0x42,0x22,0x15,
0x05,0x2c,0x12,0x77,0xdc,0x51,0xce,0x51,0x09,0xf5,0x90,0x97,0x7c,0x1f,0x04,0xcc,
0xef,0xb8,0x09,0xe1,0xa3,0x3a,0xfb,0xaa,0x5f,0x1b,0xb1,0xd2,0x5c,0xc3,0x5b,0x20,
0x43,0xd0,0x5f,0xfc,0x64,0x24,0xa6,0x8e,0x48,0xcb,0x49,0x40,0xac,0x32,0xa3,0x0e,
0x0f,0xa2,0x35,0x5d,0x13,0xfd,0x0c,0x40,0x8c,0x78,0xbc,0x96,0xe1,0xbc,0xff,0xf2,
0xbc,0xaf,0xee,0xb6,0xcb,0x64,0x93,0x02,0xbd,0x41,0x92,0xac,0x56,0x7d,0x96,0xf1,
0xff,0x2c,0x04,0xb4,0xd7,0x55,0xf2,0x09,0x81,0x52,0x28,0xbe,0xbf,0xf8,0x19,0x9f,
0x90,0x28,0x38,0x2d,0x8c,0xa2,0x33,0xc2,0xe8,0x67,0x6d,0xf8,0xd4,0xac,0x6c,0x09,
0x77,0xf9,0xf2,0x98,0x70,0x47,0x65,0x3a,0xf4,0xf4,0xa7,0xb9,0x1b,0x20,0x64,0x23,
0x10,0x76,0xe4,0xb8,0x1d,0x47,0x6d,0x62,0x8d,0xaa,0x36,0x2a,0xa6,0xd5,0x89,0x34,
0x17,0x35,0x49,0x51,0xad,0x4e,0x88,0xcb,0x10,0x50,0xa2,0xa1,0x1a,0x1a,0x68,0x07,
0x9e,0x3b,0xe9,0x2f,0xb4,0xe3,0xc0,0x87,0xb6,0x87,0xca,0xd2,0x40,0xd6,0x3e,0xe4,
0x6c,0x4c,0xae,0xd1,0x82,0x12,0x94,0x26,0x84,0x46,0x25,0xc1,0xa1,0xf3,0xb7,0xb0,
0x8e,0xf9,0x19,0x67,0x32,0x13,0x18,0x82,0xcf,0x2b,0x14,0x87,0x44,0x7e,0x26,0x01,
0xfb,0x6c,0x95,0x25,0x1b,0xe5,0xe2,0x2a,0x30,0xf2,0x08,0x1f,0xfe,0x0d,0xf0,0x7e,
0x08,0xb6,0x04,0xd3,0x29,0x11,0xf9,0x2a,0xbf,0x94,0x51,0x81,0xb4,0xd2,0x08,0x2a,
0x15,0x49,0x39,0xc3,0x8d,0x10,0x9a,0x40,0x9e,0x40,0xc8,0x71,0x26,0x24,0x5b,0x42,
0x7f,0x2b,0x11,0x07,0x43,0x56,0xe4,0x7c,0x45,0x30,0xbb,0xc2,0x30,0xb8,0x6e,0xc0,
0x3d,0x67,0x37,0x10,0x8e,0x23,0xee,0xc2,0x64,0xc3,0x87,0x08,0x86,0x5c,0x16,0x81,
0x48,0x98,0x1f,0x53,0x64,0xdc,0xf1,0xb8,0x40,0xb4,0x7e,0x8f,0x23,0x6c,0xab,0xc8,
0x44,0xcc,0x25,0x71,0xb4,0x03,0x25,0x45,0xb6,0xc7,0x22,0x8e,0x53,0xd2,0xe1,0xf9,
0xa6,0xa5,0x4f,0xbc,0xb2,0x22,0x96,0x62,0x79,0x8b,0x03,0x13,0x3f,0x19,0x62,0x69,
0xea,0xaf,0x39,0xbb,0xe5,0x3c,0x85,0xa8,0xe0,0x86,0x53,0x39,0xec,0x0b,0x68,0xe8,
0x78,0x90,0x36,0xc8,0x12,0xcc,0xe0,0x54,0x60,0x58,0x06,0x3b,0xe0,0x2f,0xd6,0x71,
0xcb,0xc4,0x66,0xc3,0x03,0xe1,0x4b,0x1e,0xed,0x9c,0x47,0x73,0xc0,0x0f,0x80,0xc6,
0x94,0xa0,0xca,0xc4,0xf5,0x91,0x64,0x12,0xe6,0x30,0x00,0x59,0x6a,0x54,0x82,0x46,
0xed,0xcf,0x0d,0xe7,0x09,0xf3,0x4d,0x12,0x80,0xea,0x47,0x7c,0x9e,0xcc,0x03,0x25,
0x51,0xe9,0x41,0x49,0xaa,0x44,0xbe,0xf3,0xa3,0x02,0x3e,0x47,0x11,0xd4,0x5f,0xd0,
0x67,0x65,0xbe,0x22,0x85,0xb5,0x78,0xac,0x8c,0x45,0x76,0x54,0xb5,0x0b,0x0b,0x7d,
0xc2,0xb4,0xb2,0x19,0xaa,0x99,0x9c,0xe2,0x19,0x6d,0xfd,0x1d,0xa2,0x4c,0x7f,0x3f,
0x42,0xac,0x82,0x16,0x1f,0x6d,0xb2,0x66,0xb6,0xaa,0xdd,0xf8,0x84,0x12,0x1e,0x80,
0x97,0x06,0xb8,0x18,0x3a,0x13,0x96,0x54,0x76,0x3e,0x01,0x4e,0x58,0x9e,0xf2,0x28,
0x52,0x31,0x0c,0xdc,0xf5,0xa3,0x5c,0x2b,0xb2,0x25,0xd2,0x71,0x74,0x79,0x7a,0x2a,
0x83,0xb1,0x29,0x53,0x76,0x70,0xa6,0xbd,0x89,0x31,0xe5,0x83,0x71,0xfd,0xa5,0xb2,
0x16,0x8c,0x55,0x25,0x10,0x96,0x50,0x64,0x21,0x3a,0xb6,0xb1,0x0b,0xb1,0xca,0x3d,
0x55,0x92,0x48,0xeb,0x4e,0xf7,0xe8,0x1a,0xff,0xb0,0xff,0xc2,0x01,0xe7,0xdf,0x53,
0xfa,0x83,0xdf,0xab,0xf0,0xf7,0x59,0x1a,0x52,0xd4,0x26,0x19,0x1e,0x23,0x3f,0x45,
0x65,0xa0,0x02,0x27,0x49,0x11,0xa0,0xb3,0x25,0xbc,0x6b,0x11,0x4a,0x99,0xba,0xe3,
0xf1,0xf4,0xcd,0xb9,0x33,0xbd,0xbc,0x72,0x5e,0x39,0xd3,0xf1,0x6c,0xac,0x66,0x2a,
0xb7,0xd2,0xc1,0x93,0x03,0xdc,0x99,0x69,0xe0,0x23,0xae,0xe3,0x1d,0x5c,0x2d,0x43,
0x2c,0x53,0x94,0x92,0xfa,0x75,0x7c,0x66,0xbe,0x40,0x2a,0x25,0x01,0x00,0x36,0xb0,
0xdf,0x4a,0xac,0x24,0xa1,0x81,0xae,0x39,0x70,0x36,0xbc,0x36,0x9c,0x13,0x7c,0x09,
0x4a,0x94,0x83,0x96,0x87,0x26,0x01,0x75,0xd4,0x0a,0xaa,0x97,0x00,0x44,0x0a,0x78,
0x72,0x85,0x47,0x84,0x0f,0xb5,0x7e,0x50,0xe1,0x12,0x14,0x10,0xac,0x55,0x78,0x07,
0x96,0xa1,0x8e,0x53,0x5a,0xa3,0xd1,0xd1,0xd7,0x8c,0x00,0x0c,0xb4,0x71,0x68,0xf8,
0xc9,0x24,0x0a,0x74,0x5b,0xdf,0xb0,0x53,0xa0,0x3a,0x24,0x14,0xc4,0xce,0x88,0xe3,
0x1d,0x01,0x13,0x9e,0xa9,0x5c,0xc0,0x88,0x09,0x24,0xd5,0x1f,0xc2,0x12,0x2c,0x05,
0x7a,0xae,0xc3,0xfa,0x34,0x47,0x10,0x44,0x5f,0x03,0x17,0x33,0x9f,0x85,0xa8,0x9d,
0xe6,0xfd,0x71,0x1f,0x28,0x42,0x69,0xdd,0x27,0xfd,0x8a,0x00,0x45,0xb1,0xc7,0xea,
0x59,0x02,0x8f,0x22,0xa7,0x22,0x87,0xbe,0x89,0x8a,0x52,0x84,0x62,0xd1,0x2b,0xcb,
0x8f,0xf2,0x67,0x93,0x55,0x11,0x6b,0x0c,0xfb,0xdd,0x40,0xd8,0xfb,0x8c,0xcb,0x22,
0x8b,0x59,0x90,0x2c,0xd5,0x4f,0x1a,0xce,0x9a,0xcb,0x0f,0x11,0xa7,0xc7,0xb7,0xbb,
0x4f,0x01,0x28,0xee,0xeb,0x05,0xb9,0xbf,0x1b,0xc8,0x21,0x2e,0xc0,0xf6,0xfe,0x77,
0x03,0x0b,0x9e,0x69,0xd9,0x0e,0x85,0xd5,0x3b,0xf3,0x93,0x8b,0xf4,0xaa,0x61,0xe5,
0xa5,0x3f,0x51,0x5e,0x07,0xf9,0xb5,0x85,0x0f,0xcb,0xb5,0xac,0xfb,0x5e,0x0f,0xd7,
0x02,0x0a,0xc2,0xf9,0x85,0xd7,0x1b,0x8f,0x95,0x5e,0xa9,0xd2,0x46,0x85,0x11,0x25,
0x3e,0xec,0x49,0x18,0xb4,0x63,0x17,0x2c,0x87,0xb9,0x62,0xa0,0x76,0xae,0x12,0x57,
0x2a,0xd4,0xe5,0x5e,0x27,0x19,0x98,0x38,0x80,0x67,0xb3,0x4d,0x81,0x75,0x79,0x91,
0xdd,0xa1,0xd4,0x22,0x5e,0x32,0xf4,0xe5,0x90,0x5c,0x16,0x05,0x5c,0x92,0xab,0x2c,
0x65,0xd2,0x17,0x1c,0x23,0xe3,0xfe,0x32,0x54,0xe9,0x0d,0x04,0xaa,0x30,0x8d,0x12,
0x72,0x38,0x53,0xf0,0x51,0x2d,0xa8,0x44,0xa3,0xa4,0xf7,0x5e,0x64,0x72,0x37,0x57,
0xb1,0xef,0xf5,0xea,0xd3,0x93,0x80,0x03,0x7b,0x4f,0xae,0xc7,0x91,0x5b,0x06,0xd6,
0xd8,0x4f,0xc5,0x78,0x2b,0x56,0x82,0xd4,0x00,0xfc,0x1c,0x94,0xa4,0x83,0xac,0xd2,
0x6b,0xe6,0xfc,0x9a,0x63,0xc0,0xbe,0x3f,0x24,0x09,0x14,0x27,0xa6,0x74,0x11,0x38,
0xf8,0xd4,0xb5,0x25,0x14,0x98,0xcb,0x03,0xb5,0x06,0x8e,0x49,0x3c,0x3c,0xb8,0x1e,
0x04,0x8e,0x48,0x6d,0x37,0x70,0xb4,0xc5,0xab,0x45,0xa4,0x44,0x2c,0x13,0xa0,0xcb,
0x7e,0xf8,0xf2,0xe3,0x1f,0xe6,0x96,0xa5,0xe7,0xca,0x43,0x7d,0xe6,0xd1,0x1c,0x74,
0xf4,0x68,0xd9,0xf5,0x14,0x25,0x40,0x6c,0x40,0xc3,0x9f,0x02,0x23,0x83,0x58,0x0d,
0x2a,0x35,0x18,0x29,0x35,0x31,0xf2,0xe0,0x3c,0xa5,0xdf,0xea,0x3e,0xc5,0x72,0x60,
0x98,0x3a,0x0a,0xd5,0x87,0xd3,0x89,0x61,0xaa,0x96,0x3f,0x13,0xb0,0xfd,0x4f,0x03,
0xd0,0xdb,0xb6,0xda,0x01,0x4f,0x7a,0xfa,0x5e,0x7d,0x96,0x6b,0xbb,0xe2,0xd2,0xe2,
0xc0,0x29,0x0b,0x15,0x47,0x63,0x75,0x4b,0x88,0x48,0xcc,0x2b,0x67,0xa5,0x1e,0x97,
0xe4,0xc6,0x5f,0x49,0x09,0x56,0x25,0x45,0x24,0x9a,0xdc,0x5b,0xd5,0x5b,0xbc,0xa9,
0x0a,0xb0,0x6e,0xf3,0xa3,0xbf,0xa0,0x4b,0x33,0xd3,0x7e,0xb7,0xe3,0xd2,0xd4,0x5f,
0x56,0xc9,0xb7,0xd6,0x35,0x4a,0x21,0x1e,0x07,0xef,0x42,0x11,0x05,0x83,0x48,0x54,
0x1b,0x97,0x67,0x2b,0xef,0x29,0x73,0x99,0x15,0xdc,0x33,0xaa,0x27,0xb6,0x58,0xda,
0x99,0xd3,0x97,0x9b,0xce,0x4c,0x83,0x65,0xcb,0x29,0x95,0x26,0x19,0xc7,0x33,0xdb,
0x9f,0xda,0x56,0x93,0x9e,0xd8,0xb7,0x9a,0xec,0x6e,0xdc,0xdc,0xa2,0x34,0x09,0xd9,
0x70,0x36,0xf9,0xed,0x37,0xfa,0x5e,0xcc,0xbb,0xf6,0x39,0xe6,0x45,0x0d,0x2a,0xc4,
0xdc,0x07,0x84,0x5f,0xed,0xfc,0xf1,0x50,0x7c,0x8b,0x4d,0x89,0x34,0x2e,0x36,0x27,
0x69,0xc9,0x52,0xa0,0x06,0x49,0x03,0x7f,0xac,0xd8,0x52,0x23,0xcd,0x88,0x12,0x67,
0xd3,0x16,0xcf,0xc7,0x59,0xb6,0x39,0x6e,0x2c,0x1a,0x69,0x72,0x8c,0x1d,0x4a,0xaf,
0x0d,0xe7,0x6b,0x7a,0x07,0xb6,0xb7,0xbd,0xc3,0xb1,0x4d,0x33,0x60,0x1a,0x21,0xfe,
0xe2,0x85,0xe6,0x35,0x9f,0x53,0xe0,0xeb,0xca,0xb3,0x52,0x96,0x96,0x57,0x3e,0x26,
0xae,0x6c,0x4a,0x2b,0xfd,0xb5,0x85,0x91,0xa6,0xb4,0x56,0xb5,0x5b,0xe5,0xd7,0x1d,
0xa1,0x65,0x25,0xdf,0x7d,0x53,0x4e,0x63,0x63,0x48,0x27,0x0e,0xa4,0xba,0x79,0x54,
0xac,0x9b,0x43,0xb9,0x94,0xd7,0x5a,0x34,0xde,0x92,0x4e,0x8f,0x9e,0x12,0xec,0xa6,
0x2b,0x19,0x6d,0x8f,0x62,0xf2,0xe4,0xfe,0xba,0xd0,0xac,0x1d,0x09,0xef,0x1a,0xb7,
0xe6,0x9f,0x91,0xe8,0xe3,0xf5,0x40,0xb4,0xa6,0x9a,0xc2,0x0c,0xe0,0x2b,0xf6,0x99,
0xe5,0x30,0xeb,0xac,0x6d,0x63,0x13,0x16,0x4a,0x11,0xb4,0x48,0x97,0xaf,0x47,0x22,
0x97,0xa2,0xb2,0x29,0x3f,0x88,0x5b,0x1e,0x7d,0x73,0x52,0x6c,0x5d,0x19,0x92,0xe2,
0x9a,0x7a,0x0b,0x78,0x04,0x95,0xb5,0x35,0x86,0x08,0x43,0xe2,0xae,0x74,0x76,0xe3,
0xa0,0x6c,0x89,0x90,0x34,0xe7,0x55,0xc8,0xd9,0x7b,0xac,0x1b,0xe8,0x23,0xd8,0xf7,
0x27,0x1c,0xf5,0xc6,0x7e,0x22,0xcc,0xdd,0xdb,0x55,0xe6,0x59,0xfa,0x69,0x27,0x5f,
0x1d,0xe0,0xc3,0x99,0x45,0x15,0xa9,0x75,0x86,0x2c,0x87,0x47,0xca,0xc9,0x39,0xdd,
0x01,0x03,0xeb,0xcc,0xec,0x36,0xe8,0x2c,0x59,0xcc,0x41,0x7c,0x6d,0xa9,0x3f,0xad,
0xd0,0xfd,0x48,0xa4,0xf1,0x04,0x29,0x34,0x43,0x2a,0x4f,0x23,0x7f,0x69,0x72,0x37,
0xd4,0x42,0x35,0x1a,0xa7,0xea,0x42,0xc9,0x84,0x44,0xbb,0xf4,0x65,0x13,0x6c,0x54,
0xb1,0xd2,0x49,0xaa,0x16,0x00,0xaf,0x8e,0x02,0x3a,0xcf,0x7d,0xaf,0x59,0xe9,0xdc,
0x71,0xea,0xdc,0x0d,0x28,0x69,0x2b,0x3f,0x87,0xb9,0xab,0xf4,0x59,0x81,0xa5,0xbd,
0xc7,0xb0,0x22,0xd1,0xc9,0x9d,0xa0,0xd3,0xf6,0x74,0xea,0x27,0xdf,0x24,0xf3,0x0a,
0x04,0x4b,0x95,0x34,0x6b,0x16,0xad,0xb4,0x09,0x2e,0x3a,0x63,0x82,0xd8,0xb6,0xf7,
0x54,0x67,0x59,0xaa,0xe6,0xa9,0x4a,0x56,0x6b,0x38,0xb5,0xbd,0x87,0x37,0x3b,0xac,
0x4a,0xc6,0x6a,0xa7,0xe1,0x7e,0xc3,0x65,0x98,0x04,0xae,0xf5,0xf3,0xbf,0x7f,0xfe,
0x62,0x0d,0x95,0xc6,0x75,0x53,0x34,0x77,0xf7,0x96,0x51,0xc7,0xe8,0x0b,0x2e,0x29,
0xd0,0x21,0x8c,0x0d,0xb7,0xf1,0x49,0x07,0xe3,0xaf,0xa3,0xed,0x76,0x3b,0xa2,0x46,
0xc3,0xa8,0xc8,0x60,0x15,0x2a,0xee,0xa1,0xa9,0xa1,0xc9,0xe0,0xc1,0xce,0xb5,0x4a,
0x30,0xb0,0xce,0xf4,0xf4,0x7f,0xfc,0xf2,0xe9,0x1d,0x6e,0x53,0xb0,0x07,0xce,0x4a,
0x67,0xb9,0xb7,0x15,0xf5,0xb7,0x97,0x47,0x65,0x45,0x90,0xdc,0x6a,0xb5,0x04,0xf4,
0xfb,0x4b,0x92,0xfd,0xf6,0x9b,0x85,0x74,0x0d,0x0b,0x3c,0x41,0x2f,0x27,0x33,0xa8,
0xe2,0x5d,0x2f,0xa4,0xb8,0x1d,0x92,0xd0,0xe5,0x2c,0xe5,0x57,0x6d,0x8b,0xba,0x15,
0x62,0x9d,0xd1,0xb9,0x14,0x24,0x98,0x1a,0x81,0x3c,0x34,0xab,0xba,0x88,0xa4,0xc0,
0x1d,0x3c,0x51,0x17,0x8b,0xf7,0x26,0x58,0xba,0x2e,0xa9,0xd8,0x3e,0x7c,0x04,0xe3,
0x93,0xb5,0xcb,0x20,0xa6,0x43,0x3f,0x5e,0xf3,0x66,0x50,0xd7,0x07,0x23,0xf1,0x11,
0xd7,0xed,0x84,0x7f,0x04,0x06,0x2a,0xd7,0xb6,0x35,0x75,0x55,0x01,0x1c,0xa1,0xd5,
0xae,0xf9,0x0c,0x71,0xb2,0x12,0xd9,0x66,0x60,0xd5,0x1d,0xdd,0xe6,0xa5,0xab,0x3c,
0x7d,0x75,0x17,0x8d,0x93,0xed,0xb5,0x65,0xdb,0xda,0x04,0x9e,0xba,0x03,0x9a,0x3d,
0x2b,0xde,0xc9,0xad,0x52,0xf5,0xbe,0x2a,0xfa,0x60,0xe0,0x9a,0x9e,0xa9,0xab,0x86,
0x11,0x0d,0xb1,0xaf,0xb5,0xfe,0x6c,0x1e,0x17,0x51,0x64,0x40,0xe1,0x88,0x49,0x08,
0x02,0xce,0xac,0xbf,0xfd,0xf5,0xbf,0x4b,0xa0,0xef,0x44,0x84,0x39,0xeb,0x41,0x4c,
0x1c,0xb3,0xcf,0xbd,0x01,0x13,0x98,0xa0,0x79,0x07,0x20,0x0c,0x55,0x08,0xda,0x51,
0xcd,0x47,0x85,0xc0,0xac,0x6f,0x9d,0xd1,0xfc,0x99,0xd5,0xbf,0xfe,0x53,0xfc,0xa7,
0xf8,0xd3,0xaa,0xd9,0x18,0x53,0x0d,0x2b,0xdd,0x7d,0xaa,0x7a,0x58,0xe5,0x85,0xb1,
0xc2,0xc2,0xf2,0x5f,0x9d,0xa3,0x55,0xf3,0x2a,0x32,0x37,0xce,0xaf,0xba,0x35,0xe5,
0xb4,0xf4,0x7b,0x78,0xd0,0x6b,0x55,0x40,0x1c,0x8d,0x4a,0x25,0x7d,0xad,0x80,0xf7,
0x1f,0xfe,0xf0,0xe1,0xcb,0x07,0xeb,0x9f,0x10,0xa7,0x3a,0x3a,0x93,0xdb,0xeb,0x81,
0xca,0x46,0xca,0x30,0x6a,0x33,0xb7,0x1b,0xb4,0xf6,0x50,0x87,0xb4,0x09,0x13,0xef,
0xa9,0x61,0x52,0x87,0xc4,0x4a,0x39,0xac,0x6e,0xd8,0xd6,0x1e,0xcb,0x95,0x34,0xdc,
0x49,0x33,0xdc,0x23,0x63,0xf9,0x9e,0xaf,0xfc,0x22,0x92,0x7a,0x03,0xc2,0x62,0xa5,
0x16,0xca,0x06,0xf8,0x2e,0x31,0xd8,0x41,0x05,0xb0,0x19,0x94,0x30,0xfc,0x4c,0x5b,
0x57,0xed,0xab,0x7e,0x7d,0x6e,0x74,0x0d,0xa8,0x4d,0xad,0x82,0xb5,0x0d,0xf0,0xf0,
0x76,0xe2,0x89,0x2f,0xba,0xf7,0x52,0xe3,0x88,0x07,0x86,0x1b,0xc6,0x5e,0xbc,0x68,
0x84,0x8f,0x6e,0x4a,0x02,0x26,0x6a,0x37,0x51,0xc1,0x42,0xae,0xf2,0xa5,0x6a,0x4a,
0x6e,0x45,0x14,0x51,0x53,0x33,0x45,0x64,0xe5,0x30,0x9b,0xca,0x7e,0x1d,0xff,0xd0,
0x4e,0x22,0x56,0xc6,0x2f,0x5a,0x6d,0xd1,0x40,0xac,0xd4,0xef,0x2d,0xb2,0xee,0xe6,
0xd2,0xa5,0x66,0x97,0x14,0xaa,0xf5,0x9b,0xc4,0x6d,0xf7,0xd1,0x77,0xc4,0x60,0x37,
0xb7,0x1e,0xf1,0x9b,0x33,0xeb,0x05,0xb5,0xd4,0x8e,0x53,0x40,0x07,0x34,0x59,0xea,
0xd5,0xae,0x75,0x60,0x13,0xf3,0xb3,0xb9,0xf5,0xc2,0xb8,0xf4,0x7c,0x6a,0x1d,0xf3,
0xda,0x7f,0x41,0xae,0x52,0x69,0x8a,0x3e,0xfe,0x77,0x12,0x51,0x3b,0xe9,0x1c,0x28,
0x84,0xee,0xb8,0x07,0xbe,0x67,0x86,0x5a,0xae,0xd3,0xce,0x50,0x7a,0x2b,0xdd,0xcd,
0x86,0x1b,0x20,0xb8,0x74,0xd6,0xb1,0xce,0x02,0x47,0x7b,0x90,0xfe,0xeb,0xd3,0x92,
0x60,0x08,0x9f,0x31,0x5a,0xd6,0x58,0xe3,0x57,0x58,0x6d,0xd9,0xee,0x31,0x17,0xa2,
0xf2,0xeb,0x80,0xa9,0x5d,0xdf,0xa2,0xbf,0x21,0x3e,0x0f,0x7b,0x26,0xa6,0xfb,0xdd,
0x6d,0x9d,0x98,0x76,0xdb,0x3f,0xd2,0x3d,0x21,0xcf,0x0d,0x51,0x70,0x1a,0x56,0x55,
0x51,0xaa,0xbb,0x9d,0x07,0x25,0x5f,0xd8,0xa8,0xdf,0xe9,0x2e,0x53,0x56,0xdd,0xd4,
0xc6,0xbd,0x2b,0xab,0xee,0x67,0xf3,0xb9,0x5a,0x4f,0x2d,0x74,0x04,0x49,0xe3,0xd9,
0x98,0x2c,0x74,0xe8,0xf5,0x89,0x5c,0xb4,0xfd,0xed,0xc6,0xb3,0xe1,0x12,0x38,0xf4,
0xda,0x94,0x97,0xda,0xff,0x1d,0x81,0x8b,0x14,0x16,0x2f,0x52,0x17,0xa6,0x09,0x4b,
0x7b,0x53,0x8b,0x19,0x75,0x00,0x25,0x5a,0x1a,0x35,0xcf,0x67,0xd6,0x50,0xbf,0x46,
0x02,0x4b,0x73,0xd0,0xe9,0x27,0x64,0xc7,0x6a,0x10,0x77,0x95,0xe9,0xb5,0x85,0xd0,
0xc9,0x29,0x51,0x6a,0x7a,0xea,0x26,0x59,0xaa,0x9f,0x36,0xa0,0x57,0x3a,0xdb,0x99,
0x65,0x5b,0x0f,0x94,0xd2,0xc7,0x65,0xb5,0x46,0xa6,0x88,0x6e,0x76,0x0b,0x7f,0xc8,
0x1b,0xfd,0x42,0xd5,0xcb,0x3e,0xd6,0x31,0x2c,0x27,0x4e,0xf5,0x0c,0xf5,0x9e,0x27,
0x0b,0x9a,0x16,0x80,0x91,0xfc,0x27,0xe1,0xa9,0x6d,0xc9,0x47,0xd1,0xac,0x6d,0x32,
0xdb,0x3b,0xe1,0xbe,0x87,0xa8,0xf5,0xff,0x13,0xb0,0x60,0x8a,0x27,0x40,0x96,0x26,
0xd4,0x70,0x00,0xcf,0xa9,0x02,0x4b,0xf9,0x05,0xdc,0xc7,0x4a,0x56,0x2b,0xcb,0x54,
0x60,0x65,0xb7,0x9c,0x86,0xa8,0xf4,0xd2,0xd9,0xbc,0x8a,0xf6,0x07,0x41,0x83,0x36,
0xe9,0xc0,0x86,0x01,0x9b,0x36,0x97,0x9c,0x4b,0xf5,0x87,0xe9,0xb0,0xc1,0x80,0x66,
0x86,0x17,0x93,0xc9,0xa4,0x3b,0x6c,0x16,0x98,0xd9,0x5e,0xf5,0x9f,0x04,0x66,0x63,
0xfd,0xb7,0x26,0x63,0xf5,0xff,0x10,0xfe,0x07,0x44,0x14,0x46,0x18,0x97,0x30,0x00,
0x00,
};
constexpr size_t WIFI_INDEX_HTML_GZ_LEN = sizeof(WIFI_INDEX_HTML_GZ);
// </gz:WIFI_INDEX_HTML>