Merge remote-tracking branch 'origin/0_15' into pr/3580

This commit is contained in:
Christian Schwinne 2024-01-14 15:08:13 +01:00
commit 0a66fe196a
28 changed files with 754 additions and 8828 deletions

View File

@ -39,6 +39,11 @@ jobs:
environment: ${{ fromJSON(needs.get_default_envs.outputs.environments) }}
steps:
- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v4
with:
cache: 'npm'
- run: npm install
- name: Cache pip
uses: actions/cache@v3
with:

4
.gitignore vendored
View File

@ -2,7 +2,6 @@
.clang-format
.direnv
.DS_Store
.gitignore
.idea
.pio
.pioenvs
@ -22,5 +21,4 @@ wled-update.sh
/wled00/my_config.h
/wled00/Release
/wled00/wled00.ino.cpp
/tools/cdataCache.json
/wled00/html_*.h

View File

@ -137,6 +137,7 @@ build_flags =
; -D USERMOD_SENSORSTOMQTT
#For ADS1115 sensor uncomment following
; -D USERMOD_ADS1115
; -D USERMOD_ANIMARTRIX
build_unflags =
@ -201,6 +202,9 @@ lib_deps =
; adafruit/Adafruit ADS1X15 @ 2.4.0
#For MPU6050 IMU uncomment follwoing
; electroniccats/MPU6050 @1.0.1
# For -D USERMOD_ANIMARTRIX
# CC BY-NC 3.0 licensed effects by Stefan Petrick, include this usermod only if you accept the terms!
; https://github.com/netmindz/animartrix.git#18bf17389e57c69f11bc8d04ebe1d215422c7fb7
extra_scripts = ${scripts_defaults.extra_scripts}

View File

@ -16,42 +16,14 @@
*/
const fs = require("fs");
const path = require('path');
const inliner = require("inliner");
const zlib = require("zlib");
const CleanCSS = require("clean-css");
const MinifyHTML = require("html-minifier-terser").minify;
const packageJson = require("../package.json");
const CACHE_FILE = __dirname + "/cdataCache.json";
const cache = loadCache();
cache.version = 1;
function loadCache() {
try {
return JSON.parse(fs.readFileSync(CACHE_FILE));
} catch (e) {
return {};
}
}
function saveCache(file) {
const stat = fs.statSync(file);
cache[file] = {
mtime: stat.mtimeMs,
size: stat.size,
};
fs.writeFileSync(CACHE_FILE, JSON.stringify(cache));
}
function isCached(file) {
// If command line argument is set, always rebuild
if (process.argv[2] == "--force" || process.argv[2] == "-f") {
return false;
}
const stat = fs.statSync(file);
const cached = cache[file];
return cached && cached.mtime == stat.mtimeMs && cached.size == stat.size;
}
const output = ["wled00/html_ui.h", "wled00/html_pixart.h", "wled00/html_cpal.h", "wled00/html_pxmagic.h", "wled00/html_settings.h", "wled00/html_other.h"]
/**
*
@ -141,10 +113,6 @@ function filter(str, type) {
}
function writeHtmlGzipped(sourceFile, resultFile, page) {
if (isCached(sourceFile)) {
console.info(`Skipping ${resultFile} as it is cached`);
return;
}
console.info("Reading " + sourceFile);
new inliner(sourceFile, function (error, html) {
console.info("Inlined " + html.length + " characters");
@ -181,7 +149,6 @@ ${array}
`;
console.info("Writing " + resultFile);
fs.writeFileSync(resultFile, src);
saveCache(sourceFile);
});
});
}
@ -232,11 +199,6 @@ ${result}
}
function writeChunks(srcDir, specs, resultFile) {
if (specs.every(s => isCached(srcDir + "/" + s.file))) {
console.info(`Skipping ${resultFile} as all files are cached`);
return;
}
let src = `/*
* More web UI HTML source arrays.
* This file is auto generated, please don't make any changes manually.
@ -249,7 +211,6 @@ function writeChunks(srcDir, specs, resultFile) {
try {
console.info("Reading " + file + " as " + s.name);
src += specToChunk(srcDir, s);
saveCache(file);
} catch (e) {
console.warn(
"Failed " + s.name + " from " + file,
@ -261,6 +222,52 @@ function writeChunks(srcDir, specs, resultFile) {
fs.writeFileSync(resultFile, src);
}
// Check if a file is newer than a given time
function isFileNewerThan(filePath, time) {
try {
const stats = fs.statSync(filePath);
return stats.mtimeMs > time;
} catch (e) {
console.error(`Failed to get stats for file ${filePath}:`, e);
return false;
}
}
// Check if any file in a folder (or its subfolders) is newer than a given time
function isAnyFileInFolderNewerThan(folderPath, time) {
const files = fs.readdirSync(folderPath, { withFileTypes: true });
for (const file of files) {
const filePath = path.join(folderPath, file.name);
if (isFileNewerThan(filePath, time)) {
return true;
}
if (file.isDirectory() && isAnyFileInFolderNewerThan(filePath, time)) {
return true;
}
}
return false;
}
function isAlreadyBuilt(folderPath) {
let lastBuildTime = Infinity;
for (const file of output) {
try {
lastBuildTime = Math.min(lastBuildTime, fs.statSync(file).mtimeMs);
}
catch (e) {
return false;
}
}
return !isAnyFileInFolderNewerThan(folderPath, lastBuildTime);
}
if (isAlreadyBuilt("wled00/data") && process.argv[2] !== '--force' && process.argv[2] !== '-f') {
console.info("Web UI is already built");
return;
}
writeHtmlGzipped("wled00/data/index.htm", "wled00/html_ui.h", 'index');
writeHtmlGzipped("wled00/data/pixart/pixart.htm", "wled00/html_pixart.h", 'pixart');
writeHtmlGzipped("wled00/data/cpal/cpal.htm", "wled00/html_cpal.h", 'cpal');

View File

@ -0,0 +1,14 @@
# ANIMartRIX
Addes the effects from ANIMartRIX to WLED
CC BY-NC 3.0 licensed effects by Stefan Petrick, include this usermod only if you accept the terms!
## Installation
Please uncomment the two references to ANIMartRIX in your platform.ini
lib_dep to a version of https://github.com/netmindz/animartrix.git
and the build_flags -D USERMOD_ANIMARTRIX

View File

@ -0,0 +1,456 @@
#pragma once
#include "wled.h"
#include <ANIMartRIX.h>
#warning WLED usermod: CC BY-NC 3.0 licensed effects by Stefan Petrick, include this usermod only if you accept the terms!
//========================================================================================================================
static const char _data_FX_mode_Module_Experiment10[] PROGMEM = "Z💡Module_Experiment10@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment9[] PROGMEM = "Z💡Module_Experiment9@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment8[] PROGMEM = "Z💡Module_Experiment8@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment7[] PROGMEM = "Z💡Module_Experiment7@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment6[] PROGMEM = "Z💡Module_Experiment6@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment5[] PROGMEM = "Z💡Module_Experiment5@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment4[] PROGMEM = "Z💡Module_Experiment4@Speed;;1;2";
static const char _data_FX_mode_Zoom2[] PROGMEM = "Z💡Zoom2@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment3[] PROGMEM = "Z💡Module_Experiment3@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment2[] PROGMEM = "Z💡Module_Experiment2@Speed;;1;2";
static const char _data_FX_mode_Module_Experiment1[] PROGMEM = "Z💡Module_Experiment1@Speed;;1;2";
static const char _data_FX_mode_Parametric_Water[] PROGMEM = "Z💡Parametric_Water@Speed;;1;2";
static const char _data_FX_mode_Water[] PROGMEM = "Z💡Water@Speed;;1;2";
static const char _data_FX_mode_Complex_Kaleido_6[] PROGMEM = "Z💡Complex_Kaleido_6@Speed;;1;2";
static const char _data_FX_mode_Complex_Kaleido_5[] PROGMEM = "Z💡Complex_Kaleido_5@Speed;;1;2";
static const char _data_FX_mode_Complex_Kaleido_4[] PROGMEM = "Z💡Complex_Kaleido_4@Speed;;1;2";
static const char _data_FX_mode_Complex_Kaleido_3[] PROGMEM = "Z💡Complex_Kaleido_3@Speed;;1;2";
static const char _data_FX_mode_Complex_Kaleido_2[] PROGMEM = "Z💡Complex_Kaleido_2@Speed;;1;2";
static const char _data_FX_mode_Complex_Kaleido[] PROGMEM = "Z💡Complex_Kaleido@Speed;;1;2";
static const char _data_FX_mode_SM10[] PROGMEM = "Z💡SM10@Speed;;1;2";
static const char _data_FX_mode_SM9[] PROGMEM = "Z💡SM9@Speed;;1;2";
static const char _data_FX_mode_SM8[] PROGMEM = "Z💡SM8@Speed;;1;2";
static const char _data_FX_mode_SM7[] PROGMEM = "Z💡SM7@Speed;;1;2";
static const char _data_FX_mode_SM6[] PROGMEM = "Z💡SM6@Speed;;1;2";
static const char _data_FX_mode_SM5[] PROGMEM = "Z💡SM5@Speed;;1;2";
static const char _data_FX_mode_SM4[] PROGMEM = "Z💡SM4@Speed;;1;2";
static const char _data_FX_mode_SM3[] PROGMEM = "Z💡SM3@Speed;;1;2";
static const char _data_FX_mode_SM2[] PROGMEM = "Z💡SM2@Speed;;1;2";
static const char _data_FX_mode_SM1[] PROGMEM = "Z💡SM1@Speed;;1;2";
static const char _data_FX_mode_Big_Caleido[] PROGMEM = "Z💡Big_Caleido@Speed;;1;2";
static const char _data_FX_mode_RGB_Blobs5[] PROGMEM = "Z💡RGB_Blobs5@Speed;;1;2";
static const char _data_FX_mode_RGB_Blobs4[] PROGMEM = "Z💡RGB_Blobs4@Speed;;1;2";
static const char _data_FX_mode_RGB_Blobs3[] PROGMEM = "Z💡RGB_Blobs3@Speed;;1;2";
static const char _data_FX_mode_RGB_Blobs2[] PROGMEM = "Z💡RGB_Blobs2@Speed;;1;2";
static const char _data_FX_mode_RGB_Blobs[] PROGMEM = "Z💡RGB_Blobs@Speed;;1;2";
static const char _data_FX_mode_Polar_Waves[] PROGMEM = "Z💡Polar_Waves@Speed;;1;2";
static const char _data_FX_mode_Slow_Fade[] PROGMEM = "Z💡Slow_Fade@Speed;;1;2";
static const char _data_FX_mode_Zoom[] PROGMEM = "Z💡Zoom@Speed;;1;2";
static const char _data_FX_mode_Hot_Blob[] PROGMEM = "Z💡Hot_Blob@Speed;;1;2";
static const char _data_FX_mode_Spiralus2[] PROGMEM = "Z💡Spiralus2@Speed;;1;2";
static const char _data_FX_mode_Spiralus[] PROGMEM = "Z💡Spiralus@Speed;;1;2";
static const char _data_FX_mode_Yves[] PROGMEM = "Z💡Yves@Speed;;1;2";
static const char _data_FX_mode_Scaledemo1[] PROGMEM = "Z💡Scaledemo1@Speed;;1;2";
static const char _data_FX_mode_Lava1[] PROGMEM = "Z💡Lava1@Speed;;1;2";
static const char _data_FX_mode_Caleido3[] PROGMEM = "Z💡Caleido3@Speed;;1;2";
static const char _data_FX_mode_Caleido2[] PROGMEM = "Z💡Caleido2@Speed;;1;2";
static const char _data_FX_mode_Caleido1[] PROGMEM = "Z💡Caleido1@Speed;;1;2";
static const char _data_FX_mode_Distance_Experiment[] PROGMEM = "Z💡Distance_Experiment@Speed;;1;2";
static const char _data_FX_mode_Center_Field[] PROGMEM = "Z💡Center_Field@Speed;;1;2";
static const char _data_FX_mode_Waves[] PROGMEM = "Z💡Waves@Speed;;1;2";
static const char _data_FX_mode_Chasing_Spirals[] PROGMEM = "Z💡Chasing_Spirals@Speed;;1;2";
static const char _data_FX_mode_Rotating_Blob[] PROGMEM = "Z💡Rotating_Blob@Speed;;1;2";
class ANIMartRIXMod:public ANIMartRIX {
public:
void initEffect() {
if (SEGENV.call == 0) {
init(SEGMENT.virtualWidth(), SEGMENT.virtualHeight(), false);
}
float speedFactor = 1.0;
if (SEGMENT.speed < 128) {
speedFactor = (float) map(SEGMENT.speed, 0, 127, 1, 10) / 10.0f;
}
else{
speedFactor = map(SEGMENT.speed, 128, 255, 10, 100) / 10;
}
setSpeedFactor(speedFactor);
}
void setPixelColor(int x, int y, rgb pixel) {
SEGMENT.setPixelColorXY(x, y, CRGB(pixel.red, pixel.green, pixel.blue));
}
void setPixelColor(int index, rgb pixel) {
SEGMENT.setPixelColor(index, CRGB(pixel.red, pixel.green, pixel.blue));
}
// Add any extra custom effects not part of the ANIMartRIX libary here
};
ANIMartRIXMod anim;
uint16_t mode_Module_Experiment10() {
anim.initEffect();
anim.Module_Experiment10();
return FRAMETIME;
}
uint16_t mode_Module_Experiment9() {
anim.initEffect();
anim.Module_Experiment9();
return FRAMETIME;
}
uint16_t mode_Module_Experiment8() {
anim.initEffect();
anim.Module_Experiment8();
return FRAMETIME;
}
uint16_t mode_Module_Experiment7() {
anim.initEffect();
anim.Module_Experiment7();
return FRAMETIME;
}
uint16_t mode_Module_Experiment6() {
anim.initEffect();
anim.Module_Experiment6();
return FRAMETIME;
}
uint16_t mode_Module_Experiment5() {
anim.initEffect();
anim.Module_Experiment5();
return FRAMETIME;
}
uint16_t mode_Module_Experiment4() {
anim.initEffect();
anim.Module_Experiment4();
return FRAMETIME;
}
uint16_t mode_Zoom2() {
anim.initEffect();
anim.Zoom2();
return FRAMETIME;
}
uint16_t mode_Module_Experiment3() {
anim.initEffect();
anim.Module_Experiment3();
return FRAMETIME;
}
uint16_t mode_Module_Experiment2() {
anim.initEffect();
anim.Module_Experiment2();
return FRAMETIME;
}
uint16_t mode_Module_Experiment1() {
anim.initEffect();
anim.Module_Experiment1();
return FRAMETIME;
}
uint16_t mode_Parametric_Water() {
anim.initEffect();
anim.Parametric_Water();
return FRAMETIME;
}
uint16_t mode_Water() {
anim.initEffect();
anim.Water();
return FRAMETIME;
}
uint16_t mode_Complex_Kaleido_6() {
anim.initEffect();
anim.Complex_Kaleido_6();
return FRAMETIME;
}
uint16_t mode_Complex_Kaleido_5() {
anim.initEffect();
anim.Complex_Kaleido_5();
return FRAMETIME;
}
uint16_t mode_Complex_Kaleido_4() {
anim.initEffect();
anim.Complex_Kaleido_4();
return FRAMETIME;
}
uint16_t mode_Complex_Kaleido_3() {
anim.initEffect();
anim.Complex_Kaleido_3();
return FRAMETIME;
}
uint16_t mode_Complex_Kaleido_2() {
anim.initEffect();
anim.Complex_Kaleido_2();
return FRAMETIME;
}
uint16_t mode_Complex_Kaleido() {
anim.initEffect();
anim.Complex_Kaleido();
return FRAMETIME;
}
uint16_t mode_SM10() {
anim.initEffect();
anim.SM10();
return FRAMETIME;
}
uint16_t mode_SM9() {
anim.initEffect();
anim.SM9();
return FRAMETIME;
}
uint16_t mode_SM8() {
anim.initEffect();
anim.SM8();
return FRAMETIME;
}
// uint16_t mode_SM7() {
// anim.initEffect();
// anim.SM7();
//
// return FRAMETIME;
// }
uint16_t mode_SM6() {
anim.initEffect();
anim.SM6();
return FRAMETIME;
}
uint16_t mode_SM5() {
anim.initEffect();
anim.SM5();
return FRAMETIME;
}
uint16_t mode_SM4() {
anim.initEffect();
anim.SM4();
return FRAMETIME;
}
uint16_t mode_SM3() {
anim.initEffect();
anim.SM3();
return FRAMETIME;
}
uint16_t mode_SM2() {
anim.initEffect();
anim.SM2();
return FRAMETIME;
}
uint16_t mode_SM1() {
anim.initEffect();
anim.SM1();
return FRAMETIME;
}
uint16_t mode_Big_Caleido() {
anim.initEffect();
anim.Big_Caleido();
return FRAMETIME;
}
uint16_t mode_RGB_Blobs5() {
anim.initEffect();
anim.RGB_Blobs5();
return FRAMETIME;
}
uint16_t mode_RGB_Blobs4() {
anim.initEffect();
anim.RGB_Blobs4();
return FRAMETIME;
}
uint16_t mode_RGB_Blobs3() {
anim.initEffect();
anim.RGB_Blobs3();
return FRAMETIME;
}
uint16_t mode_RGB_Blobs2() {
anim.initEffect();
anim.RGB_Blobs2();
return FRAMETIME;
}
uint16_t mode_RGB_Blobs() {
anim.initEffect();
anim.RGB_Blobs();
return FRAMETIME;
}
uint16_t mode_Polar_Waves() {
anim.initEffect();
anim.Polar_Waves();
return FRAMETIME;
}
uint16_t mode_Slow_Fade() {
anim.initEffect();
anim.Slow_Fade();
return FRAMETIME;
}
uint16_t mode_Zoom() {
anim.initEffect();
anim.Zoom();
return FRAMETIME;
}
uint16_t mode_Hot_Blob() {
anim.initEffect();
anim.Hot_Blob();
return FRAMETIME;
}
uint16_t mode_Spiralus2() {
anim.initEffect();
anim.Spiralus2();
return FRAMETIME;
}
uint16_t mode_Spiralus() {
anim.initEffect();
anim.Spiralus();
return FRAMETIME;
}
uint16_t mode_Yves() {
anim.initEffect();
anim.Yves();
return FRAMETIME;
}
uint16_t mode_Scaledemo1() {
anim.initEffect();
anim.Scaledemo1();
return FRAMETIME;
}
uint16_t mode_Lava1() {
anim.initEffect();
anim.Lava1();
return FRAMETIME;
}
uint16_t mode_Caleido3() {
anim.initEffect();
anim.Caleido3();
return FRAMETIME;
}
uint16_t mode_Caleido2() {
anim.initEffect();
anim.Caleido2();
return FRAMETIME;
}
uint16_t mode_Caleido1() {
anim.initEffect();
anim.Caleido1();
return FRAMETIME;
}
uint16_t mode_Distance_Experiment() {
anim.initEffect();
anim.Distance_Experiment();
return FRAMETIME;
}
uint16_t mode_Center_Field() {
anim.initEffect();
anim.Center_Field();
return FRAMETIME;
}
uint16_t mode_Waves() {
anim.initEffect();
anim.Waves();
return FRAMETIME;
}
uint16_t mode_Chasing_Spirals() {
anim.initEffect();
anim.Chasing_Spirals();
return FRAMETIME;
}
uint16_t mode_Rotating_Blob() {
anim.initEffect();
anim.Rotating_Blob();
return FRAMETIME;
}
class AnimartrixUsermod : public Usermod {
protected:
bool enabled = false; //WLEDMM
const char *_name; //WLEDMM
bool initDone = false; //WLEDMM
unsigned long lastTime = 0; //WLEDMM
public:
AnimartrixUsermod(const char *name, bool enabled) {
this->_name = name;
this->enabled = enabled;
} //WLEDMM
void setup() {
strip.addEffect(255, &mode_Module_Experiment10, _data_FX_mode_Module_Experiment10);
strip.addEffect(255, &mode_Module_Experiment9, _data_FX_mode_Module_Experiment9);
strip.addEffect(255, &mode_Module_Experiment8, _data_FX_mode_Module_Experiment8);
strip.addEffect(255, &mode_Module_Experiment7, _data_FX_mode_Module_Experiment7);
strip.addEffect(255, &mode_Module_Experiment6, _data_FX_mode_Module_Experiment6);
strip.addEffect(255, &mode_Module_Experiment5, _data_FX_mode_Module_Experiment5);
strip.addEffect(255, &mode_Module_Experiment4, _data_FX_mode_Module_Experiment4);
strip.addEffect(255, &mode_Zoom2, _data_FX_mode_Zoom2);
strip.addEffect(255, &mode_Module_Experiment3, _data_FX_mode_Module_Experiment3);
strip.addEffect(255, &mode_Module_Experiment2, _data_FX_mode_Module_Experiment2);
strip.addEffect(255, &mode_Module_Experiment1, _data_FX_mode_Module_Experiment1);
strip.addEffect(255, &mode_Parametric_Water, _data_FX_mode_Parametric_Water);
strip.addEffect(255, &mode_Water, _data_FX_mode_Water);
strip.addEffect(255, &mode_Complex_Kaleido_6, _data_FX_mode_Complex_Kaleido_6);
strip.addEffect(255, &mode_Complex_Kaleido_5, _data_FX_mode_Complex_Kaleido_5);
strip.addEffect(255, &mode_Complex_Kaleido_4, _data_FX_mode_Complex_Kaleido_4);
strip.addEffect(255, &mode_Complex_Kaleido_3, _data_FX_mode_Complex_Kaleido_3);
strip.addEffect(255, &mode_Complex_Kaleido_2, _data_FX_mode_Complex_Kaleido_2);
strip.addEffect(255, &mode_Complex_Kaleido, _data_FX_mode_Complex_Kaleido);
strip.addEffect(255, &mode_SM10, _data_FX_mode_SM10);
strip.addEffect(255, &mode_SM9, _data_FX_mode_SM9);
strip.addEffect(255, &mode_SM8, _data_FX_mode_SM8);
// strip.addEffect(255, &mode_SM7, _data_FX_mode_SM7);
strip.addEffect(255, &mode_SM6, _data_FX_mode_SM6);
strip.addEffect(255, &mode_SM5, _data_FX_mode_SM5);
strip.addEffect(255, &mode_SM4, _data_FX_mode_SM4);
strip.addEffect(255, &mode_SM3, _data_FX_mode_SM3);
strip.addEffect(255, &mode_SM2, _data_FX_mode_SM2);
strip.addEffect(255, &mode_SM1, _data_FX_mode_SM1);
strip.addEffect(255, &mode_Big_Caleido, _data_FX_mode_Big_Caleido);
strip.addEffect(255, &mode_RGB_Blobs5, _data_FX_mode_RGB_Blobs5);
strip.addEffect(255, &mode_RGB_Blobs4, _data_FX_mode_RGB_Blobs4);
strip.addEffect(255, &mode_RGB_Blobs3, _data_FX_mode_RGB_Blobs3);
strip.addEffect(255, &mode_RGB_Blobs2, _data_FX_mode_RGB_Blobs2);
strip.addEffect(255, &mode_RGB_Blobs, _data_FX_mode_RGB_Blobs);
strip.addEffect(255, &mode_Polar_Waves, _data_FX_mode_Polar_Waves);
strip.addEffect(255, &mode_Slow_Fade, _data_FX_mode_Slow_Fade);
strip.addEffect(255, &mode_Zoom, _data_FX_mode_Zoom);
strip.addEffect(255, &mode_Hot_Blob, _data_FX_mode_Hot_Blob);
strip.addEffect(255, &mode_Spiralus2, _data_FX_mode_Spiralus2);
strip.addEffect(255, &mode_Spiralus, _data_FX_mode_Spiralus);
strip.addEffect(255, &mode_Yves, _data_FX_mode_Yves);
strip.addEffect(255, &mode_Scaledemo1, _data_FX_mode_Scaledemo1);
strip.addEffect(255, &mode_Lava1, _data_FX_mode_Lava1);
strip.addEffect(255, &mode_Caleido3, _data_FX_mode_Caleido3);
strip.addEffect(255, &mode_Caleido2, _data_FX_mode_Caleido2);
strip.addEffect(255, &mode_Caleido1, _data_FX_mode_Caleido1);
strip.addEffect(255, &mode_Distance_Experiment, _data_FX_mode_Distance_Experiment);
strip.addEffect(255, &mode_Center_Field, _data_FX_mode_Center_Field);
strip.addEffect(255, &mode_Waves, _data_FX_mode_Waves);
strip.addEffect(255, &mode_Chasing_Spirals, _data_FX_mode_Chasing_Spirals);
strip.addEffect(255, &mode_Rotating_Blob, _data_FX_mode_Rotating_Blob);
initDone = true;
}
void loop() {
if (!enabled || strip.isUpdating()) return;
// do your magic here
if (millis() - lastTime > 1000) {
//USER_PRINTLN("I'm alive!");
lastTime = millis();
}
}
void addToJsonInfo(JsonObject& root)
{
char myStringBuffer[16]; // buffer for snprintf()
JsonObject user = root["u"];
if (user.isNull()) user = root.createNestedObject("u");
JsonArray infoArr = user.createNestedArray(FPSTR(_name));
String uiDomString = F("Animartrix requires the Creative Commons Attribution License CC BY-NC 3.0");
infoArr.add(uiDomString);
}
uint16_t getId()
{
return USERMOD_ID_ANIMARTRIX;
}
};

View File

@ -817,7 +817,8 @@ class WS2812FX { // 96 bytes
uint16_t
getLengthPhysical(void),
getLengthTotal(void), // will include virtual/nonexistent pixels in matrix
getFps();
getFps(),
getMappedPixelIndex(uint16_t index);
inline uint16_t getFrameTime(void) { return _frametime; } // returns amount of time a frame should take (in ms)
inline uint16_t getMinShowDelay(void) { return MIN_SHOW_DELAY; } // returns minimum amount of time strip.service() can be delayed (constant)

View File

@ -886,8 +886,7 @@ void Segment::refreshLightCapabilities() {
if (start < Segment::maxWidth * Segment::maxHeight) {
// we are withing 2D matrix (includes 1D segments)
for (int y = startY; y < stopY; y++) for (int x = start; x < stop; x++) {
uint16_t index = x + Segment::maxWidth * y;
if (index < strip.customMappingSize) index = strip.customMappingTable[index]; // convert logical address to physical
uint16_t index = strip.getMappedPixelIndex(x + Segment::maxWidth * y); // convert logical address to physical
if (index < 0xFFFFU) {
if (segStartIdx > index) segStartIdx = index;
if (segStopIdx < index) segStopIdx = index;
@ -1212,13 +1211,13 @@ void WS2812FX::service() {
}
void IRAM_ATTR WS2812FX::setPixelColor(unsigned i, uint32_t col) {
if (i < customMappingSize) i = customMappingTable[i];
i = getMappedPixelIndex(i);
if (i >= _length) return;
BusManager::setPixelColor(i, col);
}
uint32_t IRAM_ATTR WS2812FX::getPixelColor(uint16_t i) {
if (i < customMappingSize) i = customMappingTable[i];
i = getMappedPixelIndex(i);
if (i >= _length) return 0;
return BusManager::getPixelColor(i);
}
@ -1691,6 +1690,14 @@ bool WS2812FX::deserializeMap(uint8_t n) {
return true;
}
uint16_t IRAM_ATTR WS2812FX::getMappedPixelIndex(uint16_t index) {
// convert logical address to physical
if (index < customMappingSize
&& (realtimeMode == REALTIME_MODE_INACTIVE || realtimeRespectLedMaps)) index = customMappingTable[index];
return index;
}
WS2812FX* WS2812FX::instance = nullptr;

16
wled00/bus_manager.cpp Normal file → Executable file
View File

@ -53,7 +53,8 @@ void ColorOrderMap::add(uint16_t start, uint16_t len, uint8_t colorOrder) {
if (len == 0) {
return;
}
if (colorOrder > COL_ORDER_MAX) {
// upper nibble contains W swap information
if ((colorOrder & 0x0F) > COL_ORDER_MAX) {
return;
}
_mappings[_count].start = start;
@ -63,12 +64,13 @@ void ColorOrderMap::add(uint16_t start, uint16_t len, uint8_t colorOrder) {
}
uint8_t IRAM_ATTR ColorOrderMap::getPixelColorOrder(uint16_t pix, uint8_t defaultColorOrder) const {
if (_count == 0) return defaultColorOrder;
// upper nibble containd W swap information
uint8_t swapW = defaultColorOrder >> 4;
for (unsigned i = 0; i < _count; i++) {
if (pix >= _mappings[i].start && pix < (_mappings[i].start + _mappings[i].len)) {
return _mappings[i].colorOrder | (swapW << 4);
if (_count > 0) {
// upper nibble contains W swap information
// when ColorOrderMap's upper nibble contains value >0 then swap information is used from it, otherwise global swap is used
for (unsigned i = 0; i < _count; i++) {
if (pix >= _mappings[i].start && pix < (_mappings[i].start + _mappings[i].len)) {
return _mappings[i].colorOrder | ((_mappings[i].colorOrder >> 4) ? 0 : (defaultColorOrder & 0xF0));
}
}
}
return defaultColorOrder;

6
wled00/cfg.cpp Normal file → Executable file
View File

@ -417,7 +417,6 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
CJSON(notifyButton, if_sync_send["btn"]);
CJSON(notifyAlexa, if_sync_send["va"]);
CJSON(notifyHue, if_sync_send["hue"]);
// CJSON(notifyMacro, if_sync_send["macro"]);
CJSON(syncGroups, if_sync_send["grp"]);
if (if_sync_send[F("twice")]) udpNumRetries = 1; // import setting from 0.13 and earlier
CJSON(udpNumRetries, if_sync_send["ret"]);
@ -429,6 +428,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
JsonObject if_live = interfaces["live"];
CJSON(receiveDirect, if_live["en"]); // UDP/Hyperion realtime
CJSON(useMainSegmentOnly, if_live[F("mso")]);
CJSON(realtimeRespectLedMaps, if_live[F("rlm")]);
CJSON(e131Port, if_live["port"]); // 5568
if (e131Port == DDP_DEFAULT_PORT) e131Port = E131_DEFAULT_PORT; // prevent double DDP port allocation
CJSON(e131Multicast, if_live[F("mc")]);
@ -695,7 +695,7 @@ void serializeConfig() {
JsonObject wifi = root.createNestedObject("wifi");
wifi[F("sleep")] = !noWifiSleep;
wifi[F("phy")] = (int)force802_3g;
wifi[F("phy")] = force802_3g;
#ifdef WLED_USE_ETHERNET
JsonObject ethernet = root.createNestedObject("eth");
@ -885,7 +885,6 @@ void serializeConfig() {
if_sync_send["btn"] = notifyButton;
if_sync_send["va"] = notifyAlexa;
if_sync_send["hue"] = notifyHue;
// if_sync_send["macro"] = notifyMacro;
if_sync_send["grp"] = syncGroups;
if_sync_send["ret"] = udpNumRetries;
@ -896,6 +895,7 @@ void serializeConfig() {
JsonObject if_live = interfaces.createNestedObject("live");
if_live["en"] = receiveDirect; // UDP/Hyperion realtime
if_live[F("mso")] = useMainSegmentOnly;
if_live[F("rlm")] = realtimeRespectLedMaps;
if_live["port"] = e131Port;
if_live[F("mc")] = e131Multicast;

View File

@ -150,6 +150,7 @@
#define USERMOD_ID_KLIPPER 40 //Usermod Klipper percentage
#define USERMOD_ID_WIREGUARD 41 //Usermod "wireguard.h"
#define USERMOD_ID_INTERNAL_TEMPERATURE 42 //Usermod "usermod_internal_temperature.h"
#define USERMOD_ID_ANIMARTRIX 44 //Usermod "usermod_v2_animartrix.h"
//Access point behavior
#define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot
@ -257,10 +258,11 @@
#define TYPE_NET_ARTNET_RGB 82 //network ArtNet RGB bus (master broadcast bus, unused)
#define TYPE_NET_DDP_RGBW 88 //network DDP RGBW bus (master broadcast bus)
#define IS_DIGITAL(t) ((t) & 0x10) //digital are 16-31 and 48-63
#define IS_PWM(t) ((t) > 40 && (t) < 46)
#define NUM_PWM_PINS(t) ((t) - 40) //for analog PWM 41-45 only
#define IS_DIGITAL(t) ((t) < 80 && ((t) & 0x10)) //digital are 16-31 and 48-63
#define IS_PWM(t) ((t) > 40 && (t) < 46)
#define NUM_PWM_PINS(t) ((t) - 40) //for analog PWM 41-45 only
#define IS_2PIN(t) ((t) > 47)
#define IS_VIRTUAL(t) ((t) >= 80)
//Color orders
#define COL_ORDER_GRB 0 //GRB(w),defaut

View File

@ -201,6 +201,7 @@
var gradientLength = rect.width;
var mOffs = Math.round((gradientLength / 256) / 2) - 5;
var paletteArray = []; //Holds the palettes after load.
var paletteName = []; // Holds the names of the palettes after load.
var svgSave = '<svg style="width:25px;height:25px" viewBox="0 0 24 24"><path fill=#fff d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z"/></svg>'
var svgEdit = '<svg style="width:25px;height:25px" viewBox="0 0 24 24"><path fill=#fff d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z"/></svg>'
@ -520,8 +521,10 @@
if (hst.length > 0 ) {
try {
var arr = [];
const response = await fetch('http://'+hst+'/json/info');
const json = await response.json();
const responseInfo = await fetch('http://'+hst+'/json/info');
const responsePalettes = await fetch('http://'+hst+'/json/palettes');
const json = await responseInfo.json();
paletteName = await responsePalettes.json();
cpalc = json.cpalcount;
fetchPalettes(cpalc-1);
} catch (error) {
@ -541,6 +544,7 @@
const json = await response.json();
paletteArray.push(json);
} catch (error) {
cpalc--; //remove audio/dynamically generated palettes
console.error(`Error fetching JSON from ${url}: `, error);
}
}
@ -560,6 +564,7 @@
alert("The cache of palettes are missig from your browser. You should probably return to the main page and let it load properly for the palettes cache to regenerate before returning here.","Missing cached palettes!")
} else {
for (const key in wledPalx.p) {
wledPalx.p[key].name = paletteName[key];
if (key > 245) {
delete wledPalx.p[key];
continue;
@ -591,8 +596,11 @@
}
const pArray = Object.entries(wledPalx.p).map(([key, value]) => ({
[key]: value.flat()
[key]: value.flat(),
name: value.name
}));
// Sort pArray by name
pArray.sort((a, b) => a.name.localeCompare(b.name));
paletteArray.push( ...pArray);
}
@ -634,6 +642,9 @@
editSpan.id = `editSpan${i}`;
editSpan.onclick = function() {loadForEdit(i)};
editSpan.setAttribute('title', `Copy slot ${i} palette to editor`);
if (paletteArray[i].name) {
editSpan.setAttribute('title', `Copy ${paletteArray[i].name} palette to editor`);
}
editSpan.innerHTML = svgEdit;
editSpan.classList.add("editSpan")

View File

@ -6,23 +6,33 @@
<meta name="theme-color" content="#222222">
<title>WLED Live Preview</title>
<style>
body {
margin: 0;
}
#canv {
background: black;
filter: brightness(175%);
width: 100%;
height: 100%;
position: absolute;
}
body {
margin: 0;
}
#canv {
background: black;
filter: brightness(175%);
width: 100%;
height: 100%;
position: absolute;
}
</style>
<script>
var d = document;
var ws;
var tmout = null;
function update() // via HTTP (/json/live)
{
if (document.hidden) {
var c;
var ctx;
function draw(start, skip, leds, fill) {
c.width = d.documentElement.clientWidth;
let w = (c.width * skip) / (leds.length - start);
for (let i = start; i < leds.length; i += skip) {
ctx.fillStyle = fill(leds,i);
ctx.fillRect(Math.round((i - start) * w / skip), 0, Math.ceil(w), c.height);
}
}
function update() { // via HTTP (/json/live)
if (d.hidden) {
clearTimeout(tmout);
tmout = setTimeout(update, 250);
return;
@ -36,27 +46,20 @@
return res.json();
})
.then(json => {
var str = "linear-gradient(90deg,";
var len = json.leds.length;
for (i = 0; i < len; i++) {
var leddata = json.leds[i];
if (leddata.length > 6) leddata = leddata.substring(2);
str += "#" + leddata;
if (i < len -1) str += ","
}
str += ")";
document.getElementById("canv").style.background = str;
draw(0, 1, json.leds, (a,i) => "#" + ((a[i].length > 6) ? a[i].substring(2) : a[i]));
clearTimeout(tmout);
tmout = setTimeout(update, 40);
})
.catch(function (error) {
.catch((error)=>{
//console.error("Peek HTTP error:",error);
clearTimeout(tmout);
tmout = setTimeout(update, 2500);
})
}
function S() { // Startup function (onload)
let wsOn = (window.location.href.indexOf("?ws") > 0);
if (!wsOn) {update(); return;}
c = d.getElementById('canv');
ctx = c.getContext('2d');
if (window.location.href.indexOf("?ws") == -1) {update(); return;}
// Initialize WebSocket connection
try {
@ -86,15 +89,8 @@
if (toString.call(e.data) === '[object ArrayBuffer]') {
let leds = new Uint8Array(event.data);
if (leds[0] != 76) return; //'L'
let str = "linear-gradient(90deg,";
let len = leds.length;
let start = leds[1]==2 ? 4 : 2; // 1 = 1D, 2 = 1D/2D (leds[2]=w, leds[3]=h)
for (i = start; i < len; i+=3) {
str += `rgb(${leds[i]},${leds[i+1]},${leds[i+2]})`;
if (i < len -3) str += ","
}
str += ")";
document.getElementById("canv").style.background = str;
// leds[1] = 1: 1D; leds[1] = 2: 1D/2D (leds[2]=w, leds[3]=h)
draw(leds[1]==2 ? 4 : 2, 3, leds, (a,i) => `rgb(${a[i]},${a[i+1]},${a[i+2]})`);
}
} catch (err) {
console.error("Peek WS error:",err);
@ -104,6 +100,6 @@
</script>
</head>
<body onload="S()">
<div id="canv"></div>
<canvas id="canv"></canvas>
</body>
</html>
</html>

76
wled00/data/settings_leds.htm Normal file → Executable file
View File

@ -16,6 +16,11 @@
function B(){window.open(getURL("/settings"),"_self");}
function gId(n){return d.getElementById(n);}
function off(n){d.getElementsByName(n)[0].value = -1;}
function isPWM(t) { return t > 40 && t < 46; } // is PWM type
function isAna(t) { return t == 40 || isPWM(t); } // is analog type
function isDig(t) { return t < 80 && (t & 0x10); }// is digital type
function isD2P(t) { return t > 47 && t < 64; } // is digital 2 pin type
function isVir(t) { return t >= 80; } // is virtual type
// https://www.educative.io/edpresso/how-to-dynamically-load-a-js-file-in-javascript
function loadJS(FILE_URL, async = true) {
let scE = d.createElement("script");
@ -132,7 +137,7 @@
d.Sf.querySelectorAll("#mLC input[name^=MA]").forEach((i,n)=>{
gId("PSU"+n).style.display = ppl ? "inline" : "none";
const t = parseInt(d.Sf["LT"+n].value); // LED type SELECT
i.min = ppl && !((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? 250 : 0;
i.min = ppl && !(isVir(t) || isAna(t)) ? 250 : 0;
if (!abl) i.value = 0;
else if (ppl) sumMA += parseInt(i.value,10);
});
@ -143,11 +148,10 @@
const t = parseInt(d.Sf["LT"+n].value); // LED type SELECT
gId('LAdis'+n).style.display = s.selectedIndex==5 ? "inline" : "none";
d.Sf["LA"+n].value = s.value==="0" ? 55 : s.value;
d.Sf["LA"+n].min = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? 0 : 1;
d.Sf["LA"+n].min = (isVir(t) || isAna(t)) ? 0 : 1;
}
function setABL()
{
console.log(d.Sf.MA.value);
d.Sf.ABL.checked = parseInt(d.Sf.MA.value) > 0;
// check if ABL is enabled (max mA entered per output)
d.Sf.querySelectorAll("#mLC input[name^=MA]").forEach((i,n)=>{
@ -205,12 +209,9 @@
// is the field a LED type?
var n = s.name.substring(2);
var t = parseInt(s.value);
let isDig = ((t >= 16 && t < 32) || (t >= 50 && t < 64));
let isVir = (t >= 80 && t < 96);
let isPwm = (t >= 40 && t < 48);
gId("p0d"+n).innerHTML = (t>=80 && t<96) ? "IP address:" : (t > 49) ? "Data GPIO:" : (t > 41) ? "GPIOs:" : "GPIO:";
gId("p1d"+n).innerHTML = (t> 49 && t<64) ? "Clk GPIO:" : "";
gId("abl"+n).style.display = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? "none" : "inline";
gId("p0d"+n).innerHTML = isVir(t) ? "IP address:" : isD2P(t) ? "Data GPIO:" : (t > 41) ? "GPIOs:" : "GPIO:";
gId("p1d"+n).innerHTML = isD2P(t) ? "Clk GPIO:" : "";
gId("abl"+n).style.display = (!ablEN || isVir(t) || isAna(t)) ? "none" : "inline";
//var LK = d.getElementsByName("L1"+n)[0]; // clock pin
memu += getMem(t, n); // calc memory
@ -219,7 +220,7 @@
for (p=1; p<5; p++) {
var LK = d.Sf["L"+p+n]; // secondary pins
if (!LK) continue;
if (((t>=80 && t<96) && p<4) || (t>49 && p==1) || (t>41 && t < 50 && (p+40 < t))) // TYPE_xxxx values from const.h
if ((isVir(t) && p<4) || (isD2P(t) && p==1) || (isPWM(t) && (p+40 < t))) // TYPE_xxxx values from const.h
{
// display pin field
LK.style.display = "inline";
@ -233,24 +234,24 @@
}
if (change) {
gId("rf"+n).checked = (gId("rf"+n).checked || t == 31); // LEDs require data in off state
if (t > 31 && t < 48) d.Sf["LC"+n].value = 1; // for sanity change analog count just to 1 LED
d.Sf["LA"+n].min = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? 0 : 1;
d.Sf["MA"+n].min = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? 0 : 250;
if (isAna(t)) d.Sf["LC"+n].value = 1; // for sanity change analog count just to 1 LED
d.Sf["LA"+n].min = (isVir(t) || isAna(t)) ? 0 : 1;
d.Sf["MA"+n].min = (isVir(t) || isAna(t)) ? 0 : 250;
}
gId("rf"+n).onclick = (t == 31) ? (()=>{return false}) : (()=>{}); // prevent change for TM1814
gRGBW |= isRGBW = ((t > 17 && t < 22) || (t > 28 && t < 32) || (t > 40 && t < 46 && t != 43) || t == 88); // RGBW checkbox, TYPE_xxxx values from const.h
gId("co"+n).style.display = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? "none":"inline"; // hide color order for PWM
gId("dig"+n+"w").style.display = (t > 28 && t < 32) ? "inline":"none"; // show swap channels dropdown
if (!(t > 28 && t < 32)) d.Sf["WO"+n].value = 0; // reset swapping
gId("dig"+n+"c").style.display = (t >= 40 && t < 48) ? "none":"inline"; // hide count for analog
gId("dig"+n+"r").style.display = (t >= 80 && t < 96) ? "none":"inline"; // hide reversed for virtual
gId("dig"+n+"s").style.display = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? "none":"inline"; // hide skip 1st for virtual & analog
gId("dig"+n+"f").style.display = ((t >= 16 && t < 32) || (t >= 50 && t < 64)) ? "inline":"none"; // hide refresh
gId("dig"+n+"a").style.display = (isRGBW && t != 40) ? "inline":"none"; // auto calculate white
gId("dig"+n+"l").style.display = (t > 48 && t < 64) ? "inline":"none"; // bus clock speed
gId("rev"+n).innerHTML = (t >= 40 && t < 48) ? "Inverted output":"Reversed (rotated 180°)"; // change reverse text for analog
gId("psd"+n).innerHTML = (t >= 40 && t < 48) ? "Index:":"Start:"; // change analog start description
if (ablEN && pplEN && !((t >= 80 && t < 96) || (t >= 40 && t < 48))) {
gId("co"+n).style.display = (isVir(t) || isAna(t)) ? "none":"inline"; // hide color order for PWM
gId("dig"+n+"w").style.display = (isDig(t) && isRGBW) ? "inline":"none"; // show swap channels dropdown
if (!(isDig(t) && isRGBW)) d.Sf["WO"+n].value = 0; // reset swapping
gId("dig"+n+"c").style.display = (isAna(t)) ? "none":"inline"; // hide count for analog
gId("dig"+n+"r").style.display = (isVir(t)) ? "none":"inline"; // hide reversed for virtual
gId("dig"+n+"s").style.display = (isVir(t) || isAna(t)) ? "none":"inline"; // hide skip 1st for virtual & analog
gId("dig"+n+"f").style.display = (isDig(t)) ? "inline":"none"; // hide refresh
gId("dig"+n+"a").style.display = (isRGBW) ? "inline":"none"; // auto calculate white
gId("dig"+n+"l").style.display = (isD2P(t) || isPWM(t)) ? "inline":"none"; // bus clock speed / PWM speed (relative) (not On/Off)
gId("rev"+n).innerHTML = isAna(t) ? "Inverted output":"Reversed (rotated 180°)"; // change reverse text for analog
//gId("psd"+n).innerHTML = isAna(t) ? "Index:":"Start:"; // change analog start description
if (ablEN && pplEN && !(isVir(t) || isAna(t))) {
sumMA += parseInt(d.Sf["MA"+n].value); // summarize PPL ABL limit (fields)
}
});
@ -275,9 +276,9 @@
let s = parseInt(gId("ls"+n).value); //start value
if (s+c > sLC) sLC = s+c; //update total count
if (c > maxLC) maxLC = c; //max per output
if (t < 80) sPC += c; //virtual out busses do not count towards physical LEDs
//if (!((t >= 80 && t < 96) || (t >= 40 && t < 48))) sDI += c;
if (!((t >= 80 && t < 96) || (t >= 40 && t < 48))) {
if (!isVir(t)) sPC += c; //virtual out busses do not count towards physical LEDs
//if (!(isVir(t) || isPWM(t))) sDI += c;
if (!(isVir(t) || isAna(t))) {
sDI += c; // summarize digital LED count
let maPL = parseInt(d.Sf["LA"+n].value);
if (maPL == 255) maPL = 12;
@ -292,7 +293,7 @@
}
// ignore IP address (stored in pins for virtual busses)
if (nm=="L0" || nm=="L1" || nm=="L2" || nm=="L3") {
if (t>=80) {
if (isVir(t)) {
LC.max = 255;
LC.min = 0;
LC.style.color="#fff";
@ -314,7 +315,7 @@
if (n2.substring(0,1)==="L") {
let m = nList[j].name.substring(2);
let t2 = parseInt(d.Sf["LT"+m].value, 10);
if (t2 >= 80) continue;
if (isVir(t2)) continue;
}
if (nList[j].value!="" && nList[j].value!="-1") p.push(parseInt(nList[j].value,10)); // add current pin
}
@ -328,7 +329,7 @@
d.Sf.querySelectorAll("#mLC input[name^=LC]").forEach((s,n)=>{
let c = parseInt(s.value,10); //get LED count
let t = parseInt(d.Sf["LT"+n].value); //get LED type
if (!ablEN || (t >= 80 && t < 96) || (t >= 40 && t < 48)) {
if (!ablEN || isVir(t) || isAna(t)) {
// virtual and analog LEDs have no limiter
d.Sf["MA"+n].value = 0;
return;
@ -471,7 +472,7 @@ mA/LED: <select name="LAsel${i}" onchange="enLA(this,${i});UI();">
<hr class="sml">
${i+1}: Start: <input type="number" name="XS${i}" id="xs${i}" class="l starts" min="0" max="65535" value="${start}" oninput="UI();" required="">&nbsp;
Length: <input type="number" name="XC${i}" id="xc${i}" class="l" min="1" max="65535" value="${len}" required="" oninput="UI()">
<div style="display:inline">Color Order:
<div>Color Order:
<select id="xo${i}" name="XO${i}">
<option value="0">GRB</option>
<option value="1">RGB</option>
@ -480,9 +481,16 @@ Length: <input type="number" name="XC${i}" id="xc${i}" class="l" min="1" max="65
<option value="4">BGR</option>
<option value="5">GBR</option>
</select>
</div><br></div>`;
Swap: <select id="xw${i}" name="XW${i}">
<option value="0">Use global</option>
<option value="1">W & B</option>
<option value="2">W & G</option>
<option value="3">W & R</option>
</select>
</div></div>`;
gId("com_entries").insertAdjacentHTML("beforeend", b);
gId("xo"+i).value = co;
gId("xo"+i).value = co & 0x0F;
gId("xw"+i).value = co >> 4;
btnCOM(i+1);
UI();
}

6
wled00/data/settings_sync.htm Normal file → Executable file
View File

@ -19,7 +19,7 @@
scE.setAttribute("type", "text/javascript");
scE.setAttribute("async", async);
d.body.appendChild(scE);
// success event
// success event
scE.addEventListener("load", () => {
//console.log("File loaded");
GetV();SetVal();
@ -146,7 +146,6 @@ Send notifications on direct change: <input type="checkbox" name="SD"><br>
Send notifications on button press or IR: <input type="checkbox" name="SB"><br>
Send Alexa notifications: <input type="checkbox" name="SA"><br>
Send Philips Hue change notifications: <input type="checkbox" name="SH"><br>
<!-- Send Macro notifications: <input type="checkbox" name="SM"><br> -->
UDP packet retransmissions: <input name="UR" type="number" min="0" max="30" class="d5" required><br><br>
<i>Reboot required to apply changes. </i>
<hr class="sml">
@ -156,7 +155,8 @@ Make this instance discoverable: <input type="checkbox" name="NB">
<hr class="sml">
<h3>Realtime</h3>
Receive UDP realtime: <input type="checkbox" name="RD"><br>
Use main segment only: <input type="checkbox" name="MO"><br><br>
Use main segment only: <input type="checkbox" name="MO"><br>
Respect LED Maps: <input type="checkbox" name="RLM"><br><br>
<i>Network DMX input</i><br>
Type:
<select name=DI onchange="SP(); adj();">

View File

@ -118,12 +118,13 @@
function genForm(s) {
var str = "";
str = addRec(s,"",l);
oldUrl = "";
gId('gen').innerHTML = str;
if (gId('theme_bg_rnd').checked) {
oldUrl = "";
toggle("Image");
randomBg();
} else if (gId('theme_bg_url').value.startsWith('data:')) {
gId("bg_url").classList.add("hide");
} else oldUrl = gId("theme_bg_url").value;
}
function GetLS()
@ -239,9 +240,31 @@
url = "https://picsum.photos/1920/1080";
if (gId(`${t}Grayscale`).checked) url += "?grayscale";
if (gId(`${t}Blur`).checked) url += (url.includes("?") ? "&" : "?") + "blur";
gId("theme_bg_img").value = "";
gId("bg_url").classList.remove("hide");
}
gId("theme_bg_url").value = url;
}
// own BG image
function ownBg(element) {
const file = element.files[0];
const reader = new FileReader();
reader.onload = () => {
gId("theme_bg_url").value = reader.result;
gId("bg_url").classList.add("hide");
if (gId("theme_bg_rnd").checked) toggle("Image");
gId("theme_bg_rnd").checked = false;
}
reader.readAsDataURL(file);
}
function removeBgImg() {
gId("theme_bg_url").value = "";
gId("theme_bg_img").value = "";
gId("bg_url").classList.remove("hide");
if (gId("theme_bg_rnd").checked) toggle("Image");
gId("theme_bg_rnd").checked = false;
}
function uploadFile(fO,name) {
var req = new XMLHttpRequest();
req.addEventListener('load', function(){showToast(this.responseText,this.status >= 400)});
@ -290,9 +313,12 @@
<span class="l"></span>: <input type="number" min=0.0 max=1.0 step=0.01 id="theme_alpha_tab" class="agi"><br>
<span class="l"></span>: <input type="number" min=0.0 max=1.0 step=0.01 id="theme_alpha_bg" class="agi"><br>
<span class="l"></span>: <input type="text" id="theme_color_bg" maxlength="9" class="agi"><br>
BG image: <input type="file" id="theme_bg_img" accept="image/*" onchange="ownBg(this)"> <input type="button" value="Remove" onclick="removeBgImg()"><br>
<span class="l"></span>: <input type="checkbox" id="theme_bg_rnd" class="agi cb" onchange="randomBg();toggle('Image');">
<div id="Image">
<span class="l"></span>: <input type="text" id="theme_bg_url" class="agi"><br>
<div id="bg_url">
<span class="l"></span>: <input type="text" id="theme_bg_url" class="agi"><br>
</div>
</div>
<div id="NoImage" class="hide">
<h4>Random BG image settings</h4>

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

42
wled00/set.cpp Normal file → Executable file
View File

@ -146,30 +146,30 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
break; // no parameter
}
awmode = request->arg(aw).toInt();
uint16_t freqHz = request->arg(sp).toInt();
if (type > TYPE_ONOFF && type < 49) {
switch (freqHz) {
case 0 : freqHz = WLED_PWM_FREQ/3; break;
case 1 : freqHz = WLED_PWM_FREQ/2; break;
uint16_t freq = request->arg(sp).toInt();
if (IS_PWM(type)) {
switch (freq) {
case 0 : freq = WLED_PWM_FREQ/3; break;
case 1 : freq = WLED_PWM_FREQ/2; break;
default:
case 2 : freqHz = WLED_PWM_FREQ; break;
case 3 : freqHz = WLED_PWM_FREQ*2; break;
case 4 : freqHz = WLED_PWM_FREQ*3; break;
case 2 : freq = WLED_PWM_FREQ; break;
case 3 : freq = WLED_PWM_FREQ*4/3; break;
case 4 : freq = WLED_PWM_FREQ*2; break;
}
} else if (type > 48 && type < 64) {
switch (freqHz) {
} else if (IS_DIGITAL(type) && IS_2PIN(type)) {
switch (freq) {
default:
case 0 : freqHz = 1000; break;
case 1 : freqHz = 2000; break;
case 2 : freqHz = 5000; break;
case 3 : freqHz = 10000; break;
case 4 : freqHz = 20000; break;
case 0 : freq = 1000; break;
case 1 : freq = 2000; break;
case 2 : freq = 5000; break;
case 3 : freq = 10000; break;
case 4 : freq = 20000; break;
}
} else {
freqHz = 0;
freq = 0;
}
channelSwap = Bus::hasWhite(type) ? request->arg(wo).toInt() : 0;
if ((type > TYPE_TM1814 && type < TYPE_WS2801) || type >= TYPE_NET_DDP_RGB) { // analog and virtual
if (type == TYPE_ONOFF || IS_PWM(type) || IS_VIRTUAL(type)) { // analog and virtual
maPerLed = 0;
maMax = 0;
} else {
@ -180,7 +180,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
// actual finalization is done in WLED::loop() (removing old busses and adding new)
// this may happen even before this loop is finished so we do "doInitBusses" after the loop
if (busConfigs[s] != nullptr) delete busConfigs[s];
busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder | (channelSwap<<4), request->hasArg(cv), skip, awmode, freqHz, useGlobalLedBuffer, maPerLed, maMax);
busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder | (channelSwap<<4), request->hasArg(cv), skip, awmode, freq, useGlobalLedBuffer, maPerLed, maMax);
busesChanged = true;
}
//doInitBusses = busesChanged; // we will do that below to ensure all input data is processed
@ -190,10 +190,12 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
char xs[4] = "XS"; xs[2] = 48+s; xs[3] = 0; //start LED
char xc[4] = "XC"; xc[2] = 48+s; xc[3] = 0; //strip length
char xo[4] = "XO"; xo[2] = 48+s; xo[3] = 0; //color order
char xw[4] = "XW"; xw[2] = 48+s; xw[3] = 0; //W swap
if (request->hasArg(xs)) {
start = request->arg(xs).toInt();
length = request->arg(xc).toInt();
colorOrder = request->arg(xo).toInt();
colorOrder = request->arg(xo).toInt() & 0x0F;
colorOrder |= (request->arg(xw).toInt() & 0x0F) << 4; // add W swap information
com.add(start, length, colorOrder);
}
}
@ -336,7 +338,6 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
notifyButton = request->hasArg(F("SB"));
notifyAlexa = request->hasArg(F("SA"));
notifyHue = request->hasArg(F("SH"));
notifyMacro = request->hasArg(F("SM"));
t = request->arg(F("UR")).toInt();
if ((t>=0) && (t<30)) udpNumRetries = t;
@ -348,6 +349,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
receiveDirect = request->hasArg(F("RD")); // UDP realtime
useMainSegmentOnly = request->hasArg(F("MO"));
realtimeRespectLedMaps = request->hasArg(F("RLM"));
e131SkipOutOfSequence = request->hasArg(F("ES"));
e131Multicast = request->hasArg(F("EM"));
t = request->arg(F("EP")).toInt();

View File

@ -612,13 +612,13 @@ void handleNotifications()
if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
uint16_t totalLen = strip.getLengthTotal();
if (udpIn[0] == 1) //warls
if (udpIn[0] == 1 && packetSize > 5) //warls
{
for (size_t i = 2; i < packetSize -3; i += 4)
{
setRealtimePixel(udpIn[i], udpIn[i+1], udpIn[i+2], udpIn[i+3], 0);
}
} else if (udpIn[0] == 2) //drgb
} else if (udpIn[0] == 2 && packetSize > 4) //drgb
{
uint16_t id = 0;
for (size_t i = 2; i < packetSize -2; i += 3)
@ -627,7 +627,7 @@ void handleNotifications()
id++; if (id >= totalLen) break;
}
} else if (udpIn[0] == 3) //drgbw
} else if (udpIn[0] == 3 && packetSize > 6) //drgbw
{
uint16_t id = 0;
for (size_t i = 2; i < packetSize -3; i += 4)
@ -636,7 +636,7 @@ void handleNotifications()
id++; if (id >= totalLen) break;
}
} else if (udpIn[0] == 4) //dnrgb
} else if (udpIn[0] == 4 && packetSize > 7) //dnrgb
{
uint16_t id = ((udpIn[3] << 0) & 0xFF) + ((udpIn[2] << 8) & 0xFF00);
for (size_t i = 4; i < packetSize -2; i += 3)
@ -645,7 +645,7 @@ void handleNotifications()
setRealtimePixel(id, udpIn[i], udpIn[i+1], udpIn[i+2], 0);
id++;
}
} else if (udpIn[0] == 5) //dnrgbw
} else if (udpIn[0] == 5 && packetSize > 8) //dnrgbw
{
uint16_t id = ((udpIn[3] << 0) & 0xFF) + ((udpIn[2] << 8) & 0xFF00);
for (size_t i = 4; i < packetSize -2; i += 4)

View File

@ -177,6 +177,10 @@
#include "../usermods/boblight/boblight.h"
#endif
#ifdef USERMOD_ANIMARTRIX
#include "../usermods/usermod_v2_animartrix/usermod_v2_animartrix.h"
#endif
#ifdef USERMOD_INTERNAL_TEMPERATURE
#include "../usermods/Internal_Temperature_v2/usermod_internal_temperature.h"
#endif
@ -378,6 +382,10 @@ void registerUsermods()
usermods.add(new ShtUsermod());
#endif
#ifdef USERMOD_ANIMARTRIX
usermods.add(new AnimartrixUsermod("Animartrix", false));
#endif
#ifdef USERMOD_INTERNAL_TEMPERATURE
usermods.add(new InternalTemperatureUsermod());
#endif

37
wled00/wled.h Normal file → Executable file
View File

@ -8,7 +8,7 @@
*/
// version code in format yymmddb (b = daily build)
#define VERSION 2401060
#define VERSION 2401130
//uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG
@ -30,8 +30,8 @@
#ifndef WLED_DISABLE_MQTT
#define WLED_ENABLE_MQTT // saves 12kb
#endif
#ifndef WLED_DISABLE_ADALIGHT // can be used to disable reading commands from serial RX pin (see issue #3128).
#define WLED_ENABLE_ADALIGHT // disable saves 5Kb (uses GPIO3 (RX) for serial). Related serial protocols: Adalight/TPM2, Improv, Serial JSON, Continuous Serial Streaming
#ifndef WLED_DISABLE_ADALIGHT // can be used to disable reading commands from serial RX pin (see issue #3128).
#define WLED_ENABLE_ADALIGHT // disable saves 5Kb (uses GPIO3 (RX) for serial). Related serial protocols: Adalight/TPM2, Improv, Serial JSON, Continuous Serial Streaming
#else
#undef WLED_ENABLE_ADALIGHT // disable has priority over enable
#endif
@ -44,7 +44,7 @@
#define WLED_ENABLE_WEBSOCKETS
#endif
//#define WLED_DISABLE_ESPNOW // Removes dependence on esp now
//#define WLED_DISABLE_ESPNOW // Removes dependence on esp now
#define WLED_ENABLE_FS_EDITOR // enable /edit page for editing FS content. Will also be disabled with OTA lock
@ -395,7 +395,6 @@ WLED_GLOBAL bool receiveSegmentBounds _INIT(false); // apply segme
WLED_GLOBAL bool notifyDirect _INIT(false); // send notification if change via UI or HTTP API
WLED_GLOBAL bool notifyButton _INIT(false); // send if updated by button or infrared remote
WLED_GLOBAL bool notifyAlexa _INIT(false); // send notification if updated via Alexa
WLED_GLOBAL bool notifyMacro _INIT(false); // send notification for macro
WLED_GLOBAL bool notifyHue _INIT(true); // send notification if Hue light changes
WLED_GLOBAL uint8_t udpNumRetries _INIT(0); // Number of times a UDP sync message is retransmitted. Increase to increase reliability
@ -476,10 +475,19 @@ WLED_GLOBAL char last_signal_src[13] _INIT(""); // last seen ESP-NOW sender
#endif
// Time CONFIG
WLED_GLOBAL bool ntpEnabled _INIT(false); // get internet time. Only required if you use clock overlays or time-activated macros
WLED_GLOBAL bool useAMPM _INIT(false); // 12h/24h clock format
WLED_GLOBAL byte currentTimezone _INIT(0); // Timezone ID. Refer to timezones array in wled10_ntp.ino
WLED_GLOBAL int utcOffsetSecs _INIT(0); // Seconds to offset from UTC before timzone calculation
#ifndef WLED_NTP_ENABLED
#define WLED_NTP_ENABLED false
#endif
#ifndef WLED_TIMEZONE
#define WLED_TIMEZONE 0
#endif
#ifndef WLED_UTC_OFFSET
#define WLED_UTC_OFFSET 0
#endif
WLED_GLOBAL bool ntpEnabled _INIT(WLED_NTP_ENABLED); // get internet time. Only required if you use clock overlays or time-activated macros
WLED_GLOBAL bool useAMPM _INIT(false); // 12h/24h clock format
WLED_GLOBAL byte currentTimezone _INIT(WLED_TIMEZONE); // Timezone ID. Refer to timezones array in wled10_ntp.ino
WLED_GLOBAL int utcOffsetSecs _INIT(WLED_UTC_OFFSET); // Seconds to offset from UTC before timzone calculation
WLED_GLOBAL byte overlayCurrent _INIT(0); // 0: no overlay 1: analog clock 2: was single-digit clock 3: was cronixie
WLED_GLOBAL byte overlayMin _INIT(0), overlayMax _INIT(DEFAULT_LED_COUNT - 1); // boundaries of overlay mode
@ -635,6 +643,7 @@ WLED_GLOBAL unsigned long realtimeTimeout _INIT(0);
WLED_GLOBAL uint8_t tpmPacketCount _INIT(0);
WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0);
WLED_GLOBAL bool useMainSegmentOnly _INIT(false);
WLED_GLOBAL bool realtimeRespectLedMaps _INIT(true); // Respect LED maps when receiving realtime data
WLED_GLOBAL unsigned long lastInterfaceUpdate _INIT(0);
WLED_GLOBAL byte interfaceUpdateCallMode _INIT(CALL_MODE_INIT);
@ -650,6 +659,12 @@ WLED_GLOBAL String escapedMac;
WLED_GLOBAL DNSServer dnsServer;
// network time
#ifndef WLED_LAT
#define WLED_LAT 0.0f
#endif
#ifndef WLED_LON
#define WLED_LON 0.0f
#endif
WLED_GLOBAL bool ntpConnected _INIT(false);
WLED_GLOBAL time_t localTime _INIT(0);
WLED_GLOBAL unsigned long ntpLastSyncTime _INIT(999000000L);
@ -657,8 +672,8 @@ WLED_GLOBAL unsigned long ntpPacketSentTime _INIT(999000000L);
WLED_GLOBAL IPAddress ntpServerIP;
WLED_GLOBAL uint16_t ntpLocalPort _INIT(2390);
WLED_GLOBAL uint16_t rolloverMillis _INIT(0);
WLED_GLOBAL float longitude _INIT(0.0);
WLED_GLOBAL float latitude _INIT(0.0);
WLED_GLOBAL float longitude _INIT(WLED_LON);
WLED_GLOBAL float latitude _INIT(WLED_LAT);
WLED_GLOBAL time_t sunrise _INIT(0);
WLED_GLOBAL time_t sunset _INIT(0);
WLED_GLOBAL Toki toki _INIT(Toki());

2
wled00/wled_eeprom.cpp Normal file → Executable file
View File

@ -321,7 +321,7 @@ void loadSettingsFromEEPROM()
}
receiveDirect = !EEPROM.read(2200);
notifyMacro = EEPROM.read(2201);
//notifyMacro = EEPROM.read(2201);
//strip.rgbwMode = EEPROM.read(2203);
//skipFirstLed = EEPROM.read(2204);

27
wled00/xml.cpp Normal file → Executable file
View File

@ -377,7 +377,7 @@ void getSettingsJS(byte subPage, char* dest)
uint8_t nPins = bus->getPins(pins);
for (uint8_t i = 0; i < nPins; i++) {
lp[1] = 48+i;
if (pinManager.isPinOk(pins[i]) || bus->getType()>=TYPE_NET_DDP_RGB) sappend('v',lp,pins[i]);
if (pinManager.isPinOk(pins[i]) || IS_VIRTUAL(bus->getType())) sappend('v',lp,pins[i]);
}
sappend('v',lc,bus->getLength());
sappend('v',lt,bus->getType());
@ -389,16 +389,16 @@ void getSettingsJS(byte subPage, char* dest)
sappend('v',aw,bus->getAutoWhiteMode());
sappend('v',wo,bus->getColorOrder() >> 4);
uint16_t speed = bus->getFrequency();
if (bus->getType() > TYPE_ONOFF && bus->getType() < 48) {
if (IS_PWM(bus->getType())) {
switch (speed) {
case WLED_PWM_FREQ/3 : speed = 0; break;
case WLED_PWM_FREQ/2 : speed = 1; break;
case WLED_PWM_FREQ/3 : speed = 0; break;
case WLED_PWM_FREQ/2 : speed = 1; break;
default:
case WLED_PWM_FREQ : speed = 2; break;
case WLED_PWM_FREQ*2 : speed = 3; break;
case WLED_PWM_FREQ*3 : speed = 4; break;
case WLED_PWM_FREQ : speed = 2; break;
case WLED_PWM_FREQ*4/3 : speed = 3; break;
case WLED_PWM_FREQ*2 : speed = 4; break;
}
} else {
} else if (IS_DIGITAL(bus->getType()) && IS_2PIN(bus->getType())) {
switch (speed) {
case 1000 : speed = 0; break;
case 2000 : speed = 1; break;
@ -424,9 +424,9 @@ void getSettingsJS(byte subPage, char* dest)
const ColorOrderMapEntry* entry = com.get(s);
if (entry == nullptr) break;
oappend(SET_F("addCOM("));
oappend(itoa(entry->start,nS,10)); oappend(",");
oappend(itoa(entry->len,nS,10)); oappend(",");
oappend(itoa(entry->colorOrder,nS,10)); oappend(");");
oappend(itoa(entry->start,nS,10)); oappend(",");
oappend(itoa(entry->len,nS,10)); oappend(",");
oappend(itoa(entry->colorOrder,nS,10)); oappend(");");
}
sappend('v',SET_F("CA"),briS);
@ -451,7 +451,7 @@ void getSettingsJS(byte subPage, char* dest)
sappend('c',SET_F("RM"),rlyMde);
for (uint8_t i=0; i<WLED_MAX_BUTTONS; i++) {
oappend(SET_F("addBtn("));
oappend(itoa(i,nS,10)); oappend(",");
oappend(itoa(i,nS,10)); oappend(",");
oappend(itoa(btnPin[i],nS,10)); oappend(",");
oappend(itoa(buttonType[i],nS,10));
oappend(SET_F(");"));
@ -466,7 +466,6 @@ void getSettingsJS(byte subPage, char* dest)
if (subPage == SUBPAGE_UI)
{
sappends('s',SET_F("DS"),serverDescription);
//sappend('c',SET_F("ST"),syncToggleReceive);
sappend('c',SET_F("SU"),simplifiedUI);
}
@ -493,7 +492,6 @@ void getSettingsJS(byte subPage, char* dest)
sappend('c',SET_F("SD"),notifyDirect);
sappend('c',SET_F("SB"),notifyButton);
sappend('c',SET_F("SH"),notifyHue);
// sappend('c',SET_F("SM"),notifyMacro);
sappend('v',SET_F("UR"),udpNumRetries);
sappend('c',SET_F("NL"),nodeListEnabled);
@ -501,6 +499,7 @@ void getSettingsJS(byte subPage, char* dest)
sappend('c',SET_F("RD"),receiveDirect);
sappend('c',SET_F("MO"),useMainSegmentOnly);
sappend('c',SET_F("RLM"),realtimeRespectLedMaps);
sappend('v',SET_F("EP"),e131Port);
sappend('c',SET_F("ES"),e131SkipOutOfSequence);
sappend('c',SET_F("EM"),e131Multicast);