Use UDP live/realtime data on main segment only.

Includes Adalight revert, CSS optimizations and setPixelColor() refactoring.
This commit is contained in:
Blaz Kristan 2022-03-25 16:36:05 +01:00
parent c14f16bdf1
commit 41aa1ee318
18 changed files with 1762 additions and 1747 deletions

View File

@ -75,7 +75,7 @@ private:
uint8_t lineBuffer[w * 2]; uint8_t lineBuffer[w * 2];
if (!realtimeMode || realtimeOverride) strip.service(); if (!realtimeMode || realtimeOverride || (realtimeMode && useMainSegmentOnly)) strip.service();
// 0,0 coordinates are top left // 0,0 coordinates are top left
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
@ -169,7 +169,7 @@ private:
uint32_t lineSize = ((bitDepth * w +31) >> 5) * 4; uint32_t lineSize = ((bitDepth * w +31) >> 5) * 4;
uint8_t lineBuffer[lineSize]; uint8_t lineBuffer[lineSize];
uint8_t serviceStrip = (!realtimeMode || realtimeOverride) ? 7 : 0; uint8_t serviceStrip = (!realtimeMode || realtimeOverride || (realtimeMode && useMainSegmentOnly)) ? 7 : 0;
// row is decremented as the BMP image is drawn bottom up // row is decremented as the BMP image is drawn bottom up
for (row = h-1; row >= 0; row--) { for (row = h-1; row >= 0; row--) {
if ((row & 0b00000111) == serviceStrip) strip.service(); //still refresh backlight to mitigate stutter every few rows if ((row & 0b00000111) == serviceStrip) strip.service(); //still refresh backlight to mitigate stutter every few rows
@ -250,7 +250,7 @@ private:
uint8_t lineBuffer[w * 2]; uint8_t lineBuffer[w * 2];
if (!realtimeMode || realtimeOverride) strip.service(); if (!realtimeMode || realtimeOverride || (realtimeMode && useMainSegmentOnly)) strip.service();
// 0,0 coordinates are top left // 0,0 coordinates are top left
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {

View File

@ -46,6 +46,11 @@
#define MAX(a,b) ((a)>(b)?(a):(b)) #define MAX(a,b) ((a)>(b)?(a):(b))
#endif #endif
//color mangling macros
#ifndef RGBW32
#define RGBW32(r,g,b,w) (uint32_t((byte(w) << 24) | (byte(r) << 16) | (byte(g) << 8) | (byte(b))))
#endif
/* Not used in all effects yet */ /* Not used in all effects yet */
#define WLED_FPS 42 #define WLED_FPS 42
#define FRAMETIME_FIXED (1000/WLED_FPS) #define FRAMETIME_FIXED (1000/WLED_FPS)
@ -637,12 +642,13 @@ class WS2812FX {
resetSegments(), resetSegments(),
makeAutoSegments(bool forceReset = false), makeAutoSegments(bool forceReset = false),
fixInvalidSegments(), fixInvalidSegments(),
setPixelColor(uint16_t n, uint32_t c),
setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0), setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0),
show(void), show(void),
setTargetFps(uint8_t fps), setTargetFps(uint8_t fps),
deserializeMap(uint8_t n=0); deserializeMap(uint8_t n=0);
inline void setPixelColor(uint16_t n, uint32_t c) {setPixelColor(n, byte(c>>16), byte(c>>8), byte(c), byte(c>>24));}
bool bool
gammaCorrectBri = false, gammaCorrectBri = false,
gammaCorrectCol = true, gammaCorrectCol = true,
@ -909,7 +915,6 @@ class WS2812FX {
friend class ColorTransition; friend class ColorTransition;
uint16_t uint16_t
realPixelIndex(uint16_t i),
transitionProgress(uint8_t tNr); transitionProgress(uint8_t tNr);
public: public:

View File

@ -131,6 +131,8 @@ void WS2812FX::service() {
for(uint8_t i=0; i < MAX_NUM_SEGMENTS; i++) for(uint8_t i=0; i < MAX_NUM_SEGMENTS; i++)
{ {
if (realtimeMode && useMainSegmentOnly && i == getMainSegmentId()) continue;
_segment_index = i; _segment_index = i;
// reset the segment runtime data if needed, called before isActive to ensure deleted // reset the segment runtime data if needed, called before isActive to ensure deleted
@ -180,34 +182,11 @@ void WS2812FX::service() {
_triggered = false; _triggered = false;
} }
void IRAM_ATTR WS2812FX::setPixelColor(uint16_t n, uint32_t c) {
setPixelColor(n, R(c), G(c), B(c), W(c));
}
//used to map from segment index to physical pixel, taking into account grouping, offsets, reverse and mirroring
uint16_t IRAM_ATTR WS2812FX::realPixelIndex(uint16_t i) {
int16_t iGroup = i * SEGMENT.groupLength();
/* reverse just an individual segment */
int16_t realIndex = iGroup;
if (IS_REVERSE) {
if (IS_MIRROR) {
realIndex = (SEGMENT.length() - 1) / 2 - iGroup; //only need to index half the pixels
} else {
realIndex = (SEGMENT.length() - 1) - iGroup;
}
}
realIndex += SEGMENT.start;
return realIndex;
}
void IRAM_ATTR WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte w) void IRAM_ATTR WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte w)
{ {
if (SEGLEN) {//from segment uint8_t segIdx;
uint16_t realIndex = realPixelIndex(i);
uint16_t len = SEGMENT.length();
if (SEGLEN) { // SEGLEN!=0 -> from segment/FX
//color_blend(getpixel, col, _bri_t); (pseudocode for future blending of segments) //color_blend(getpixel, col, _bri_t); (pseudocode for future blending of segments)
if (_bri_t < 255) { if (_bri_t < 255) {
r = scale8(r, _bri_t); r = scale8(r, _bri_t);
@ -215,30 +194,48 @@ void IRAM_ATTR WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte
b = scale8(b, _bri_t); b = scale8(b, _bri_t);
w = scale8(w, _bri_t); w = scale8(w, _bri_t);
} }
segIdx = _segment_index;
} else // from live/realtime
segIdx = _mainSegment;
if (SEGLEN || (realtimeMode && useMainSegmentOnly)) {
uint32_t col = RGBW32(r, g, b, w); uint32_t col = RGBW32(r, g, b, w);
uint16_t len = _segments[segIdx].length();
/* Set all the pixels in the group */ // get physical pixel address (taking into account start, grouping, spacing [and offset])
for (uint16_t j = 0; j < SEGMENT.grouping; j++) { i = i * _segments[segIdx].groupLength();
uint16_t indexSet = realIndex + (IS_REVERSE ? -j : j); if (_segments[segIdx].options & REVERSE) { // is segment reversed?
if (indexSet >= SEGMENT.start && indexSet < SEGMENT.stop) { if (_segments[segIdx].options & MIRROR) { // is segment mirrored?
if (IS_MIRROR) { //set the corresponding mirrored pixel i = (len - 1) / 2 - i; //only need to index half the pixels
uint16_t indexMir = SEGMENT.stop - indexSet + SEGMENT.start - 1; } else {
/* offset/phase */ i = (len - 1) - i;
indexMir += SEGMENT.offset; }
if (indexMir >= SEGMENT.stop) indexMir -= len; }
i += _segments[segIdx].start;
// set all the pixels in the group
for (uint16_t j = 0; j < _segments[segIdx].grouping; j++) {
uint16_t indexSet = i + ((_segments[segIdx].options & REVERSE) ? -j : j);
if (indexSet >= _segments[segIdx].start && indexSet < _segments[segIdx].stop) {
if (_segments[segIdx].options & MIRROR) { //set the corresponding mirrored pixel
uint16_t indexMir = _segments[segIdx].stop - indexSet + _segments[segIdx].start - 1;
indexMir += _segments[segIdx].offset; // offset/phase
if (indexMir >= _segments[segIdx].stop) indexMir -= len;
if (indexMir < customMappingSize) indexMir = customMappingTable[indexMir]; if (indexMir < customMappingSize) indexMir = customMappingTable[indexMir];
busses.setPixelColor(indexMir, col); busses.setPixelColor(indexMir, col);
} }
/* offset/phase */ indexSet += _segments[segIdx].offset; // offset/phase
indexSet += SEGMENT.offset;
if (indexSet >= SEGMENT.stop) indexSet -= len;
if (indexSet >= _segments[segIdx].stop) indexSet -= len;
if (indexSet < customMappingSize) indexSet = customMappingTable[indexSet]; if (indexSet < customMappingSize) indexSet = customMappingTable[indexSet];
busses.setPixelColor(indexSet, col); busses.setPixelColor(indexSet, col);
} }
} }
} else { //live data, etc. } else {
if (i < customMappingSize) i = customMappingTable[i]; if (i < customMappingSize) i = customMappingTable[i];
busses.setPixelColor(i, RGBW32(r, g, b, w)); busses.setPixelColor(i, RGBW32(r, g, b, w));
} }
@ -503,7 +500,13 @@ uint8_t WS2812FX::getActiveSegmentsNum(void) {
uint32_t WS2812FX::getPixelColor(uint16_t i) uint32_t WS2812FX::getPixelColor(uint16_t i)
{ {
i = realPixelIndex(i); // get physical pixel
i = i * SEGMENT.groupLength();;
if (IS_REVERSE) {
if (IS_MIRROR) i = (SEGMENT.length() - 1) / 2 - i; //only need to index half the pixels
else i = (SEGMENT.length() - 1) - i;
}
i += SEGMENT.start;
if (SEGLEN) { if (SEGLEN) {
/* offset/phase */ /* offset/phase */

View File

@ -294,6 +294,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
JsonObject if_live = interfaces["live"]; JsonObject if_live = interfaces["live"];
CJSON(receiveDirect, if_live["en"]); CJSON(receiveDirect, if_live["en"]);
CJSON(useMainSegmentOnly, if_live[F("mso")]);
CJSON(e131Port, if_live["port"]); // 5568 CJSON(e131Port, if_live["port"]); // 5568
if (e131Port == DDP_DEFAULT_PORT) e131Port = E131_DEFAULT_PORT; // prevent double DDP port allocation if (e131Port == DDP_DEFAULT_PORT) e131Port = E131_DEFAULT_PORT; // prevent double DDP port allocation
CJSON(e131Multicast, if_live[F("mc")]); CJSON(e131Multicast, if_live[F("mc")]);
@ -699,6 +700,7 @@ void serializeConfig() {
JsonObject if_live = interfaces.createNestedObject("live"); JsonObject if_live = interfaces.createNestedObject("live");
if_live["en"] = receiveDirect; if_live["en"] = receiveDirect;
if_live[F("mso")] = useMainSegmentOnly;
if_live["port"] = e131Port; if_live["port"] = e131Port;
if_live[F("mc")] = e131Multicast; if_live[F("mc")] = e131Multicast;

View File

@ -665,9 +665,12 @@ input[type=range]::-moz-range-thumb {
border: 1px solid var(--c-3); border: 1px solid var(--c-3);
background-color: var(--c-3); background-color: var(--c-3);
} }
#segutil .btn-s:hover,
#segutil2 .btn-s:hover,
#putil .btn-s:hover,
.btn:hover { .btn:hover {
border: 1px solid var(--c-5) !important; border: 1px solid var(--c-5) /*!important*/;
background-color: var(--c-5) !important; background-color: var(--c-5) /*!important*/;
} }
.btn-s { .btn-s {
width: 100%; width: 100%;
@ -917,7 +920,7 @@ textarea {
.pwr { .pwr {
color: var(--c-6); color: var(--c-6);
transform: translate(2px, 2px); transform: translate(1px, 1px);
cursor: pointer; cursor: pointer;
} }
@ -1041,7 +1044,7 @@ textarea {
.seg .schkl { .seg .schkl {
position: absolute; position: absolute;
top: 7px; top: 8px;
left: 9px; left: 9px;
} }

View File

@ -1941,6 +1941,8 @@ function setIntensity()
function setLor(i) function setLor(i)
{ {
var obj = {"lor": i}; var obj = {"lor": i};
// allow canceling live mode (if sender crashes)
if (i===0 && lastinfo.live && ["","Hyperion","UDP"].includes(lastinfo.lm)) { obj.live = false; obj.v = true; }
requestJson(obj); requestJson(obj);
} }

View File

@ -104,7 +104,8 @@ Send notifications twice: <input type="checkbox" name="S2"><br>
Enable instance list: <input type="checkbox" name="NL"><br> Enable instance list: <input type="checkbox" name="NL"><br>
Make this instance discoverable: <input type="checkbox" name="NB"> Make this instance discoverable: <input type="checkbox" name="NB">
<h3>Realtime</h3> <h3>Realtime</h3>
Receive UDP realtime: <input type="checkbox" name="RD"><br><br> Receive UDP realtime: <input type="checkbox" name="RD"><br>
Use main segment only: <input type="checkbox" name="MO"><br><br>
<i>Network DMX input</i><br> <i>Network DMX input</i><br>
Type: Type:
<select name=DI onchange="SP(); adj();"> <select name=DI onchange="SP(); adj();">

View File

@ -46,8 +46,8 @@
<td><input name="H${i}" class="xs" type="number" min="0" max="24"></td> <td><input name="H${i}" class="xs" type="number" min="0" max="24"></td>
<td><input name="N${i}" class="xs" type="number" min="0" max="59"></td> <td><input name="N${i}" class="xs" type="number" min="0" max="59"></td>
<td><input name="T${i}" class="s" type="number" min="0" max="250"></td> <td><input name="T${i}" class="s" type="number" min="0" max="250"></td>
<td><div id="CB${i}" onclick="expand(this,${i})" class="cal">&#128467;</div></td></tr>`; <td><div id="CB${i}" onclick="expand(this,${i})" class="cal">&#128197;</div></td></tr>`;
ih+=`<tr><td colspan=5><div id="WD${i}" style="display:none;"><hr>Run on weekdays`; ih+=`<tr><td colspan=5><div id="WD${i}" style="display:none;background-color:#444;"><hr>Run on weekdays`;
ih+=`<table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr><tr>` ih+=`<table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr><tr>`
for (j=1;j<8;j++) ih+=`<td><input id="W${i}${j}" type="checkbox"></td>`; for (j=1;j<8;j++) ih+=`<td><input id="W${i}${j}" type="checkbox"></td>`;
ih+=`</tr></table>from <select name="M${i}">`; ih+=`</tr></table>from <select name="M${i}">`;
@ -61,16 +61,16 @@
<td>Sunrise<input name="H8" value="255" type="hidden"></td> <td>Sunrise<input name="H8" value="255" type="hidden"></td>
<td><input name="N8" class="xs" type="number" min="-59" max="59"></td> <td><input name="N8" class="xs" type="number" min="-59" max="59"></td>
<td><input name="T8" class="s" type="number" min="0" max="250"></td> <td><input name="T8" class="s" type="number" min="0" max="250"></td>
<td><div id="CB8" onclick="expand(this,8)" class="cal">&#128467;</div></td></tr><tr><td colspan=5>`; <td><div id="CB8" onclick="expand(this,8)" class="cal">&#128197;</div></td></tr><tr><td colspan=5>`;
ih+=`<div id="WD8" style="display:none;"><hr><table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr><tr>`; ih+=`<div id="WD8" style="display:none;background-color:#444;"><hr><table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr><tr>`;
for (j=1;j<8;j++) ih+=`<td><input id="W8${j}" type="checkbox"></td>`; for (j=1;j<8;j++) ih+=`<td><input id="W8${j}" type="checkbox"></td>`;
ih+="</tr></table><hr></div></td></tr>"; ih+="</tr></table><hr></div></td></tr>";
ih+=`<tr><td><input name="W9" id="W9" type="hidden"><input id="W90" type="checkbox"></td> ih+=`<tr><td><input name="W9" id="W9" type="hidden"><input id="W90" type="checkbox"></td>
<td>Sunset<input name="H9" value="255" type="hidden"></td> <td>Sunset<input name="H9" value="255" type="hidden"></td>
<td><input name="N9" class="xs" type="number" min="-59" max="59"></td> <td><input name="N9" class="xs" type="number" min="-59" max="59"></td>
<td><input name="T9" class="s" type="number" min="0" max="250"></td> <td><input name="T9" class="s" type="number" min="0" max="250"></td>
<td><div id="CB9" onclick="expand(this,9)" class="cal">&#128467;</div></td></tr><tr><td colspan=5>`; <td><div id="CB9" onclick="expand(this,9)" class="cal">&#128197;</div></td></tr><tr><td colspan=5>`;
ih+=`<div id="WD9" style="display:none;"><hr><table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr><tr>`; ih+=`<div id="WD9" style="display:none;background-color:#444;"><hr><table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr><tr>`;
for (j=1;j<8;j++) ih+=`<td><input id="W9${j}" type="checkbox"></td>`; for (j=1;j<8;j++) ih+=`<td><input id="W9${j}" type="checkbox"></td>`;
ih+="</tr></table><hr></div></td></tr>"; ih+="</tr></table><hr></div></td></tr>";
gId("TMT").innerHTML=ih; gId("TMT").innerHTML=ih;

View File

@ -34,7 +34,7 @@ void handleDDPPacket(e131_packet_t* p) {
realtimeLock(realtimeTimeoutMs, REALTIME_MODE_DDP); realtimeLock(realtimeTimeoutMs, REALTIME_MODE_DDP);
if (!realtimeOverride) { if (!realtimeOverride || (realtimeMode && useMainSegmentOnly)) {
for (uint16_t i = start; i < stop; i++) { for (uint16_t i = start; i < stop; i++) {
setRealtimePixel(i, data[c], data[c+1], data[c+2], 0); setRealtimePixel(i, data[c], data[c+1], data[c+2], 0);
c+=3; c+=3;
@ -115,7 +115,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
if (uni != e131Universe) return; if (uni != e131Universe) return;
if (dmxChannels-DMXAddress+1 < 3) return; if (dmxChannels-DMXAddress+1 < 3) return;
realtimeLock(realtimeTimeoutMs, mde); realtimeLock(realtimeTimeoutMs, mde);
if (realtimeOverride) return; if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
wChannel = (dmxChannels-DMXAddress+1 > 3) ? e131_data[DMXAddress+3] : 0; wChannel = (dmxChannels-DMXAddress+1 > 3) ? e131_data[DMXAddress+3] : 0;
for (uint16_t i = 0; i < totalLen; i++) for (uint16_t i = 0; i < totalLen; i++)
setRealtimePixel(i, e131_data[DMXAddress+0], e131_data[DMXAddress+1], e131_data[DMXAddress+2], wChannel); setRealtimePixel(i, e131_data[DMXAddress+0], e131_data[DMXAddress+1], e131_data[DMXAddress+2], wChannel);
@ -125,7 +125,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
if (uni != e131Universe) return; if (uni != e131Universe) return;
if (dmxChannels-DMXAddress+1 < 4) return; if (dmxChannels-DMXAddress+1 < 4) return;
realtimeLock(realtimeTimeoutMs, mde); realtimeLock(realtimeTimeoutMs, mde);
if (realtimeOverride) return; if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
wChannel = (dmxChannels-DMXAddress+1 > 4) ? e131_data[DMXAddress+4] : 0; wChannel = (dmxChannels-DMXAddress+1 > 4) ? e131_data[DMXAddress+4] : 0;
if (DMXOldDimmer != e131_data[DMXAddress+0]) { if (DMXOldDimmer != e131_data[DMXAddress+0]) {
DMXOldDimmer = e131_data[DMXAddress+0]; DMXOldDimmer = e131_data[DMXAddress+0];
@ -176,7 +176,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
bool is4Chan = (DMXMode == DMX_MODE_MULTIPLE_RGBW); bool is4Chan = (DMXMode == DMX_MODE_MULTIPLE_RGBW);
const uint16_t dmxChannelsPerLed = is4Chan ? 4 : 3; const uint16_t dmxChannelsPerLed = is4Chan ? 4 : 3;
const uint16_t ledsPerUniverse = is4Chan ? MAX_4_CH_LEDS_PER_UNIVERSE : MAX_3_CH_LEDS_PER_UNIVERSE; const uint16_t ledsPerUniverse = is4Chan ? MAX_4_CH_LEDS_PER_UNIVERSE : MAX_3_CH_LEDS_PER_UNIVERSE;
if (realtimeOverride) return; if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
uint16_t previousLeds, dmxOffset; uint16_t previousLeds, dmxOffset;
if (previousUniverses == 0) { if (previousUniverses == 0) {
if (dmxChannels-DMXAddress < 1) return; if (dmxChannels-DMXAddress < 1) return;

View File

@ -908,379 +908,382 @@ const uint8_t PAGE_settings_ui[] PROGMEM = {
// Autogenerated from wled00/data/settings_sync.htm, do not edit!! // Autogenerated from wled00/data/settings_sync.htm, do not edit!!
const uint16_t PAGE_settings_sync_length = 2814; const uint16_t PAGE_settings_sync_length = 2839;
const uint8_t PAGE_settings_sync[] PROGMEM = { const uint8_t PAGE_settings_sync[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x1a, 0x5b, 0x77, 0xda, 0x38, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x5a, 0x5d, 0x77, 0xda, 0x38,
0xf3, 0xdd, 0xbf, 0x42, 0xeb, 0x87, 0x6e, 0xd8, 0x12, 0x30, 0x10, 0x68, 0x4a, 0xb0, 0xfb, 0x85, 0x13, 0xbe, 0xf7, 0xaf, 0xd0, 0xfa, 0xa2, 0x1b, 0xb6, 0x84, 0xcf, 0x90, 0xa6, 0x04, 0xbb, 0x6f,
0x90, 0x26, 0x39, 0xdb, 0x34, 0x14, 0xd2, 0xed, 0xee, 0xd3, 0x1e, 0x61, 0x0b, 0x70, 0xb0, 0x2d, 0x08, 0x69, 0x92, 0xb3, 0x4d, 0x43, 0x21, 0xdd, 0xee, 0x5e, 0xed, 0x11, 0xb6, 0x00, 0x05, 0x5b,
0xaf, 0x25, 0xe7, 0x72, 0xf6, 0xec, 0x7f, 0xff, 0x66, 0x24, 0xdb, 0x80, 0xb9, 0xf6, 0x21, 0x46, 0xf2, 0xda, 0x72, 0x3e, 0xce, 0x9e, 0xfd, 0xef, 0xef, 0x8c, 0x64, 0x1b, 0x30, 0x10, 0xe8, 0x45,
0x96, 0x66, 0x46, 0xa3, 0xb9, 0x8f, 0x9c, 0xde, 0x2f, 0x83, 0x87, 0xab, 0xc7, 0xbf, 0x86, 0xd7, 0x8c, 0x2d, 0xcf, 0x8c, 0x46, 0xf3, 0xf1, 0xcc, 0x48, 0x4e, 0xef, 0x97, 0xc1, 0xfd, 0xe5, 0xc3,
0x64, 0x2e, 0xc3, 0xc0, 0xe9, 0xe1, 0x93, 0x04, 0x34, 0x9a, 0xd9, 0x26, 0x8b, 0x4c, 0x78, 0x67, 0x5f, 0xc3, 0x2b, 0x32, 0x57, 0x61, 0xe0, 0xf6, 0xf0, 0x4a, 0x02, 0x2a, 0x66, 0x8e, 0xcd, 0x84,
0xd4, 0x73, 0x7a, 0x21, 0x93, 0x94, 0x44, 0x34, 0x64, 0xb6, 0xf9, 0xec, 0xb3, 0x97, 0x98, 0x27, 0x0d, 0xcf, 0x8c, 0xfa, 0x6e, 0x2f, 0x64, 0x8a, 0x12, 0x41, 0x43, 0xe6, 0xd8, 0x4f, 0x9c, 0x3d,
0xd2, 0x24, 0x2e, 0x8f, 0x24, 0x8b, 0xa4, 0x6d, 0xbe, 0xf8, 0x9e, 0x9c, 0xdb, 0x6d, 0xcb, 0x32, 0x47, 0x32, 0x56, 0x36, 0xf1, 0xa4, 0x50, 0x4c, 0x28, 0xc7, 0x7e, 0xe6, 0xbe, 0x9a, 0x3b, 0x9d,
0x1d, 0x43, 0x83, 0x1a, 0xa5, 0x35, 0x8f, 0x3d, 0xfb, 0x2e, 0x3b, 0x55, 0x2f, 0x55, 0x3f, 0xf2, 0x46, 0xc3, 0x76, 0x2d, 0x43, 0x6a, 0x95, 0xde, 0xf9, 0xec, 0x89, 0x7b, 0xec, 0x58, 0x3f, 0x54,
0xa5, 0x4f, 0x83, 0x53, 0xe1, 0xd2, 0x80, 0xd9, 0x8d, 0x6a, 0x48, 0x5f, 0xfd, 0x30, 0x0d, 0x8b, 0xb9, 0xe0, 0x8a, 0xd3, 0xe0, 0x38, 0xf1, 0x68, 0xc0, 0x9c, 0x66, 0x35, 0xa4, 0x2f, 0x3c, 0x4c,
0xf7, 0x54, 0xb0, 0x44, 0xbd, 0xd0, 0x09, 0xbc, 0x47, 0xdc, 0x24, 0x46, 0x69, 0xeb, 0x8c, 0x21, 0xc3, 0xe2, 0x39, 0x4d, 0x58, 0xac, 0x1f, 0xe8, 0x04, 0x9e, 0x85, 0xb4, 0x89, 0x55, 0x9a, 0x3a,
0x77, 0x4e, 0x13, 0xc1, 0x60, 0x93, 0x54, 0x4e, 0x4f, 0xcf, 0x61, 0x56, 0xfa, 0x32, 0x60, 0xce, 0x53, 0xc8, 0x9b, 0xd3, 0x38, 0x61, 0x30, 0x49, 0xaa, 0xa6, 0xc7, 0x67, 0x30, 0xaa, 0xb8, 0x0a,
0xf8, 0x2d, 0x72, 0xc9, 0x98, 0x49, 0xe9, 0x47, 0x33, 0xd1, 0xab, 0xeb, 0xc9, 0x9e, 0x70, 0x13, 0x98, 0x3b, 0x7e, 0x15, 0x1e, 0x19, 0x33, 0xa5, 0xb8, 0x98, 0x25, 0xbd, 0xba, 0x19, 0xec, 0x25,
0x3f, 0x96, 0x8e, 0xf1, 0x4c, 0x13, 0xe2, 0xd9, 0x1e, 0x77, 0xd3, 0x10, 0x18, 0xbc, 0x98, 0xa6, 0x5e, 0xcc, 0x23, 0xe5, 0x5a, 0x4f, 0x34, 0x26, 0xbe, 0xe3, 0x4b, 0x2f, 0x0d, 0x41, 0xc1, 0xf3,
0x91, 0x2b, 0x7d, 0x1e, 0x91, 0xd9, 0x9d, 0x77, 0xc2, 0x2a, 0xff, 0x26, 0x4c, 0xa6, 0x49, 0x44, 0x69, 0x2a, 0x3c, 0xc5, 0xa5, 0x20, 0xb3, 0x5b, 0xff, 0x88, 0x55, 0xfe, 0x8d, 0x99, 0x4a, 0x63,
0xbc, 0xda, 0x8c, 0xc9, 0xeb, 0x80, 0x21, 0x4c, 0xff, 0x4d, 0x2d, 0xfd, 0x57, 0x80, 0xde, 0x9e, 0x41, 0xfc, 0xda, 0x8c, 0xa9, 0xab, 0x80, 0x21, 0x4d, 0xff, 0x55, 0xbf, 0xfa, 0xaf, 0x20, 0xbd,
0x54, 0xfe, 0x7d, 0xf1, 0x23, 0x8f, 0xbf, 0xd4, 0x78, 0xcc, 0xa2, 0x13, 0x73, 0x2e, 0x65, 0x2c, 0x39, 0xaa, 0xfc, 0xfb, 0xcc, 0x85, 0x2f, 0x9f, 0x6b, 0x32, 0x62, 0xe2, 0xc8, 0x9e, 0x2b, 0x15,
0xba, 0xf5, 0xfa, 0x22, 0xe2, 0xb5, 0x97, 0x80, 0x21, 0x72, 0xdd, 0x07, 0x01, 0x24, 0x53, 0xea, 0x25, 0xdd, 0x7a, 0x7d, 0x21, 0x64, 0xed, 0x39, 0x60, 0xc8, 0x5c, 0xe7, 0x60, 0x80, 0x78, 0x4a,
0x32, 0x51, 0x4f, 0xbd, 0xf8, 0x34, 0xe2, 0xd2, 0x9f, 0xfa, 0x2c, 0xa9, 0x9b, 0x2b, 0x84, 0xfa, 0x3d, 0x96, 0xd4, 0x53, 0x3f, 0x3a, 0x16, 0x52, 0xf1, 0x29, 0x67, 0x71, 0xdd, 0x5e, 0x11, 0xd4,
0x65, 0x42, 0x75, 0x91, 0xb1, 0x6d, 0x56, 0xcd, 0xbf, 0x05, 0x0b, 0xa6, 0xab, 0xd0, 0xd4, 0x7b, 0x2f, 0x0b, 0xaa, 0x27, 0x99, 0xda, 0x76, 0xd5, 0xfe, 0x3b, 0x61, 0xc1, 0x74, 0x95, 0x9a, 0xfa,
0x02, 0xf8, 0xce, 0x59, 0xfb, 0xcc, 0xb6, 0xbd, 0xda, 0x78, 0x5a, 0x1b, 0xdc, 0xd5, 0x9e, 0x69, 0x8f, 0x40, 0x7f, 0x7a, 0xd2, 0x39, 0x71, 0x1c, 0xbf, 0x36, 0x9e, 0xd6, 0x06, 0xb7, 0xb5, 0x27,
0x90, 0xb2, 0x4f, 0x27, 0x8d, 0x7c, 0xe6, 0x52, 0xcf, 0xbc, 0x7b, 0x77, 0xb2, 0xf6, 0x6e, 0x5b, 0x1a, 0xa4, 0xec, 0xd3, 0x51, 0x33, 0x1f, 0xb9, 0x30, 0x23, 0xef, 0xde, 0x1d, 0xad, 0x3d, 0x3b,
0x95, 0x6a, 0x0e, 0x73, 0xfd, 0x7d, 0x1d, 0x26, 0x7f, 0x07, 0x98, 0x4a, 0xb7, 0xdd, 0xee, 0x9c, 0x8d, 0x4a, 0x35, 0xa7, 0xb9, 0xfa, 0xbe, 0x4e, 0x93, 0x3f, 0x03, 0x4d, 0xa5, 0xdb, 0xe9, 0x9c,
0x97, 0xa8, 0x03, 0x9c, 0x75, 0x88, 0x7c, 0xa3, 0x52, 0xb5, 0x0e, 0x91, 0x6f, 0x54, 0x56, 0xce, 0x9e, 0x95, 0xa4, 0x03, 0x5d, 0x63, 0x9f, 0xf8, 0x66, 0xa5, 0xda, 0xd8, 0x27, 0xbe, 0x59, 0x59,
0xf2, 0xf9, 0x0a, 0x8e, 0x32, 0xe5, 0xc9, 0xc9, 0x93, 0x6d, 0x5d, 0x3c, 0xf5, 0xce, 0x2f, 0x9e, 0x59, 0xcb, 0xe7, 0x4b, 0x58, 0xca, 0x54, 0xc6, 0x47, 0x8f, 0x4e, 0xe3, 0xfc, 0xb1, 0x77, 0x76,
0xde, 0xbf, 0xaf, 0xa0, 0x0a, 0xcc, 0x1b, 0xf3, 0xfd, 0xc9, 0xd3, 0x7b, 0x00, 0xae, 0xb9, 0x73, 0xfe, 0xf8, 0xfe, 0x7d, 0x05, 0x5d, 0x60, 0x5f, 0xdb, 0xef, 0x8f, 0x1e, 0xdf, 0x03, 0x71, 0xcd,
0xe6, 0x2e, 0x98, 0x67, 0xeb, 0xe9, 0xb1, 0x59, 0xd1, 0x84, 0x1c, 0xe7, 0xe9, 0x5d, 0xa3, 0xaa, 0x9b, 0x33, 0x6f, 0xc1, 0x7c, 0xc7, 0x0c, 0x8f, 0xed, 0x8a, 0x11, 0xe4, 0xba, 0x8f, 0xef, 0x9a,
0x26, 0x47, 0x3b, 0x60, 0x47, 0x6b, 0xb0, 0xcb, 0x5d, 0x6f, 0x70, 0x57, 0x34, 0x00, 0x38, 0x6c, 0x55, 0x3d, 0x38, 0xda, 0x41, 0x3b, 0x5a, 0xa3, 0x5d, 0xce, 0x7a, 0x8d, 0xb3, 0x62, 0x00, 0xc0,
0xd5, 0x83, 0x3f, 0x6a, 0x37, 0x2e, 0xca, 0x5c, 0xb0, 0xf7, 0xf6, 0x76, 0x46, 0x7e, 0xa3, 0x55, 0x62, 0xab, 0x3e, 0xfc, 0x51, 0xa7, 0x79, 0x5e, 0xd6, 0x82, 0xbd, 0x77, 0xb6, 0x2b, 0xf2, 0x1b,
0x2f, 0x5b, 0x1b, 0x6d, 0x59, 0xa3, 0xbf, 0xd9, 0xcd, 0x8b, 0x12, 0xaf, 0x36, 0xab, 0x96, 0x38, 0xad, 0xfa, 0xd9, 0xbb, 0xd1, 0x96, 0x77, 0xf4, 0x37, 0xa7, 0x75, 0x5e, 0xd2, 0xd5, 0x61, 0xd5,
0xb2, 0xbd, 0x25, 0x3b, 0xe3, 0x61, 0xc1, 0xce, 0x9a, 0xc4, 0x35, 0x95, 0xd7, 0x18, 0x70, 0x84, 0x92, 0x46, 0x8e, 0xbf, 0x54, 0x67, 0x3c, 0x2c, 0xd4, 0x59, 0xb3, 0xb8, 0x91, 0xf2, 0x12, 0x01,
0x7c, 0x0b, 0x58, 0xcd, 0xf3, 0x45, 0x1c, 0xd0, 0x37, 0x9b, 0x39, 0xd6, 0x27, 0x33, 0xe2, 0x11, 0x4f, 0xa2, 0x5e, 0x03, 0x56, 0xf3, 0x79, 0x12, 0x05, 0xf4, 0xd5, 0x61, 0x6e, 0xe3, 0x93, 0x2d,
0x33, 0xbb, 0xe6, 0x24, 0xe0, 0xee, 0xc2, 0xac, 0xc2, 0x54, 0x21, 0xe9, 0x61, 0xbe, 0xe9, 0x8a, 0xa4, 0x60, 0x76, 0xd7, 0x9e, 0x04, 0xd2, 0x5b, 0xd8, 0x55, 0x18, 0x2a, 0x2c, 0x3d, 0xcc, 0x27,
0xa0, 0xc1, 0x0f, 0xfe, 0xa0, 0x01, 0xec, 0x23, 0x5e, 0x7c, 0xe9, 0xce, 0x4f, 0x62, 0x74, 0x99, 0x5d, 0x31, 0x34, 0xe4, 0xc1, 0x1f, 0x34, 0x80, 0x79, 0x92, 0x67, 0xae, 0xbc, 0xf9, 0x51, 0x84,
0xbb, 0x48, 0xae, 0xa3, 0x54, 0x2a, 0xff, 0xba, 0x54, 0x30, 0x82, 0xea, 0xef, 0xae, 0xf1, 0x62, 0x29, 0x73, 0x2b, 0xd4, 0x3a, 0x4b, 0xa5, 0xf2, 0xaf, 0x47, 0x13, 0x46, 0xd0, 0xfd, 0xdd, 0x35,
0xe3, 0xd4, 0xc5, 0x24, 0x61, 0x74, 0x71, 0xa1, 0x40, 0xd0, 0xfe, 0x4a, 0x20, 0x38, 0xb5, 0x0a, 0x5d, 0x1c, 0x1c, 0x3a, 0x9f, 0xc4, 0x8c, 0x2e, 0xce, 0x35, 0x09, 0xc6, 0x5f, 0x89, 0x04, 0x87,
0x72, 0x66, 0x9d, 0x95, 0xa9, 0xe0, 0xd4, 0x7f, 0x78, 0xde, 0x2a, 0x6a, 0x7e, 0x85, 0x3d, 0xe0, 0x56, 0x49, 0x4e, 0x1a, 0x27, 0x65, 0x29, 0x38, 0xf4, 0x1f, 0xae, 0xb7, 0x8a, 0x9e, 0x5f, 0x51,
0xec, 0x06, 0x58, 0x84, 0x85, 0x9c, 0xd3, 0xff, 0x8c, 0x5e, 0x3d, 0x73, 0xd6, 0xcc, 0x69, 0x89, 0x0f, 0x34, 0xbb, 0x06, 0x15, 0xe1, 0x45, 0xae, 0xe9, 0x7f, 0x56, 0xaf, 0x9e, 0x25, 0x6b, 0x96,
0x48, 0x5c, 0xdb, 0xcc, 0x5d, 0xa3, 0xf6, 0x24, 0x3e, 0xc5, 0xf6, 0x19, 0xb8, 0xfb, 0x12, 0x0c, 0xb4, 0x24, 0x89, 0x3d, 0xc7, 0xce, 0x53, 0xa3, 0xf6, 0x98, 0x7c, 0x8a, 0x9c, 0x13, 0x48, 0xf7,
0xa5, 0xe4, 0xfc, 0xcf, 0x0f, 0x31, 0x3a, 0x90, 0x34, 0x09, 0x4e, 0x4c, 0x2d, 0x38, 0x57, 0x08, 0x25, 0x19, 0x5a, 0xc9, 0xfd, 0x1f, 0x0f, 0x11, 0x1d, 0x48, 0x1a, 0x07, 0x47, 0xb6, 0x31, 0x9c,
0xb3, 0x72, 0x81, 0x04, 0x15, 0x44, 0xaf, 0xae, 0xc3, 0xd9, 0x84, 0x7b, 0x6f, 0x84, 0x47, 0x01, 0x97, 0x24, 0x76, 0xe5, 0x1c, 0x05, 0x6a, 0x8a, 0x5e, 0xdd, 0xc0, 0xd9, 0x44, 0xfa, 0xaf, 0x44,
0xa7, 0x9e, 0x6d, 0x02, 0x0b, 0x40, 0x0b, 0xac, 0x20, 0x24, 0x3e, 0xbc, 0xe2, 0xe0, 0x6f, 0x61, 0x8a, 0x40, 0x52, 0xdf, 0xb1, 0x41, 0x05, 0x90, 0x05, 0x51, 0x10, 0x12, 0x0e, 0x8f, 0x78, 0xf3,
0x66, 0xd1, 0x6e, 0x3c, 0x35, 0x09, 0xc4, 0x9a, 0x39, 0x87, 0x95, 0x98, 0x0b, 0x88, 0x7a, 0x06, 0x77, 0x62, 0x67, 0x68, 0x37, 0x9e, 0xda, 0x04, 0xb0, 0x66, 0x2e, 0xe1, 0x4d, 0x24, 0x13, 0x40,
0x8f, 0x44, 0x3a, 0x09, 0x7d, 0x08, 0x3b, 0x68, 0x4e, 0x80, 0xea, 0xf9, 0xcf, 0xc4, 0x0d, 0xa8, 0x3d, 0x4b, 0x8a, 0x24, 0x9d, 0x84, 0x1c, 0x60, 0x07, 0xc3, 0x09, 0x58, 0x7d, 0xfe, 0x44, 0xbc,
0x10, 0xb6, 0x29, 0x79, 0x9c, 0xf0, 0x97, 0xf5, 0xb9, 0x39, 0x0b, 0xe2, 0x3e, 0x4c, 0x4d, 0x52, 0x80, 0x26, 0x89, 0x63, 0x2b, 0x19, 0xc5, 0xf2, 0x79, 0x7d, 0x6c, 0xce, 0x82, 0xa8, 0x0f, 0x43,
0x29, 0xe1, 0xc4, 0xf2, 0x2d, 0x06, 0xba, 0xfa, 0x45, 0x51, 0x73, 0x03, 0xdf, 0x5d, 0xd8, 0xe6, 0x93, 0x54, 0x29, 0x58, 0xb1, 0x7a, 0x8d, 0x40, 0xae, 0x79, 0xd0, 0xd2, 0xbc, 0x80, 0x7b, 0x0b,
0x2d, 0xd2, 0xfa, 0xd4, 0xab, 0xeb, 0x15, 0x60, 0x15, 0x48, 0xec, 0x40, 0x2a, 0x70, 0xfa, 0x88, 0xc7, 0xbe, 0x41, 0x59, 0x9f, 0x7a, 0x75, 0xf3, 0x06, 0x54, 0x05, 0x11, 0x3b, 0x98, 0x0a, 0x9e,
0xd3, 0xa7, 0xee, 0xa2, 0x40, 0x33, 0xd6, 0x31, 0x34, 0xa7, 0xa6, 0x33, 0xa6, 0xcf, 0x6c, 0x49, 0x3e, 0xf2, 0xf4, 0xa9, 0xb7, 0x28, 0xd8, 0xac, 0x75, 0x0e, 0xa3, 0xa9, 0xed, 0x8e, 0xe9, 0x13,
0x7a, 0x9e, 0xe4, 0xe4, 0xe7, 0x4d, 0x1d, 0x2d, 0x41, 0xb6, 0x69, 0x0c, 0xd2, 0x69, 0xc2, 0x54, 0x5b, 0x8a, 0x9e, 0xc7, 0xb9, 0xf8, 0x79, 0xcb, 0xa0, 0x25, 0xd8, 0x36, 0x8d, 0xc0, 0x3a, 0x2d,
0xcb, 0x31, 0x7e, 0x7c, 0xb9, 0x1e, 0x90, 0x7e, 0x02, 0xe2, 0x01, 0x7d, 0x4a, 0x98, 0x6f, 0x39, 0x18, 0x6a, 0xbb, 0xd6, 0x8f, 0x2f, 0x57, 0x03, 0xd2, 0x8f, 0xc1, 0x3c, 0xe0, 0x4f, 0x05, 0xe3,
0xdf, 0x07, 0x43, 0x32, 0x04, 0xe9, 0x76, 0x49, 0xcf, 0x8f, 0xe2, 0x54, 0x66, 0xf2, 0xf9, 0x3e, 0x6d, 0xf7, 0xfb, 0x60, 0x48, 0x86, 0x60, 0xdd, 0x2e, 0xe9, 0x71, 0x11, 0xa5, 0x2a, 0xb3, 0xcf,
0x34, 0xb3, 0xad, 0xa2, 0x34, 0x9c, 0xb0, 0x04, 0xa4, 0xe5, 0x47, 0xb6, 0xd9, 0x80, 0x5f, 0xfa, 0xf7, 0xa1, 0x9d, 0x4d, 0x25, 0xd2, 0x70, 0xc2, 0x62, 0xb0, 0x16, 0x17, 0x8e, 0xdd, 0x84, 0x5f,
0x6a, 0x9b, 0x9d, 0x76, 0xbb, 0xd5, 0x86, 0x53, 0x66, 0xa2, 0xf0, 0x60, 0x9c, 0xb0, 0x7f, 0x52, 0xfa, 0xe2, 0xd8, 0xa7, 0x9d, 0x4e, 0xbb, 0x03, 0xab, 0xcc, 0x4c, 0xe1, 0xc3, 0x7d, 0xcc, 0xfe,
0x3f, 0x61, 0xa8, 0x85, 0xc4, 0x69, 0x46, 0xde, 0x56, 0xaa, 0xcd, 0x5d, 0x54, 0x8d, 0x55, 0xb2, 0x49, 0x79, 0xcc, 0xd0, 0x0b, 0xb1, 0xdb, 0x12, 0xfe, 0x56, 0xa9, 0xad, 0x5d, 0x52, 0xad, 0x55,
0xbb, 0xa8, 0xaa, 0xbf, 0x55, 0x7a, 0xe0, 0x90, 0x4a, 0xb7, 0xf8, 0xbb, 0x4e, 0xd7, 0x50, 0x86, 0xb1, 0xbb, 0xa4, 0xea, 0xbf, 0x55, 0x79, 0x90, 0x90, 0xda, 0xb7, 0xf8, 0xbb, 0x2e, 0xd7, 0xd2,
0x01, 0x34, 0xb4, 0x87, 0x75, 0x95, 0x73, 0x39, 0xeb, 0xdc, 0x80, 0xf3, 0x6a, 0xec, 0xd1, 0x71, 0x81, 0x01, 0x32, 0x4c, 0x86, 0x75, 0x75, 0x72, 0xb9, 0xeb, 0xda, 0x40, 0xf2, 0x1a, 0xee, 0xd1,
0xd8, 0x3d, 0x89, 0x89, 0x8b, 0x64, 0x6b, 0x21, 0x4d, 0x66, 0x7e, 0xd4, 0xb5, 0x08, 0x4d, 0x25, 0x61, 0xdc, 0x3d, 0x85, 0x85, 0x8b, 0x64, 0xef, 0x42, 0x1a, 0xcf, 0xb8, 0xe8, 0x36, 0x08, 0x4d,
0xc7, 0x45, 0xe0, 0x4d, 0x7a, 0x90, 0x3c, 0x03, 0x11, 0x53, 0x38, 0xd4, 0xc7, 0x25, 0x19, 0xc9, 0x95, 0xc4, 0x97, 0xa0, 0x9b, 0xf2, 0xa1, 0x78, 0x06, 0x49, 0x44, 0x61, 0x51, 0x1f, 0x97, 0x62,
0x5e, 0xe5, 0x29, 0x0d, 0xfc, 0x59, 0xd4, 0x75, 0x19, 0xa6, 0x0f, 0x53, 0x6b, 0x67, 0x96, 0xf0, 0x14, 0x7b, 0x51, 0xc7, 0x34, 0xe0, 0x33, 0xd1, 0xf5, 0x18, 0x96, 0x0f, 0xdb, 0x78, 0x67, 0x16,
0x34, 0xc6, 0x4c, 0x06, 0xc7, 0xab, 0x2b, 0x7c, 0x45, 0xc3, 0xd1, 0x33, 0xf0, 0xd7, 0x28, 0x46, 0xcb, 0x34, 0xc2, 0x4a, 0x06, 0xcb, 0xab, 0x6b, 0x7e, 0x2d, 0xc3, 0x35, 0x23, 0xf0, 0xd7, 0x2c,
0x4d, 0x35, 0x32, 0x70, 0xd8, 0x2a, 0x26, 0xcf, 0x8a, 0x51, 0xbb, 0x18, 0x75, 0x8a, 0xd1, 0x87, 0xee, 0x5a, 0xfa, 0xce, 0xc2, 0xdb, 0x76, 0x31, 0x78, 0x52, 0xdc, 0x75, 0x8a, 0xbb, 0xd3, 0xe2,
0x62, 0x74, 0xbe, 0xb9, 0xc5, 0x98, 0x45, 0x5e, 0xd7, 0x28, 0x20, 0x32, 0xb9, 0x68, 0x29, 0xa8, 0xee, 0x43, 0x71, 0x77, 0xb6, 0x39, 0xc5, 0x98, 0x09, 0xbf, 0x6b, 0x15, 0x14, 0x99, 0x5d, 0x8c,
0xd0, 0x37, 0xe1, 0xaf, 0x99, 0x74, 0x1a, 0xb9, 0xcf, 0xc0, 0xc8, 0x29, 0x63, 0x18, 0x5b, 0x51, 0x15, 0x34, 0xf4, 0x4d, 0xe4, 0x4b, 0x66, 0x9d, 0x66, 0x9e, 0x33, 0x70, 0xe7, 0x96, 0x39, 0xac,
0x9a, 0x05, 0x4a, 0x73, 0x13, 0x65, 0x2b, 0x46, 0xab, 0x28, 0x06, 0x60, 0x78, 0x1c, 0xca, 0x59, 0xad, 0x2c, 0xad, 0x82, 0xa5, 0xb5, 0xc9, 0xb2, 0x95, 0xa3, 0x5d, 0x34, 0x03, 0x70, 0x7b, 0x18,
0xb1, 0xc9, 0xd9, 0xb1, 0x7c, 0xb5, 0x0b, 0x94, 0xf6, 0x91, 0x9b, 0x74, 0x96, 0x7c, 0x75, 0x8e, 0xcb, 0x49, 0x31, 0xc9, 0xc9, 0xa1, 0x7a, 0x75, 0x0a, 0x96, 0xce, 0x81, 0x93, 0x9c, 0x2e, 0xf5,
0x44, 0xf9, 0x50, 0x6c, 0xf2, 0xe1, 0x58, 0xbe, 0xce, 0x0b, 0x94, 0xf3, 0x1c, 0x65, 0x55, 0x59, 0x3a, 0x3d, 0x90, 0xe5, 0x43, 0x31, 0xc9, 0x87, 0x43, 0xf5, 0x3a, 0x2b, 0x58, 0xce, 0x72, 0x96,
0x23, 0xe6, 0x32, 0xff, 0x99, 0x75, 0x8f, 0x22, 0x36, 0x2a, 0xf4, 0x35, 0x6a, 0x1c, 0xc7, 0xf1, 0x55, 0x67, 0x8d, 0x98, 0xc7, 0xf8, 0x13, 0xeb, 0x1e, 0x24, 0x6c, 0x54, 0xf8, 0x6b, 0xd4, 0x3c,
0xa8, 0x59, 0x1c, 0x72, 0x74, 0xa4, 0xbe, 0x46, 0xad, 0x62, 0x93, 0xd6, 0x91, 0x87, 0x1c, 0x15, 0x4c, 0xe3, 0x51, 0xab, 0x58, 0xe4, 0xe8, 0x40, 0x7f, 0x8d, 0xda, 0xc5, 0x24, 0xed, 0x03, 0x17,
0xfa, 0x1a, 0x9d, 0x1d, 0xb9, 0x49, 0x7b, 0xc9, 0xd7, 0x91, 0xfa, 0x1a, 0x75, 0x8a, 0x4d, 0x3a, 0x39, 0x2a, 0xfc, 0x35, 0x3a, 0x39, 0x70, 0x92, 0xce, 0x52, 0xaf, 0x03, 0xfd, 0x35, 0x3a, 0x2d,
0xc7, 0xf2, 0x55, 0xe8, 0x6b, 0xf4, 0xe1, 0xc8, 0x4d, 0xce, 0x97, 0x7c, 0xad, 0xeb, 0xab, 0xae, 0x26, 0x39, 0x3d, 0x54, 0xaf, 0xc2, 0x5f, 0xa3, 0x0f, 0x07, 0x4e, 0x72, 0xb6, 0xd4, 0x6b, 0xdd,
0x22, 0x84, 0x8a, 0x53, 0x85, 0xce, 0x22, 0xfe, 0x92, 0xd0, 0x78, 0x17, 0xbd, 0x9c, 0x0e, 0x24, 0x5f, 0x75, 0x8d, 0x10, 0x1a, 0xa7, 0x0a, 0x9f, 0x09, 0xf9, 0x1c, 0xd3, 0x68, 0x97, 0xbc, 0x5c,
0x92, 0x7e, 0xe2, 0xcf, 0xe6, 0x32, 0x62, 0x42, 0x54, 0x7b, 0xf5, 0x1c, 0x6b, 0x3f, 0x76, 0x86, 0x0e, 0x14, 0x92, 0x7e, 0xcc, 0x67, 0x73, 0x25, 0x58, 0x92, 0x54, 0x7b, 0xf5, 0x9c, 0xeb, 0x6d,
0x7c, 0x65, 0x3a, 0x57, 0x3c, 0xe0, 0x49, 0xd5, 0xd8, 0x40, 0xa4, 0x10, 0x88, 0xf7, 0x23, 0xff, 0xee, 0x8c, 0xf9, 0xd2, 0x76, 0x2f, 0x65, 0x20, 0xe3, 0xaa, 0xb5, 0xc1, 0x48, 0x01, 0x88, 0xdf,
0x69, 0x3a, 0xd7, 0xd3, 0x29, 0x73, 0xa5, 0x58, 0x22, 0x17, 0x71, 0xd6, 0xd8, 0x81, 0x35, 0x7e, 0x66, 0xfe, 0xd3, 0x76, 0xaf, 0xa6, 0x53, 0xe6, 0xa9, 0x64, 0xc9, 0x5c, 0xe0, 0xac, 0xb5, 0x83,
0x80, 0x60, 0x3a, 0x66, 0x33, 0x2c, 0xa3, 0x09, 0x8f, 0x31, 0xe5, 0x8b, 0xea, 0xfe, 0x8d, 0xc6, 0x6b, 0x7c, 0x0f, 0x60, 0x3a, 0x66, 0x33, 0x6c, 0xa3, 0x89, 0x8c, 0xb0, 0xe4, 0x27, 0xd5, 0xb7,
0x37, 0xd0, 0x45, 0x90, 0x09, 0x4f, 0x23, 0x4f, 0xe0, 0x06, 0x18, 0x81, 0x88, 0xae, 0x9e, 0x5d, 0x27, 0x1a, 0x5f, 0xc3, 0x2e, 0x82, 0x4c, 0x64, 0x2a, 0xfc, 0x04, 0x27, 0x40, 0x04, 0x22, 0xa6,
0xaa, 0x08, 0x40, 0xfe, 0x23, 0x1e, 0x04, 0x7b, 0x57, 0x62, 0x07, 0x10, 0xcd, 0x58, 0x97, 0xec, 0x7b, 0xf6, 0xa8, 0x16, 0x00, 0xf5, 0x8f, 0xf8, 0x00, 0xf6, 0x9e, 0xc2, 0x1d, 0x80, 0x98, 0xb1,
0x97, 0xda, 0x78, 0x60, 0x3a, 0xbb, 0x49, 0x65, 0x09, 0x33, 0x4e, 0x40, 0xa2, 0x84, 0x27, 0xe4, 0x2e, 0x79, 0xdb, 0x6a, 0xe3, 0x81, 0xed, 0xee, 0x16, 0x95, 0x15, 0xcc, 0x28, 0x06, 0x8b, 0x12,
0x6e, 0x74, 0x90, 0x5e, 0x7f, 0x85, 0xde, 0x65, 0xc0, 0x5e, 0xe9, 0x3a, 0xd5, 0xee, 0x81, 0x13, 0x19, 0x93, 0xdb, 0xd1, 0x5e, 0x79, 0xfd, 0x15, 0x79, 0x17, 0x01, 0x7b, 0xa1, 0xeb, 0x52, 0xbb,
0x5e, 0x6a, 0x74, 0x43, 0xe1, 0x0f, 0xe7, 0x7e, 0xe0, 0xc7, 0x82, 0xdc, 0xa6, 0x2c, 0x3b, 0xce, 0x7b, 0x56, 0x78, 0x61, 0xd8, 0x2d, 0xcd, 0x3f, 0x9c, 0xf3, 0x80, 0x47, 0x09, 0xb9, 0x49, 0x59,
0xcf, 0x11, 0xbb, 0x5d, 0x25, 0x76, 0x4f, 0xdd, 0x84, 0xff, 0x1c, 0xfe, 0xfd, 0x2a, 0xfe, 0xba, 0xb6, 0x9c, 0x9f, 0x13, 0x76, 0xb3, 0x2a, 0xec, 0x8e, 0x7a, 0xb1, 0xfc, 0x39, 0xfe, 0xbb, 0x55,
0x70, 0xe4, 0x0b, 0x34, 0x6d, 0x87, 0xf0, 0x9b, 0x66, 0x66, 0x07, 0x8e, 0x31, 0x62, 0x13, 0xce, 0xfe, 0x75, 0xe3, 0xa8, 0x67, 0xd8, 0xb4, 0xed, 0xe3, 0x6f, 0xd9, 0x59, 0x1c, 0xb8, 0xd6, 0x88,
0x65, 0x91, 0x8b, 0x89, 0xe4, 0x84, 0xc6, 0x71, 0xf0, 0x96, 0x9d, 0x4b, 0xd4, 0x7a, 0x75, 0x5f, 0x4d, 0xa4, 0x54, 0x45, 0x2d, 0x26, 0x4a, 0x12, 0x1a, 0x45, 0xc1, 0x6b, 0xb6, 0xae, 0xa4, 0xd6,
0x15, 0x18, 0x77, 0x91, 0x90, 0x34, 0x72, 0x19, 0xf9, 0xe2, 0x67, 0xe5, 0x85, 0x71, 0x1d, 0xa9, 0xab, 0x73, 0xdd, 0x60, 0xdc, 0x8a, 0x44, 0x51, 0xe1, 0x31, 0xf2, 0x85, 0x67, 0xed, 0x85, 0x75,
0xa4, 0xe9, 0xe7, 0x2b, 0x01, 0xac, 0x1c, 0xd8, 0xfa, 0xeb, 0x97, 0x8c, 0xf5, 0x7b, 0xba, 0x60, 0x25, 0x74, 0xd1, 0xe4, 0xf9, 0x9b, 0x00, 0xde, 0xec, 0x99, 0xfa, 0xeb, 0x97, 0x4c, 0xf5, 0x3b,
0x44, 0xce, 0x7d, 0xb1, 0x44, 0x87, 0x8c, 0xec, 0xf2, 0x67, 0x96, 0x20, 0xd1, 0x43, 0x64, 0x50, 0xba, 0x60, 0x44, 0xcd, 0x79, 0xb2, 0x64, 0x87, 0x8a, 0xec, 0xc9, 0x27, 0x16, 0xa3, 0xd0, 0x7d,
0x9b, 0xc0, 0xc2, 0x88, 0xd1, 0x40, 0xfa, 0x21, 0x33, 0x14, 0x43, 0x99, 0x5f, 0x12, 0xac, 0x7b, 0x62, 0xd0, 0x9b, 0xa0, 0xc2, 0x88, 0xd1, 0x40, 0xf1, 0x90, 0x59, 0x5a, 0xa1, 0x2c, 0x2f, 0x09,
0x92, 0x6c, 0xe5, 0x00, 0xa1, 0x51, 0x66, 0x66, 0xb9, 0x38, 0xbe, 0x32, 0xf9, 0xc2, 0x93, 0x05, 0xf6, 0x3d, 0x71, 0xf6, 0x66, 0x8f, 0xa0, 0x51, 0x16, 0x66, 0xd6, 0x77, 0xe8, 0x81, 0x43, 0xca,
0x19, 0xdc, 0xff, 0x49, 0x14, 0x9e, 0x3a, 0x3e, 0x2c, 0x3e, 0x02, 0x3a, 0xd0, 0x82, 0xfe, 0x0e, 0x05, 0xb4, 0x55, 0x59, 0xe4, 0x8b, 0xe0, 0x75, 0x0f, 0xf3, 0xdd, 0xbd, 0xbd, 0xd2, 0xbb, 0xb8,
0x6d, 0x58, 0x23, 0x0f, 0xee, 0x54, 0x5d, 0xa7, 0x04, 0x05, 0x52, 0xc5, 0x4a, 0x59, 0xf5, 0x7b, 0xd6, 0x57, 0xa6, 0x9e, 0x65, 0xbc, 0x20, 0x83, 0xbb, 0x3f, 0x89, 0xe6, 0xd3, 0xb6, 0x83, 0x97,
0x40, 0x52, 0xfb, 0x0d, 0x31, 0x74, 0x25, 0x6d, 0x62, 0x41, 0x0e, 0xbe, 0xd8, 0xa8, 0xb5, 0x1a, 0x0f, 0xc0, 0x0e, 0xb2, 0x60, 0x73, 0x88, 0x09, 0x60, 0x98, 0x07, 0xb7, 0xba, 0x29, 0xd4, 0x56,
0xe4, 0x44, 0x5c, 0x5e, 0x7d, 0xad, 0xf4, 0xea, 0x1a, 0xa4, 0x00, 0xcd, 0x20, 0xb1, 0x2e, 0x37, 0x06, 0x97, 0x60, 0x9b, 0xad, 0x37, 0x8b, 0x20, 0xd2, 0x24, 0x1d, 0xb1, 0x4c, 0x1b, 0x6e, 0x63,
0x9d, 0xcb, 0x44, 0x9e, 0x02, 0x2b, 0x1b, 0x40, 0x39, 0x3d, 0xcb, 0x24, 0x9a, 0x13, 0x68, 0x9f, 0x37, 0x0f, 0x89, 0xdc, 0xac, 0xb5, 0x9b, 0xe4, 0x28, 0xb9, 0xb8, 0xfc, 0x5a, 0xe9, 0xd5, 0x0d,
0xcc, 0x7c, 0x04, 0x91, 0x22, 0x15, 0x92, 0x87, 0x04, 0x2b, 0xea, 0x25, 0x6a, 0x5d, 0xaf, 0xeb, 0x49, 0x41, 0x9a, 0x51, 0x62, 0x53, 0x6f, 0xbb, 0x17, 0xb1, 0x3a, 0x06, 0x55, 0x36, 0x88, 0x72,
0x23, 0x62, 0x8d, 0x8b, 0x71, 0x0e, 0x1a, 0x15, 0xc7, 0xd8, 0x52, 0xc5, 0x5d, 0x1f, 0x55, 0x1b, 0x79, 0x0d, 0x9b, 0x18, 0x4d, 0x60, 0xef, 0x65, 0xe7, 0x77, 0x00, 0x33, 0x69, 0xa2, 0x64, 0x48,
0xae, 0x9e, 0x6a, 0x77, 0xa1, 0xa8, 0xeb, 0xd5, 0xfb, 0x14, 0xf4, 0x80, 0x25, 0xe9, 0x01, 0x4d, 0xb0, 0x1d, 0x5f, 0xb2, 0xd6, 0xcd, 0x7b, 0xb3, 0x44, 0x6c, 0x90, 0x11, 0x24, 0x61, 0x97, 0xe3,
0x5c, 0x17, 0x46, 0x2d, 0x29, 0x36, 0x04, 0x11, 0x68, 0x12, 0xda, 0x9e, 0x32, 0x7f, 0xdf, 0xb7, 0x5a, 0x5b, 0x5a, 0xc0, 0xab, 0x83, 0x1a, 0xcb, 0xd5, 0x55, 0xed, 0xee, 0x32, 0x4d, 0xb3, 0x7b,
0xf2, 0x67, 0xe5, 0xfc, 0xb5, 0x3e, 0x7e, 0xfc, 0x58, 0x62, 0xc3, 0x00, 0xbd, 0x96, 0xac, 0x5c, 0x97, 0x82, 0x13, 0xb1, 0x9f, 0xdd, 0xe3, 0x89, 0xab, 0x22, 0x23, 0x14, 0xc5, 0xdd, 0x84, 0x80,
0x19, 0x35, 0xb9, 0x42, 0x0e, 0x08, 0x07, 0xda, 0x3d, 0x4a, 0xe6, 0x09, 0x9b, 0xda, 0xc5, 0xa5, 0x30, 0x80, 0x3d, 0x53, 0x59, 0xbf, 0xef, 0x5b, 0xf5, 0x6b, 0xe4, 0xfa, 0xb5, 0x3f, 0x7e, 0xfc,
0xc0, 0xcc, 0x97, 0xf3, 0x74, 0x52, 0x73, 0x79, 0x58, 0xff, 0xc2, 0xbc, 0xcf, 0xaf, 0xfa, 0x09, 0x58, 0x52, 0xc3, 0x02, 0xbf, 0x96, 0x52, 0x44, 0x67, 0x04, 0xb9, 0x44, 0x0d, 0x88, 0x04, 0xd9,
0x67, 0x05, 0xde, 0x66, 0x78, 0x7b, 0xf1, 0xf7, 0x24, 0xa0, 0xd1, 0xc2, 0x74, 0xd4, 0x7c, 0xaf, 0x3d, 0x4a, 0xe6, 0x31, 0x9b, 0x3a, 0xc5, 0x89, 0xc2, 0x8c, 0xab, 0x79, 0x3a, 0xa9, 0x79, 0x32,
0x4e, 0x9d, 0x5f, 0x54, 0x70, 0x59, 0xf8, 0x31, 0x12, 0x3c, 0xe5, 0xd3, 0x53, 0x01, 0x7b, 0x31, 0xac, 0x7f, 0x61, 0xfe, 0xe7, 0x17, 0x73, 0x85, 0xb5, 0x82, 0x6e, 0x33, 0x3c, 0xfa, 0xf8, 0x7b,
0x34, 0xeb, 0x18, 0x6a, 0x7d, 0x26, 0x97, 0x3e, 0x6d, 0xec, 0x38, 0xff, 0x58, 0x9f, 0x1f, 0x2d, 0x12, 0x50, 0xb1, 0xb0, 0x5d, 0x3d, 0xde, 0xab, 0x53, 0xf7, 0x17, 0x8d, 0x4c, 0x0b, 0x1e, 0xa1,
0x4f, 0x28, 0x11, 0x50, 0xcf, 0xc3, 0xf8, 0x56, 0x92, 0xc0, 0xe0, 0x72, 0xa3, 0xa2, 0x5d, 0x13, 0xc0, 0x63, 0x39, 0x3d, 0x4e, 0x60, 0x2e, 0x86, 0x39, 0x11, 0xc1, 0x46, 0x81, 0xa9, 0x25, 0x20,
0x41, 0xbb, 0x61, 0x95, 0x04, 0x80, 0x14, 0x43, 0xee, 0x6d, 0x9a, 0xef, 0xbd, 0x59, 0xb6, 0x3e, 0x58, 0x3b, 0xd6, 0x3f, 0x36, 0xeb, 0xc7, 0xc8, 0x4b, 0xb4, 0x09, 0xa8, 0xef, 0x23, 0x38, 0x96,
0xbc, 0x0d, 0x1a, 0xf8, 0x02, 0x3d, 0xd0, 0xdb, 0x65, 0xa1, 0x50, 0x79, 0x8c, 0xa1, 0xa7, 0x03, 0x2c, 0x30, 0xb8, 0xd8, 0x68, 0x87, 0xd7, 0x4c, 0xd0, 0x69, 0x36, 0x4a, 0x06, 0x40, 0x89, 0xa1,
0xc7, 0x1f, 0xdd, 0xf4, 0x77, 0x01, 0x41, 0x84, 0x31, 0x32, 0xa8, 0xc1, 0x1e, 0xb0, 0x56, 0x9e, 0xf4, 0x37, 0xc3, 0xf7, 0xce, 0x2e, 0x47, 0x1f, 0x1e, 0x25, 0x0d, 0x78, 0x82, 0xe9, 0xeb, 0xef,
0xa0, 0x76, 0x01, 0x80, 0x2f, 0x28, 0x03, 0xc2, 0xbd, 0x8c, 0x5d, 0x40, 0x50, 0x40, 0x0c, 0xfc, 0x8a, 0x50, 0x68, 0x5b, 0xc6, 0xb0, 0x21, 0x04, 0xd4, 0x18, 0x5d, 0xf7, 0x77, 0x11, 0x01, 0x3c,
0x30, 0x64, 0x09, 0x79, 0x4f, 0x0a, 0xe8, 0x9d, 0x0e, 0x06, 0x9c, 0x15, 0x40, 0x3f, 0x76, 0xb8, 0x59, 0x19, 0xd5, 0xe0, 0x0d, 0xb2, 0x76, 0x5e, 0xdd, 0x76, 0x11, 0x40, 0x2e, 0xe8, 0x00, 0xc2,
0x09, 0x25, 0xc6, 0xba, 0x41, 0xec, 0xb8, 0x25, 0x62, 0xe8, 0xd1, 0xa7, 0x5e, 0xf8, 0x5a, 0x07, 0xb9, 0xac, 0x5d, 0x44, 0xd0, 0x7d, 0x0c, 0x78, 0x18, 0xb2, 0x98, 0xbc, 0x27, 0x05, 0xf5, 0xce,
0xa5, 0x94, 0x4c, 0x43, 0x7b, 0xbb, 0x1f, 0x4d, 0x39, 0xda, 0x87, 0xa1, 0x82, 0x08, 0x04, 0x24, 0x04, 0x03, 0xcd, 0x0a, 0xa2, 0x1f, 0x3b, 0xd2, 0x84, 0x12, 0x6b, 0x3d, 0x20, 0x76, 0x1c, 0x31,
0x30, 0x8f, 0xb2, 0x4d, 0x3f, 0x1e, 0xf0, 0x39, 0xcb, 0x5a, 0x55, 0x29, 0x09, 0x55, 0x8e, 0x35, 0x31, 0xcc, 0xe8, 0x63, 0x3f, 0x7c, 0xa9, 0x83, 0x53, 0x4a, 0xa1, 0x61, 0xb2, 0x9d, 0x8b, 0xa9,
0x3e, 0xf3, 0x04, 0xac, 0x0b, 0x40, 0xc8, 0xa4, 0xa8, 0x2e, 0x0e, 0xf8, 0xd8, 0xe7, 0x2c, 0x09, 0xc4, 0xf8, 0xb0, 0x34, 0x88, 0x00, 0x9a, 0x41, 0x78, 0x94, 0x63, 0xfa, 0x61, 0x4f, 0xce, 0x35,
0xe6, 0x3a, 0x2e, 0xa2, 0x24, 0x99, 0xd1, 0x30, 0xa4, 0xd0, 0xe0, 0x24, 0x98, 0xa2, 0x41, 0x1e, 0x1a, 0xab, 0x2e, 0x25, 0xa1, 0x2e, 0xd0, 0xd6, 0x67, 0x19, 0x7b, 0x08, 0x78, 0x2f, 0x64, 0x52,
0x87, 0xc2, 0xe6, 0x4d, 0x46, 0x28, 0x0f, 0xc0, 0x04, 0xbb, 0x4f, 0x3e, 0x9d, 0x42, 0x53, 0x5a, 0xb4, 0x26, 0x7b, 0x72, 0xec, 0x73, 0x56, 0x41, 0x73, 0x1f, 0x17, 0x10, 0x4b, 0x66, 0x34, 0x0c,
0x3a, 0xdd, 0x8f, 0x87, 0xad, 0xa7, 0x3b, 0x6d, 0xb6, 0xdb, 0xd9, 0x01, 0xd5, 0xc8, 0x58, 0x9a, 0x29, 0xec, 0x8e, 0x62, 0xac, 0xef, 0x60, 0x8f, 0x7d, 0x98, 0x7b, 0x9d, 0x09, 0xca, 0xd1, 0x9b,
0x2c, 0x44, 0x72, 0x9d, 0xa0, 0xff, 0xe0, 0x90, 0xcb, 0xc8, 0xa5, 0x10, 0x3e, 0x66, 0x08, 0x9d, 0xe0, 0xd6, 0x55, 0x4e, 0xa7, 0xb0, 0xa3, 0x2d, 0xad, 0xee, 0xc7, 0xfd, 0xd6, 0xd5, 0x1d, 0xb7,
0x74, 0xae, 0xc3, 0x34, 0xa0, 0x92, 0x65, 0x29, 0x5c, 0xdf, 0x51, 0x1e, 0x72, 0xad, 0xcb, 0x2c, 0x3a, 0x9d, 0x6c, 0x81, 0xfa, 0xce, 0x5a, 0x86, 0x2c, 0x94, 0x01, 0x53, 0xdd, 0xff, 0x90, 0x50,
0xe9, 0x68, 0x1c, 0x3f, 0x7a, 0xe6, 0x3a, 0x5b, 0xaa, 0xe5, 0xd2, 0x49, 0xb1, 0x9f, 0x2b, 0x8a, 0x08, 0xc9, 0x45, 0x92, 0x70, 0x2c, 0x2f, 0xa6, 0x62, 0x5d, 0x85, 0x69, 0x40, 0x15, 0xcb, 0xea,
0x86, 0xcb, 0x3b, 0xc5, 0x62, 0xc0, 0xa2, 0x99, 0x9c, 0x83, 0xb5, 0x36, 0x75, 0xd6, 0xe9, 0x07, 0xbf, 0x39, 0xe0, 0xdc, 0x97, 0x5a, 0x17, 0x59, 0xc5, 0x32, 0x3c, 0x5c, 0x3c, 0x49, 0x53, 0x6a,
0x6f, 0xd1, 0x42, 0x71, 0xd3, 0x9b, 0x38, 0x86, 0x7a, 0xab, 0x92, 0xfb, 0x6f, 0x8f, 0x8f, 0x04, 0xf5, 0xeb, 0xd2, 0x4a, 0x71, 0x33, 0x58, 0x74, 0x1c, 0x17, 0xb7, 0x5a, 0xc5, 0x80, 0x89, 0x99,
0x4b, 0x32, 0x2c, 0x0a, 0x04, 0xb6, 0x80, 0x34, 0x08, 0xf0, 0xbe, 0x35, 0x42, 0x8f, 0x83, 0xb4, 0x9a, 0x43, 0xb4, 0xb6, 0x4c, 0xc9, 0xea, 0x07, 0xaf, 0x62, 0xa1, 0xb5, 0xe9, 0x4d, 0x5c, 0x4b,
0x0a, 0x84, 0x59, 0x12, 0xd1, 0x80, 0xcc, 0xb9, 0x90, 0x42, 0xc5, 0x0b, 0xe3, 0x11, 0x13, 0x60, 0x3f, 0x55, 0xc9, 0xdd, 0xb7, 0x87, 0x07, 0x82, 0xfd, 0x1c, 0x76, 0x14, 0x09, 0xee, 0x1f, 0x69,
0x48, 0xdf, 0x88, 0x1f, 0x42, 0x98, 0x00, 0xb0, 0x39, 0xea, 0x44, 0xc4, 0x90, 0xc9, 0x21, 0xfc, 0x10, 0xe0, 0x61, 0xad, 0xc0, 0x8c, 0x83, 0x9a, 0x0c, 0x82, 0x59, 0x2c, 0x68, 0x40, 0xe6, 0x32,
0x45, 0xaa, 0xba, 0x99, 0xaa, 0xd9, 0xeb, 0xf1, 0xf0, 0xbc, 0xd9, 0xe9, 0x40, 0xe4, 0x9a, 0x38, 0x51, 0x89, 0xc6, 0x0b, 0xeb, 0x01, 0xab, 0x67, 0x48, 0x5f, 0x09, 0x0f, 0x01, 0x26, 0x80, 0x6c,
0xb9, 0xfa, 0xc9, 0x84, 0x09, 0x0c, 0x6a, 0x02, 0xcc, 0x19, 0x4a, 0x34, 0x1e, 0x41, 0xda, 0x4e, 0x8e, 0x3e, 0x49, 0x22, 0x68, 0x03, 0x00, 0xfe, 0x84, 0x6e, 0x8d, 0xa6, 0x7a, 0xf4, 0x6a, 0x3c,
0x05, 0x83, 0x01, 0xcb, 0xd0, 0xe0, 0x45, 0xb0, 0x04, 0x65, 0x24, 0x08, 0x85, 0x88, 0x42, 0x50, 0x3c, 0x6b, 0x9d, 0x9e, 0x02, 0x72, 0x4d, 0xdc, 0xdc, 0xfd, 0x64, 0xc2, 0x12, 0x04, 0xb5, 0x04,
0x57, 0x35, 0x85, 0x7f, 0x02, 0x8a, 0x43, 0x7e, 0x24, 0x6c, 0x14, 0xbc, 0x55, 0x0b, 0x4e, 0x29, 0xc2, 0x19, 0xfa, 0x3b, 0x2c, 0x77, 0x24, 0x85, 0x22, 0x08, 0xdb, 0xe1, 0x8c, 0x0d, 0x1e, 0x12,
0x60, 0xc0, 0xd8, 0xc3, 0x1d, 0x91, 0x6d, 0xa0, 0x12, 0xaa, 0x73, 0x21, 0x65, 0xe4, 0x04, 0xb3, 0x16, 0xa3, 0x8d, 0x12, 0x42, 0x01, 0x51, 0x08, 0xfa, 0xaa, 0xa6, 0xf9, 0x8f, 0xc0, 0x71, 0xa8,
0x2b, 0x9e, 0xaf, 0x92, 0xe7, 0xcd, 0x5b, 0x8e, 0xc1, 0xdd, 0xd8, 0x22, 0x46, 0x2d, 0xc5, 0xfe, 0x8f, 0x82, 0x89, 0x82, 0xd7, 0x6a, 0xa1, 0x29, 0x05, 0x0e, 0xb8, 0xf7, 0x71, 0x46, 0x54, 0x1b,
0xed, 0x86, 0x14, 0xb7, 0x5d, 0x20, 0xf4, 0x87, 0x66, 0xae, 0xc0, 0x23, 0x72, 0xcf, 0xb9, 0xb5, 0xa4, 0x84, 0x7a, 0x5d, 0x28, 0x19, 0x35, 0xc1, 0xd2, 0x8c, 0xeb, 0xab, 0xe4, 0x75, 0xf3, 0x46,
0x7a, 0x97, 0xa0, 0xe3, 0x9c, 0x32, 0x06, 0x72, 0x99, 0xca, 0x39, 0x30, 0xbe, 0x60, 0xd1, 0x92, 0x22, 0xb8, 0x5b, 0x5b, 0xcc, 0x68, 0xac, 0xd8, 0xbf, 0xd9, 0xb0, 0xe2, 0xb6, 0xd3, 0x87, 0xfe,
0xa9, 0x6c, 0x87, 0xdf, 0xd7, 0x19, 0x69, 0x15, 0x65, 0xd0, 0x55, 0xc0, 0x68, 0xa2, 0x4e, 0xa7, 0xd0, 0xce, 0x1d, 0x78, 0x40, 0xed, 0x39, 0x6b, 0xac, 0x1e, 0x44, 0x18, 0x9c, 0xd3, 0xc1, 0x40,
0x10, 0xc9, 0xd4, 0x67, 0x81, 0xaa, 0x85, 0x3c, 0xed, 0x28, 0x35, 0xa2, 0xea, 0x80, 0x63, 0xc3, 0x2e, 0x52, 0x35, 0x07, 0xc5, 0x17, 0x4c, 0x2c, 0x95, 0xca, 0x66, 0xf8, 0x7d, 0x5d, 0x91, 0x76,
0xc2, 0x04, 0x4d, 0x62, 0x4b, 0x48, 0x18, 0xe3, 0x95, 0x4d, 0x11, 0x12, 0xd4, 0xb5, 0x0d, 0x9a, 0xd1, 0x43, 0x5d, 0x06, 0x8c, 0xc6, 0x7a, 0x75, 0x9a, 0x91, 0x4c, 0x39, 0x0b, 0x74, 0x23, 0xe5,
0x8d, 0x36, 0x6c, 0x5d, 0x4c, 0xe1, 0xfb, 0x01, 0xe7, 0xbb, 0xff, 0xa6, 0xf9, 0xee, 0x27, 0xc0, 0x9b, 0x44, 0xa9, 0x11, 0xdd, 0x07, 0x1c, 0x0a, 0x0b, 0x13, 0x0c, 0x89, 0x2d, 0x90, 0x30, 0xc6,
0x6b, 0x52, 0x36, 0xfe, 0x55, 0xc9, 0xdf, 0x8f, 0x8f, 0x92, 0xfc, 0xfd, 0xb7, 0xe1, 0xc3, 0xe8, 0xf3, 0x9e, 0x02, 0x12, 0xf4, 0x99, 0x0f, 0x86, 0x8d, 0x09, 0x6c, 0xd3, 0x89, 0xe1, 0xf3, 0xbe,
0x71, 0x7b, 0x5a, 0x29, 0x49, 0xbf, 0x24, 0x72, 0xb4, 0xff, 0xc7, 0xb9, 0xe6, 0x9a, 0xb8, 0xe0, 0x9e, 0xe5, 0x9b, 0xd1, 0xbb, 0x1f, 0x83, 0xae, 0x71, 0x39, 0xf8, 0x57, 0x2d, 0x7f, 0x37, 0x3e,
0xbd, 0xd0, 0x33, 0xf8, 0x34, 0x00, 0x63, 0x4b, 0xd0, 0xf2, 0xb0, 0x81, 0x80, 0x2c, 0x0e, 0xe6, 0xc8, 0xf2, 0x77, 0xdf, 0x86, 0xf7, 0xa3, 0x87, 0xed, 0x65, 0xa5, 0x64, 0xfd, 0x92, 0xc9, 0x31,
0x03, 0xf9, 0x1c, 0xcc, 0x2a, 0xc5, 0x0a, 0x33, 0x33, 0x34, 0xf0, 0x3f, 0x6d, 0x88, 0x5f, 0x19, 0xfe, 0x1f, 0xe6, 0x46, 0x6b, 0xe2, 0x41, 0xf6, 0x42, 0xdb, 0xc5, 0x69, 0x00, 0xc1, 0x16, 0x63,
0x82, 0xe4, 0xd6, 0xa5, 0x28, 0xc5, 0xb0, 0x09, 0x94, 0x61, 0x1e, 0x99, 0x72, 0x44, 0xe6, 0xb0, 0xe4, 0x61, 0x0f, 0x06, 0x55, 0x1c, 0xc2, 0x07, 0xea, 0x39, 0x84, 0x55, 0x8a, 0xed, 0x69, 0x16,
0x90, 0xe4, 0x86, 0xfc, 0x4b, 0xee, 0x01, 0xdf, 0x05, 0x9a, 0x6f, 0xc8, 0xf6, 0x0a, 0xe0, 0xdb, 0x68, 0x90, 0x7f, 0x26, 0x10, 0xbf, 0x32, 0x24, 0xc9, 0xa3, 0x4b, 0x4b, 0x8a, 0x60, 0x12, 0x68,
0xf7, 0xf1, 0xf5, 0x68, 0x4d, 0x08, 0x67, 0x96, 0x66, 0x7d, 0x98, 0xed, 0x51, 0x12, 0x76, 0xbe, 0xc3, 0x7c, 0x32, 0x95, 0xc8, 0x2c, 0xe1, 0x45, 0x9c, 0x07, 0xf2, 0x2f, 0x79, 0x06, 0x40, 0xbb,
0x75, 0x11, 0x03, 0x40, 0x38, 0x97, 0xe3, 0x75, 0x39, 0x76, 0xce, 0x34, 0x89, 0xab, 0xc0, 0xc7, 0x17, 0xaf, 0x25, 0xf0, 0x36, 0x03, 0x7c, 0xfb, 0x3e, 0xbe, 0x1a, 0xad, 0x19, 0xe1, 0xa4, 0x61,
0x23, 0xde, 0x0d, 0xb6, 0xc6, 0x90, 0x1c, 0xfd, 0xea, 0x6e, 0xa0, 0xef, 0xc0, 0xca, 0x1c, 0x64, 0x54, 0x1f, 0x66, 0x73, 0x94, 0x8c, 0x9d, 0x4f, 0x5d, 0x60, 0x00, 0x18, 0xe7, 0x62, 0xbc, 0x6e,
0xf6, 0xfa, 0xc8, 0x63, 0xdf, 0xdd, 0x47, 0x61, 0xb0, 0xa1, 0x44, 0x95, 0x4c, 0x6e, 0xf0, 0x86, 0xc7, 0xd3, 0x13, 0x23, 0xe2, 0x32, 0xe0, 0xb8, 0xc4, 0xdb, 0xc1, 0x56, 0x0c, 0xc9, 0xd9, 0x2f,
0xe9, 0x30, 0xf6, 0xcd, 0x66, 0x08, 0x43, 0xa9, 0x0f, 0xd3, 0x09, 0x94, 0xeb, 0xf3, 0x72, 0x33, 0x6f, 0x07, 0xe6, 0x00, 0xad, 0xac, 0x41, 0x16, 0xaf, 0x0f, 0x32, 0xe2, 0xde, 0x5b, 0x12, 0x06,
0x75, 0xc0, 0xf4, 0xfa, 0xf7, 0x3f, 0xd1, 0x39, 0xfc, 0x9c, 0xcf, 0x84, 0xff, 0x48, 0xb9, 0xc5, 0x1b, 0x4e, 0xd4, 0xc5, 0xe4, 0x1a, 0x8f, 0xa7, 0xf6, 0x73, 0x5f, 0x6f, 0x42, 0x18, 0x5a, 0x7d,
0x65, 0x94, 0x3d, 0xac, 0x79, 0xcc, 0x4a, 0xf3, 0xa5, 0x63, 0x30, 0xf0, 0xf2, 0x17, 0x4f, 0x89, 0x98, 0x4e, 0xa0, 0xd7, 0x9f, 0x97, 0x77, 0x62, 0x7b, 0x42, 0xaf, 0x7f, 0xf7, 0x13, 0xdb, 0x8e,
0x4b, 0xd1, 0x6f, 0x21, 0x50, 0xa1, 0x19, 0x41, 0x4a, 0xf4, 0xa0, 0x2b, 0xbb, 0x1b, 0xaa, 0xd0, 0x9f, 0xcb, 0x99, 0xf0, 0x1f, 0xa5, 0xb6, 0xa4, 0x8c, 0x8e, 0x87, 0xb5, 0x8c, 0x59, 0xd9, 0xb9,
0x85, 0x33, 0x01, 0xe6, 0x48, 0xa2, 0x8d, 0x1b, 0x08, 0xaa, 0xb9, 0x5f, 0x2f, 0xa1, 0x67, 0x95, 0x19, 0x0c, 0x06, 0x5d, 0xfe, 0x92, 0x29, 0xf1, 0x28, 0xe6, 0x2d, 0x00, 0x15, 0x86, 0x11, 0x94,
0xbf, 0x62, 0xc4, 0x53, 0xf9, 0x20, 0x8b, 0xb5, 0x73, 0x88, 0xe0, 0x70, 0x94, 0x9a, 0x91, 0x17, 0x44, 0x1f, 0xb6, 0x74, 0xb7, 0x43, 0x0d, 0x5d, 0x38, 0x12, 0x60, 0x8d, 0x24, 0x26, 0xb8, 0x41,
0xff, 0x43, 0x0e, 0xa1, 0x1c, 0xe3, 0xba, 0x26, 0xb2, 0xe6, 0x3c, 0xb7, 0x5f, 0xf6, 0x66, 0x6f, 0xa0, 0x1e, 0xfb, 0xf5, 0x02, 0x36, 0xbc, 0xea, 0x57, 0x44, 0x3c, 0x5d, 0x0f, 0x32, 0xac, 0x9d,
0x28, 0x47, 0x1d, 0x82, 0x16, 0xfe, 0x56, 0x0a, 0x46, 0xb7, 0x77, 0xdb, 0xf1, 0x2c, 0x6b, 0x2d, 0x03, 0x82, 0xc3, 0x52, 0x6a, 0x56, 0xde, 0xfc, 0x0f, 0x25, 0x40, 0x39, 0xe2, 0xba, 0x11, 0xb2,
0xef, 0x63, 0xba, 0x3f, 0x94, 0xdf, 0x6e, 0x87, 0x5a, 0x2b, 0xe0, 0x89, 0x51, 0x15, 0x14, 0xa2, 0x96, 0x3c, 0x37, 0x5f, 0xde, 0xac, 0xde, 0xd0, 0x8e, 0xba, 0x04, 0x23, 0xfc, 0xb5, 0x04, 0x46,
0xbb, 0xa0, 0xbd, 0x8a, 0xbc, 0x7d, 0xc0, 0x8e, 0xfd, 0x21, 0xaa, 0x3f, 0x4c, 0xa7, 0x07, 0x9a, 0x37, 0xb7, 0xdb, 0xf9, 0x1a, 0x8d, 0xb5, 0xba, 0x8f, 0xe5, 0x7e, 0x5f, 0x7d, 0xbb, 0x19, 0x1a,
0xfb, 0x5b, 0x28, 0x1a, 0xc8, 0xca, 0x05, 0x06, 0x59, 0xb9, 0x77, 0xd8, 0xc5, 0xd0, 0x15, 0xa0, 0xaf, 0x40, 0x26, 0x8a, 0x2a, 0x38, 0xc4, 0x6c, 0xa1, 0xde, 0x74, 0xe4, 0xcd, 0x3d, 0x6e, 0xf7,
0xa8, 0x6b, 0x0b, 0x95, 0x1f, 0x40, 0x70, 0xfd, 0x5c, 0x1f, 0xdd, 0x8d, 0x8b, 0xde, 0x5b, 0x6b, 0xef, 0x45, 0xfd, 0x7e, 0x3a, 0xdd, 0x73, 0x32, 0x70, 0x03, 0x4d, 0x03, 0x59, 0x39, 0xfd, 0x20,
0x23, 0xee, 0x67, 0x51, 0x46, 0x94, 0xaa, 0x7b, 0x2c, 0x14, 0x1c, 0x52, 0x2b, 0xc9, 0xbf, 0xb1, 0x2b, 0x87, 0x16, 0xbb, 0x14, 0xba, 0x04, 0x16, 0x7d, 0xe6, 0xa1, 0xeb, 0x03, 0x18, 0xae, 0x9f,
0x11, 0xb8, 0x7e, 0x0a, 0x7d, 0xe3, 0xda, 0x7a, 0x13, 0xdb, 0xd8, 0x83, 0xde, 0x3a, 0x8c, 0xbe, 0xfb, 0xa3, 0xbb, 0x71, 0x4a, 0x7c, 0xd3, 0xd8, 0xc0, 0xfd, 0x0c, 0x65, 0x92, 0x52, 0x77, 0x8f,
0xc4, 0xce, 0x43, 0xe6, 0x50, 0xdd, 0x5b, 0xa0, 0xa9, 0xc5, 0xa9, 0x98, 0x07, 0x7e, 0xb4, 0xc8, 0x8d, 0x82, 0x4b, 0x6a, 0x25, 0xfb, 0x37, 0x37, 0x80, 0xeb, 0xa7, 0xd8, 0x37, 0xce, 0xbc, 0x37,
0x9d, 0x90, 0x47, 0x2b, 0xe6, 0x0b, 0xa2, 0x9e, 0x82, 0x7f, 0xc0, 0x0c, 0xe4, 0x6e, 0x41, 0x9f, 0xb9, 0xad, 0x37, 0xd8, 0xdb, 0xfb, 0xd9, 0x97, 0xdc, 0x39, 0x64, 0x0e, 0xf5, 0xa1, 0x07, 0x86,
0xb3, 0x86, 0x39, 0xa6, 0xb3, 0x65, 0x14, 0x34, 0x4e, 0x5e, 0xe6, 0x2a, 0x61, 0x25, 0x50, 0x0a, 0x5a, 0x94, 0x26, 0xf3, 0x80, 0x8b, 0x45, 0x9e, 0x84, 0x52, 0xac, 0x84, 0x2f, 0x98, 0x7a, 0x0a,
0xe4, 0xa1, 0x35, 0x9a, 0x55, 0x72, 0xc1, 0x43, 0xe5, 0x24, 0x53, 0xb4, 0x20, 0xbc, 0xb9, 0x2e, 0xf9, 0x01, 0x23, 0x50, 0xbb, 0x13, 0xfa, 0x94, 0xed, 0xb6, 0x23, 0x3a, 0x5b, 0xa2, 0xa0, 0x75,
0x98, 0xf3, 0x63, 0x2c, 0x99, 0x75, 0x9d, 0xaf, 0x9d, 0x01, 0xe8, 0x4e, 0x52, 0x3f, 0xf0, 0xf0, 0xf4, 0x3c, 0xd7, 0x05, 0x2b, 0x86, 0x56, 0x20, 0x87, 0x56, 0x31, 0xab, 0xe4, 0x86, 0x87, 0xce,
0xbb, 0x0b, 0x40, 0x2a, 0x57, 0x1b, 0xb3, 0x04, 0x82, 0xb9, 0x72, 0xb2, 0x3e, 0x4d, 0x3d, 0x92, 0x49, 0xa5, 0x18, 0x41, 0x78, 0xec, 0x5d, 0x28, 0xc7, 0x23, 0x6c, 0x99, 0x4d, 0x9f, 0x6f, 0x92,
0x40, 0xe1, 0x55, 0x6e, 0x22, 0xfa, 0x83, 0x8d, 0x26, 0xa2, 0xd1, 0x68, 0x43, 0x94, 0xc1, 0xa7, 0x01, 0xe4, 0x4e, 0x52, 0x1e, 0xf8, 0xf8, 0xd1, 0x06, 0x28, 0x75, 0xaa, 0x8d, 0x59, 0x0c, 0x60,
0x65, 0xed, 0xac, 0xd9, 0x9b, 0x2d, 0x0b, 0xa2, 0x28, 0x3e, 0x2d, 0x6b, 0x67, 0xf1, 0xdf, 0xb1, 0xae, 0x93, 0xac, 0x4f, 0x53, 0x9f, 0xc4, 0xd0, 0x78, 0x95, 0x37, 0x11, 0xfd, 0xc1, 0xc6, 0x26,
0xa0, 0x6b, 0xc6, 0xe7, 0x1e, 0x42, 0xda, 0x4b, 0xf0, 0xb9, 0x9b, 0x50, 0xfb, 0x43, 0x07, 0x61, 0xa2, 0xd9, 0xec, 0x00, 0xca, 0xe0, 0xb5, 0xd1, 0xd8, 0xd9, 0xb3, 0xb7, 0xda, 0x0d, 0x40, 0x51,
0xe0, 0xb9, 0x87, 0xd0, 0xc7, 0x66, 0x03, 0x7a, 0x03, 0x7c, 0xee, 0x26, 0xd4, 0xb0, 0xd4, 0x6e, 0xbc, 0x36, 0x1a, 0x3b, 0x9b, 0xff, 0xd3, 0x06, 0xec, 0x9a, 0xf1, 0xfa, 0x86, 0x20, 0x93, 0x25,
0xea, 0x67, 0x0f, 0xa9, 0x86, 0x66, 0xaa, 0x51, 0xe6, 0x6a, 0xad, 0xc7, 0x80, 0xb0, 0xf5, 0x3b, 0x78, 0xdd, 0x2d, 0xa8, 0xf3, 0xe1, 0x14, 0x69, 0xe0, 0xfa, 0x86, 0xa0, 0x8f, 0xad, 0x26, 0xec,
0x63, 0x31, 0xd6, 0x65, 0x5a, 0x56, 0x18, 0x41, 0x31, 0x0d, 0xde, 0x85, 0x71, 0xc2, 0x9f, 0x6b, 0x0d, 0xf0, 0xba, 0x5b, 0x50, 0xb3, 0xa1, 0x67, 0xd3, 0x3f, 0x6f, 0x88, 0x6a, 0x1a, 0xa5, 0x9a,
0x64, 0xcc, 0xa1, 0xae, 0x9e, 0x70, 0x9a, 0x78, 0xba, 0x46, 0x84, 0x3c, 0x48, 0x44, 0x1a, 0xab, 0x65, 0xad, 0xd6, 0xf6, 0x18, 0x00, 0x5b, 0xbf, 0x33, 0x16, 0x61, 0x5f, 0x66, 0x6c, 0x85, 0x08,
0xef, 0x65, 0x73, 0x70, 0x47, 0xa5, 0x8f, 0xfc, 0x82, 0x26, 0x29, 0x7f, 0x46, 0x3a, 0xe2, 0xc3, 0x8a, 0x65, 0xf0, 0x36, 0x8c, 0x62, 0xf9, 0x54, 0x23, 0x63, 0x09, 0x7d, 0xf5, 0x44, 0xd2, 0xd8,
0xd3, 0xee, 0xef, 0x4e, 0xc6, 0xca, 0x37, 0x2d, 0xfc, 0xb8, 0x06, 0x3f, 0xf8, 0xfd, 0x0d, 0x3f, 0x37, 0x3d, 0x22, 0xd4, 0x41, 0x92, 0xa4, 0x91, 0xfe, 0xd8, 0x36, 0x87, 0x74, 0xd4, 0xfe, 0xc8,
0xc6, 0xe1, 0x7f, 0x1c, 0xfc, 0x1f, 0x60, 0xa7, 0x58, 0xea, 0x81, 0x20, 0x00, 0x00 0x4f, 0x77, 0xe2, 0xf2, 0x37, 0xa8, 0x03, 0xbe, 0x5a, 0xed, 0xfe, 0x68, 0x65, 0xad, 0x7c, 0x10,
0xc3, 0x2f, 0x73, 0xf0, 0x83, 0x1f, 0xef, 0xf0, 0x4b, 0x1e, 0xfe, 0xbb, 0xc2, 0xff, 0x01, 0x4c,
0x8c, 0xe9, 0xe1, 0xbe, 0x20, 0x00, 0x00
}; };
// Autogenerated from wled00/data/settings_time.htm, do not edit!! // Autogenerated from wled00/data/settings_time.htm, do not edit!!
const uint16_t PAGE_settings_time_length = 3013; const uint16_t PAGE_settings_time_length = 3029;
const uint8_t PAGE_settings_time[] PROGMEM = { const uint8_t PAGE_settings_time[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x1a, 0xfd, 0x73, 0xda, 0xb8, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x1a, 0x6b, 0x77, 0xda, 0xb8,
0xf2, 0x77, 0xff, 0x15, 0x8a, 0xdb, 0xc9, 0xc1, 0x85, 0xef, 0x94, 0x16, 0x02, 0x76, 0x8f, 0x00, 0xf2, 0xbb, 0x7f, 0x85, 0xe2, 0xf6, 0x64, 0x61, 0x63, 0x9e, 0x09, 0x2d, 0x2f, 0xbb, 0x4b, 0x80,
0x6d, 0xda, 0x06, 0x92, 0x39, 0xe8, 0xe5, 0x5d, 0x3f, 0xe6, 0x2a, 0x6c, 0x01, 0x4e, 0x8c, 0xcc, 0x36, 0x6d, 0x03, 0xc9, 0x59, 0xe8, 0xe6, 0x6e, 0x1f, 0x67, 0x2b, 0x6c, 0x01, 0x4e, 0x8c, 0xc4,
0xb3, 0xe4, 0x90, 0xbc, 0x34, 0xff, 0xfb, 0x5b, 0x49, 0xb6, 0xc1, 0x0e, 0x26, 0x69, 0xef, 0xde, 0xb5, 0xe5, 0x90, 0xdc, 0x34, 0xff, 0xfd, 0x8e, 0x24, 0xdb, 0x60, 0x02, 0x24, 0xe9, 0xee, 0xfd,
0xcc, 0x9b, 0x4c, 0x8c, 0x2d, 0xad, 0x76, 0x57, 0xab, 0xfd, 0xb6, 0xdb, 0x7b, 0xbd, 0xb3, 0xee, 0x70, 0x4f, 0x4f, 0x1d, 0x5b, 0x1a, 0xcd, 0x8c, 0x46, 0xf3, 0x16, 0xcd, 0xbd, 0xce, 0x59, 0x7b,
0xf8, 0xcf, 0xf3, 0x3e, 0x9a, 0xf3, 0x85, 0x6b, 0xb6, 0xc5, 0x15, 0xb9, 0x98, 0xce, 0x0c, 0x9d, 0xf8, 0xe7, 0x79, 0x17, 0x4d, 0xf9, 0xcc, 0xb3, 0x9a, 0xe2, 0x89, 0x3c, 0x4c, 0x27, 0xa6, 0x4e,
0x50, 0x1d, 0x9e, 0x09, 0xb6, 0xcd, 0xf6, 0x82, 0x70, 0x8c, 0x28, 0x5e, 0x10, 0x43, 0xbf, 0x76, 0xa8, 0x0e, 0xdf, 0x04, 0x3b, 0x56, 0x73, 0x46, 0x38, 0x46, 0x14, 0xcf, 0x88, 0xa9, 0x5f, 0xbb,
0xc8, 0x6a, 0xe9, 0xf9, 0x5c, 0x47, 0x96, 0x47, 0x39, 0xa1, 0xdc, 0xd0, 0x57, 0x8e, 0xcd, 0xe7, 0x64, 0x31, 0x67, 0x3e, 0xd7, 0x91, 0xcd, 0x28, 0x27, 0x94, 0x9b, 0xfa, 0xc2, 0x75, 0xf8, 0xd4,
0x46, 0xbd, 0x52, 0xd1, 0x4d, 0x4d, 0x81, 0x6a, 0xa9, 0x39, 0x9b, 0x5c, 0x3b, 0x16, 0x29, 0xca, 0xac, 0x14, 0x8b, 0xba, 0xa5, 0x29, 0x50, 0x6d, 0x6d, 0xce, 0x21, 0xd7, 0xae, 0x4d, 0x72, 0xf2,
0x87, 0x82, 0x43, 0x1d, 0xee, 0x60, 0xb7, 0xc8, 0x2c, 0xec, 0x12, 0xa3, 0x5a, 0x58, 0xe0, 0x1b, 0xc3, 0x70, 0xa9, 0xcb, 0x5d, 0xec, 0xe5, 0x02, 0x1b, 0x7b, 0xc4, 0x2c, 0x19, 0x33, 0x7c, 0xe3,
0x67, 0x11, 0x2c, 0xe2, 0xe7, 0x80, 0x11, 0x5f, 0x3e, 0xe0, 0x09, 0x3c, 0x53, 0x4f, 0x47, 0x5a, 0xce, 0xc2, 0x59, 0xf2, 0x1d, 0x06, 0xc4, 0x97, 0x1f, 0x78, 0x04, 0xdf, 0x94, 0xe9, 0x48, 0x5b,
0x8a, 0x74, 0xc8, 0x90, 0x35, 0xc7, 0x3e, 0x23, 0x40, 0x24, 0xe0, 0xd3, 0x62, 0x03, 0x46, 0xb9, 0x23, 0x1d, 0x31, 0x64, 0x4f, 0xb1, 0x1f, 0x10, 0x20, 0x12, 0xf2, 0x71, 0xae, 0x0a, 0xa3, 0xdc,
0xc3, 0x5d, 0x62, 0x8e, 0x9d, 0x05, 0x41, 0x23, 0xc2, 0xb9, 0x43, 0x67, 0xac, 0x5d, 0x56, 0x83, 0xe5, 0x1e, 0xb1, 0x86, 0xee, 0x8c, 0xa0, 0x01, 0xe1, 0xdc, 0xa5, 0x93, 0xa0, 0x59, 0x50, 0x83,
0x6d, 0x66, 0xf9, 0xce, 0x92, 0x9b, 0xda, 0x35, 0xf6, 0x91, 0x6d, 0xd8, 0x9e, 0x15, 0x2c, 0x80, 0xcd, 0xc0, 0xf6, 0xdd, 0x39, 0xb7, 0xb4, 0x6b, 0xec, 0x23, 0xc7, 0x74, 0x98, 0x1d, 0xce, 0x80,
0xc1, 0x02, 0x71, 0x8d, 0x3d, 0x60, 0x81, 0x19, 0x9f, 0xf5, 0xf7, 0x98, 0xea, 0x05, 0xfd, 0x0d, 0x41, 0x83, 0x78, 0xe6, 0x1e, 0xb0, 0x10, 0x98, 0x5f, 0xf4, 0x0f, 0x98, 0xea, 0x86, 0xfe, 0x96,
0x99, 0xc0, 0x75, 0x80, 0x7d, 0xb8, 0x76, 0x96, 0xbe, 0xbc, 0xbf, 0x85, 0xeb, 0xfb, 0x80, 0xca, 0x8c, 0xe0, 0xd9, 0xc3, 0x3e, 0x3c, 0x5b, 0x73, 0x5f, 0xbe, 0xdf, 0xc2, 0xf3, 0x43, 0x48, 0xe5,
0xab, 0x2b, 0xc6, 0x83, 0x19, 0x5c, 0x47, 0x64, 0x09, 0xd7, 0x33, 0x8b, 0xc3, 0x75, 0xe8, 0x5d, 0xd3, 0x13, 0xe3, 0xe1, 0x04, 0x9e, 0x03, 0x32, 0x87, 0xe7, 0x99, 0xcd, 0xe1, 0xd9, 0x67, 0xd7,
0xc3, 0xb5, 0x47, 0x2c, 0xfd, 0x6b, 0x6b, 0x1a, 0x50, 0x8b, 0x3b, 0x1e, 0x45, 0x27, 0xb9, 0xfc, 0xf0, 0xec, 0x10, 0x5b, 0xff, 0xd6, 0x18, 0x87, 0xd4, 0xe6, 0x2e, 0xa3, 0xe8, 0x24, 0x93, 0xbd,
0xdd, 0xca, 0xa1, 0xb6, 0xb7, 0x2a, 0x79, 0x4b, 0x42, 0x73, 0xfa, 0x9c, 0xf3, 0x25, 0x3b, 0x2a, 0x5b, 0xb8, 0xd4, 0x61, 0x8b, 0x3c, 0x9b, 0x13, 0x9a, 0xd1, 0xa7, 0x9c, 0xcf, 0x83, 0x7a, 0xa1,
0x97, 0xaf, 0xa8, 0x57, 0x5a, 0xb9, 0xc4, 0x2e, 0xcd, 0x48, 0x79, 0x4a, 0x30, 0x0f, 0x7c, 0xc2, 0x70, 0x45, 0x59, 0x7e, 0xe1, 0x11, 0x27, 0x3f, 0x21, 0x85, 0x31, 0xc1, 0x3c, 0xf4, 0x49, 0x50,
0xca, 0x2c, 0xe4, 0xb8, 0xfc, 0x8c, 0xc3, 0x06, 0x8a, 0xd1, 0xa3, 0x9e, 0xbf, 0x8f, 0x11, 0x1e, 0x08, 0x22, 0x8e, 0x0b, 0x2f, 0x38, 0x6c, 0x20, 0x17, 0x7f, 0xea, 0xd9, 0xfb, 0x04, 0xe1, 0xf1,
0xa7, 0x11, 0xc6, 0x8b, 0x80, 0xf8, 0x5f, 0x8c, 0xb8, 0xd3, 0x4d, 0xe8, 0x11, 0x40, 0x1f, 0x8f, 0x3a, 0xc2, 0x64, 0x11, 0x10, 0xff, 0x2b, 0x20, 0xde, 0x78, 0x15, 0x7a, 0x00, 0xd0, 0xc7, 0x43,
0x71, 0x2e, 0x5f, 0x78, 0x4b, 0xf8, 0x1f, 0xf0, 0x13, 0x2c, 0xed, 0x53, 0xcf, 0x82, 0x9b, 0x2e, 0x9c, 0xc9, 0x1a, 0xef, 0x08, 0xff, 0x03, 0xfe, 0x84, 0x73, 0xe7, 0x94, 0xd9, 0xf0, 0xd2, 0x0e,
0x83, 0xcb, 0x9b, 0x6e, 0x6e, 0x03, 0x78, 0xf6, 0xce, 0xce, 0xf1, 0xfc, 0x9d, 0x4f, 0x80, 0x19, 0xe0, 0xf1, 0xb6, 0x9d, 0x59, 0x01, 0x9e, 0xbc, 0x77, 0x32, 0x3c, 0x7b, 0xe7, 0x13, 0x60, 0x86,
0x8a, 0x04, 0x67, 0xbc, 0xef, 0x12, 0x21, 0xa2, 0xe3, 0x5b, 0x39, 0xb5, 0x01, 0x3a, 0xcc, 0x80, 0x22, 0xc1, 0x19, 0xef, 0x7a, 0x44, 0x88, 0xe8, 0xf8, 0x56, 0x4e, 0xad, 0x80, 0xf6, 0xb7, 0x40,
0x64, 0xc7, 0xb7, 0x43, 0x38, 0x28, 0x98, 0xfd, 0x5c, 0xf9, 0xba, 0x86, 0x27, 0x37, 0x4b, 0x4c, 0x06, 0xc7, 0xb7, 0x7d, 0x38, 0x28, 0x98, 0xfd, 0x52, 0xfc, 0xb6, 0x84, 0x27, 0x37, 0x73, 0x4c,
0x01, 0x45, 0x81, 0xe4, 0xef, 0x84, 0xf4, 0xa9, 0x21, 0x88, 0xe9, 0x17, 0x3d, 0xfd, 0x80, 0xe4, 0x01, 0x85, 0x41, 0xb2, 0x77, 0x42, 0xfa, 0xd4, 0x14, 0xc4, 0xf4, 0x8b, 0x8e, 0x7e, 0x40, 0xb2,
0x5b, 0xb4, 0xc4, 0xf8, 0xad, 0x4b, 0x4a, 0xb6, 0xc3, 0x96, 0x2e, 0xbe, 0x35, 0x74, 0xea, 0x51, 0x0d, 0x9a, 0x0f, 0xf8, 0xad, 0x47, 0xf2, 0x8e, 0x1b, 0xcc, 0x3d, 0x7c, 0x6b, 0xea, 0x94, 0x51,
0xa2, 0xef, 0x19, 0x46, 0x6a, 0xe2, 0xb5, 0x9a, 0x38, 0xd2, 0xf5, 0x02, 0x2f, 0x39, 0x94, 0x12, 0xa2, 0xef, 0x99, 0xe6, 0xda, 0xc4, 0x1b, 0x35, 0x51, 0xd7, 0x75, 0x83, 0xe7, 0x5d, 0x4a, 0x89,
0xff, 0x64, 0x3c, 0x38, 0x0d, 0xc1, 0x8d, 0x2d, 0xe0, 0xfb, 0xcf, 0xaa, 0xb5, 0x46, 0xb5, 0xf9, 0x7f, 0x32, 0xec, 0x9d, 0x46, 0xe0, 0xe6, 0x06, 0xf0, 0xfd, 0x17, 0xa5, 0x72, 0xb5, 0x54, 0x7b,
0xaa, 0x05, 0x6b, 0xf6, 0x9f, 0xdd, 0xd4, 0x5e, 0x55, 0xeb, 0x2d, 0x7d, 0xcd, 0x95, 0x90, 0xc1, 0xdd, 0x80, 0x35, 0xfb, 0x2f, 0x6e, 0xca, 0xaf, 0x4b, 0x95, 0x86, 0xbe, 0xe4, 0x4a, 0xc8, 0xe0,
0x9d, 0x64, 0xc4, 0xc2, 0x96, 0x9e, 0x4f, 0x71, 0x01, 0x7b, 0xd4, 0xcf, 0x4e, 0x61, 0xd8, 0x9a, 0x4e, 0x32, 0x62, 0x63, 0x5b, 0xcf, 0xae, 0x71, 0x01, 0x7b, 0xd4, 0xcf, 0x4e, 0x61, 0xd8, 0x9e,
0x13, 0xeb, 0x8a, 0xd8, 0xaf, 0xf5, 0x89, 0xeb, 0x59, 0x57, 0x80, 0x4a, 0xd2, 0xdb, 0x38, 0x12, 0x12, 0xfb, 0x8a, 0x38, 0x6f, 0xf4, 0x91, 0xc7, 0xec, 0x2b, 0x40, 0x25, 0xe9, 0xad, 0x1c, 0x89,
0x21, 0x60, 0xb9, 0x2d, 0xd0, 0xc3, 0x36, 0x57, 0xe6, 0xc2, 0x7d, 0xf8, 0x9f, 0x9b, 0x7d, 0x5a, 0x10, 0xb0, 0xdc, 0x16, 0xe8, 0x61, 0x93, 0x2b, 0x73, 0xe1, 0x3e, 0xfc, 0x9f, 0x5a, 0x5d, 0x9a,
0x02, 0xf5, 0x9b, 0xcb, 0xfb, 0x13, 0x2f, 0xf0, 0xe3, 0x87, 0x81, 0x43, 0x03, 0x4e, 0xe2, 0xc7, 0x07, 0xf5, 0x9b, 0xca, 0xf7, 0x13, 0x16, 0xfa, 0xc9, 0x47, 0xcf, 0xa5, 0x21, 0x27, 0xc9, 0xe7,
0x73, 0x38, 0x7e, 0xc2, 0xe3, 0x47, 0x75, 0x53, 0x16, 0x48, 0xca, 0x0a, 0xa1, 0xde, 0x9a, 0x7a, 0x39, 0x1c, 0x3f, 0xe1, 0xc9, 0xa7, 0x7a, 0x29, 0x08, 0x24, 0x05, 0x85, 0x50, 0x6f, 0x8c, 0x99,
0x7e, 0xce, 0x31, 0x2a, 0x2d, 0xa7, 0xdd, 0x68, 0x39, 0x07, 0x07, 0xf9, 0x3b, 0x31, 0xc0, 0x0f, 0x9f, 0x71, 0xcd, 0x62, 0xc3, 0x6d, 0x56, 0x1b, 0xee, 0xc1, 0x41, 0xf6, 0x4e, 0x0c, 0xf0, 0x03,
0x8c, 0x6f, 0x8a, 0x16, 0xd0, 0x74, 0xe8, 0x32, 0xe0, 0xa1, 0x8d, 0x5e, 0x3c, 0xbf, 0x73, 0xee, 0xf3, 0xbb, 0xa2, 0x05, 0x34, 0x5d, 0x3a, 0x0f, 0x79, 0x64, 0xa3, 0x17, 0x2f, 0xef, 0xdc, 0x7b,
0x75, 0xe4, 0xd8, 0xf1, 0x2d, 0xbf, 0x5d, 0xc2, 0xf8, 0xdc, 0xb1, 0x6d, 0x69, 0xd5, 0x0a, 0x38, 0x1d, 0xb9, 0x4e, 0xf2, 0xca, 0x6f, 0xe7, 0x30, 0x3e, 0x75, 0x1d, 0x47, 0x5a, 0xb5, 0x02, 0x4e,
0x9e, 0xaf, 0x44, 0x00, 0x72, 0xb7, 0x13, 0xef, 0x46, 0x17, 0xa4, 0x6d, 0xf3, 0x0b, 0x7d, 0x80, 0xe6, 0x8b, 0x31, 0x80, 0xdc, 0xed, 0x88, 0xdd, 0xe8, 0x82, 0xb4, 0x63, 0x7d, 0xa5, 0x0f, 0x50,
0xfa, 0x44, 0xe1, 0xb3, 0x5c, 0xcc, 0x98, 0xa1, 0xdf, 0xb0, 0x68, 0x25, 0x0d, 0x16, 0x13, 0xe2, 0x9f, 0x28, 0x7c, 0xb6, 0x87, 0x83, 0xc0, 0xd4, 0x6f, 0x82, 0x78, 0x25, 0x0d, 0x67, 0x23, 0xe2,
0xeb, 0x68, 0xe1, 0x50, 0x43, 0x07, 0x7c, 0x60, 0xd4, 0x86, 0x5e, 0x7b, 0x91, 0x8d, 0x68, 0xf8, 0xeb, 0x68, 0xe6, 0x52, 0x53, 0x07, 0x7c, 0x60, 0xd4, 0xa6, 0x5e, 0x3e, 0xda, 0x8e, 0xa8, 0xff,
0x23, 0x88, 0xea, 0xcd, 0x6c, 0x44, 0xe3, 0x04, 0xa2, 0x47, 0x18, 0xaa, 0x57, 0x92, 0x88, 0x6c, 0x1c, 0x44, 0x95, 0xda, 0x76, 0x44, 0xc3, 0x14, 0xa2, 0x47, 0x18, 0xaa, 0x14, 0xd3, 0x88, 0x1c,
0xe7, 0x5a, 0x8a, 0xa1, 0x7b, 0xac, 0xb0, 0x78, 0xd4, 0x72, 0x1d, 0xeb, 0x0a, 0x9c, 0x5f, 0xa8, 0xf7, 0x5a, 0x8a, 0xa1, 0x7d, 0xac, 0xb0, 0x30, 0x6a, 0x7b, 0xae, 0x7d, 0x05, 0xce, 0x2f, 0x52,
0xb4, 0x73, 0x87, 0x15, 0xc4, 0x54, 0x3e, 0xa6, 0x00, 0x8e, 0x49, 0x37, 0xa5, 0x72, 0xbd, 0x78, 0xda, 0xa9, 0x1b, 0x18, 0x62, 0x2a, 0x9b, 0x50, 0x00, 0xc7, 0xa4, 0x5b, 0x89, 0x72, 0x35, 0x0b,
0xf9, 0xaa, 0xd5, 0x2e, 0x03, 0x0a, 0x85, 0x52, 0x1e, 0xd9, 0xb7, 0xc2, 0xc6, 0xa9, 0x80, 0x8b, 0x80, 0x42, 0xa1, 0x94, 0x47, 0xf6, 0xdd, 0x58, 0x39, 0x15, 0x70, 0x91, 0x5e, 0x00, 0x78, 0xcc,
0x74, 0x19, 0xe0, 0x31, 0xea, 0x6b, 0x4a, 0x17, 0x3d, 0x45, 0x49, 0xea, 0x9b, 0xa1, 0x87, 0x0a, 0xca, 0x92, 0xd2, 0x45, 0x47, 0x51, 0x92, 0xfa, 0x66, 0xea, 0x91, 0xc2, 0xd5, 0x85, 0x5a, 0x35,
0x77, 0x24, 0xd4, 0xaa, 0x25, 0xfc, 0xad, 0x6f, 0xfe, 0x1e, 0x50, 0xe0, 0x03, 0xad, 0x08, 0xb9, 0x46, 0xd8, 0xbe, 0x9a, 0xf8, 0x2c, 0xa4, 0x4e, 0x0e, 0x56, 0x32, 0xbf, 0xfe, 0xe2, 0xe8, 0xe8,
0xb2, 0xf1, 0x2d, 0x93, 0x18, 0x41, 0xb5, 0x84, 0x37, 0x8c, 0x55, 0x6b, 0x10, 0x6b, 0xcb, 0x38, 0xa8, 0x21, 0xbc, 0xb0, 0x6f, 0xfd, 0x1e, 0x52, 0xe0, 0x0e, 0x2d, 0x08, 0xb9, 0x72, 0xf0, 0x6d,
0xbe, 0xbb, 0xd8, 0x32, 0xf6, 0x26, 0xbe, 0x1b, 0xa5, 0xef, 0xa4, 0x82, 0xc1, 0xbf, 0x5e, 0xb8, 0x20, 0xe9, 0x80, 0xc2, 0x09, 0x1f, 0x99, 0x28, 0x5c, 0x2f, 0xd1, 0xa1, 0x61, 0xf2, 0x76, 0xb1,
0x34, 0xaa, 0xad, 0x4b, 0x50, 0xac, 0x4b, 0x50, 0x2c, 0xc5, 0xbd, 0xfd, 0x40, 0x45, 0x9e, 0xdf, 0x61, 0xec, 0x6d, 0xf2, 0x36, 0x58, 0x7f, 0x93, 0x6a, 0x07, 0xff, 0x75, 0xe3, 0xd2, 0x2c, 0x35,
0x5d, 0xde, 0x67, 0x68, 0xc9, 0xb7, 0x56, 0xac, 0x8c, 0xa1, 0xd2, 0x4a, 0x56, 0xa7, 0xbe, 0xb7, 0x2e, 0x41, 0xdd, 0x2e, 0x41, 0xdd, 0xd4, 0x9e, 0x9c, 0x07, 0x8a, 0xf3, 0xf2, 0xee, 0xf2, 0x7e,
0x40, 0x6d, 0x70, 0x4a, 0xc4, 0x8a, 0x8e, 0x6a, 0x20, 0xb7, 0x0e, 0x32, 0xba, 0x04, 0x55, 0xbe, 0x8b, 0xee, 0x7c, 0x6f, 0x24, 0x2a, 0x1a, 0xa9, 0xb2, 0x64, 0x75, 0xec, 0xb3, 0x19, 0x6a, 0x82,
0x6c, 0x57, 0x6b, 0x6b, 0x92, 0xde, 0x52, 0x9a, 0xd3, 0x35, 0x76, 0x03, 0x00, 0x04, 0x6a, 0x07, 0xab, 0x22, 0x76, 0x7c, 0x80, 0x3d, 0x29, 0x10, 0x90, 0xdc, 0x25, 0x28, 0xf8, 0x65, 0xb3, 0x54,
0x55, 0x80, 0x7c, 0x7e, 0xb7, 0x60, 0x9f, 0x2f, 0xbf, 0xde, 0xb7, 0xcb, 0x6a, 0x3e, 0x41, 0x4b, 0x5e, 0x92, 0x64, 0x73, 0x69, 0x64, 0xd7, 0xd8, 0x0b, 0x01, 0x10, 0xa8, 0x1d, 0x94, 0x00, 0xf2,
0xa1, 0x4e, 0x2a, 0x43, 0xef, 0x29, 0x5a, 0x55, 0x0d, 0xb5, 0xe1, 0xb0, 0x2a, 0x76, 0x20, 0x97, 0xe5, 0xdd, 0x2c, 0xf8, 0x72, 0xf9, 0xed, 0xbe, 0x59, 0x50, 0xf3, 0x29, 0x5a, 0x0a, 0x75, 0x5a,
0x9b, 0x88, 0x7b, 0x29, 0x66, 0xcf, 0xff, 0x01, 0x66, 0xb3, 0x19, 0xed, 0xff, 0x2c, 0xa3, 0x5f, 0x45, 0x3a, 0x4f, 0xd1, 0xb5, 0x52, 0xa4, 0x23, 0x87, 0x25, 0xb1, 0x03, 0xb9, 0xdc, 0x42, 0x9c,
0xe8, 0x17, 0xfe, 0x85, 0x0b, 0x3d, 0x79, 0xa0, 0x7a, 0xf7, 0xa1, 0x6c, 0x7e, 0xd9, 0xee, 0x14, 0xad, 0x31, 0x7b, 0xfe, 0x0f, 0x30, 0xbb, 0x9d, 0xd1, 0xee, 0xcf, 0x32, 0xfa, 0x95, 0x7e, 0xe5,
0x1a, 0xa1, 0x47, 0x68, 0xec, 0x72, 0x07, 0x8d, 0xdd, 0xbe, 0x60, 0x14, 0x50, 0xdf, 0x61, 0x24, 0x5f, 0xb9, 0xd0, 0x93, 0x07, 0x0a, 0x79, 0x1f, 0xc9, 0xe6, 0x97, 0xcd, 0xae, 0xa2, 0x1a, 0xf9,
0xe9, 0x12, 0x00, 0x61, 0x28, 0x8a, 0x5a, 0xbd, 0xfe, 0x00, 0x79, 0x96, 0xfd, 0x37, 0x1e, 0xdb, 0x89, 0xea, 0x2e, 0x27, 0x51, 0xdd, 0xed, 0x21, 0x06, 0x21, 0xf5, 0xdd, 0x80, 0xa4, 0x1d, 0x05,
0x7d, 0x11, 0xac, 0xfe, 0x09, 0xe6, 0xdf, 0xf8, 0xfb, 0xb6, 0xdf, 0xc8, 0x30, 0xfc, 0xc6, 0x53, 0x20, 0x8c, 0x44, 0x51, 0xae, 0x54, 0x1e, 0x20, 0xdf, 0xe6, 0x15, 0xaa, 0x8f, 0xed, 0x3e, 0x07,
0xad, 0xfe, 0xa1, 0xbd, 0xff, 0x52, 0x90, 0x07, 0xb1, 0xb6, 0xfa, 0xc6, 0x2e, 0x93, 0xff, 0xdf, 0xbe, 0xe0, 0x09, 0x4e, 0xa1, 0xfa, 0xf7, 0x3d, 0x42, 0x75, 0x8b, 0x3b, 0xa8, 0x3e, 0xd5, 0x17,
0x59, 0xf7, 0x2f, 0x8f, 0x5a, 0x77, 0xe3, 0x29, 0xa6, 0xad, 0x27, 0x4c, 0x7b, 0x9b, 0xf6, 0xe9, 0x3c, 0xf4, 0x02, 0xbf, 0x18, 0xf2, 0x20, 0x96, 0xbe, 0xa0, 0xfa, 0x7c, 0x47, 0xf0, 0xbf, 0xb3,
0x85, 0x6c, 0xcd, 0x6b, 0x86, 0x9a, 0xd7, 0xdc, 0xa5, 0x79, 0xcd, 0x47, 0x35, 0x4f, 0x04, 0xc9, 0xf9, 0x5f, 0x1e, 0xb5, 0xf9, 0xea, 0x53, 0x0c, 0x5e, 0x4f, 0x19, 0xfc, 0x26, 0x9d, 0xd4, 0x8d,
0x84, 0xe2, 0x35, 0x7f, 0x4a, 0xf1, 0x9a, 0xff, 0x90, 0xe2, 0x35, 0xff, 0xbe, 0xe2, 0x35, 0x33, 0xed, 0xfa, 0x58, 0x8b, 0xf4, 0xb1, 0xb6, 0x4b, 0x1f, 0x6b, 0x8f, 0xea, 0xa3, 0x08, 0xa8, 0x29,
0x14, 0xaf, 0xf9, 0x0f, 0x2a, 0x5e, 0xf3, 0xff, 0x55, 0xf1, 0x9a, 0x3b, 0x15, 0xef, 0x89, 0x4a, 0x75, 0xac, 0xfd, 0x94, 0x3a, 0xd6, 0xfe, 0x21, 0x75, 0xac, 0xfd, 0x7d, 0x75, 0xac, 0x6d, 0x51,
0x27, 0x33, 0xb8, 0xf1, 0x60, 0x0c, 0xa9, 0xda, 0x3a, 0x29, 0xe4, 0xeb, 0xfc, 0x4c, 0x64, 0xb9, 0xc7, 0xda, 0x3f, 0xa8, 0x8e, 0xb5, 0xff, 0x2f, 0x75, 0xac, 0xed, 0x54, 0xc7, 0x27, 0xaa, 0xa2,
0x77, 0xeb, 0xec, 0xa9, 0x5a, 0x51, 0xe9, 0x93, 0x4b, 0x38, 0x24, 0x6c, 0x2a, 0x0f, 0xd5, 0x0f, 0xcc, 0x01, 0x87, 0xbd, 0x21, 0x24, 0x7b, 0xcb, 0xb4, 0x92, 0x2f, 0x33, 0x3c, 0x91, 0x27, 0xdf,
0x9c, 0x7c, 0x49, 0xea, 0x91, 0xd4, 0x76, 0xe5, 0xee, 0x15, 0xdb, 0x31, 0xc0, 0xc1, 0x65, 0x9c, 0x2d, 0xf3, 0xaf, 0x52, 0x51, 0x25, 0x60, 0x1e, 0xe1, 0x90, 0xf2, 0xa9, 0x4c, 0x56, 0x3f, 0x70,
0x0a, 0x1a, 0xdc, 0x34, 0x2f, 0xf7, 0xab, 0xad, 0x5c, 0xad, 0xfe, 0x62, 0xcf, 0x10, 0xd7, 0x7d, 0xb3, 0x79, 0xa9, 0x5d, 0xd2, 0x06, 0x54, 0x68, 0x50, 0x6c, 0x27, 0x00, 0x07, 0x97, 0x49, 0x32,
0x9e, 0xff, 0xfe, 0x1d, 0x32, 0xb3, 0xfd, 0xfd, 0x5c, 0x75, 0x4f, 0xa6, 0x8e, 0x83, 0x35, 0xce, 0x69, 0x72, 0xcb, 0xba, 0xdc, 0x2f, 0x35, 0x32, 0xe5, 0xca, 0xd1, 0x9e, 0x29, 0x9e, 0xfb, 0x3c,
0xef, 0xdf, 0xc3, 0xb1, 0x5e, 0x62, 0xac, 0xa6, 0x06, 0xcf, 0x37, 0x07, 0x0f, 0x43, 0xc8, 0xfe, 0xfb, 0xe3, 0x07, 0xe4, 0x76, 0xfb, 0xfb, 0x99, 0xd2, 0x9e, 0x4c, 0x3e, 0x7b, 0x4b, 0x9c, 0x3f,
0x7a, 0x30, 0x9f, 0xdf, 0xdf, 0x0f, 0x15, 0x43, 0xf2, 0xd2, 0x3d, 0x16, 0x73, 0x05, 0x27, 0x7f, 0x7e, 0x44, 0x63, 0x9d, 0xd4, 0x58, 0x59, 0x0d, 0x9e, 0xaf, 0x0e, 0x1e, 0x46, 0x90, 0xdd, 0xe5,
0xbf, 0xde, 0xe2, 0x85, 0x1d, 0x6e, 0x11, 0x1b, 0x9f, 0x2b, 0x85, 0x07, 0x7f, 0x5f, 0x0b, 0xc9, 0x60, 0x36, 0xbb, 0xbf, 0x1f, 0xa9, 0x8b, 0xe4, 0xa5, 0x7d, 0x2c, 0xe6, 0x0c, 0x37, 0x7b, 0xbf,
0xad, 0x0b, 0xc8, 0x05, 0x94, 0x59, 0x9b, 0xfb, 0xc4, 0x9f, 0x9d, 0xaf, 0x07, 0xc6, 0xb6, 0xdd, 0xdc, 0xe2, 0x85, 0x13, 0x6d, 0x11, 0x9b, 0x5f, 0x8a, 0xc6, 0x83, 0x7f, 0xdf, 0x8c, 0xf4, 0xd6,
0xfe, 0xba, 0x28, 0x2c, 0x7e, 0x35, 0x6a, 0xad, 0xb4, 0xa8, 0x0c, 0xb1, 0xe4, 0x5e, 0x1f, 0x89, 0x05, 0xe4, 0x0c, 0x0a, 0xb5, 0xd5, 0x7d, 0xe2, 0x2f, 0xee, 0xb7, 0x03, 0x73, 0xd3, 0x6e, 0x7f,
0xd4, 0xdb, 0x2e, 0x8d, 0xa6, 0xa5, 0xd3, 0xf1, 0xef, 0x6a, 0x06, 0xa4, 0x10, 0x0e, 0x84, 0x90, 0x9d, 0x19, 0xb3, 0x5f, 0xcd, 0x72, 0x63, 0x5d, 0x54, 0xa6, 0x58, 0x72, 0xaf, 0x0f, 0x44, 0xf2,
0xc5, 0xea, 0xaf, 0x4b, 0x51, 0xa8, 0xbd, 0x71, 0x3d, 0xcc, 0x93, 0x73, 0xf9, 0x7c, 0x01, 0x90, 0xee, 0xe4, 0x07, 0xe3, 0xfc, 0xe9, 0xf0, 0x77, 0x35, 0x03, 0x52, 0x88, 0x06, 0x22, 0xc8, 0x5c,
0xc6, 0x28, 0x86, 0x69, 0x14, 0xc3, 0x1d, 0x28, 0x86, 0x11, 0x8a, 0xb5, 0x24, 0xb0, 0x6d, 0xff, 0xe9, 0xd7, 0xb9, 0x28, 0xf5, 0xde, 0x7a, 0x0c, 0xf3, 0xf4, 0x5c, 0x36, 0x6b, 0x00, 0xd2, 0x04,
0xee, 0xad, 0x44, 0xa5, 0x51, 0xa0, 0x20, 0xa3, 0x3b, 0x55, 0xeb, 0x49, 0xd6, 0x17, 0xd8, 0xf2, 0x45, 0x7f, 0x1d, 0x45, 0x7f, 0x07, 0x8a, 0x7e, 0x8c, 0x62, 0x29, 0x09, 0xec, 0x38, 0xbf, 0xb3,
0x3d, 0x28, 0xa6, 0x0a, 0x18, 0x68, 0xf9, 0xde, 0x8a, 0x95, 0x5c, 0x42, 0x67, 0x50, 0x8d, 0xba, 0x85, 0xa8, 0x55, 0x0c, 0x0a, 0x32, 0xba, 0x53, 0xd5, 0xa2, 0x64, 0x7d, 0x86, 0x6d, 0x9f, 0x41,
0xf0, 0xec, 0x80, 0x6b, 0xf1, 0xb9, 0x58, 0x8a, 0xf3, 0x05, 0x66, 0x8c, 0xb8, 0x0f, 0x35, 0x55, 0x39, 0x66, 0x60, 0xa0, 0xe5, 0xb3, 0x45, 0x90, 0xf7, 0x08, 0x9d, 0x40, 0x3d, 0xeb, 0xc1, 0xb7,
0x49, 0x24, 0x30, 0x5d, 0x28, 0x31, 0xbb, 0x9e, 0x4d, 0x72, 0x39, 0x0e, 0x02, 0x7c, 0xfd, 0xa2, 0x0b, 0x0e, 0xc7, 0xe7, 0x62, 0x29, 0xce, 0x1a, 0xbe, 0x39, 0xe0, 0x3e, 0x54, 0x65, 0x79, 0x91,
0x71, 0x54, 0xaf, 0xe7, 0x0f, 0x78, 0xbe, 0x15, 0x15, 0x90, 0x25, 0xcb, 0x87, 0x02, 0x8e, 0x84, 0xec, 0xb4, 0xa1, 0x48, 0x6d, 0x33, 0x87, 0x64, 0x32, 0x1c, 0x04, 0xf8, 0xe6, 0xa8, 0x5a, 0xaf,
0x15, 0x50, 0x4e, 0xe7, 0xb6, 0x9e, 0x6f, 0xb9, 0x21, 0xc6, 0x2e, 0x71, 0xdd, 0x5c, 0x65, 0x53, 0x54, 0xb2, 0x07, 0x3c, 0xdb, 0x88, 0x4b, 0xd0, 0xbc, 0xed, 0x43, 0x09, 0x48, 0xa2, 0x1a, 0x2a,
0x33, 0xbf, 0x1d, 0x07, 0x9c, 0x03, 0xa7, 0xcf, 0xef, 0xf8, 0xfd, 0xd1, 0xb7, 0x42, 0x02, 0xb0, 0xa3, 0x73, 0x47, 0xcf, 0x36, 0xbc, 0x08, 0x63, 0x9b, 0x78, 0x5e, 0xa6, 0xb8, 0xaa, 0x99, 0xdf,
0x9a, 0x00, 0x4c, 0xf8, 0x9a, 0x01, 0x24, 0x23, 0xec, 0x3e, 0xed, 0x65, 0xd6, 0xde, 0xe7, 0x81, 0x8f, 0x43, 0xce, 0x81, 0xd3, 0x97, 0x77, 0xfc, 0xbe, 0xfe, 0xdd, 0x48, 0x01, 0x96, 0x52, 0x80,
0xbf, 0x59, 0xe7, 0x26, 0x04, 0x96, 0xf9, 0xe4, 0xdf, 0x81, 0xe3, 0x13, 0x30, 0xab, 0x24, 0xc5, 0x29, 0x0f, 0xd4, 0x83, 0xc4, 0xc5, 0xbf, 0x5f, 0xf7, 0x3d, 0x4b, 0x9f, 0xf4, 0xc0, 0x0b, 0x2d,
0xda, 0x0e, 0x8a, 0xa7, 0x3f, 0x4d, 0x91, 0xee, 0xa0, 0x78, 0xb8, 0x83, 0x62, 0xef, 0xa7, 0x29, 0xf3, 0x18, 0x02, 0xcb, 0x7c, 0xf2, 0xef, 0xd0, 0xf5, 0x09, 0x98, 0x55, 0x9a, 0x62, 0x79, 0x07,
0x3a, 0x09, 0x8a, 0x1b, 0x95, 0x2a, 0xe1, 0xb2, 0xe0, 0xbd, 0x23, 0xee, 0xf7, 0xef, 0xb9, 0xb0, 0xc5, 0xd3, 0x9f, 0xa6, 0x48, 0x77, 0x50, 0x3c, 0xdc, 0x41, 0xb1, 0xf3, 0xd3, 0x14, 0xdd, 0x14,
0x72, 0x06, 0x25, 0xe9, 0x5f, 0xc3, 0x59, 0x9d, 0x3a, 0x8c, 0x13, 0x60, 0x05, 0x74, 0x83, 0x30, 0xc5, 0x95, 0x5a, 0x97, 0x70, 0x59, 0x32, 0xdf, 0x11, 0xef, 0xc7, 0x8f, 0x4c, 0x54, 0x7b, 0x83,
0x86, 0x67, 0x04, 0x22, 0x98, 0x61, 0xde, 0xc5, 0x45, 0x3a, 0xd4, 0x7b, 0x70, 0xb0, 0xaa, 0x4e, 0x92, 0x74, 0xaf, 0xe1, 0xac, 0x4e, 0xdd, 0x80, 0x13, 0x60, 0x05, 0x74, 0x83, 0x04, 0x01, 0x9e,
0x5f, 0xc8, 0x12, 0x93, 0x97, 0x3c, 0xdf, 0x99, 0x39, 0x74, 0x7f, 0x9f, 0x97, 0x6c, 0xcc, 0x31, 0x10, 0x88, 0x6b, 0xa6, 0x75, 0x97, 0x94, 0xf9, 0x50, 0x31, 0xc2, 0xc1, 0xaa, 0x4a, 0x7f, 0x26,
0x82, 0x8d, 0x71, 0x4c, 0x2d, 0xe2, 0x4d, 0xd1, 0xd9, 0xe4, 0x12, 0x72, 0xbc, 0x07, 0xba, 0xaf, 0x8b, 0x54, 0x9e, 0x67, 0xbe, 0x3b, 0x71, 0xe9, 0xfe, 0x3e, 0xcf, 0x3b, 0x98, 0x63, 0x04, 0x1b,
0x00, 0x4b, 0x2e, 0xe6, 0x85, 0xa4, 0x46, 0x47, 0x13, 0x1e, 0x8d, 0xcb, 0xf2, 0xfc, 0x7d, 0x61, 0xe3, 0x98, 0xda, 0x84, 0x8d, 0xd1, 0xd9, 0xe8, 0x12, 0xf2, 0xc1, 0x07, 0xba, 0xaf, 0x00, 0xf3,
0xaf, 0x9a, 0x97, 0x1d, 0x89, 0x4a, 0xbe, 0xb0, 0xb5, 0x71, 0x90, 0xe2, 0x09, 0x8a, 0xfe, 0x89, 0x1e, 0xe6, 0x46, 0x5a, 0xa3, 0xe3, 0x09, 0x46, 0x93, 0xc2, 0x3e, 0x7b, 0x6f, 0xec, 0x95, 0xb2,
0x8b, 0xe9, 0xd5, 0x66, 0xd5, 0x1f, 0x62, 0x83, 0x0a, 0x3d, 0xd3, 0xe8, 0xda, 0x95, 0xd7, 0xb9, 0xb2, 0xa7, 0x51, 0xcc, 0x1a, 0x1b, 0x5b, 0x0f, 0x6b, 0x3c, 0x19, 0xfa, 0x5f, 0x23, 0x0f, 0xd3,
0xa4, 0xcd, 0x1a, 0x60, 0xc8, 0x85, 0x1f, 0xb0, 0xda, 0xa3, 0xf4, 0xf2, 0xa1, 0x5e, 0xc8, 0x34, 0xab, 0xd5, 0xbe, 0x41, 0x84, 0x0d, 0x6a, 0xfc, 0xad, 0x46, 0xd7, 0x2c, 0xbe, 0xc9, 0xa4, 0x6d,
0xd0, 0x35, 0xb9, 0x61, 0x0c, 0x7f, 0xa1, 0x17, 0x7e, 0xc0, 0xc2, 0x8f, 0xd2, 0xcb, 0xfb, 0xfa, 0xd6, 0x04, 0x43, 0x36, 0x9e, 0x61, 0xb5, 0xf5, 0xf5, 0xe5, 0x7d, 0xdd, 0xd8, 0x6a, 0xa0, 0x4b,
0xbd, 0x06, 0x79, 0xb5, 0x6a, 0xe9, 0x84, 0xad, 0x1d, 0xc4, 0x7c, 0x0b, 0x14, 0x25, 0x6c, 0x88, 0x72, 0xfd, 0x04, 0xfe, 0x42, 0x37, 0x9e, 0x61, 0xe1, 0xf5, 0xf5, 0xe5, 0x5d, 0xfd, 0x5e, 0x83,
0x94, 0x2e, 0xd9, 0xeb, 0xa5, 0x51, 0x17, 0xe1, 0x24, 0x06, 0x13, 0x51, 0xd0, 0xfc, 0xcd, 0x59, 0x1c, 0x5c, 0x35, 0x85, 0xa2, 0xe6, 0x10, 0x0a, 0x7c, 0x1b, 0x14, 0x25, 0x6a, 0xa9, 0xe4, 0x2f,
0x88, 0x1e, 0x12, 0x0a, 0x7c, 0x37, 0xa7, 0xab, 0xa2, 0xdf, 0x62, 0xe0, 0x18, 0x5a, 0x02, 0xa1, 0x83, 0x37, 0x73, 0xb3, 0x22, 0xc2, 0x49, 0x02, 0x26, 0x62, 0xa3, 0xf5, 0x9b, 0x3b, 0x13, 0x5d,
0x84, 0x68, 0x97, 0x55, 0x15, 0x3f, 0xf1, 0xec, 0x5b, 0x08, 0xcf, 0xc0, 0x10, 0x44, 0xab, 0x51, 0x28, 0x14, 0xfa, 0x5e, 0x46, 0x57, 0x6d, 0x03, 0x3b, 0x00, 0xc7, 0xd0, 0x10, 0x08, 0x25, 0x44,
0x2e, 0x0f, 0xb8, 0xc0, 0x77, 0x2e, 0x64, 0xf0, 0x12, 0x37, 0x7f, 0x81, 0x52, 0x2a, 0xd5, 0x1d, 0xb3, 0xa0, 0xfa, 0x00, 0x23, 0xe6, 0xdc, 0x42, 0xd0, 0x06, 0x86, 0x20, 0x5a, 0x0d, 0x32, 0x59,
0x4d, 0x41, 0x2d, 0x09, 0x9f, 0x7b, 0x30, 0xb3, 0xf4, 0x18, 0xd7, 0x91, 0xe6, 0x51, 0x16, 0x4c, 0xc0, 0x05, 0xbe, 0x73, 0x26, 0x83, 0x97, 0x78, 0xf9, 0x0b, 0x94, 0x52, 0xa9, 0xee, 0x60, 0x0c,
0x16, 0x0e, 0x87, 0xad, 0xda, 0x72, 0xa9, 0x08, 0xc8, 0xa1, 0x32, 0x73, 0x6f, 0x09, 0x1e, 0x28, 0x6a, 0x49, 0xf8, 0x94, 0xc1, 0xcc, 0x9c, 0x05, 0x5c, 0x47, 0x1a, 0xa3, 0x41, 0x38, 0x9a, 0xb9,
0x39, 0x36, 0x27, 0xee, 0xf2, 0x18, 0x86, 0x26, 0xca, 0x3f, 0x28, 0x23, 0x50, 0x0f, 0x12, 0x5b, 0x1c, 0xb6, 0xea, 0xc8, 0xa5, 0x22, 0x4c, 0x47, 0xca, 0xcc, 0xd9, 0x1c, 0x3c, 0x50, 0x7a, 0x6c,
0x98, 0x24, 0x9c, 0x08, 0x5c, 0xaf, 0xdb, 0x65, 0x35, 0x13, 0xc5, 0xc3, 0xad, 0x8b, 0xe2, 0x35, 0x4a, 0xbc, 0xf9, 0x31, 0x0c, 0x8d, 0x94, 0x7f, 0x50, 0x46, 0xa0, 0x3e, 0x24, 0xb6, 0x28, 0x75,
0xc7, 0x62, 0xcd, 0x31, 0xb6, 0xae, 0xe2, 0x65, 0x5a, 0x72, 0x85, 0xe2, 0x54, 0x37, 0x47, 0xf8, 0x38, 0x11, 0xb8, 0xde, 0x34, 0x0b, 0x6a, 0x26, 0x8e, 0x87, 0x1b, 0x17, 0x25, 0x6b, 0x8e, 0xc5,
0x9a, 0xac, 0x51, 0xaf, 0xc3, 0xed, 0xbc, 0xa6, 0x7a, 0x6a, 0x20, 0xdb, 0x60, 0x09, 0xd2, 0xa9, 0x9a, 0x63, 0x48, 0x02, 0x92, 0x65, 0x5a, 0x7a, 0x85, 0xe2, 0x54, 0xb7, 0x06, 0xf8, 0x9a, 0x2c,
0x99, 0xda, 0x5b, 0x11, 0x3f, 0xc5, 0x98, 0xac, 0xf2, 0x86, 0xe3, 0x73, 0x98, 0xf4, 0xaf, 0x89, 0x51, 0x2f, 0xc3, 0xed, 0xb4, 0xac, 0xba, 0x72, 0x20, 0xdb, 0x70, 0x0e, 0xd2, 0x29, 0x5b, 0xda,
0x7f, 0x84, 0x42, 0x9b, 0x4e, 0x45, 0xf5, 0x28, 0xf7, 0x1a, 0x8b, 0x2d, 0xfa, 0x51, 0x1a, 0xa0, 0x3b, 0x11, 0x3f, 0xc5, 0x98, 0xac, 0x08, 0xfb, 0xc3, 0x73, 0x98, 0xf4, 0xaf, 0x89, 0x5f, 0x47,
0x29, 0x28, 0x4e, 0x6e, 0x78, 0x0c, 0x31, 0x92, 0x16, 0xae, 0x9c, 0x33, 0x54, 0x3e, 0x35, 0xb5, 0x91, 0x4d, 0xaf, 0x45, 0xf5, 0x38, 0x23, 0x1b, 0x8a, 0x2d, 0xfa, 0x71, 0x1a, 0xa0, 0x29, 0x28,
0xe0, 0x23, 0x23, 0xa8, 0xf6, 0x62, 0x8e, 0x84, 0xdc, 0x31, 0xcf, 0xa4, 0x12, 0x36, 0x0a, 0xbb, 0x4e, 0x6e, 0x78, 0x02, 0x31, 0x90, 0x16, 0xae, 0x9c, 0x33, 0x54, 0x49, 0x65, 0xb5, 0xe0, 0x53,
0x6f, 0xd4, 0x2a, 0xc9, 0xf5, 0x7f, 0x20, 0xdb, 0x39, 0x4a, 0xd5, 0x76, 0xe3, 0x4f, 0x00, 0x90, 0x40, 0x50, 0xf9, 0x68, 0x8a, 0x84, 0xdc, 0x31, 0xdf, 0x4a, 0x25, 0x6a, 0x35, 0xb6, 0xdf, 0xaa,
0xac, 0xe2, 0xc0, 0x9f, 0x68, 0x0a, 0x06, 0x42, 0xbc, 0x1e, 0xdd, 0xe9, 0xe6, 0xdb, 0xc1, 0x38, 0x55, 0x92, 0xeb, 0xff, 0x40, 0x0e, 0x54, 0x5f, 0xab, 0x03, 0x87, 0x9f, 0x01, 0x20, 0x5d, 0xf1,
0xf7, 0x71, 0xdc, 0xcd, 0xc7, 0x55, 0x5d, 0x6a, 0x5d, 0x55, 0x82, 0x94, 0x8f, 0x47, 0xe3, 0x07, 0x81, 0x3f, 0xd1, 0x14, 0x0c, 0x84, 0x78, 0x3d, 0x7e, 0xd3, 0xad, 0x77, 0xbd, 0x61, 0xe6, 0xd3,
0x10, 0x5a, 0x94, 0x9c, 0xea, 0x66, 0xb7, 0x3f, 0x2e, 0x77, 0xfb, 0x5b, 0x60, 0x42, 0x90, 0x43, 0xb0, 0x9d, 0x4d, 0x2a, 0xc0, 0xb5, 0x75, 0x25, 0x09, 0x52, 0x38, 0x1e, 0x0c, 0x1f, 0x40, 0x68,
0xdd, 0xec, 0x03, 0x48, 0x7f, 0x07, 0xc8, 0x0b, 0xdd, 0xd4, 0x3e, 0x8e, 0x8a, 0x00, 0x51, 0xee, 0x71, 0xca, 0xaa, 0x5b, 0xed, 0xee, 0xb0, 0xd0, 0xee, 0x6e, 0x80, 0x89, 0x40, 0x0e, 0x75, 0xab,
0xf7, 0x32, 0xa1, 0x40, 0xe3, 0x01, 0xa8, 0x0b, 0x40, 0xdd, 0x6c, 0xa0, 0x97, 0x0a, 0xd5, 0x00, 0x0b, 0x20, 0xdd, 0x1d, 0x20, 0x47, 0xba, 0xa5, 0x7d, 0x1a, 0xe4, 0x00, 0xa2, 0xd0, 0xed, 0x6c,
0xa0, 0x06, 0xd9, 0x50, 0xaf, 0x24, 0xaa, 0xce, 0xa7, 0xac, 0xf9, 0x86, 0x9c, 0x3f, 0x07, 0x24, 0x85, 0x02, 0x8d, 0x07, 0xa0, 0x36, 0x00, 0xb5, 0xb7, 0x03, 0xbd, 0x52, 0xa8, 0x7a, 0x00, 0xd5,
0xe7, 0xbd, 0xb1, 0x96, 0x05, 0x05, 0x19, 0x34, 0x70, 0x93, 0xeb, 0x5c, 0x8c, 0xc6, 0xd9, 0x32, 0xdb, 0x0e, 0xf5, 0x5a, 0xa2, 0x6a, 0x7d, 0xde, 0x36, 0x5f, 0x95, 0xf3, 0xe7, 0x80, 0xe4, 0xbc,
0x84, 0x04, 0xf9, 0x3d, 0x00, 0x7d, 0x00, 0x98, 0x4c, 0x44, 0x55, 0x90, 0x74, 0x47, 0xec, 0xbe, 0x33, 0xd4, 0xb6, 0x41, 0x41, 0x5e, 0x0d, 0xdc, 0x64, 0x5a, 0x17, 0x83, 0xe1, 0x76, 0x19, 0x42,
0xb3, 0x63, 0xfb, 0x55, 0x90, 0xf5, 0xf0, 0x13, 0x00, 0x0d, 0x3f, 0xed, 0xe0, 0xa9, 0x0a, 0xe2, 0xda, 0xfc, 0x01, 0x80, 0x3e, 0x02, 0xcc, 0x56, 0x44, 0x25, 0x90, 0x74, 0x4b, 0xec, 0xbe, 0xb5,
0x1e, 0x82, 0x13, 0x98, 0xa3, 0x0f, 0x1e, 0x84, 0xef, 0x4c, 0x30, 0x10, 0xf9, 0xbb, 0xd1, 0x18, 0x63, 0xfb, 0x25, 0x90, 0x75, 0xff, 0x33, 0x00, 0xf5, 0x3f, 0xef, 0xe0, 0xa9, 0x04, 0xe2, 0xee,
0xe5, 0xde, 0x51, 0xdb, 0xc1, 0x3b, 0x38, 0x03, 0xa1, 0x77, 0x3b, 0xc5, 0x11, 0x66, 0x57, 0x98, 0x83, 0x13, 0x98, 0xa2, 0x8f, 0x0c, 0xc2, 0xf7, 0x56, 0x30, 0x10, 0xf9, 0xfb, 0xc1, 0x10, 0x65,
0x83, 0x32, 0xae, 0x30, 0xcd, 0x04, 0x05, 0xd1, 0x77, 0x40, 0x1e, 0xd9, 0xb8, 0x5e, 0x29, 0x80, 0xde, 0x53, 0xc7, 0xc5, 0x3b, 0x38, 0x03, 0xa1, 0xb7, 0x5b, 0xb9, 0x01, 0x0e, 0xae, 0x30, 0x07,
0x72, 0x67, 0xc7, 0xf9, 0x55, 0x41, 0xf4, 0x27, 0x82, 0xb1, 0x13, 0xbc, 0xc2, 0x8e, 0xb3, 0x83, 0x65, 0x5c, 0x60, 0xba, 0x15, 0x14, 0x44, 0xdf, 0x02, 0x79, 0x6c, 0xc7, 0xf5, 0x5a, 0x01, 0x14,
0x33, 0x90, 0xfe, 0xf0, 0xec, 0x0f, 0x80, 0x1c, 0x7a, 0xd7, 0x1e, 0x73, 0x26, 0x8e, 0xcf, 0xae, 0x5a, 0x3b, 0xce, 0xaf, 0x04, 0xa2, 0x3f, 0x11, 0x8c, 0x9d, 0xe0, 0x05, 0x76, 0xdd, 0x1d, 0x9c,
0x32, 0x8f, 0xa1, 0x26, 0x1a, 0xf8, 0x9d, 0x0f, 0x82, 0xf8, 0x87, 0x1e, 0xac, 0xe9, 0x50, 0x6b, 0x81, 0xf4, 0xfb, 0x67, 0x7f, 0x00, 0x64, 0x9f, 0x5d, 0xb3, 0xc0, 0x1d, 0xb9, 0x7e, 0x70, 0xb5,
0xee, 0xf9, 0x10, 0x19, 0xb3, 0x57, 0xc0, 0x99, 0x0c, 0xfe, 0xf5, 0x50, 0xdd, 0xa2, 0x96, 0x87, 0xf5, 0x18, 0xca, 0xe2, 0x0a, 0xa0, 0xf5, 0x51, 0x10, 0xff, 0xd8, 0x81, 0x35, 0x2d, 0x6a, 0x4f,
0x26, 0x6d, 0x77, 0xdc, 0x45, 0xde, 0x74, 0x0a, 0xde, 0x23, 0xb6, 0x5b, 0x65, 0x85, 0x1f, 0xcf, 0x99, 0x0f, 0x91, 0x71, 0xfb, 0x0a, 0x38, 0x93, 0xde, 0xbf, 0x1e, 0xaa, 0x5b, 0xdc, 0x1e, 0xd1,
0xb6, 0x97, 0x5f, 0x2f, 0xeb, 0xe2, 0x5d, 0x82, 0x0a, 0xf4, 0xe1, 0xbd, 0x16, 0x87, 0x77, 0x70, 0xa4, 0xed, 0x0e, 0xdb, 0x88, 0x8d, 0xc7, 0xe0, 0x3d, 0x12, 0xbb, 0x55, 0x56, 0xf8, 0xe9, 0x6c,
0x34, 0x96, 0x47, 0x6d, 0x86, 0x72, 0x30, 0x5f, 0x42, 0xd5, 0x06, 0x9a, 0x7b, 0x81, 0xcf, 0xf2, 0x73, 0x51, 0xf6, 0xaa, 0x22, 0x6e, 0x23, 0x54, 0xa0, 0x8f, 0xde, 0xb5, 0x24, 0xbc, 0x83, 0xa3,
0x82, 0x52, 0x37, 0xf0, 0x7d, 0x88, 0xec, 0x48, 0x84, 0x49, 0x57, 0xf9, 0x27, 0x87, 0x81, 0xe9, 0xb1, 0x19, 0x75, 0x02, 0x94, 0x81, 0xf9, 0x3c, 0x2a, 0x55, 0xd1, 0x94, 0x85, 0x7e, 0x90, 0x15,
0x43, 0xfe, 0x1c, 0xfb, 0x5e, 0x18, 0x64, 0xb0, 0xcd, 0x80, 0x5e, 0x51, 0x6f, 0x05, 0xe7, 0x24, 0x94, 0xda, 0xa1, 0xef, 0x43, 0x64, 0x47, 0x22, 0x4c, 0x7a, 0xca, 0x3f, 0xb9, 0x01, 0x98, 0x3e,
0x26, 0xcd, 0x92, 0x58, 0x7d, 0x8a, 0xb9, 0xc3, 0x03, 0xfb, 0x81, 0xb3, 0x80, 0x30, 0xf7, 0xc0, 0xe4, 0xcf, 0x89, 0xef, 0x85, 0xc1, 0x00, 0xb6, 0x19, 0xd2, 0x2b, 0xca, 0x16, 0x70, 0x4e, 0x62,
0x5b, 0x0c, 0x41, 0xae, 0xf1, 0x76, 0xb5, 0xd4, 0xe4, 0x48, 0x17, 0xc5, 0x50, 0x5a, 0x16, 0x89, 0xd2, 0xca, 0x8b, 0xd5, 0xa7, 0x98, 0xbb, 0x3c, 0x74, 0x1e, 0x38, 0x0b, 0x08, 0x73, 0x0f, 0xbc,
0xad, 0x9f, 0x8e, 0x33, 0x12, 0x9d, 0x1b, 0x17, 0x36, 0x9b, 0x48, 0x75, 0x5e, 0xbe, 0x2c, 0xbd, 0x45, 0x1f, 0xe4, 0x9a, 0x6c, 0x57, 0x5b, 0x9b, 0x1c, 0xe8, 0xa2, 0x18, 0x5a, 0x97, 0x45, 0x6a,
0x14, 0x25, 0x1c, 0x59, 0xc2, 0x58, 0xa9, 0x52, 0x55, 0xae, 0xed, 0xd4, 0xa3, 0xb3, 0xed, 0xdc, 0xeb, 0xa7, 0xc3, 0x2d, 0x89, 0xce, 0x8d, 0x07, 0x9b, 0x4d, 0xa5, 0x3a, 0xaf, 0x5e, 0xe5, 0x5f,
0x0e, 0x37, 0xb8, 0xd5, 0xe2, 0x78, 0x69, 0xf6, 0xb3, 0xce, 0xf0, 0x42, 0x17, 0x25, 0xde, 0x6e, 0x89, 0xc2, 0x8e, 0xcc, 0x61, 0x2c, 0x5f, 0x2c, 0x29, 0xd7, 0x76, 0xca, 0xe8, 0x64, 0x33, 0xb7,
0x6e, 0x87, 0x7a, 0xe4, 0xab, 0xb7, 0xb0, 0x9b, 0xe0, 0xb6, 0x2a, 0x1a, 0x48, 0x69, 0x66, 0xa3, 0xfd, 0x15, 0x6e, 0xb5, 0x24, 0x5e, 0x5a, 0xdd, 0x6d, 0x67, 0x78, 0xa1, 0x8b, 0x12, 0x6f, 0x37,
0x70, 0xa3, 0x25, 0x23, 0x94, 0x08, 0xa4, 0x70, 0x54, 0x13, 0xbe, 0x19, 0xad, 0xa2, 0x9c, 0x0d, 0xb7, 0x7d, 0x3d, 0xf6, 0xd5, 0x1b, 0xd8, 0x4d, 0x71, 0x5b, 0x12, 0xcd, 0xa6, 0x75, 0x66, 0xe3,
0xdc, 0x2a, 0x51, 0x27, 0x29, 0x18, 0x5b, 0x87, 0x25, 0x19, 0x91, 0x1c, 0x53, 0xcb, 0x89, 0xcc, 0x70, 0xa3, 0xa5, 0x23, 0x94, 0x08, 0xa4, 0x70, 0x54, 0x23, 0xbe, 0x1a, 0xad, 0xe2, 0x9c, 0x0d,
0x88, 0x21, 0x4a, 0x56, 0x08, 0xea, 0xc3, 0x82, 0x08, 0xd4, 0xb7, 0x68, 0xe5, 0xf9, 0x57, 0x0c, 0xdc, 0x2a, 0x51, 0x27, 0x29, 0x18, 0x5b, 0x86, 0x25, 0x19, 0x91, 0x5c, 0x4b, 0xcb, 0x88, 0xcc,
0xd2, 0x32, 0x34, 0x11, 0x29, 0x3e, 0xf1, 0x41, 0x71, 0x9d, 0x28, 0x8a, 0x45, 0x15, 0x31, 0x0b, 0x28, 0x40, 0x94, 0x2c, 0x10, 0xd4, 0x87, 0x86, 0x08, 0xd4, 0xb7, 0x68, 0xc1, 0xfc, 0xab, 0x00,
0xa8, 0x9e, 0xd6, 0x86, 0x28, 0xd0, 0x1d, 0x9a, 0x5d, 0xd1, 0xe6, 0x87, 0x18, 0x77, 0x68, 0x76, 0xd2, 0x32, 0x34, 0x12, 0x29, 0x3e, 0xf1, 0x41, 0x71, 0xdd, 0x38, 0x8a, 0xc5, 0x75, 0x72, 0x10,
0x28, 0x76, 0xbd, 0x19, 0x92, 0x03, 0xc8, 0x83, 0xd8, 0x26, 0x4a, 0xe7, 0xdd, 0xe1, 0xed, 0xec, 0x52, 0x7d, 0x5d, 0x1b, 0xe2, 0x40, 0x77, 0x68, 0xb5, 0xc5, 0x45, 0x01, 0xc4, 0xb8, 0x43, 0xab,
0x54, 0xc5, 0xea, 0x39, 0xa6, 0x33, 0x11, 0x86, 0x98, 0x8c, 0xfc, 0x42, 0x00, 0x11, 0x71, 0xf1, 0x45, 0xb1, 0xc7, 0x26, 0x48, 0x0e, 0x20, 0x06, 0xb1, 0x4d, 0x14, 0xd4, 0xbb, 0xc3, 0xdb, 0xd9,
0xae, 0xc1, 0x7c, 0x03, 0x56, 0xc8, 0xd1, 0x69, 0xbf, 0x97, 0xb2, 0x87, 0xb3, 0x6a, 0x5a, 0x29, 0xa9, 0x8a, 0xd5, 0x53, 0x4c, 0x27, 0x22, 0x0c, 0x05, 0x32, 0xf2, 0x0b, 0x01, 0xc4, 0xc4, 0xc5,
0xb4, 0x54, 0xd2, 0x5b, 0xdf, 0xc8, 0x73, 0xd1, 0x29, 0xde, 0x8e, 0xa5, 0x96, 0xd5, 0x8d, 0xd0, 0x6d, 0x85, 0xf5, 0x16, 0xac, 0x90, 0xa3, 0xd3, 0x6e, 0x67, 0xcd, 0x1e, 0xce, 0x4a, 0xeb, 0x4a,
0xb6, 0x60, 0x11, 0xdc, 0x55, 0x6b, 0xf3, 0x6d, 0x78, 0x06, 0x3f, 0x8a, 0x67, 0x34, 0xf7, 0x56, 0xa1, 0xad, 0x25, 0xbd, 0x95, 0x95, 0x3c, 0x17, 0x9d, 0xe2, 0xcd, 0x58, 0xca, 0xdb, 0x7a, 0x14,
0xa8, 0x0e, 0x50, 0xc0, 0x2e, 0x9c, 0xc3, 0x63, 0xc2, 0xaa, 0x2b, 0xd9, 0x68, 0xa3, 0xc8, 0xa0, 0xda, 0x06, 0x2c, 0x82, 0xbb, 0x52, 0x79, 0xba, 0x09, 0x4f, 0xef, 0xb9, 0x78, 0x06, 0x53, 0xb6,
0x31, 0x43, 0xdc, 0xc7, 0x8e, 0x9b, 0x7f, 0x6c, 0xe5, 0x28, 0x94, 0xaa, 0x3c, 0xb5, 0xae, 0x17, 0x40, 0x15, 0x80, 0x02, 0x76, 0xe1, 0x1c, 0x1e, 0x13, 0x56, 0x45, 0xc9, 0x46, 0x1b, 0xc4, 0x06,
0x50, 0x0e, 0xa9, 0x32, 0x45, 0x03, 0x4f, 0x98, 0x83, 0xb6, 0x73, 0x6d, 0xb7, 0xaf, 0xd6, 0xae, 0x8d, 0x03, 0xc4, 0x7d, 0xec, 0x7a, 0xd9, 0xc7, 0x56, 0x0e, 0x22, 0xa9, 0xca, 0x53, 0x6b, 0xb3,
0x57, 0xbd, 0xf5, 0xb0, 0x7b, 0x24, 0x86, 0x7a, 0x90, 0x5a, 0x1f, 0xed, 0xd3, 0x09, 0x5b, 0xb6, 0x90, 0x72, 0x48, 0x95, 0x29, 0xea, 0x31, 0x61, 0x0e, 0xda, 0xce, 0xb5, 0xed, 0xae, 0x5a, 0xbb,
0xda, 0xe0, 0x1b, 0x7c, 0xbc, 0x34, 0x6b, 0x15, 0x2d, 0x21, 0x93, 0xee, 0x9f, 0x4f, 0x7d, 0x63, 0x5c, 0xf5, 0x8e, 0x61, 0xaf, 0x2e, 0x86, 0x3a, 0x90, 0x5a, 0xd7, 0xf7, 0xe9, 0x28, 0x98, 0x37,
0xd1, 0x6c, 0x6e, 0x08, 0xa7, 0x18, 0xe5, 0x3b, 0x21, 0x96, 0x77, 0x4f, 0x6d, 0xfc, 0x42, 0x38, 0x9a, 0xe0, 0x1b, 0x7c, 0x3c, 0xb7, 0xca, 0x45, 0x2d, 0x25, 0x93, 0xf6, 0x9f, 0x4f, 0xbd, 0xf3,
0x7b, 0x88, 0x25, 0x44, 0xd2, 0x83, 0x83, 0x78, 0x72, 0xfb, 0x78, 0xe3, 0xa0, 0xca, 0xe1, 0xde, 0xa8, 0xd5, 0x56, 0x84, 0x93, 0x8b, 0xf3, 0x9d, 0x08, 0xcb, 0xfb, 0xa7, 0x36, 0x89, 0x21, 0x9c,
0xa2, 0x04, 0x29, 0xdc, 0xb2, 0x16, 0xed, 0x39, 0x49, 0xe5, 0xe4, 0xc9, 0xef, 0x7a, 0x0e, 0x37, 0x3d, 0xc4, 0x12, 0x21, 0xe9, 0xc0, 0x41, 0x3c, 0xb9, 0xd5, 0xbc, 0x72, 0x50, 0x85, 0x68, 0x6f,
0x88, 0x1c, 0xa5, 0xc4, 0x36, 0xf8, 0x81, 0x17, 0x3d, 0x1b, 0x58, 0x52, 0x62, 0x1b, 0xfd, 0x14, 0x71, 0x82, 0x14, 0x6d, 0x59, 0x8b, 0xf7, 0x9c, 0xa6, 0x72, 0xf2, 0xe4, 0xdb, 0xa2, 0xc3, 0x15,
0x96, 0xc4, 0x86, 0x85, 0x89, 0x6b, 0x03, 0xd1, 0x0b, 0x40, 0x4b, 0xf9, 0xd6, 0x8d, 0x49, 0x5b, 0x22, 0xf5, 0x35, 0xb1, 0xf5, 0x9e, 0x71, 0x55, 0xb4, 0x82, 0x65, 0x4d, 0x6c, 0x83, 0x9f, 0xc2,
0x6f, 0x4f, 0x4c, 0x39, 0xc8, 0xd0, 0x1c, 0x72, 0x60, 0xb4, 0x00, 0x73, 0xb7, 0xf7, 0xc0, 0xe7, 0x92, 0xda, 0xb0, 0x30, 0x71, 0xad, 0x27, 0x7a, 0x01, 0x68, 0x2e, 0xef, 0xed, 0x02, 0x69, 0xeb,
0x84, 0xc9, 0xaa, 0xa9, 0xa9, 0x57, 0x74, 0xe0, 0x6e, 0x40, 0xc3, 0xb1, 0xcb, 0x3c, 0x64, 0x41, 0xcd, 0x91, 0x25, 0x07, 0x03, 0x34, 0x85, 0x1c, 0x18, 0xcd, 0xc0, 0xdc, 0x9d, 0x3d, 0xf0, 0x39,
0x48, 0x99, 0x10, 0x14, 0x30, 0x62, 0x23, 0xd0, 0x5b, 0xd5, 0x5e, 0x10, 0x2f, 0x11, 0x98, 0x40, 0x51, 0xb2, 0x6a, 0x69, 0xea, 0x92, 0x0f, 0xdc, 0x0d, 0x68, 0x38, 0xf6, 0x02, 0x86, 0x6c, 0x08,
0x30, 0xf1, 0x20, 0xb7, 0x78, 0x3f, 0x3a, 0x1b, 0x22, 0x4c, 0x6d, 0x74, 0x32, 0x86, 0xfc, 0xb8, 0x29, 0x23, 0x82, 0xc2, 0x80, 0x38, 0x08, 0xf4, 0x56, 0xb5, 0x17, 0xc4, 0x85, 0x43, 0x20, 0x10,
0x73, 0xfe, 0x0e, 0x59, 0xde, 0x62, 0x01, 0x03, 0xac, 0x24, 0xe3, 0xe2, 0xfb, 0x00, 0xec, 0x17, 0x8c, 0x18, 0xe4, 0x16, 0x1f, 0x06, 0x67, 0x7d, 0x84, 0xa9, 0x83, 0x4e, 0x86, 0x90, 0x1f, 0xb7,
0xc2, 0x15, 0xf1, 0x11, 0x9f, 0x93, 0x90, 0x1f, 0xf4, 0xae, 0x07, 0x78, 0x5d, 0x6f, 0xb5, 0x27, 0xce, 0xdf, 0x23, 0x9b, 0xcd, 0x66, 0x30, 0x10, 0xe4, 0x65, 0x5c, 0xfc, 0x10, 0x82, 0xfd, 0x42,
0x5c, 0x17, 0x12, 0xb4, 0x45, 0xee, 0x5b, 0x11, 0x99, 0xaf, 0x04, 0xb3, 0xc9, 0x14, 0x07, 0x2e, 0xb8, 0x22, 0x3e, 0xe2, 0x53, 0x12, 0xf1, 0x83, 0xde, 0x77, 0x00, 0xaf, 0xc7, 0x16, 0x7b, 0xc2,
0x47, 0x58, 0x95, 0x7b, 0xa2, 0x04, 0x85, 0x6a, 0x05, 0x02, 0x2c, 0xc2, 0x21, 0x0a, 0xe9, 0xf3, 0x75, 0x21, 0x41, 0x5b, 0xe4, 0xbe, 0x45, 0x91, 0xf9, 0x4a, 0x30, 0x87, 0x8c, 0x71, 0xe8, 0x71,
0x00, 0x7f, 0xc7, 0x25, 0x37, 0x18, 0x9d, 0xd1, 0xf2, 0xd9, 0x74, 0x8a, 0xd4, 0x06, 0xd6, 0xd6, 0x84, 0x55, 0xb9, 0x27, 0x4a, 0x50, 0xa8, 0x56, 0x20, 0xc0, 0x22, 0x1c, 0xa1, 0x90, 0x3e, 0x0f,
0xa1, 0x44, 0xda, 0xa9, 0xc4, 0x22, 0x5d, 0x3c, 0xda, 0xc3, 0xdc, 0x70, 0x3d, 0xc9, 0x83, 0xe9, 0xf0, 0xb7, 0x3c, 0x72, 0x83, 0xd1, 0x19, 0x2d, 0x9c, 0x8d, 0xc7, 0x48, 0x6d, 0x60, 0x69, 0x1d,
0x54, 0x7f, 0x0a, 0x8b, 0x34, 0xfe, 0xd8, 0x0e, 0x8b, 0x67, 0xe0, 0x62, 0x63, 0x36, 0x93, 0x9d, 0x4a, 0xa4, 0xad, 0x62, 0x22, 0xd2, 0xd9, 0xa3, 0x9d, 0xcd, 0x15, 0xd7, 0x93, 0x3e, 0x98, 0x56,
0x81, 0xee, 0xe3, 0xf8, 0xb5, 0x0c, 0x02, 0x42, 0xc3, 0xed, 0xe2, 0xa9, 0x33, 0x9b, 0xf3, 0x4d, 0xe9, 0xa7, 0xb0, 0x48, 0xe3, 0x4f, 0xec, 0x30, 0x77, 0x06, 0x2e, 0x36, 0x61, 0x33, 0xdd, 0x19,
0x0a, 0x2c, 0x4d, 0x62, 0xb8, 0x49, 0x42, 0xfb, 0xa1, 0x3d, 0x08, 0x9d, 0x0a, 0xdb, 0x3a, 0xea, 0x68, 0x3f, 0x8e, 0x5f, 0xdb, 0x42, 0x40, 0x68, 0xb8, 0x93, 0x3b, 0x75, 0x27, 0x53, 0xbe, 0x4a,
0x50, 0x42, 0x9d, 0x92, 0x6d, 0x4b, 0x28, 0x2a, 0x54, 0xf3, 0x15, 0x5c, 0xe2, 0xcc, 0xa1, 0x47, 0x21, 0x58, 0x27, 0xd1, 0x5f, 0x25, 0xa1, 0x3d, 0x6b, 0x0f, 0x42, 0xa7, 0xa2, 0xb6, 0x8e, 0x3a,
0x15, 0x84, 0x03, 0xee, 0xa9, 0xd8, 0x17, 0xf6, 0xa4, 0xcc, 0xc4, 0x6b, 0x63, 0xdb, 0x5c, 0x06, 0x94, 0x48, 0xa7, 0x64, 0xdb, 0x12, 0x8a, 0x0a, 0xd5, 0x92, 0x05, 0x97, 0x38, 0x71, 0x69, 0xbd,
0x6c, 0x2e, 0xf0, 0xb2, 0x95, 0x03, 0xd9, 0xa4, 0x6a, 0x76, 0xc2, 0x3f, 0x83, 0x5c, 0x8c, 0x4b, 0x88, 0x70, 0xc8, 0x99, 0x8a, 0x7d, 0x51, 0x4f, 0xca, 0x4a, 0x5d, 0x3c, 0x3b, 0xd6, 0x3c, 0x0c,
0xc5, 0xf1, 0x68, 0x71, 0x7f, 0xc6, 0x5b, 0x90, 0x53, 0xc5, 0x93, 0x2e, 0xa4, 0x03, 0x72, 0x6a, 0xa6, 0x02, 0x6f, 0xb0, 0x70, 0x21, 0x9b, 0x54, 0xcd, 0x4e, 0xf8, 0x1f, 0x40, 0x2e, 0xc6, 0xa5,
0x3a, 0x55, 0x73, 0x34, 0x9e, 0xb2, 0xbd, 0x00, 0xf8, 0x10, 0x93, 0xc3, 0x72, 0x67, 0xdd, 0x3a, 0xe2, 0x30, 0x9a, 0xdb, 0x9f, 0xf0, 0x06, 0xe4, 0x54, 0xc9, 0xa4, 0x07, 0xe9, 0x80, 0x9c, 0x1a,
0xd5, 0xa2, 0x97, 0xcb, 0x6d, 0x2e, 0x0a, 0x5d, 0x31, 0x18, 0xfd, 0xaa, 0x76, 0x2b, 0x46, 0xda, 0x8f, 0xd5, 0x1c, 0x4d, 0xa6, 0x1c, 0x16, 0x02, 0x1f, 0x62, 0xb2, 0x5f, 0x68, 0x2d, 0x5b, 0xa7,
0xdc, 0x27, 0x53, 0x63, 0xf7, 0x57, 0x0b, 0x6a, 0x0f, 0xe5, 0x67, 0x58, 0x46, 0xcb, 0x62, 0x14, 0x5a, 0x7c, 0x3d, 0xdd, 0xe4, 0xa2, 0xd0, 0x15, 0x83, 0xf1, 0x5f, 0xd5, 0x6e, 0xc5, 0x48, 0x9b,
0xda, 0x39, 0xec, 0x56, 0x7c, 0x99, 0x11, 0xf6, 0x27, 0x20, 0xad, 0x54, 0xd1, 0x34, 0x94, 0x53, 0xfa, 0x64, 0x6c, 0xee, 0xfe, 0xdd, 0x83, 0xda, 0x43, 0xe1, 0x05, 0x96, 0xd1, 0x32, 0x17, 0x87,
0x58, 0x49, 0x62, 0x29, 0x3b, 0x71, 0x44, 0x45, 0xf1, 0xc1, 0x88, 0xef, 0xb9, 0x80, 0x3e, 0x69, 0x76, 0x0e, 0xbb, 0x15, 0xbf, 0xed, 0x88, 0xfa, 0x13, 0x90, 0x56, 0xaa, 0x68, 0x1a, 0xc9, 0x29,
0x98, 0x22, 0x70, 0x6a, 0xa9, 0xfe, 0xb5, 0x43, 0x5d, 0x87, 0x92, 0xa2, 0x7a, 0x23, 0x1f, 0xc9, 0xaa, 0x24, 0xb1, 0x94, 0x9d, 0x38, 0xa2, 0x9c, 0xf8, 0xc9, 0x89, 0xcf, 0x3c, 0x40, 0x9f, 0x36,
0x59, 0x08, 0x54, 0xf4, 0x81, 0xa3, 0x66, 0x37, 0x1c, 0x9a, 0xfa, 0xde, 0xe4, 0xe8, 0xf0, 0xb0, 0x4c, 0x11, 0x38, 0xb5, 0xb5, 0xae, 0xb6, 0x4b, 0x3d, 0x97, 0x92, 0x9c, 0xba, 0xd3, 0x8f, 0xe5,
0xb2, 0x54, 0x7d, 0x65, 0xb9, 0xb1, 0x38, 0xd8, 0xfb, 0x3f, 0x5e, 0x38, 0xa7, 0x12, 0x99, 0xed, 0x2c, 0x04, 0x2a, 0xfa, 0xc0, 0x71, 0x0b, 0x1c, 0x0e, 0x4d, 0xfd, 0x62, 0xa5, 0x7e, 0x78, 0x58,
0x85, 0x73, 0x59, 0x14, 0xa9, 0xf0, 0x13, 0x8a, 0x53, 0x7e, 0x57, 0xf3, 0x5f, 0x13, 0x55, 0x6e, 0x9c, 0xab, 0xbe, 0xb2, 0xdc, 0x58, 0x12, 0xec, 0xfd, 0xe7, 0x17, 0xce, 0x6b, 0x89, 0xcc, 0xe6,
0x74, 0x67, 0x23, 0x00, 0x00 0xc2, 0xb9, 0x20, 0x8a, 0x54, 0xf8, 0x13, 0x89, 0x53, 0xfe, 0x32, 0xe7, 0xbf, 0x48, 0xfe, 0x7a,
0x4a, 0xa9, 0x23, 0x00, 0x00
}; };

File diff suppressed because it is too large Load Diff

View File

@ -262,8 +262,8 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
JsonObject nl = root["nl"]; JsonObject nl = root["nl"];
nightlightActive = nl["on"] | nightlightActive; nightlightActive = nl["on"] | nightlightActive;
nightlightDelayMins = nl["dur"] | nightlightDelayMins; nightlightDelayMins = nl["dur"] | nightlightDelayMins;
nightlightMode = nl["mode"] | nightlightMode; nightlightMode = nl["mode"] | nightlightMode;
nightlightTargetBri = nl[F("tbri")] | nightlightTargetBri; nightlightTargetBri = nl[F("tbri")] | nightlightTargetBri;
JsonObject udpn = root["udpn"]; JsonObject udpn = root["udpn"];
@ -279,23 +279,25 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
doReboot = root[F("rb")] | doReboot; doReboot = root[F("rb")] | doReboot;
strip.setMainSegmentId(root[F("mainseg")] | strip.getMainSegmentId()); // must be before realtimeLock() if "live"
realtimeOverride = root[F("lor")] | realtimeOverride; realtimeOverride = root[F("lor")] | realtimeOverride;
if (realtimeOverride > 2) realtimeOverride = REALTIME_OVERRIDE_ALWAYS; if (realtimeOverride > 2) realtimeOverride = REALTIME_OVERRIDE_ALWAYS;
bool liveEnabled = false;
if (root.containsKey("live")) { if (root.containsKey("live")) {
bool lv = root["live"]; if (root["live"].as<bool>()) {
if (lv) {
transitionDelayTemp = 0; transitionDelayTemp = 0;
jsonTransitionOnce = true; jsonTransitionOnce = true;
liveEnabled = true; // triggers realtimeLock() below
realtimeLock(65000); realtimeLock(65000);
} else {
if (realtimeOverride == REALTIME_OVERRIDE_ONCE) realtimeOverride = REALTIME_OVERRIDE_NONE;
strip.setBrightness(scaledBri(bri));
realtimeTimeout = 0; //cancel realtime mode immediately
realtimeMode = REALTIME_MODE_INACTIVE; // inform UI immediatelly
realtimeIP[0] = 0;
} }
else realtimeTimeout = 0; //cancel realtime mode immediately
} }
strip.setMainSegmentId(root[F("mainseg")] | strip.getMainSegmentId());
int it = 0; int it = 0;
JsonVariant segVar = root["seg"]; JsonVariant segVar = root["seg"];
if (segVar.is<JsonObject>()) if (segVar.is<JsonObject>())
@ -369,7 +371,6 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
} }
stateUpdated(callMode); stateUpdated(callMode);
if (liveEnabled) realtimeTimeout = UINT32_MAX; // force indefinite timeout if this request contained {"live":true}
return stateResponse; return stateResponse;
} }
@ -452,7 +453,7 @@ void serializeState(JsonObject root, bool forPreset, bool includeBri, bool segme
udpn["send"] = notifyDirect; udpn["send"] = notifyDirect;
udpn["recv"] = receiveNotifications; udpn["recv"] = receiveNotifications;
root[F("lor")] = realtimeOverride; root[F("lor")] = realtimeOverride || (realtimeMode && useMainSegmentOnly);
} }
root[F("mainseg")] = strip.getMainSegmentId(); root[F("mainseg")] = strip.getMainSegmentId();
@ -506,6 +507,7 @@ void serializeInfo(JsonObject root)
root[F("name")] = serverDescription; root[F("name")] = serverDescription;
root[F("udpport")] = udpPort; root[F("udpport")] = udpPort;
root["live"] = (bool)realtimeMode; root["live"] = (bool)realtimeMode;
root[F("mso")] = useMainSegmentOnly; // using main segment only for live
switch (realtimeMode) { switch (realtimeMode) {
case REALTIME_MODE_INACTIVE: root["lm"] = ""; break; case REALTIME_MODE_INACTIVE: root["lm"] = ""; break;

View File

@ -100,7 +100,6 @@ void stateUpdated(byte callMode) {
setValuesFromFirstSelectedSeg(); setValuesFromFirstSelectedSeg();
if (bri != briOld || stateChanged) { if (bri != briOld || stateChanged) {
if (realtimeTimeout == UINT32_MAX) realtimeTimeout = 0;
if (stateChanged) currentPreset = 0; //something changed, so we are no longer in the preset if (stateChanged) currentPreset = 0; //something changed, so we are no longer in the preset
if (callMode != CALL_MODE_NOTIFICATION && callMode != CALL_MODE_NO_NOTIFY) notify(callMode); if (callMode != CALL_MODE_NOTIFICATION && callMode != CALL_MODE_NO_NOTIFY) notify(callMode);

View File

@ -242,6 +242,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
nodeBroadcastEnabled = request->hasArg(F("NB")); nodeBroadcastEnabled = request->hasArg(F("NB"));
receiveDirect = request->hasArg(F("RD")); receiveDirect = request->hasArg(F("RD"));
useMainSegmentOnly = request->hasArg(F("MO"));
e131SkipOutOfSequence = request->hasArg(F("ES")); e131SkipOutOfSequence = request->hasArg(F("ES"));
e131Multicast = request->hasArg(F("EM")); e131Multicast = request->hasArg(F("EM"));
t = request->arg(F("EP")).toInt(); t = request->arg(F("EP")).toInt();

View File

@ -140,17 +140,30 @@ void notify(byte callMode, bool followUp)
void realtimeLock(uint32_t timeoutMs, byte md) void realtimeLock(uint32_t timeoutMs, byte md)
{ {
if (!realtimeMode && !realtimeOverride){ if (!realtimeMode) {
uint16_t totalLen = strip.getLengthTotal(); uint16_t stop, start;
for (uint16_t i = 0; i < totalLen; i++) if (useMainSegmentOnly) {
{ WS2812FX::Segment& mainseg = strip.getMainSegment();
strip.setPixelColor(i,0,0,0,0); start = mainseg.start;
stop = mainseg.stop;
} else {
start = 0;
stop = strip.getLengthTotal();
}
// clear strip/segment
if (useMainSegmentOnly || !realtimeOverride) for (uint16_t i = start; i < stop; i++) strip.setPixelColor(i,0,0,0,0);
// if WLED was off and using main segment only, turn non-main segments off
if (useMainSegmentOnly && bri == 0) {
for (uint8_t s=0; s < strip.getMaxSegments(); s++) {
if (s != strip.getMainSegmentId()) strip.getSegment(s).setOption(SEG_OPTION_ON, 0, s);
else strip.getSegment(s).setOption(SEG_OPTION_ON, 1, s);
}
} }
} }
if (realtimeTimeout != UINT32_MAX) { if (realtimeTimeout != UINT32_MAX) {
realtimeTimeout = millis() + timeoutMs;
if (timeoutMs == 255001 || timeoutMs == 65000) realtimeTimeout = UINT32_MAX; if (timeoutMs == 255001 || timeoutMs == 65000) realtimeTimeout = UINT32_MAX;
else realtimeTimeout = millis() + timeoutMs;
} }
// if strip is off (bri==0) and not already in RTM // if strip is off (bri==0) and not already in RTM
if (briT == 0 && !realtimeMode) { if (briT == 0 && !realtimeMode) {
@ -218,7 +231,7 @@ void handleNotifications()
uint8_t lbuf[packetSize]; uint8_t lbuf[packetSize];
rgbUdp.read(lbuf, packetSize); rgbUdp.read(lbuf, packetSize);
realtimeLock(realtimeTimeoutMs, REALTIME_MODE_HYPERION); realtimeLock(realtimeTimeoutMs, REALTIME_MODE_HYPERION);
if (realtimeOverride) return; if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
uint16_t id = 0; uint16_t id = 0;
uint16_t totalLen = strip.getLengthTotal(); uint16_t totalLen = strip.getLengthTotal();
for (uint16_t i = 0; i < packetSize -2; i += 3) for (uint16_t i = 0; i < packetSize -2; i += 3)
@ -226,7 +239,7 @@ void handleNotifications()
setRealtimePixel(id, lbuf[i], lbuf[i+1], lbuf[i+2], 0); setRealtimePixel(id, lbuf[i], lbuf[i+1], lbuf[i+2], 0);
id++; if (id >= totalLen) break; id++; if (id >= totalLen) break;
} }
strip.show(); if (!(realtimeMode && useMainSegmentOnly)) strip.show();
return; return;
} }
} }
@ -429,7 +442,7 @@ void handleNotifications()
realtimeIP = (isSupp) ? notifier2Udp.remoteIP() : notifierUdp.remoteIP(); realtimeIP = (isSupp) ? notifier2Udp.remoteIP() : notifierUdp.remoteIP();
realtimeLock(realtimeTimeoutMs, REALTIME_MODE_TPM2NET); realtimeLock(realtimeTimeoutMs, REALTIME_MODE_TPM2NET);
if (realtimeOverride) return; if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
tpmPacketCount++; //increment the packet count tpmPacketCount++; //increment the packet count
if (tpmPacketCount == 1) tpmPayloadFrameSize = (udpIn[2] << 8) + udpIn[3]; //save frame size for the whole payload if this is the first packet if (tpmPacketCount == 1) tpmPayloadFrameSize = (udpIn[2] << 8) + udpIn[3]; //save frame size for the whole payload if this is the first packet
@ -469,7 +482,7 @@ void handleNotifications()
} else { } else {
realtimeLock(udpIn[1]*1000 +1, REALTIME_MODE_UDP); realtimeLock(udpIn[1]*1000 +1, REALTIME_MODE_UDP);
} }
if (realtimeOverride) return; if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
uint16_t totalLen = strip.getLengthTotal(); uint16_t totalLen = strip.getLengthTotal();
if (udpIn[0] == 1) //warls if (udpIn[0] == 1) //warls

View File

@ -79,7 +79,7 @@ void WLED::loop()
yield(); yield();
} }
if (!realtimeMode || realtimeOverride) // block stuff if WARLS/Adalight is enabled if (!realtimeMode || realtimeOverride || (realtimeMode && useMainSegmentOnly)) // block stuff if WARLS/Adalight is enabled
{ {
if (apActive) dnsServer.processNextRequest(); if (apActive) dnsServer.processNextRequest();
#ifndef WLED_DISABLE_OTA #ifndef WLED_DISABLE_OTA
@ -303,13 +303,10 @@ void WLED::setup()
#endif #endif
#ifdef WLED_ENABLE_ADALIGHT #ifdef WLED_ENABLE_ADALIGHT
//Serial RX (Adalight, Improv, Serial JSON) only possible if GPIO3 unused //Serial RX (Adalight, Improv, Serial JSON) only possible if GPIO3 unused
//Serial TX (Debug, Improv, Serial JSON) only possible if GPIO1 unused //Serial TX (Debug, Improv, Serial JSON) only possible if GPIO1 unused
if (!pinManager.isPinAllocated(3) && !pinManager.isPinAllocated(1)) { if (!pinManager.isPinAllocated(3) && !pinManager.isPinAllocated(1)) {
Serial.println(F("Ada")); Serial.println(F("Ada"));
pinManager.allocatePin(3,false);
} else {
DEBUG_PRINTLN(F("ADALight disabled due to GPIO3 being used."));
} }
#endif #endif

View File

@ -8,7 +8,7 @@
*/ */
// version code in format yymmddb (b = daily build) // version code in format yymmddb (b = daily build)
#define VERSION 2203161 #define VERSION 2203251
//uncomment this if you have a "my_config.h" file you'd like to use //uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG //#define WLED_USE_MY_CONFIG
@ -31,7 +31,7 @@
#ifndef WLED_DISABLE_MQTT #ifndef WLED_DISABLE_MQTT
#define WLED_ENABLE_MQTT // saves 12kb #define WLED_ENABLE_MQTT // saves 12kb
#endif #endif
//#define WLED_ENABLE_ADALIGHT // saves 500b only (uses GPIO3 (RX) for serial) #define WLED_ENABLE_ADALIGHT // saves 500b only (uses GPIO3 (RX) for serial)
//#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2) //#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2)
//#define WLED_ENABLE_JSONLIVE // peek LED output via /json/live (WS binary peek is always enabled) //#define WLED_ENABLE_JSONLIVE // peek LED output via /json/live (WS binary peek is always enabled)
#ifndef WLED_DISABLE_LOXONE #ifndef WLED_DISABLE_LOXONE
@ -545,6 +545,7 @@ WLED_GLOBAL IPAddress realtimeIP _INIT_N(((0, 0, 0, 0)));
WLED_GLOBAL unsigned long realtimeTimeout _INIT(0); WLED_GLOBAL unsigned long realtimeTimeout _INIT(0);
WLED_GLOBAL uint8_t tpmPacketCount _INIT(0); WLED_GLOBAL uint8_t tpmPacketCount _INIT(0);
WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0); WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0);
WLED_GLOBAL bool useMainSegmentOnly _INIT(false);
// mqtt // mqtt
WLED_GLOBAL unsigned long lastMqttReconnectAttempt _INIT(0); WLED_GLOBAL unsigned long lastMqttReconnectAttempt _INIT(0);

View File

@ -273,33 +273,12 @@ void getSettingsJS(byte subPage, char* dest)
oappend(SET_F(",2")); // DMX hardcoded pin oappend(SET_F(",2")); // DMX hardcoded pin
#endif #endif
#ifdef WLED_ENABLE_ADALIGHT
// inform settings page that pin 3 is used by ADALights if not aleready used by strip (previous setup)
// NOTE: this will prohibit pin 3 use on new installs
/*
{
bool pin3used = false;
for (uint8_t s=0; s < busses.getNumBusses(); s++) {
Bus* bus = busses.getBus(s);
uint8_t pins[5];
uint8_t nPins = bus->getPins(pins);
for (uint8_t i = 0; i < nPins; i++) {
if (pins[i] == 3) {
pin3used = true;
break;
}
}
if (pin3used) break;
}
if (!pin3used && pinManager.isPinAllocated(3)) oappend(SET_F(",3")); // ADALight (RX) pin
}
*/
#endif
#ifdef WLED_DEBUG #ifdef WLED_DEBUG
oappend(SET_F(",1")); // debug output (TX) pin oappend(SET_F(",1")); // debug output (TX) pin
#endif #endif
//Note: Using pin 3 (RX) disables Adalight / Serial JSON
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM)
if (psramFound()) oappend(SET_F(",16,17")); // GPIO16 & GPIO17 reserved for SPI RAM if (psramFound()) oappend(SET_F(",16,17")); // GPIO16 & GPIO17 reserved for SPI RAM
#endif #endif
@ -451,6 +430,7 @@ void getSettingsJS(byte subPage, char* dest)
sappend('c',SET_F("NB"),nodeBroadcastEnabled); sappend('c',SET_F("NB"),nodeBroadcastEnabled);
sappend('c',SET_F("RD"),receiveDirect); sappend('c',SET_F("RD"),receiveDirect);
sappend('c',SET_F("MO"),useMainSegmentOnly);
sappend('v',SET_F("EP"),e131Port); sappend('v',SET_F("EP"),e131Port);
sappend('c',SET_F("ES"),e131SkipOutOfSequence); sappend('c',SET_F("ES"),e131SkipOutOfSequence);
sappend('c',SET_F("EM"),e131Multicast); sappend('c',SET_F("EM"),e131Multicast);