Merge branch 'master' into dev

This commit is contained in:
Blaž Kristan 2021-10-11 10:56:25 +02:00
commit 539125ff47
18 changed files with 1697 additions and 1358 deletions

View File

@ -2,6 +2,13 @@
### Builds after release 0.12.0
#### Build 2110110
- Version bump to 0.13.0-b4 "Toki"
- Added option for bus refresh if off (PR #2259)
- New auto segment logic
- Fixed current calculations for virtual or non-linear configs (PR #2262)
#### Build 2110060
- Added virtual network DDP busses (PR #2245)

View File

@ -0,0 +1,16 @@
; Options
; -------
; USERMOD_BH1750 - define this to have this user mod included wled00\usermods_list.cpp
; USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL - the max number of milliseconds between measurements, defaults to 10000ms
; USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL - the min number of milliseconds between measurements, defaults to 500ms
; USERMOD_BH1750_FIRST_MEASUREMENT_AT - the number of milliseconds after boot to take first measurement, defaults to 10 seconds
; USERMOD_BH1750_OFFSET_VALUE - the offset value to report on, defaults to 1
;
[env:usermod_BH1750_d1_mini]
extends = env:d1_mini
build_flags =
${common.build_flags_esp8266}
-D USERMOD_BH1750
lib_deps =
${env.lib_deps}
claws/BH1750 @ ^1.2.0

View File

@ -0,0 +1,24 @@
# BH1750 usermod
This usermod will read from an ambient light sensor like the BH1750 sensor.
The luminance is displayed both in the Info section of the web UI as well as published to the `/luminance` MQTT topic if enabled.
## Installation
Copy the example `platformio_override.ini` to the root directory. This file should be placed in the same directory as `platformio.ini`.
### Define Your Options
* `USERMOD_BH1750` - define this to have this user mod included wled00\usermods_list.cpp
* `USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL` - the max number of milliseconds between measurements, defaults to 10000ms
* `USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL` - the min number of milliseconds between measurements, defaults to 500ms
* `USERMOD_BH1750_FIRST_MEASUREMENT_AT` - the number of milliseconds after boot to take first measurement, defaults to 10 seconds
* `USERMOD_BH1750_OFFSET_VALUE` - the offset value to report on, defaults to 1
All parameters can be configured at runtime using Usermods settings page.
### PlatformIO requirements
If you are using `platformio_override.ini`, you should be able to refresh the task list and see your custom task, for example `env:usermod_BH1750_d1_mini`.
## Change Log

View File

@ -0,0 +1,177 @@
#pragma once
#include "wled.h"
#include <Wire.h>
#include <BH1750.h>
// the max frequency to check photoresistor, 10 seconds
#ifndef USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL
#define USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL 10000
#endif
// the min frequency to check photoresistor, 500 ms
#ifndef USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL
#define USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL 500
#endif
// how many seconds after boot to take first measurement, 10 seconds
#ifndef USERMOD_BH1750_FIRST_MEASUREMENT_AT
#define USERMOD_BH1750_FIRST_MEASUREMENT_AT 10000
#endif
// only report if differance grater than offset value
#ifndef USERMOD_BH1750_OFFSET_VALUE
#define USERMOD_BH1750_OFFSET_VALUE 1
#endif
class Usermod_BH1750 : public Usermod
{
private:
int8_t offset = USERMOD_BH1750_OFFSET_VALUE;
unsigned long maxReadingInterval = USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL;
unsigned long minReadingInterval = USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL;
unsigned long lastMeasurement = UINT32_MAX - (USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL - USERMOD_BH1750_FIRST_MEASUREMENT_AT);
unsigned long lastSend = UINT32_MAX - (USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL - USERMOD_BH1750_FIRST_MEASUREMENT_AT);
// flag to indicate we have finished the first readLightLevel call
// allows this library to report to the user how long until the first
// measurement
bool getLuminanceComplete = false;
// flag set at startup
bool disabled = false;
// strings to reduce flash memory usage (used more than twice)
static const char _name[];
static const char _enabled[];
static const char _maxReadInterval[];
static const char _minReadInterval[];
static const char _offset[];
BH1750 lightMeter;
float lastLux = -1000;
bool checkBoundSensor(float newValue, float prevValue, float maxDiff)
{
return isnan(prevValue) || newValue <= prevValue - maxDiff || newValue >= prevValue + maxDiff || (newValue == 0.0 && prevValue > 0.0);
}
public:
void setup()
{
Wire.begin();
lightMeter.begin();
}
void loop()
{
if (disabled || strip.isUpdating())
return;
unsigned long now = millis();
// check to see if we are due for taking a measurement
// lastMeasurement will not be updated until the conversion
// is complete the the reading is finished
if (now - lastMeasurement < minReadingInterval)
{
return;
}
bool shouldUpdate = now - lastSend > maxReadingInterval;
float lux = lightMeter.readLightLevel();
lastMeasurement = millis();
getLuminanceComplete = true;
if (shouldUpdate || checkBoundSensor(lux, lastLux, offset))
{
lastLux = lux;
lastSend = millis();
if (WLED_MQTT_CONNECTED)
{
char subuf[45];
strcpy(subuf, mqttDeviceTopic);
strcat_P(subuf, PSTR("/luminance"));
mqtt->publish(subuf, 0, true, String(lux).c_str());
}
else
{
DEBUG_PRINTLN("Missing MQTT connection. Not publishing data");
}
}
}
void addToJsonInfo(JsonObject &root)
{
JsonObject user = root[F("u")];
if (user.isNull())
user = root.createNestedObject(F("u"));
JsonArray lux_json = user.createNestedArray(F("Luminance"));
if (!getLuminanceComplete)
{
// if we haven't read the sensor yet, let the user know
// that we are still waiting for the first measurement
lux_json.add((USERMOD_BH1750_FIRST_MEASUREMENT_AT - millis()) / 1000);
lux_json.add(F(" sec until read"));
return;
}
lux_json.add(lastLux);
lux_json.add(F(" lx"));
}
uint16_t getId()
{
return USERMOD_ID_BH1750;
}
/**
* addToConfig() (called from set.cpp) stores persistent properties to cfg.json
*/
void addToConfig(JsonObject &root)
{
// we add JSON object.
JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname
top[FPSTR(_enabled)] = !disabled;
top[FPSTR(_maxReadInterval)] = maxReadingInterval;
top[FPSTR(_minReadInterval)] = minReadingInterval;
top[FPSTR(_offset)] = offset;
DEBUG_PRINTLN(F("Photoresistor config saved."));
}
/**
* readFromConfig() is called before setup() to populate properties from values stored in cfg.json
*/
bool readFromConfig(JsonObject &root)
{
// we look for JSON object.
JsonObject top = root[FPSTR(_name)];
if (top.isNull())
{
DEBUG_PRINT(FPSTR(_name));
DEBUG_PRINTLN(F(": No config found. (Using defaults.)"));
return false;
}
disabled = !(top[FPSTR(_enabled)] | !disabled);
maxReadingInterval = (top[FPSTR(_maxReadInterval)] | maxReadingInterval); // ms
minReadingInterval = (top[FPSTR(_minReadInterval)] | minReadingInterval); // ms
offset = top[FPSTR(_offset)] | offset;
DEBUG_PRINT(FPSTR(_name));
DEBUG_PRINTLN(F(" config (re)loaded."));
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
return true;
}
};
// strings to reduce flash memory usage (used more than twice)
const char Usermod_BH1750::_name[] PROGMEM = "BH1750";
const char Usermod_BH1750::_enabled[] PROGMEM = "enabled";
const char Usermod_BH1750::_maxReadInterval[] PROGMEM = "max-read-interval-ms";
const char Usermod_BH1750::_minReadInterval[] PROGMEM = "min-read-interval-ms";
const char Usermod_BH1750::_offset[] PROGMEM = "offset-lx";

View File

@ -0,0 +1,14 @@
#include "wled.h"
/*
* Register your v2 usermods here!
*/
#ifdef USERMOD_BH1750
#include "../usermods/BH1750_v2/usermod_BH1750.h"
#endif
void registerUsermods()
{
#ifdef USERMOD_BH1750
usermods.add(new Usermod_BH1750());
#endif
}

View File

@ -619,7 +619,7 @@ class WS2812FX {
}
void
finalizeInit(void),
finalizeInit(),
service(void),
blur(uint8_t),
fill(uint32_t),
@ -636,7 +636,8 @@ class WS2812FX {
trigger(void),
setSegment(uint8_t n, uint16_t start, uint16_t stop, uint8_t grouping = 0, uint8_t spacing = 0),
resetSegments(),
populateDefaultSegments(),
makeAutoSegments(),
fixInvalidSegments(),
setPixelColor(uint16_t n, uint32_t c),
setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0),
show(void),
@ -650,6 +651,7 @@ class WS2812FX {
gammaCorrectCol = true,
applyToAllSelected = true,
setEffectConfig(uint8_t m, uint8_t s, uint8_t i, uint8_t p),
checkSegmentAlignment(void),
// return true if the strip is being sent pixel updates
isUpdating(void);
@ -680,6 +682,8 @@ class WS2812FX {
ablMilliampsMax,
currentMilliamps,
triwave16(uint16_t),
getLengthTotal(void),
getLengthPhysical(void),
getFps();
uint32_t
@ -839,9 +843,6 @@ class WS2812FX {
uint16_t _cumulativeFps = 2;
void load_gradient_palette(uint8_t);
void handle_palette(void);
bool
_triggered;
@ -875,7 +876,10 @@ class WS2812FX {
void
blendPixelColor(uint16_t n, uint32_t color, uint8_t blend),
startTransition(uint8_t oldBri, uint32_t oldCol, uint16_t dur, uint8_t segn, uint8_t slot);
startTransition(uint8_t oldBri, uint32_t oldCol, uint16_t dur, uint8_t segn, uint8_t slot),
estimateCurrentAndLimitBri(void),
load_gradient_palette(uint8_t),
handle_palette(void);
uint16_t* customMappingTable = nullptr;
uint16_t customMappingSize = 0;

View File

@ -80,7 +80,7 @@ void WS2812FX::finalizeInit(void)
for (uint8_t i = 0; i < defNumBusses && i < WLED_MAX_BUSSES; i++) {
uint8_t defPin[] = {defDataPins[i]};
uint16_t start = prevLen;
uint16_t count = (i < defNumCounts) ? defCounts[i] : defCounts[i>0?i-1:0];
uint16_t count = defCounts[(i < defNumCounts) ? i : defNumCounts -1];
prevLen += count;
BusConfig defCfg = BusConfig(DEFAULT_LED_TYPE, defPin, start, count, COL_ORDER_GRB);
busses.add(defCfg);
@ -93,29 +93,26 @@ void WS2812FX::finalizeInit(void)
for (uint8_t i=0; i<busses.getNumBusses(); i++) {
Bus *bus = busses.getBus(i);
if (bus == nullptr) continue;
if (_length+bus->getLength() > MAX_LEDS) break;
if (bus->getStart() + bus->getLength() > MAX_LEDS) break;
//RGBW mode is enabled if at least one of the strips is RGBW
isRgbw |= bus->isRgbw();
//refresh is required to remain off if at least one of the strips requires the refresh.
isOffRefreshRequred |= bus->isOffRefreshRequired();
_length += bus->getLength();
uint16_t busEnd = bus->getStart() + bus->getLength();
if (busEnd > _length) _length = busEnd;
#ifdef ESP8266
if ((!IS_DIGITAL(bus->getType()) || IS_2PIN(bus->getType()))) continue;
uint8_t pins[5];
if (!bus->getPins(pins)) continue;
BusDigital* bd = static_cast<BusDigital*>(bus);
if (pins[0] == 3) bd->reinit();
#endif
}
ledCount = _length;
// We will create default segments im populateDefaultSegments()
//segments are created in makeAutoSegments();
setBrightness(_brightness);
#ifdef ESP8266
for (uint8_t i = 0; i < busses.getNumBusses(); i++) {
Bus* b = busses.getBus(i);
if ((!IS_DIGITAL(b->getType()) || IS_2PIN(b->getType()))) continue;
uint8_t pins[5];
b->getPins(pins);
BusDigital* bd = static_cast<BusDigital*>(b);
if (pins[0] == 3) bd->reinit();
}
#endif
}
void WS2812FX::service() {
@ -262,12 +259,7 @@ void WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte w)
#define MA_FOR_ESP 100 //how much mA does the ESP use (Wemos D1 about 80mA, ESP32 about 120mA)
//you can set it to 0 if the ESP is powered by USB and the LEDs by external
void WS2812FX::show(void) {
// avoid race condition, caputre _callback value
show_callback callback = _callback;
if (callback) callback();
void WS2812FX::estimateCurrentAndLimitBri() {
//power limit calculation
//each LED can draw up 195075 "power units" (approx. 53mA)
//one PU is the power it takes to have 1 channel 1 step brighter per brightness step
@ -280,66 +272,73 @@ void WS2812FX::show(void) {
actualMilliampsPerLed = 12; // from testing an actual strip
}
if (ablMilliampsMax > 149 && actualMilliampsPerLed > 0) //0 mA per LED and too low numbers turn off calculation
{
uint32_t puPerMilliamp = 195075 / actualMilliampsPerLed;
uint32_t powerBudget = (ablMilliampsMax - MA_FOR_ESP) * puPerMilliamp; //100mA for ESP power
if (powerBudget > puPerMilliamp * _length) //each LED uses about 1mA in standby, exclude that from power budget
{
powerBudget -= puPerMilliamp * _length;
} else
{
powerBudget = 0;
}
uint32_t powerSum = 0;
for (uint16_t i = 0; i < _length; i++) //sum up the usage of each LED
{
uint32_t c = busses.getPixelColor(i);
byte r = c >> 16, g = c >> 8, b = c, w = c >> 24;
if(useWackyWS2815PowerModel)
{
// ignore white component on WS2815 power calculation
powerSum += (MAX(MAX(r,g),b)) * 3;
}
else
{
powerSum += (r + g + b + w);
}
}
if (isRgbw) //RGBW led total output with white LEDs enabled is still 50mA, so each channel uses less
{
powerSum *= 3;
powerSum = powerSum >> 2; //same as /= 4
}
uint32_t powerSum0 = powerSum;
powerSum *= _brightness;
if (powerSum > powerBudget) //scale brightness down to stay in current limit
{
float scale = (float)powerBudget / (float)powerSum;
uint16_t scaleI = scale * 255;
uint8_t scaleB = (scaleI > 255) ? 255 : scaleI;
uint8_t newBri = scale8(_brightness, scaleB);
busses.setBrightness(newBri);
currentMilliamps = (powerSum0 * newBri) / puPerMilliamp;
} else
{
currentMilliamps = powerSum / puPerMilliamp;
busses.setBrightness(_brightness);
}
currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate
currentMilliamps += _length; //add standby power back to estimate
} else {
if (ablMilliampsMax < 150 || actualMilliampsPerLed == 0) { //0 mA per LED and too low numbers turn off calculation
currentMilliamps = 0;
busses.setBrightness(_brightness);
return;
}
uint16_t pLen = getLengthPhysical();
uint32_t puPerMilliamp = 195075 / actualMilliampsPerLed;
uint32_t powerBudget = (ablMilliampsMax - MA_FOR_ESP) * puPerMilliamp; //100mA for ESP power
if (powerBudget > puPerMilliamp * pLen) { //each LED uses about 1mA in standby, exclude that from power budget
powerBudget -= puPerMilliamp * pLen;
} else {
powerBudget = 0;
}
uint32_t powerSum = 0;
for (uint8_t b = 0; b < busses.getNumBusses(); b++) {
Bus *bus = busses.getBus(b);
if (bus->getType() >= TYPE_NET_DDP_RGB) continue; //exclude non-physical network busses
uint16_t len = bus->getLength();
uint32_t busPowerSum = 0;
for (uint16_t i = 0; i < len; i++) { //sum up the usage of each LED
uint32_t c = bus->getPixelColor(i);
byte r = c >> 16, g = c >> 8, b = c, w = c >> 24;
if(useWackyWS2815PowerModel) { //ignore white component on WS2815 power calculation
busPowerSum += (MAX(MAX(r,g),b)) * 3;
} else {
busPowerSum += (r + g + b + w);
}
}
if (bus->isRgbw()) { //RGBW led total output with white LEDs enabled is still 50mA, so each channel uses less
busPowerSum *= 3;
busPowerSum = busPowerSum >> 2; //same as /= 4
}
powerSum += busPowerSum;
}
uint32_t powerSum0 = powerSum;
powerSum *= _brightness;
if (powerSum > powerBudget) //scale brightness down to stay in current limit
{
float scale = (float)powerBudget / (float)powerSum;
uint16_t scaleI = scale * 255;
uint8_t scaleB = (scaleI > 255) ? 255 : scaleI;
uint8_t newBri = scale8(_brightness, scaleB);
busses.setBrightness(newBri); //to keep brightness uniform, sets virtual busses too
currentMilliamps = (powerSum0 * newBri) / puPerMilliamp;
} else {
currentMilliamps = powerSum / puPerMilliamp;
busses.setBrightness(_brightness);
}
currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate
currentMilliamps += pLen; //add standby power back to estimate
}
void WS2812FX::show(void) {
// avoid race condition, caputre _callback value
show_callback callback = _callback;
if (callback) callback();
estimateCurrentAndLimitBri();
// some buses send asynchronously and this method will return before
// all of the data has been sent.
// See https://github.com/Makuna/NeoPixelBus/wiki/ESP32-NeoMethods#neoesp32rmt-methods
@ -557,6 +556,20 @@ uint32_t WS2812FX::getLastShow(void) {
return _lastShow;
}
uint16_t WS2812FX::getLengthTotal(void) {
return _length;
}
uint16_t WS2812FX::getLengthPhysical(void) {
uint16_t len = 0;
for (uint8_t b = 0; b < busses.getNumBusses(); b++) {
Bus *bus = busses.getBus(b);
if (bus->getType() >= TYPE_NET_DDP_RGB) continue; //exclude non-physical network busses
len += bus->getLength();
}
return len;
}
void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing) {
if (n >= MAX_NUM_SEGMENTS) return;
Segment& seg = _segments[n];
@ -625,36 +638,67 @@ void WS2812FX::resetSegments() {
_segment_runtimes[0].reset();
}
void WS2812FX::populateDefaultSegments() {
uint16_t length = 0;
if (autoSegments) {
for (uint8_t i=0; i<busses.getNumBusses(); i++) {
Bus *bus = busses.getBus(i);
if (bus == nullptr) continue;
_segments[i].start = bus->getStart();
length += bus->getLength();
_segments[i].stop = _segments[i].start + bus->getLength();
_segments[i].mode = DEFAULT_MODE;
_segments[i].colors[0] = DEFAULT_COLOR;
_segments[i].speed = DEFAULT_SPEED;
_segments[i].intensity = DEFAULT_INTENSITY;
_segments[i].grouping = 1;
_segments[i].setOption(SEG_OPTION_SELECTED, 1);
_segments[i].setOption(SEG_OPTION_ON, 1);
_segments[i].opacity = 255;
void WS2812FX::makeAutoSegments() {
uint16_t segStarts[MAX_NUM_SEGMENTS] = {0};
uint16_t segStops [MAX_NUM_SEGMENTS] = {0};
if (autoSegments) { //make one segment per bus
uint8_t s = 0;
for (uint8_t i = 0; i < busses.getNumBusses(); i++) {
Bus* b = busses.getBus(i);
segStarts[s] = b->getStart();
segStops[s] = segStarts[s] + b->getLength();
//check for overlap with previous segments
for (uint8_t j = 0; j < s; j++) {
if (segStops[j] > segStarts[s] && segStarts[j] < segStops[s]) {
//segments overlap, merge
segStarts[j] = min(segStarts[s],segStarts[j]);
segStops [j] = max(segStops [s],segStops [j]); segStops[s] = 0;
s--;
}
}
s++;
}
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++) {
setSegment(i, segStarts[i], segStops[i]);
}
} else {
_segments[0].start = 0;
_segments[0].stop = _length;
_segments[0].mode = DEFAULT_MODE;
_segments[0].colors[0] = DEFAULT_COLOR;
_segments[0].speed = DEFAULT_SPEED;
_segments[0].intensity = DEFAULT_INTENSITY;
_segments[0].grouping = 1;
_segments[0].setOption(SEG_OPTION_SELECTED, 1);
_segments[0].setOption(SEG_OPTION_ON, 1);
_segments[0].opacity = 255;
//expand the main seg to the entire length, but only if there are no other segments
uint8_t mainSeg = getMainSegmentId();
if (getActiveSegmentsNum() < 2) {
setSegment(mainSeg, 0, _length);
}
}
fixInvalidSegments();
}
void WS2812FX::fixInvalidSegments() {
//make sure no segment is longer than total (sanity check)
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++)
{
if (_segments[i].start >= _length) setSegment(i, 0, 0);
if (_segments[i].stop > _length) setSegment(i, _segments[i].start, _length);
}
}
//true if all segments align with a bus, or if a segment covers the total length
bool WS2812FX::checkSegmentAlignment() {
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++)
{
if (_segments[i].start >= _segments[i].stop) continue; //inactive segment
bool aligned = false;
for (uint8_t b = 0; b<busses.getNumBusses(); b++) {
Bus *bus = busses.getBus(b);
if (_segments[i].start == bus->getStart() && _segments[i].stop == bus->getStart() + bus->getLength()) aligned = true;
}
if (_segments[i].start == 0 && _segments[i].stop == _length) aligned = true;
if (!aligned) return false;
}
return true;
}
//After this function is called, setPixelColor() will use that segment (offsets, grouping, ... will apply)

View File

@ -82,7 +82,6 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
CJSON(ledCount, hw_led[F("total")]);
if (ledCount > MAX_LEDS) ledCount = MAX_LEDS;
uint16_t lC = 0;
CJSON(strip.ablMilliampsMax, hw_led[F("maxpwr")]);
CJSON(strip.milliampsPerLed, hw_led[F("ledma")]);
@ -90,6 +89,8 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
JsonArray ins = hw_led["ins"];
uint16_t lC = 0;
if (fromFS || !ins.isNull()) {
uint8_t s = 0; // bus iterator
busses.removeAll();
@ -111,13 +112,14 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
uint8_t colorOrder = (int)elm[F("order")];
uint8_t skipFirst = elm[F("skip")];
uint16_t start = elm["start"] | 0;
if (start > lC+length) continue; // something is very wrong :)
if (length==0 || start + length > MAX_LEDS) continue; // zero length or we reached max. number of LEDs, just stop
uint8_t ledType = elm["type"] | TYPE_WS2812_RGB;
bool reversed = elm["rev"];
bool refresh = elm["ref"] | false;
ledType |= refresh << 7; // hack bit 7 to indicate strip requires off refresh
s++;
lC += length;
uint16_t busEnd = start + length;
if (busEnd > lC) lC = busEnd;
BusConfig bc = BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst);
mem += BusManager::memUsage(bc);
if (mem <= MAX_LED_MEMORY && busses.getNumBusses() <= WLED_MAX_BUSSES) busses.add(bc); // finalization will be done in WLED::beginStrip()

View File

@ -60,6 +60,7 @@
#define USERMOD_ID_SN_PHOTORESISTOR 17 //Usermod "usermod_sn_photoresistor.h"
#define USERMOD_ID_BATTERY_STATUS_BASIC 18 //Usermod "usermod_v2_battery_status_basic.h"
#define USERMOD_ID_PWM_FAN 19 //Usermod "usermod_PWM_fan.h"
#define USERMOD_ID_BH1750 20 //Usermod "usermod_bh1750.h"
//Access point behavior
#define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot
@ -239,10 +240,10 @@
#define NTP_PACKET_SIZE 48
// maximum number of LEDs - more than 1500 LEDs (or 500 DMA "LEDPIN 3" driven ones) will cause a low memory condition on ESP8266
//maximum number of rendered LEDs - this does not have to match max. physical LEDs, e.g. if there are virtual busses
#ifndef MAX_LEDS
#ifdef ESP8266
#define MAX_LEDS 1200 // can't rely on memory limit to limit this to 1200 LEDs
#define MAX_LEDS 1664 //can't rely on memory limit to limit this to 1600 LEDs
#else
#define MAX_LEDS 8192
#endif
@ -313,4 +314,8 @@
#endif
#endif
#ifndef DEFAULT_LED_COUNT
#define DEFAULT_LED_COUNT 30
#endif
#endif

View File

@ -160,18 +160,15 @@
}
}
if (change) {
// blazoncek experimental extension
gId("rf"+n).checked = (gId("rf"+n).checked || t == 31); // LEDs require data in off state
if (t > 31 && t < 48) d.getElementsByName("LC"+n)[0].value = 1; // for sanity change analog count just to 1 LED
}
// blazoncek experimental extension
gId("rf"+n).onclick = (t == 31) ? (function(){return false}) : (function(){}); // prevent change for TM1814
isRGBW |= (t == 30 || t == 31 || (t > 40 && t < 46 && t != 43)); // RGBW checkbox, TYPE_xxxx values from const.h
gId("co"+n).style.display = ((t>=80 && t<96) || t == 41 || t == 42) ? "none":"inline"; // hide color order for PWM W & WW/CW
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
// blazoncek experimental extension
gId("dig"+n+"f").style.display = (t>=16 && t<32 || t>=50 && t<64) ? "inline":"none"; // hide refresh
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

View File

@ -131,6 +131,7 @@
<option value="17">ACST/ACDT</option>
<option value="18">HST (Hawaii)</option>
<option value="19">NOVT (Novosibirsk)</option>
<option value="20">AKST/AKDT (Anchorage)</option>
</select><br>
UTC offset: <input name="UO" type="number" min="-65500" max="65500" required> seconds (max. 18 hours)<br>
Current local time is <span class="times">unknown</span>.<br>

View File

@ -352,31 +352,31 @@ US-MST/MDT</option><option value="7">US-AZ</option><option value="8">US-PST/PDT
</option><option value="13">North Korea</option><option value="14">IST (India)
</option><option value="15">CA-Saskatchewan</option><option value="16">ACST
</option><option value="17">ACST/ACDT</option><option value="18">HST (Hawaii)
</option><option value="19">NOVT (Novosibirsk)</option></select><br>UTC offset:
<input name="UO" type="number" min="-65500" max="65500" required>
seconds (max. 18 hours)<br>Current local time is <span class="times">unknown
</span>.<br>Latitude (N): <input name="LT" type="number" class="xl" min="-66.6"
max="66.6" step="0.01"> Longitude (E): <input name="LN" type="number"
class="xl" min="-180" max="180" step="0.01"><div id="sun" class="times"></div>
<h3>Clock</h3>Clock Overlay: <select name="OL" onchange="Cs()"><option
value="0" id="cn" selected="selected">None</option><option value="1" id="ca">
Analog Clock</option><option value="2">Single Digit Clock</option><option
value="3" id="cc">Cronixie Clock</option></select><br><div id="coc">First LED:
<input name="O1" type="number" min="0" max="255" required> Last LED: <input
name="O2" type="number" min="0" max="255" required><br><div id="cac">12h LED:
<input name="OM" type="number" min="0" max="255" required><br>Show 5min marks:
<input type="checkbox" name="O5"><br></div>Seconds (as trail): <input
type="checkbox" name="OS"><br></div><div id="ccc">Cronixie Display: <input
name="CX" maxlength="6"><br>Cronixie Backlight: <input type="checkbox"
name="CB"><br></div>Countdown Mode: <input type="checkbox" name="CE"><br>
Countdown Goal:<br>Year: 20 <input name="CY" class="small" type="number"
min="0" max="99" required> Month: <input name="CI" class="small" type="number"
min="1" max="12" required> Day: <input name="CD" class="small" type="number"
min="1" max="31" required><br>Hour: <input name="CH" class="small"
type="number" min="0" max="23" required> Minute: <input name="CM" class="small"
type="number" min="0" max="59" required> Second: <input name="CS" class="small"
type="number" min="0" max="59" required><br><h3>Macro presets</h3><b>
Macros have moved!</b><br><i>
</option><option value="19">NOVT (Novosibirsk)</option><option value="20">
AKST/AKDT (Anchorage)</option></select><br>UTC offset: <input name="UO"
type="number" min="-65500" max="65500" required> seconds (max. 18 hours)<br>
Current local time is <span class="times">unknown</span>.<br>Latitude (N):
<input name="LT" type="number" class="xl" min="-66.6" max="66.6" step="0.01">
Longitude (E): <input name="LN" type="number" class="xl" min="-180" max="180"
step="0.01"><div id="sun" class="times"></div><h3>Clock</h3>Clock Overlay:
<select name="OL" onchange="Cs()"><option value="0" id="cn" selected="selected">
None</option><option value="1" id="ca">Analog Clock</option><option value="2">
Single Digit Clock</option><option value="3" id="cc">Cronixie Clock</option>
</select><br><div id="coc">First LED: <input name="O1" type="number" min="0"
max="255" required> Last LED: <input name="O2" type="number" min="0" max="255"
required><br><div id="cac">12h LED: <input name="OM" type="number" min="0"
max="255" required><br>Show 5min marks: <input type="checkbox" name="O5"><br>
</div>Seconds (as trail): <input type="checkbox" name="OS"><br></div><div
id="ccc">Cronixie Display: <input name="CX" maxlength="6"><br>
Cronixie Backlight: <input type="checkbox" name="CB"><br></div>Countdown Mode:
<input type="checkbox" name="CE"><br>Countdown Goal:<br>Year: 20 <input
name="CY" class="small" type="number" min="0" max="99" required> Month: <input
name="CI" class="small" type="number" min="1" max="12" required> Day: <input
name="CD" class="small" type="number" min="1" max="31" required><br>Hour: <input
name="CH" class="small" type="number" min="0" max="23" required> Minute: <input
name="CM" class="small" type="number" min="0" max="59" required> Second: <input
name="CS" class="small" type="number" min="0" max="59" required><br><h3>
Macro presets</h3><b>Macros have moved!</b><br><i>
Presets now also can be used as macros to save both JSON and HTTP API commands.
<br>Just enter the preset id below!</i> <i>
Use 0 for the default action instead of a preset</i><br>Alexa On/Off Preset:

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -41,6 +41,7 @@ Timezone* tz;
#define TZ_AUSTRALIA_SOUTHERN 17
#define TZ_HAWAII 18
#define TZ_NOVOSIBIRSK 19
#define TZ_ANCHORAGE 20
#define TZ_INIT 255
byte tzCurrent = TZ_INIT; //uninitialized
@ -146,6 +147,11 @@ void updateTimezone() {
tcrStandard = tcrDaylight;
break;
}
case TZ_ANCHORAGE : {
tcrDaylight = {Second, Sun, Mar, 2, -480}; //AKDT = UTC - 8 hours
tcrStandard = {First, Sun, Nov, 2, -540}; //AKST = UTC - 9 hours
break;
}
}
tzCurrent = currentTimezone;

View File

@ -128,10 +128,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
// actual finalization is done in WLED::loop() (removing old busses and adding new)
if (busConfigs[s] != nullptr) delete busConfigs[s];
busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder, request->hasArg(cv), skip);
if (!doInitBusses) ledCount = 1;
doInitBusses = true;
uint16_t totalNew = start + length;
if (totalNew > ledCount && totalNew <= MAX_LEDS) ledCount = totalNew; //total is end of last bus (where start + len is max.)
}
// upate other pins
@ -539,11 +536,10 @@ bool updateVal(const String* req, const char* key, byte* val, byte minv, byte ma
int out = getNumVal(req, pos+1);
if (out == 0)
{
if (req->charAt(pos+4) == '-')
{
*val = (*val <= minv)? maxv : *val -1;
if (req->charAt(pos+4) == '-') {
*val = min((int)maxv, max((int)minv, (int)(*val -1)));
} else {
*val = (*val >= maxv)? minv : *val +1;
*val = min((int)maxv, max((int)minv, (int)(*val +1)));
}
} else {
out += *val;
@ -585,7 +581,7 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply)
if (t < strip.getMaxSegments()) selectedSeg = t;
}
WS2812FX::Segment& mainseg = strip.getSegment(selectedSeg);
WS2812FX::Segment& selseg = strip.getSegment(selectedSeg);
pos = req.indexOf(F("SV=")); //segment selected
if (pos > 0) {
byte t = getNumVal(&req, pos);
@ -595,13 +591,13 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply)
strip.getSegment(i).setOption(SEG_OPTION_SELECTED, 0);
}
}
mainseg.setOption(SEG_OPTION_SELECTED, t);
selseg.setOption(SEG_OPTION_SELECTED, t);
}
uint16_t startI = mainseg.start;
uint16_t stopI = mainseg.stop;
uint8_t grpI = mainseg.grouping;
uint16_t spcI = mainseg.spacing;
uint16_t startI = selseg.start;
uint16_t stopI = selseg.stop;
uint8_t grpI = selseg.grouping;
uint16_t spcI = selseg.spacing;
pos = req.indexOf(F("&S=")); //segment start
if (pos > 0) {
startI = getNumVal(&req, pos);
@ -622,26 +618,26 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply)
strip.setSegment(selectedSeg, startI, stopI, grpI, spcI);
pos = req.indexOf(F("RV=")); //Segment reverse
if (pos > 0) mainseg.setOption(SEG_OPTION_REVERSED, req.charAt(pos+3) != '0');
if (pos > 0) selseg.setOption(SEG_OPTION_REVERSED, req.charAt(pos+3) != '0');
pos = req.indexOf(F("MI=")); //Segment mirror
if (pos > 0) mainseg.setOption(SEG_OPTION_MIRROR, req.charAt(pos+3) != '0');
if (pos > 0) selseg.setOption(SEG_OPTION_MIRROR, req.charAt(pos+3) != '0');
pos = req.indexOf(F("SB=")); //Segment brightness/opacity
if (pos > 0) {
byte segbri = getNumVal(&req, pos);
mainseg.setOption(SEG_OPTION_ON, segbri, selectedSeg);
selseg.setOption(SEG_OPTION_ON, segbri, selectedSeg);
if (segbri) {
mainseg.setOpacity(segbri, selectedSeg);
selseg.setOpacity(segbri, selectedSeg);
}
}
pos = req.indexOf(F("SW=")); //segment power
if (pos > 0) {
switch (getNumVal(&req, pos)) {
case 0: mainseg.setOption(SEG_OPTION_ON, false); break;
case 1: mainseg.setOption(SEG_OPTION_ON, true); break;
default: mainseg.setOption(SEG_OPTION_ON, !mainseg.getOption(SEG_OPTION_ON)); break;
case 0: selseg.setOption(SEG_OPTION_ON, false); break;
case 1: selseg.setOption(SEG_OPTION_ON, true); break;
default: selseg.setOption(SEG_OPTION_ON, !selseg.getOption(SEG_OPTION_ON)); break;
}
}
@ -738,7 +734,7 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply)
strip.applyToAllSelected = true;
strip.setColor(2, t[0], t[1], t[2], t[3]);
} else {
mainseg.setColor(2,((t[0] << 16) + (t[1] << 8) + t[2] + (t[3] << 24)), selectedSeg);
selseg.setColor(2,((t[0] << 16) + (t[1] << 8) + t[2] + (t[3] << 24)), selectedSeg); // defined above (SS=)
}
}

View File

@ -293,15 +293,23 @@ void WLED::loop()
if (doInitBusses) {
doInitBusses = false;
DEBUG_PRINTLN(F("Re-init busses."));
bool aligned = strip.checkSegmentAlignment(); //see if old segments match old bus(ses)
busses.removeAll();
uint32_t mem = 0;
ledCount = 1;
for (uint8_t i = 0; i < WLED_MAX_BUSSES; i++) {
if (busConfigs[i] == nullptr) break;
mem += BusManager::memUsage(*busConfigs[i]);
if (mem <= MAX_LED_MEMORY) busses.add(*busConfigs[i]);
if (mem <= MAX_LED_MEMORY) {
uint16_t totalNew = busConfigs[i]->start + busConfigs[i]->count;
if (totalNew > ledCount && totalNew <= MAX_LEDS) ledCount = totalNew; //total is end of last bus (where start + len is max.)
busses.add(*busConfigs[i]);
}
delete busConfigs[i]; busConfigs[i] = nullptr;
}
strip.finalizeInit();
if (aligned) strip.makeAutoSegments();
else strip.fixInvalidSegments();
yield();
serializeConfig();
}
@ -476,7 +484,7 @@ void WLED::beginStrip()
{
// Initialize NeoPixel Strip and button
strip.finalizeInit(); // busses created during deserializeConfig()
strip.populateDefaultSegments();
strip.makeAutoSegments();
strip.setBrightness(0);
strip.setShowCallback(handleOverlayDraw);
@ -814,3 +822,39 @@ void WLED::handleConnection()
}
}
}
// If status LED pin is allocated for other uses, does nothing
// else blink at 1Hz when WLED_CONNECTED is false (no WiFi, ?? no Ethernet ??)
// else blink at 2Hz when MQTT is enabled but not connected
// else turn the status LED off
void WLED::handleStatusLED()
{
#if STATUSLED
static unsigned long ledStatusLastMillis = 0;
static unsigned short ledStatusType = 0; // current status type - corresponds to number of blinks per second
static bool ledStatusState = 0; // the current LED state
if (pinManager.isPinAllocated(STATUSLED)) {
return; //lower priority if something else uses the same pin
}
ledStatusType = WLED_CONNECTED ? 0 : 2;
if (mqttEnabled && ledStatusType != 2) { // Wi-Fi takes precendence over MQTT
ledStatusType = WLED_MQTT_CONNECTED ? 0 : 4;
}
if (ledStatusType) {
if (millis() - ledStatusLastMillis >= (1000/ledStatusType)) {
ledStatusLastMillis = millis();
ledStatusState = ledStatusState ? 0 : 1;
digitalWrite(STATUSLED, ledStatusState);
}
} else {
#ifdef STATUSLEDINVERTED
digitalWrite(STATUSLED, HIGH);
#else
digitalWrite(STATUSLED, LOW);
#endif
}
#endif
}

View File

@ -8,7 +8,7 @@
*/
// version code in format yymmddb (b = daily build)
#define VERSION 2110072
#define VERSION 2110111
//uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG
@ -371,7 +371,7 @@ WLED_GLOBAL byte currentTimezone _INIT(0); // Timezone ID. Refer to timez
WLED_GLOBAL int utcOffsetSecs _INIT(0); // Seconds to offset from UTC before timzone calculation
WLED_GLOBAL byte overlayDefault _INIT(0); // 0: no overlay 1: analog clock 2: single-digit clock 3: cronixie
WLED_GLOBAL byte overlayMin _INIT(0), overlayMax _INIT(ledCount - 1); // boundaries of overlay mode
WLED_GLOBAL byte overlayMin _INIT(0), overlayMax _INIT(DEFAULT_LED_COUNT - 1); // boundaries of overlay mode
WLED_GLOBAL byte analogClock12pixel _INIT(0); // The pixel in your strip where "midnight" would be
WLED_GLOBAL bool analogClockSecondsTrail _INIT(false); // Display seconds as trail of LEDs instead of a single pixel
@ -667,5 +667,6 @@ public:
void initAP(bool resetAP = false);
void initConnection();
void initInterfaces();
void handleStatusLED();
};
#endif // WLED_H