Ledmap persistent/consistent and showing in segment graph +small changes

pio.ini: remove ping pong clock from _all
ce.js: change on error handling
liveviewws2D: add colorAdjust
json.cpp: ledmaps will be stored in json/info 
settings_2D: fieldChange at loadJS

FX_(2D)fcn.cpp:
- loadedLedmap default 0 (default)
- loadedLedmap active then only use if index <size

index.js:
- global ledmap set to active value
- draw to drawSegments
- gradient colored leds
- add ledmaps to graphics
- add fetchAndExecute (from custom effects), used by drawSegments to get ledmap contents
- graphics bigger in non pc mode
This commit is contained in:
Ewoud
2023-02-10 16:26:35 +01:00
parent 26f97f4dc6
commit 40e82166bc
12 changed files with 2477 additions and 2387 deletions

View File

@@ -666,7 +666,7 @@ build_flags_all =
-D USERMOD_MULTI_RELAY -D USERMOD_MULTI_RELAY
-D USERMOD_PIRSWITCH -D USERMOD_PIRSWITCH
-D USERMOD_PWM_FAN -D USERMOD_PWM_FAN
-D USERMOD_PING_PONG_CLOCK ; -D USERMOD_PING_PONG_CLOCK //Removed as dots is confusing
-D USERMOD_BUZZER -D USERMOD_BUZZER
-D USERMOD_SN_PHOTORESISTOR -D USERMOD_SN_PHOTORESISTOR
-D USERMOD_BME280 -D USERMOD_BME280
@@ -699,7 +699,7 @@ lib_deps = ${esp32.lib_deps} ${common_mm.lib_deps_min}
board_build.partitions = ${esp32.default_partitions} board_build.partitions = ${esp32.default_partitions}
board_build.f_flash = 80000000L ; use full 80MHz speed for flash (default = 40Mhz) board_build.f_flash = 80000000L ; use full 80MHz speed for flash (default = 40Mhz)
board_build.flash_mode = dio ; (dio = dual i/o; more compatible than qio = quad i/o) board_build.flash_mode = dio ; (dio = dual i/o; more compatible than qio = quad i/o)
monitor_filters = esp32_exception_decoder ; used to show crash details ; monitor_filters = esp32_exception_decoder ; used to show crash details
;common default for all max environments ;common default for all max environments
[esp32_4MB_max_base] [esp32_4MB_max_base]

View File

@@ -27,9 +27,7 @@ function fetchAndExecute(url, name, callback)
}) })
.catch(function (error) { .catch(function (error) {
showToast("Error getting " + name, true); showToast("Error getting " + name, true);
// showToast(error, true); console.log(error);
// console.log(error);
presetError(false);
}) })
.finally(() => { .finally(() => {
// if (callback) setTimeout(callback,99); // if (callback) setTimeout(callback,99);

View File

@@ -41,7 +41,7 @@ void WS2812FX::setUpMatrix(bool reset) {
if (customMappingTable != nullptr) delete[] customMappingTable; if (customMappingTable != nullptr) delete[] customMappingTable;
customMappingTable = nullptr; customMappingTable = nullptr;
customMappingSize = 0; customMappingSize = 0;
loadedLedmap = -1; loadedLedmap = 0;
} }
// isMatrix is set in cfg.cpp or set.cpp // isMatrix is set in cfg.cpp or set.cpp
@@ -76,17 +76,12 @@ void WS2812FX::setUpMatrix(bool reset) {
} }
if (customMappingTable != nullptr) { if (customMappingTable != nullptr) {
uint16_t customMappingSizeLedmap = customMappingSize;
customMappingSize = Segment::maxWidth * Segment::maxHeight; customMappingSize = Segment::maxWidth * Segment::maxHeight;
// fill with empty in case we don't fill the entire matrix uint16_t *customMappingTableCombi = nullptr; //WLEDMM: Idea @Troy#2642
if (loadedLedmap <= 0) //WLEDMM: only if no ledmap
for (size_t i = 0; i< customMappingSize; i++) {
customMappingTable[i] = (uint16_t)-1;
}
uint16_t *customMappingTableLedMap = nullptr; //WLEDMM: Idea @Troy#2642
if (loadedLedmap > 0) if (loadedLedmap > 0)
customMappingTableLedMap = new uint16_t[customMappingSize]; customMappingTableCombi = new uint16_t[customMappingSize];
uint16_t x, y, pix=0; //pixel uint16_t x, y, pix=0; //pixel
for (size_t pan = 0; pan < panel.size(); pan++) { for (size_t pan = 0; pan < panel.size(); pan++) {
@@ -98,23 +93,28 @@ void WS2812FX::setUpMatrix(bool reset) {
y = (p.vertical?p.rightStart:p.bottomStart) ? v-j-1 : j; y = (p.vertical?p.rightStart:p.bottomStart) ? v-j-1 : j;
x = (p.vertical?p.bottomStart:p.rightStart) ? h-i-1 : i; x = (p.vertical?p.bottomStart:p.rightStart) ? h-i-1 : i;
x = p.serpentine && j%2 ? h-x-1 : x; x = p.serpentine && j%2 ? h-x-1 : x;
if (loadedLedmap > 0) uint16_t index = (p.yOffset + (p.vertical?x:y)) * Segment::maxWidth + p.xOffset + (p.vertical?y:x);
customMappingTableLedMap[customMappingTable[(p.yOffset + (p.vertical?x:y)) * Segment::maxWidth + p.xOffset + (p.vertical?y:x)]] = pix; //WLEDMM: allow for 2 transitions if reset = false (ledmap and logical to physical) if (loadedLedmap > 0) {
if (index < customMappingSizeLedmap)
customMappingTableCombi[customMappingTable[index]] = pix; //WLEDMM: allow for 2 transitions if reset = false (ledmap and logical to physical)
else
customMappingTableCombi[index] = pix;
}
else else
customMappingTable[(p.yOffset + (p.vertical?x:y)) * Segment::maxWidth + p.xOffset + (p.vertical?y:x)] = pix; //WLEDMM: allow for 2 transitions if reset = false (ledmap and logical to physical) customMappingTable[index] = pix;
} }
} }
} }
if (loadedLedmap > 0) { if (loadedLedmap > 0) {
for (size_t i = 0; i < customMappingSize; i++) { for (size_t i = 0; i < customMappingSize; i++) {
customMappingTable[i] = customMappingTableLedMap[i]; customMappingTable[i] = customMappingTableCombi[i];
} }
delete[] customMappingTableLedMap; delete[] customMappingTableCombi;
} }
#ifdef WLED_DEBUG #ifdef WLED_DEBUG
DEBUG_PRINT(F("Matrix ledmap:")); DEBUG_PRINTF("Matrix ledmap: %d\n", loadedLedmap);
for (uint16_t i=0; i<customMappingSize; i++) { for (uint16_t i=0; i<customMappingSize; i++) {
if (!(i%Segment::maxWidth)) DEBUG_PRINTLN(); if (!(i%Segment::maxWidth)) DEBUG_PRINTLN();
DEBUG_PRINTF("%4d,", customMappingTable[i]); DEBUG_PRINTF("%4d,", customMappingTable[i]);

View File

@@ -1930,7 +1930,7 @@ void WS2812FX::deserializeMap(uint8_t n) {
customMappingSize = 0; customMappingSize = 0;
delete[] customMappingTable; delete[] customMappingTable;
customMappingTable = nullptr; customMappingTable = nullptr;
loadedLedmap = -1; loadedLedmap = 0;
} }
} }
return; return;
@@ -1951,7 +1951,7 @@ void WS2812FX::deserializeMap(uint8_t n) {
customMappingSize = 0; customMappingSize = 0;
delete[] customMappingTable; delete[] customMappingTable;
customMappingTable = nullptr; customMappingTable = nullptr;
loadedLedmap = -1; loadedLedmap = 0;
} }
JsonArray map = doc[F("map")]; JsonArray map = doc[F("map")];
@@ -1959,15 +1959,27 @@ void WS2812FX::deserializeMap(uint8_t n) {
//WLEDMM: if isMatrix then customMap size is whole matrix //WLEDMM: if isMatrix then customMap size is whole matrix
#ifndef WLED_DISABLE_2D #ifndef WLED_DISABLE_2D
if (isMatrix) if (isMatrix)
customMappingSize = Segment::maxWidth * Segment::maxHeight; customMappingSize = Segment::maxWidth * Segment::maxHeight; //as whole matrix will be stored in setUpMatrix
else else
#endif #endif
customMappingSize = map.size(); customMappingSize = map.size();
customMappingTable = new uint16_t[customMappingSize]; customMappingTable = new uint16_t[customMappingSize];
for (uint16_t i=0; i<MIN(map.size(),customMappingSize); i++) { for (uint16_t i=0; i<customMappingSize; i++) {
customMappingTable[i] = (uint16_t) (map[i]<0 ? 0xFFFFU : map[i]); if (i<map.size())
customMappingTable[i] = (uint16_t) (map[i]<0 ? 0xFFFFU : map[i]);
else
customMappingTable[i] = (uint16_t) 0xFFFFU; //fill the map entirely
} }
loadedLedmap = n; loadedLedmap = n;
#ifdef WLED_DEBUG
DEBUG_PRINTF("Custom ledmap: %d\n", loadedLedmap);
for (uint16_t i=0; i<customMappingSize; i++) {
if (!(i%Segment::maxWidth)) DEBUG_PRINTLN();
DEBUG_PRINTF("%4d,", customMappingTable[i]);
}
DEBUG_PRINTLN();
#endif
setUpMatrix(false); //WLEDMM: apply logical to physical mapping after the ledmap setUpMatrix(false); //WLEDMM: apply logical to physical mapping after the ledmap
} }
else else

View File

@@ -838,8 +838,8 @@ function populateSegments(s)
gId('segutil2').style.display = (segCount > 1) ? "block":"none"; // rsbtn parent gId('segutil2').style.display = (segCount > 1) ? "block":"none"; // rsbtn parent
if (Array.isArray(li.maps) && li.maps.length>0) { //WLEDMM >0 instead of 1 to show also first ledmap. Attention: WLED AC has isM check, in MM Matrices are supported so do not check on isM if (Array.isArray(li.maps) && li.maps.length>0) { //WLEDMM >0 instead of 1 to show also first ledmap. Attention: WLED AC has isM check, in MM Matrices are supported so do not check on isM
let cont = `Ledmap:&nbsp;<select class="sel-sg" onchange="requestJson({'ledmap':parseInt(this.value)})"><option value="" selected>Unchanged</option>`; let cont = `Ledmap:&nbsp;<select class="sel-sg" onchange="requestJson({'ledmap':parseInt(this.value)})">`; //WLEDMM remove <option value="" selected>Unchanged</option>
for (const k of (li.maps||[])) cont += `<option value="${k}">${k==0?'Default':'ledmap'+k+'.json'}</option>`; for (const k of (li.maps||[])) cont += `<option value="${k}"${(i>0 && li.ledmap==k)?" selected":""}>${k==0?'Default':'ledmap'+k+'.json'}</option>`; //WLEDMM set ledmap selected
cont += "</select></div>"; cont += "</select></div>";
gId("ledmap").innerHTML = cont; gId("ledmap").innerHTML = cont;
gId("ledmap").classList.remove('hide'); gId("ledmap").classList.remove('hide');
@@ -1146,20 +1146,20 @@ function updateLen(s)
if (isM && start >= mw*mh) out += " [strip]"; if (isM && start >= mw*mh) out += " [strip]";
gId(`seg${s}len`).innerHTML = out; gId(`seg${s}len`).innerHTML = out;
if (isM) draw(); //WLEDMM if (isM) drawSegments(); //WLEDMM draw new segment graphic if something changes in a segment
} }
function draw() { //WLEDMM
function drawSegments() {
if (!ctx) { if (!ctx) {
console.log("init", window.innerWidth); console.log("init", window.innerWidth);
//WLEDMM: add canvas, initialize and set UI //WLEDMM: add canvas, initialize and set UI
var canvas = gId("canvas"); var canvas = gId("canvas");
canvas.hidden = false; canvas.hidden = false;
// c.width = window.innerWidth > 800?300:300; //Mobile gets 400, pc 800
// c.height = c.width;
ctx = canvas.getContext('2d'); ctx = canvas.getContext('2d');
} }
ctx.canvas.width = ctx.canvas.parentElement.offsetWidth > 800?800:300; //Mobile and non pc mode gets 300, pc 800
//calc max height and width //calc max height and width
var maxWidth = 0; var maxWidth = 0;
@@ -1185,7 +1185,8 @@ function draw() {
ctx.strokeStyle="yellow"; ctx.strokeStyle="yellow";
ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height); // add space between panels ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height); // add space between panels
var colorArray = ["red", "green", "blue", "magenta", "orange", "yellow"]; var colorArray = [[255,0,0], [0,255,0], [0,0,255], [255,0,255], [255,165,0], [255,255,0]];
// ["red", "green", "blue", "magenta", "orange", "yellow"];
for (let p=0; p<gId("segcont").children.length; p++) { for (let p=0; p<gId("segcont").children.length; p++) {
// console.log(gId("P"+p+"X").value, gId("P"+p+"Y").value, gId("P"+p+"W").value, gId("P"+p+"H").value, gId("P"+p+"B").value, gId("P"+p+"R").value, gId("P"+p+"V").value, gId("P"+p+"S").checked); // console.log(gId("P"+p+"X").value, gId("P"+p+"Y").value, gId("P"+p+"W").value, gId("P"+p+"H").value, gId("P"+p+"B").value, gId("P"+p+"R").value, gId("P"+p+"V").value, gId("P"+p+"S").checked);
@@ -1254,19 +1255,28 @@ function draw() {
let groupLength = grp+spc; let groupLength = grp+spc;
for (let x=0; x<pw; x+=groupLength) //make a string from [x,y,z] adjusted by brightness
for (let y=0; y<ph; y+=groupLength) { function rgbToString(colorRGB, brightness) {
function colorAdjust(color) {return 55+150*color/255*brightness;}
return `rgb(${colorAdjust(colorRGB[0])},${colorAdjust(colorRGB[1])}, ${colorAdjust(colorRGB[2])})`;
}
//draw leds
var counter = 0;
for (let y=0; y<ph; y+=groupLength) {
for (let x=0; x<pw; x+=groupLength) {
for (let j = 0; j < grp; j++) { // grouping vertically for (let j = 0; j < grp; j++) { // grouping vertically
for (let g = 0; g < grp; g++) { // grouping horizontally for (let g = 0; g < grp; g++) { // grouping horizontally
let xX = (x+g), yY = (y+j); let xX = (x+g), yY = (y+j);
// if (xX >= width() || yY >= height()) continue; // we have reached one dimension's end ctx.fillStyle = rgbToString(colorArray[p%colorArray.length], counter/ph/pw);
ctx.fillStyle = colorArray[p%colorArray.length];
ctx.beginPath(); ctx.beginPath();
ctx.arc(topLeftX + ppL/2 + xX*ppL, topLeftY + ppL/2 + yY * ppL, ppL*0.4, 0, 2 * Math.PI); ctx.arc(topLeftX + ppL/2 + xX*ppL, topLeftY + ppL/2 + yY * ppL, ppL*0.4, 0, 2 * Math.PI);
ctx.fill(); ctx.fill();
counter++;
} }
} }
} }
}
ctx.font = '40px Arial'; ctx.font = '40px Arial';
ctx.fillStyle = "orange"; ctx.fillStyle = "orange";
@@ -1280,6 +1290,23 @@ function draw() {
} // for each segment } // for each segment
gId("MD").innerHTML = "☾ W*H=LC: " + maxWidth + " x " + maxHeight + " = " + maxWidth * maxHeight; gId("MD").innerHTML = "☾ W*H=LC: " + maxWidth + " x " + maxHeight + " = " + maxWidth * maxHeight;
//draw the ledmap
if (lastinfo.ledmap>0 && ctx) {
// console.log("Before fetch ledmap ", lastinfo.ledmap);
fetchAndExecute((loc?`http://${locip}`:'.') + "/", "ledmap"+lastinfo.ledmap+".json" , function(text) {
ledmapJson = JSON.parse(text);
var counter = 0;
for (let i=0;i<ledmapJson["map"].length;i++) {
ctx.font = parseInt(ppL/3) + 'px Arial';
ctx.fillStyle = "white";
x = ledmapJson["map"][i]%maxWidth;
y = parseInt(ledmapJson["map"][i]/maxWidth);
ctx.fillText(counter, topLeftX + ppL/2 + x*ppL-ppL*0.3, topLeftY + ppL/2 + y * ppL);
counter++;
}
});
}
} }
// updates background color of currently selected preset // updates background color of currently selected preset
@@ -2802,7 +2829,36 @@ function genPresets()
} }
//WLEDMM: utility function to save file to FS //WLEDMM: utility function to load contents of file from FS (used in draw)
function fetchAndExecute(url, name, callback)
{
fetch
(url+name, {
method: 'get'
})
.then(res => {
if (!res.ok) {
showToast("File " + name + " not found", true);
return "";
}
console.log("res", res);
return res.text();
})
.then(text => {
console.log("text", text);
callback(text);
})
.catch(function (error) {
showToast("Error getting " + name, true);
console.log(error);
})
.finally(() => {
console.log("finally");
// if (callback) setTimeout(callback,99);
});
}
//WLEDMM: utility function to save file to FS (used in savePresetsGen)
function uploadFileWithText(name, text) function uploadFileWithText(name, text)
{ {
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
@@ -3086,6 +3142,9 @@ function togglePcMode(fromB = false)
sCol('--bh', gId('bot').clientHeight + "px"); sCol('--bh', gId('bot').clientHeight + "px");
_C.style.width = (pcMode)?'100%':'400%'; _C.style.width = (pcMode)?'100%':'400%';
lastw = wW; lastw = wW;
//WLEDMM
gId("canvas").width = gId("canvas").parentElement.offsetWidth > 800?800:300; //WLEDMM Mobile and non pc mode gets 300, pc 800
drawSegments(); //WLEDMM
} }
function mergeDeep(target, ...sources) function mergeDeep(target, ...sources)

View File

@@ -50,8 +50,9 @@
let lOf = Math.floor((c.width - pPL*mW)/2); //left offeset (to center matrix) let lOf = Math.floor((c.width - pPL*mW)/2); //left offeset (to center matrix)
var i = 6; var i = 6;
ctx.clearRect(0, 0, c.width, c.height); //WLEDMM ctx.clearRect(0, 0, c.width, c.height); //WLEDMM
function colorAdjust(color) {return 55+150*color/255;} //WLEDMM in range 55 - 205
for (y=0.5;y<mH;y++) for (x=0.5; x<mW; x++) { for (y=0.5;y<mH;y++) for (x=0.5; x<mW; x++) {
ctx.fillStyle = `rgb(${leds[i]},${leds[i+1]},${leds[i+2]})`; ctx.fillStyle = `rgb(${colorAdjust(leds[i])},${colorAdjust(leds[i+1])},${colorAdjust(leds[i+2])})`;
ctx.beginPath(); ctx.beginPath();
ctx.arc(x*pPL+lOf, y*pPL, pPL*0.4, 0, 2 * Math.PI); ctx.arc(x*pPL+lOf, y*pPL, pPL*0.4, 0, 2 * Math.PI);
ctx.fill(); ctx.fill();

View File

@@ -29,6 +29,7 @@
UI(); UI();
Sf.MPC.setAttribute("max",maxPanels); Sf.MPC.setAttribute("max",maxPanels);
baChange(); //WLEDMM: Set Basic or advanced blocks baChange(); //WLEDMM: Set Basic or advanced blocks
fieldChange(); //WLEDMM: Show or hide 1st Panel
draw(); //WLEDMM: draw graphics draw(); //WLEDMM: draw graphics
}); });
// error event // error event

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -872,6 +872,7 @@ void serializeInfo(JsonObject root)
default: root[F("e32flashtext")] = F(" (other)"); break; default: root[F("e32flashtext")] = F(" (other)"); break;
} }
#endif #endif
root[F("ledmap")] = loadedLedmap; //WLEDMM ledmaps will be stored in json/info
// end WLEDMM // end WLEDMM
root[F("uptime")] = millis()/1000 + rolloverMillis*4294967; root[F("uptime")] = millis()/1000 + rolloverMillis*4294967;

View File

@@ -8,7 +8,7 @@
*/ */
// version code in format yymmddb (b = daily build) // version code in format yymmddb (b = daily build)
#define VERSION 2302071 #define VERSION 2302100
//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
@@ -682,7 +682,7 @@ WLED_GLOBAL WS2812FX strip _INIT(WS2812FX());
WLED_GLOBAL BusConfig* busConfigs[WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES] _INIT({nullptr}); //temporary, to remember values from network callback until after WLED_GLOBAL BusConfig* busConfigs[WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES] _INIT({nullptr}); //temporary, to remember values from network callback until after
WLED_GLOBAL bool doInitBusses _INIT(false); WLED_GLOBAL bool doInitBusses _INIT(false);
WLED_GLOBAL int8_t loadLedmap _INIT(-1); WLED_GLOBAL int8_t loadLedmap _INIT(-1);
WLED_GLOBAL int8_t loadedLedmap _INIT(-1); WLED_GLOBAL uint8_t loadedLedmap _INIT(0); //WLEDMM default 0
WLED_GLOBAL uint16_t ledMaps _INIT(0); // bitfield representation of available ledmaps WLED_GLOBAL uint16_t ledMaps _INIT(0); // bitfield representation of available ledmaps
// Usermod manager // Usermod manager