Browse Source

Add TUYA_SUPPORT (#1997)

- add experimental `relayDummy` to configure dummy relays at runtime
- add tuya-generic-dimmer #1729
- cleanup broker interface to allow Tuya module to properly receive events, modify broker methods to allow different function signatures
- add basic tests for Tuya frame and data protocol
master
Max Prokhorov 5 years ago
committed by GitHub
parent
commit
9a5698b342
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
50 changed files with 6056 additions and 4330 deletions
  1. +2
    -0
      CHANGELOG.md
  2. +12
    -9
      code/espurna/alexa.ino
  3. +56
    -0
      code/espurna/broker.h
  4. +0
    -32
      code/espurna/broker.ino
  5. +13
    -0
      code/espurna/config/dependencies.h
  6. +11
    -0
      code/espurna/config/general.h
  7. +10
    -1
      code/espurna/config/hardware.h
  8. +5
    -7
      code/espurna/config/prototypes.h
  9. +4
    -12
      code/espurna/config/types.h
  10. BIN
      code/espurna/data/index.all.html.gz
  11. BIN
      code/espurna/data/index.light.html.gz
  12. BIN
      code/espurna/data/index.lightfox.html.gz
  13. BIN
      code/espurna/data/index.rfbridge.html.gz
  14. BIN
      code/espurna/data/index.rfm69.html.gz
  15. BIN
      code/espurna/data/index.sensor.html.gz
  16. BIN
      code/espurna/data/index.small.html.gz
  17. BIN
      code/espurna/data/index.thermostat.html.gz
  18. +29
    -14
      code/espurna/domoticz.ino
  19. +7
    -3
      code/espurna/espurna.ino
  20. +10
    -7
      code/espurna/influxdb.ino
  21. +6
    -6
      code/espurna/led.ino
  22. +2
    -0
      code/espurna/light.h
  23. +39
    -24
      code/espurna/light.ino
  24. +2
    -2
      code/espurna/ntp.ino
  25. +52
    -15
      code/espurna/relay.ino
  26. +18
    -18
      code/espurna/rpnrules.ino
  27. +5
    -2
      code/espurna/sensor.ino
  28. +510
    -509
      code/espurna/static/index.all.html.gz.h
  29. +494
    -493
      code/espurna/static/index.light.html.gz.h
  30. +131
    -130
      code/espurna/static/index.lightfox.html.gz.h
  31. +146
    -145
      code/espurna/static/index.rfbridge.html.gz.h
  32. +1487
    -1486
      code/espurna/static/index.rfm69.html.gz.h
  33. +140
    -139
      code/espurna/static/index.sensor.html.gz.h
  34. +131
    -130
      code/espurna/static/index.small.html.gz.h
  35. +1133
    -1132
      code/espurna/static/index.thermostat.html.gz.h
  36. +11
    -13
      code/espurna/thinkspeak.ino
  37. +25
    -0
      code/espurna/tuya.h
  38. +557
    -0
      code/espurna/tuya.ino
  39. +133
    -0
      code/espurna/tuya_dataframe.h
  40. +116
    -0
      code/espurna/tuya_protocol.h
  41. +228
    -0
      code/espurna/tuya_transport.h
  42. +51
    -0
      code/espurna/tuya_types.h
  43. +124
    -0
      code/espurna/tuya_util.h
  44. +6
    -1
      code/html/custom.js
  45. +4
    -0
      code/platformio.ini
  46. +4
    -0
      code/test/build/light_tuya.h
  47. +60
    -0
      code/test/lib/StreamString/StreamString.cpp
  48. +39
    -0
      code/test/lib/StreamString/StreamString.h
  49. +11
    -0
      code/test/platformio.ini
  50. +232
    -0
      code/test/unit/tuya_test.cpp

+ 2
- 0
CHANGELOG.md View File

@ -85,6 +85,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Restore last schedule after reboot ([#1948](https://github.com/xoseperez/espurna/issues/1948), thanks to **[@foxman69](https://github.com/foxman69)**)
- Add `relayDelayOnN`, `relayDelayOffN`, `relayFloodTime`, `relayFloodCount` as runtime settings ([#1594](https://github.com/xoseperez/espurna/issues/1594), [#1962](https://github.com/xoseperez/espurna/pull/1962))
- Add experimental `relayDelayInterlock` to add a pause after turning relay off in SYNC\_ONE or SYNC\_NONE\_OR\_ONE modes ([#1510](https://github.com/xoseperez/espurna/issues/1510), [#1962](https://github.com/xoseperez/espurna/pull/1962))
- Add experimental `TUYA_SUPPORT` and `LIGHT_PROVIDER_TUYA` ([#1729](https://github.com/xoseperez/espurna/issues/1729), [#1997](https://github.com/xoseperez/espurna/issues/1997))
#### MQTT
- Add option to disable relay reporting ([#1645](https://github.com/xoseperez/espurna/issues/1645), thanks to **[@Niek](https://github.com/Niek)**)
- Safer settings reload and change detection ([#1701](https://github.com/xoseperez/espurna/issues/1701))
@ -118,6 +119,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- ESP8266 FS-UAP1 Control board ([#1925](https://github.com/xoseperez/espurna/issues/1925), thanks to **[@NemoN](https://github.com/NemoN)**)
- Support for Teckin SP21 (Thanks to **[@xoseperez](https://github.com/xoseperez)**)
- Support for TFlag NX-SM100 and NX-SM200 power monitoring switches (Thanks to **[@xoseperez](https://github.com/xoseperez)**)
- Add tuya-generic-dimmer ([#1729](https://github.com/xoseperez/espurna/issues/1729), [#1997](https://github.com/xoseperez/espurna/issues/1997))
#### WebUI
- Configure WEB_REMOTE_DOMAIN at runtime ([#1789](https://github.com/xoseperez/espurna/issues/1789))
#### Modules


+ 12
- 9
code/espurna/alexa.ino View File

@ -8,6 +8,8 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#if ALEXA_SUPPORT
#include "broker.h"
#include <fauxmoESP.h>
fauxmoESP alexa;
@ -48,18 +50,19 @@ void _alexaConfigure() {
#endif
#if BROKER_SUPPORT
void _alexaBrokerCallback(const unsigned char type, const char * topic, unsigned char id, const char * payload) {
void _alexaBrokerCallback(const String& topic, unsigned char id, unsigned int value) {
// Only process status messages
if (BROKER_MSG_TYPE_STATUS != type) return;
unsigned char value = atoi(payload);
// Only process status messages for switches and channels
if (!topic.equals(MQTT_TOPIC_CHANNEL)
&& !topic.equals(MQTT_TOPIC_RELAY)) {
return;
}
if (strcmp(MQTT_TOPIC_CHANNEL, topic) == 0) {
alexa.setState(id+1, value > 0, value);
if (topic.equals(MQTT_TOPIC_CHANNEL)) {
alexa.setState(id + 1, value > 0, value);
}
if (strcmp(MQTT_TOPIC_RELAY, topic) == 0) {
if (topic.equals(MQTT_TOPIC_RELAY)) {
#if RELAY_PROVIDER == RELAY_PROVIDER_LIGHT
if (id > 0) return;
#endif
@ -146,7 +149,7 @@ void alexaSetup() {
// Register main callbacks
#if BROKER_SUPPORT
brokerRegister(_alexaBrokerCallback);
StatusBroker::Register(_alexaBrokerCallback);
#endif
espurnaRegisterReload(_alexaConfigure);
espurnaRegisterLoop(alexaLoop);


+ 56
- 0
code/espurna/broker.h View File

@ -0,0 +1,56 @@
/*
BROKER MODULE
Copyright (C) 2017-2019 by Xose Pérez <xose dot perez at gmail dot com>
*/
#if BROKER_SUPPORT
#pragma once
#include <functional>
#include <vector>
#include <utility>
enum class TBrokerType {
SYSTEM,
STATUS,
SENSOR,
DATETIME,
CONFIG
};
template <typename... TArgs>
using TBrokerCallback = std::function<void(TArgs...)>;
template <typename... TArgs>
using TBrokerCallbacks = std::vector<TBrokerCallback<TArgs...>>;
template <TBrokerType type, typename... TArgs>
struct TBroker {
static TBrokerCallbacks<TArgs...> callbacks;
static void Register(TBrokerCallback<TArgs...> callback) {
callbacks.push_back(callback);
}
static void Publish(TArgs... args) {
for (auto& callback : callbacks) {
callback(args...);
}
}
};
template <TBrokerType type, typename... TArgs>
TBrokerCallbacks<TArgs...> TBroker<type, TArgs...>::callbacks;
// --- Some known types. Bind them here to avoid .ino screwing with order ---
using StatusBroker = TBroker<TBrokerType::STATUS, const String&, unsigned char, unsigned int>;
using SensorBroker = TBroker<TBrokerType::SENSOR, const String&, unsigned char, double, const char*>;
using TimeBroker = TBroker<TBrokerType::DATETIME, const String&, time_t, const String&>;
using ConfigBroker = TBroker<TBrokerType::CONFIG, const String&, const String&>;
#endif // BROKER_SUPPORT

+ 0
- 32
code/espurna/broker.ino View File

@ -1,32 +0,0 @@
/*
BROKER MODULE
Copyright (C) 2017-2019 by Xose Pérez <xose dot perez at gmail dot com>
*/
#if BROKER_SUPPORT
#include <vector>
std::vector<void (*)(const unsigned char, const char *, unsigned char, const char *)> _broker_callbacks;
// -----------------------------------------------------------------------------
void brokerRegister(void (*callback)(const unsigned char, const char *, unsigned char, const char *)) {
_broker_callbacks.push_back(callback);
}
void brokerPublish(const unsigned char type, const char * topic, unsigned char id, const char * message) {
//DEBUG_MSG_P(PSTR("[BROKER] Message %s[%u] => %s\n"), topic, id, message);
for (unsigned char i=0; i<_broker_callbacks.size(); i++) {
(_broker_callbacks[i])(type, topic, id, message);
}
}
void brokerPublish(const unsigned char type, const char * topic, const char * message) {
brokerPublish(type, topic, 0, message);
}
#endif // BROKER_SUPPORT

+ 13
- 0
code/espurna/config/dependencies.h View File

@ -106,3 +106,16 @@
#undef SSDP_SUPPORT
#define SSDP_SUPPORT 0
#endif
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
#undef TUYA_SUPPORT
#define TUYA_SUPPORT 1 // Need base Tuya module for this to work
#undef LIGHT_USE_TRANSITIONS
#define LIGHT_USE_TRANSITIONS 0 // TODO: temporary, maybe slower step instead?
#endif
#if TUYA_SUPPORT
#undef BROKER_SUPPORT
#define BROKER_SUPPORT 1 // Broker is required to process relay & lights events
#endif

+ 11
- 0
code/espurna/config/general.h View File

@ -1808,3 +1808,14 @@
#ifndef RFM69_IS_RFM69HW
#define RFM69_IS_RFM69HW 0
#endif
//--------------------------------------------------------------------------------
// TUYA switch & dimmer support
//--------------------------------------------------------------------------------
#ifndef TUYA_SUPPORT
#define TUYA_SUPPORT 0
#endif
#ifndef TUYA_SERIAL
#define TUYA_SERIAL Serial
#endif

+ 10
- 1
code/espurna/config/hardware.h View File

@ -3900,6 +3900,16 @@
#define LED2_RELAY 1
#define LED2_MODE LED_MODE_FINDME_WIFI
#elif defined(TUYA_GENERIC_DIMMER)
#define MANUFACTURER "TUYA"
#define DEVICE "GENERIC_DIMMER"
#define LIGHT_PROVIDER LIGHT_PROVIDER_TUYA
#define LIGHT_CHANNELS 0
#define RELAY_PROVIDER RELAY_PROVIDER_LIGHT
#define DUMMY_RELAY_COUNT 0
// -----------------------------------------------------------------------------
// Etekcity ESW01-USA
// https://www.amazon.com/Etekcity-Voltson-Outlet-Monitoring-Required/dp/B01M3MYIFS
@ -4019,7 +4029,6 @@
#define HLW8012_POWER_RATIO 3711185
#define HLW8012_INTERRUPT_ON FALLING
// -----------------------------------------------------------------------------
// MUVIT_IO_MIOBULB001
// -----------------------------------------------------------------------------


+ 5
- 7
code/espurna/config/prototypes.h View File

@ -88,13 +88,6 @@ using api_put_callback_f = std::function<void(const char *)> ;
void apiRegister(const char * key, api_get_callback_f getFn, api_put_callback_f putFn = NULL);
#endif
// -----------------------------------------------------------------------------
// Broker
// -----------------------------------------------------------------------------
#if BROKER_SUPPORT
void brokerRegister(void (*)(const unsigned char, const char *, unsigned char, const char *));
#endif
// -----------------------------------------------------------------------------
// Debug
// -----------------------------------------------------------------------------
@ -106,6 +99,9 @@ extern "C" {
void custom_crash_callback(struct rst_info*, uint32_t, uint32_t);
}
class PrintRaw;
class PrintHex;
// Core version 2.4.2 and higher changed the cont_t structure to a pointer:
// https://github.com/esp8266/Arduino/commit/5d5ea92a4d004ab009d5f642629946a0cb8893dd#diff-3fa12668b289ccb95b7ab334833a4ba8L35
// Core version 2.5.0 introduced EspClass helper method:
@ -282,6 +278,8 @@ const String& relayPayloadOff();
const String& relayPayloadToggle();
const char* relayPayload(RelayStatus status);
void relaySetupDummy(unsigned char size, bool reconfigure = false);
// -----------------------------------------------------------------------------
// Settings
// -----------------------------------------------------------------------------


+ 4
- 12
code/espurna/config/types.h View File

@ -3,15 +3,6 @@
// Do not touch this definitions
//------------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// BROKER
// -----------------------------------------------------------------------------
#define BROKER_MSG_TYPE_SYSTEM 0
#define BROKER_MSG_TYPE_DATETIME 1
#define BROKER_MSG_TYPE_STATUS 2
#define BROKER_MSG_TYPE_SENSOR 3
// -----------------------------------------------------------------------------
// WIFI
// -----------------------------------------------------------------------------
@ -103,9 +94,9 @@
#define RELAY_GROUP_SYNC_INVERSE 1
#define RELAY_GROUP_SYNC_RECEIVEONLY 2
#define RELAY_LOCK_OFF 0
#define RELAY_LOCK_ON 1
#define RELAY_LOCK_DISABLED 2
#define RELAY_LOCK_DISABLED 0
#define RELAY_LOCK_OFF 1
#define RELAY_LOCK_ON 2
//------------------------------------------------------------------------------
// UDP SYSLOG
@ -192,6 +183,7 @@
#define LIGHT_PROVIDER_NONE 0
#define LIGHT_PROVIDER_MY92XX 1 // works with MY9291 and MY9231
#define LIGHT_PROVIDER_DIMMER 2
#define LIGHT_PROVIDER_TUYA 3
// -----------------------------------------------------------------------------
// SCHEDULER


BIN
code/espurna/data/index.all.html.gz View File


BIN
code/espurna/data/index.light.html.gz View File


BIN
code/espurna/data/index.lightfox.html.gz View File


BIN
code/espurna/data/index.rfbridge.html.gz View File


BIN
code/espurna/data/index.rfm69.html.gz View File


BIN
code/espurna/data/index.sensor.html.gz View File


BIN
code/espurna/data/index.small.html.gz View File


BIN
code/espurna/data/index.thermostat.html.gz View File


+ 29
- 14
code/espurna/domoticz.ino View File

@ -8,6 +8,7 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#if DOMOTICZ_SUPPORT
#include "broker.h"
#include <ArduinoJson.h>
bool _dcz_enabled = false;
@ -38,10 +39,12 @@ void _domoticzMqttSubscribe(bool value) {
}
bool _domoticzStatus(unsigned char id) {
if (id >= _dcz_relay_state.size()) return false;
return _dcz_relay_state[id];
}
void _domoticzStatus(unsigned char id, bool status) {
if (id >= _dcz_relay_state.size()) return;
_dcz_relay_state[id] = status;
relayStatus(id, status);
}
@ -162,19 +165,27 @@ void _domoticzMqtt(unsigned int type, const char * topic, char * payload) {
};
#if BROKER_SUPPORT
void _domoticzBrokerCallback(const unsigned char type, const char * topic, unsigned char id, const char * payload) {
// Only process status messages
if (BROKER_MSG_TYPE_STATUS != type) return;
void _domoticzConfigCallback(const String& key, const String& value) {
if (key.equals("relayDummy")) {
_domoticzRelayConfigure(value.toInt());
return;
}
}
void _domoticzBrokerCallback(const String& topic, unsigned char id, unsigned int value) {
if (strcmp(MQTT_TOPIC_RELAY, topic) == 0) {
bool status = atoi(payload) == 1;
if (_domoticzStatus(id) == status) return;
_dcz_relay_state[id] = status;
domoticzSendRelay(id, status);
// Only process status messages for switches
if (!topic.equals(MQTT_TOPIC_RELAY)) {
return;
}
if (_domoticzStatus(id) == value) return;
_dcz_relay_state[id] = value;
domoticzSendRelay(id, value);
}
#endif // BROKER_SUPPORT
#if WEB_SUPPORT
@ -206,15 +217,18 @@ void _domoticzWebSocketOnConnected(JsonObject& root) {
#endif // WEB_SUPPORT
void _domoticzRelayConfigure(size_t size) {
_dcz_relay_state.reserve(size);
for (size_t n = 0; n < size; ++n) {
_dcz_relay_state[n] = relayStatus(n);
}
}
void _domoticzConfigure() {
bool enabled = getSetting("dczEnabled", DOMOTICZ_ENABLED).toInt() == 1;
if (enabled != _dcz_enabled) _domoticzMqttSubscribe(enabled);
_dcz_relay_state.reserve(relayCount());
for (size_t n = 0; n < relayCount(); ++n) {
_dcz_relay_state[n] = relayStatus(n);
}
_domoticzRelayConfigure(relayCount());
_dcz_enabled = enabled;
}
@ -267,7 +281,8 @@ void domoticzSetup() {
#endif
#if BROKER_SUPPORT
brokerRegister(_domoticzBrokerCallback);
StatusBroker::Register(_domoticzBrokerCallback);
ConfigBroker::Register(_domoticzConfigCallback);
#endif
// Callbacks


+ 7
- 3
code/espurna/espurna.ino View File

@ -22,6 +22,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config/all.h"
#include <vector>
#include "broker.h"
#include "tuya.h"
#include "libs/HeapStats.h"
std::vector<void (*)()> _loop_callbacks;
@ -47,8 +49,8 @@ void espurnaReload() {
}
void _espurnaReload() {
for (unsigned char i = 0; i < _reload_callbacks.size(); i++) {
(_reload_callbacks[i])();
for (const auto& callback : _reload_callbacks) {
callback();
}
}
@ -234,7 +236,9 @@ void setup() {
#if THERMOSTAT_DISPLAY_SUPPORT
displaySetup();
#endif
#if TUYA_SUPPORT
tuyaSetup();
#endif
// 3rd party code hook
#if USE_EXTRA


+ 10
- 7
code/espurna/influxdb.ino View File

@ -10,6 +10,7 @@ Copyright (C) 2017-2019 by Xose Pérez <xose dot perez at gmail dot com>
#include "ESPAsyncTCP.h"
#include "broker.h"
#include "libs/SyncClientWrap.h"
bool _idb_enabled = false;
@ -43,14 +44,15 @@ void _idbConfigure() {
}
#if BROKER_SUPPORT
void _idbBrokerCallback(const unsigned char type, const char * topic, unsigned char id, const char * payload) {
// Only process status & senssor messages
if ((BROKER_MSG_TYPE_STATUS == type) || (BROKER_MSG_TYPE_SENSOR == type)) {
idbSend(topic, id, (char *) payload);
}
void _idbBrokerSensor(const String& topic, unsigned char id, double, const char* value) {
idbSend(topic.c_str(), id, value);
}
void _idbBrokerStatus(const String& topic, unsigned char id, unsigned int value) {
idbSend(topic.c_str(), id, String(int(value)).c_str());
}
#endif // BROKER_SUPPORT
// -----------------------------------------------------------------------------
@ -128,7 +130,8 @@ void idbSetup() {
#endif
#if BROKER_SUPPORT
brokerRegister(_idbBrokerCallback);
StatusBroker::Register(_idbBrokerStatus);
SensorBroker::Register(_idbBrokerSensor);
#endif
// Main callbacks


+ 6
- 6
code/espurna/led.ino View File

@ -12,6 +12,8 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#if LED_SUPPORT
#include "broker.h"
typedef struct {
unsigned char pin;
bool reverse;
@ -94,12 +96,10 @@ void _ledWebSocketOnConnected(JsonObject& root) {
#endif
#if BROKER_SUPPORT
void _ledBrokerCallback(const unsigned char type, const char * topic, unsigned char id, const char * payload) {
void _ledBrokerCallback(const String& topic, unsigned char, unsigned int) {
// Only process status messages
if (BROKER_MSG_TYPE_STATUS != type) return;
if (strcmp(MQTT_TOPIC_RELAY, topic) == 0) {
// Only process status messages for switches
if (topic.equals(MQTT_TOPIC_RELAY)) {
ledUpdate(true);
}
@ -212,7 +212,7 @@ void ledSetup() {
#endif
#if BROKER_SUPPORT
brokerRegister(_ledBrokerCallback);
StatusBroker::Register(_ledBrokerCallback);
#endif


+ 2
- 0
code/espurna/light.h View File

@ -5,6 +5,8 @@
#pragma once
namespace Light {
constexpr const size_t CHANNELS_MAX = 5;
constexpr const long VALUE_MIN = LIGHT_MIN_VALUE;
constexpr const long VALUE_MAX = LIGHT_MAX_VALUE;


+ 39
- 24
code/espurna/light.ino View File

@ -8,7 +8,9 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#if LIGHT_PROVIDER != LIGHT_PROVIDER_NONE
#include "tuya.h"
#include "light.h"
#include "broker.h"
#include <Ticker.h>
#include <Schedule.h>
@ -34,7 +36,7 @@ Ticker _light_transition_ticker;
struct channel_t {
unsigned char pin; // real GPIO pin
bool reverse; // wether we should invert the value before using it
bool reverse; // whether we should invert the value before using it
bool state; // is the channel ON
unsigned char inputValue; // raw value, without the brightness
unsigned char value; // normalized value, including brightness
@ -43,6 +45,8 @@ struct channel_t {
};
std::vector<channel_t> _light_channel;
unsigned char _light_channels = LIGHT_CHANNELS;
bool _light_has_color = false;
bool _light_use_white = false;
bool _light_use_cct = false;
@ -586,17 +590,15 @@ void _lightProviderScheduleUpdate(unsigned long steps) {
union light_rtcmem_t {
struct {
uint8_t channels[5];
uint8_t channels[Light::CHANNELS_MAX];
uint8_t brightness;
uint16_t mired;
} packed;
} __attribute__((packed)) packed;
uint64_t value;
};
#define LIGHT_RTCMEM_CHANNELS_MAX sizeof(light_rtcmem_t().packed.channels)
void _lightSaveRtcmem() {
if (lightChannels() > LIGHT_RTCMEM_CHANNELS_MAX) return;
if (lightChannels() > Light::CHANNELS_MAX) return;
light_rtcmem_t light;
@ -611,7 +613,7 @@ void _lightSaveRtcmem() {
}
void _lightRestoreRtcmem() {
if (lightChannels() > LIGHT_RTCMEM_CHANNELS_MAX) return;
if (lightChannels() > Light::CHANNELS_MAX) return;
light_rtcmem_t light;
light.value = Rtcmem->light;
@ -797,10 +799,8 @@ void lightMQTTGroup() {
#if BROKER_SUPPORT
void lightBroker() {
char buffer[10];
for (unsigned int i=0; i < _light_channel.size(); i++) {
itoa(_light_channel[i].inputValue, buffer, 10);
brokerPublish(BROKER_MSG_TYPE_STATUS, MQTT_TOPIC_CHANNEL, i, buffer);
for (unsigned int id = 0; id < _light_channel.size(); ++id) {
StatusBroker::Publish(MQTT_TOPIC_CHANNEL, id, _light_channel[id].value);
}
}
@ -887,15 +887,17 @@ void lightSave() {
}
#endif
void lightState(unsigned char i, bool state) {
if (_light_channel[i].state != state) {
_light_channel[i].state = state;
void lightState(unsigned char id, bool state) {
if (id >= _light_channel.size()) return;
if (_light_channel[id].state != state) {
_light_channel[id].state = state;
_light_dirty = true;
}
}
bool lightState(unsigned char i) {
return _light_channel[i].state;
bool lightState(unsigned char id) {
if (id >= _light_channel.size()) return false;
return _light_channel[id].state;
}
void lightState(bool state) {
@ -941,14 +943,12 @@ String lightColor() {
}
long lightChannel(unsigned char id) {
if (id <= _light_channel.size()) {
return _light_channel[id].inputValue;
}
return 0;
if (id >= _light_channel.size()) return 0;
return _light_channel[id].inputValue;
}
void lightChannel(unsigned char id, long value) {
if (id > _light_channel.size()) return;
if (id >= _light_channel.size()) return;
_setInputValue(id, constrain(value, Light::VALUE_MIN, Light::VALUE_MAX));
}
@ -1300,6 +1300,19 @@ void _lightConfigure() {
}
// Dummy channel setup for light providers without real GPIO
void lightSetupChannels(unsigned char size) {
size = constrain(size, 0, Light::CHANNELS_MAX);
if (size == _light_channel.size()) return;
_light_channels = size;
_light_channel.assign(size, {
GPIO_NONE, false, true,
0, 0, 0
});
}
void lightSetup() {
#ifdef LIGHT_ENABLE_PIN
@ -1312,9 +1325,7 @@ void lightSetup() {
#if LIGHT_PROVIDER == LIGHT_PROVIDER_MY92XX
_my92xx = new my92xx(MY92XX_MODEL, MY92XX_CHIPS, MY92XX_DI_PIN, MY92XX_DCKI_PIN, MY92XX_COMMAND);
for (unsigned char i=0; i<LIGHT_CHANNELS; i++) {
_light_channel.push_back((channel_t) {0, false, true, 0, 0, 0});
}
lightSetupChannels(LIGHT_CHANNELS);
#endif
@ -1356,6 +1367,10 @@ void lightSetup() {
#endif
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
tuyaSetupLight();
#endif
DEBUG_MSG_P(PSTR("[LIGHT] LIGHT_PROVIDER = %d\n"), LIGHT_PROVIDER);
DEBUG_MSG_P(PSTR("[LIGHT] Number of channels: %d\n"), _light_channel.size());


+ 2
- 2
code/espurna/ntp.ino View File

@ -13,6 +13,7 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#include <Ticker.h>
#include "libs/NtpClientWrap.h"
#include "broker.h"
Ticker _ntp_defer;
@ -138,8 +139,7 @@ void inline _ntpBroker() {
static unsigned char last_minute = 60;
if (ntpSynced() && (minute() != last_minute)) {
last_minute = minute();
brokerPublish(BROKER_MSG_TYPE_DATETIME, MQTT_TOPIC_DATETIME, ntpDateTime().c_str());
brokerPublish(BROKER_MSG_TYPE_DATETIME, MQTT_TOPIC_TIMESTAMP, String(now()).c_str());
TimeBroker::Publish(MQTT_TOPIC_DATETIME, now(), ntpDateTime());
}
}


+ 52
- 15
code/espurna/relay.ino View File

@ -12,6 +12,9 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#include <vector>
#include <functional>
#include "broker.h"
#include "tuya.h"
typedef struct {
// Configuration variables
@ -43,6 +46,8 @@ typedef struct {
} relay_t;
std::vector<relay_t> _relays;
bool _relayRecursive = false;
Ticker _relaySaveTicker;
uint8_t _relayDummy = DUMMY_RELAY_COUNT;
unsigned long _relay_flood_window = (1000 * RELAY_FLOOD_WINDOW);
unsigned long _relay_flood_changes = RELAY_FLOOD_CHANGES;
@ -100,7 +105,7 @@ RelayStatus _relayStatusTyped(unsigned char id) {
void _relayLockAll() {
for (auto& relay : _relays) {
relay.lock = relay.target_status;
relay.lock = relay.target_status ? RELAY_LOCK_ON : RELAY_LOCK_OFF;
}
_relay_sync_locked = true;
}
@ -216,7 +221,7 @@ void _relayProviderStatus(unsigned char id, bool status) {
#if RELAY_PROVIDER == RELAY_PROVIDER_LIGHT
// Real relays
uint8_t physical = _relays.size() - DUMMY_RELAY_COUNT;
uint8_t physical = _relays.size() - _relayDummy;
// Support for a mixed of dummy and real relays
// Reference: https://github.com/xoseperez/espurna/issues/1305
@ -228,10 +233,10 @@ void _relayProviderStatus(unsigned char id, bool status) {
// assume the first one controls all the channels and
// the rest one channel each.
// Otherwise every dummy relay controls all channels.
if (DUMMY_RELAY_COUNT == lightChannels()) {
if (_relayDummy == lightChannels()) {
lightState(id-physical, status);
lightState(true);
} else if (DUMMY_RELAY_COUNT == (lightChannels() + 1u)) {
} else if (_relayDummy == (lightChannels() + 1u)) {
if (id == physical) {
lightState(status);
} else {
@ -308,7 +313,7 @@ void _relayProcess(bool mode) {
// Send to Broker
#if BROKER_SUPPORT
brokerPublish(BROKER_MSG_TYPE_STATUS, MQTT_TOPIC_RELAY, id, target ? "1" : "0");
StatusBroker::Publish(MQTT_TOPIC_RELAY, id, target);
#endif
// Send MQTT
@ -574,7 +579,7 @@ void relaySave(bool eeprom) {
// Persist only to rtcmem, unless requested to save to the eeprom
_relayMaskRtcmem(mask_value);
// The 'eeprom' flag controls wether we are commiting this change or not.
// The 'eeprom' flag controls whether we are commiting this change or not.
// It is useful to set it to 'false' if the relay change triggering the
// save involves a relay whose boot mode is independent from current mode,
// thus storing the last relay value is not absolutely necessary.
@ -732,6 +737,10 @@ void _relayBoot() {
_relayRecursive = false;
#if TUYA_SUPPORT
tuyaSyncSwitchStatus();
#endif
}
constexpr const unsigned long _relayDelayOn(unsigned char index) {
@ -823,11 +832,11 @@ String _relayFriendlyName(unsigned char i) {
if (GPIO_NONE == _relays[i].pin) {
#if (RELAY_PROVIDER == RELAY_PROVIDER_LIGHT)
uint8_t physical = _relays.size() - DUMMY_RELAY_COUNT;
uint8_t physical = _relays.size() - _relayDummy;
if (i >= physical) {
if (DUMMY_RELAY_COUNT == lightChannels()) {
if (_relayDummy == lightChannels()) {
res = String("CH") + String(i-physical);
} else if (DUMMY_RELAY_COUNT == (lightChannels() + 1u)) {
} else if (_relayDummy == (lightChannels() + 1u)) {
if (physical == i) {
res = String("Light");
} else {
@ -1233,6 +1242,15 @@ void relaySetupMQTT() {
#endif
void _relaySetupProvider() {
// TODO: implement something like `RelayProvider tuya_provider({.setup_cb = ..., .send_cb = ...})`?
// note of the function call order! relay code is initialized before tuya's, and the easiest
// way to accomplish that is to use ctor as a way to "register" callbacks even before setup() is called
#if TUYA_SUPPORT
tuyaSetupSwitch();
#endif
}
//------------------------------------------------------------------------------
// Settings
//------------------------------------------------------------------------------
@ -1307,6 +1325,29 @@ void _relayLoop() {
#endif
}
// Dummy relays for AI Light, Magic Home LED Controller, H801, Sonoff Dual and Sonoff RF Bridge
// No delay_on or off for these devices to easily allow having more than
// 8 channels. This behaviour will be recovered with v2.
void relaySetupDummy(unsigned char size, bool reconfigure) {
size = constrain(size, 0, RELAY_SAVE_MASK_MAX);
if (size == _relays.size()) return;
_relayDummy = size;
_relays.assign(size, {
GPIO_NONE, RELAY_TYPE_NORMAL, GPIO_NONE
});
if (reconfigure) {
_relayConfigure();
}
#if BROKER_SUPPORT
ConfigBroker::Publish("relayDummy", String(int(size)));
#endif
}
void relaySetup() {
// Ad-hoc relays
@ -1335,13 +1376,9 @@ void relaySetup() {
_relays.push_back((relay_t) { RELAY8_PIN, RELAY8_TYPE, RELAY8_RESET_PIN });
#endif
// Dummy relays for AI Light, Magic Home LED Controller, H801, Sonoff Dual and Sonoff RF Bridge
// No delay_on or off for these devices to easily allow having more than
// 8 channels. This behaviour will be recovered with v2.
for (unsigned char i=0; i < DUMMY_RELAY_COUNT; i++) {
_relays.push_back((relay_t) { GPIO_NONE, RELAY_TYPE_NORMAL, GPIO_NONE });
}
relaySetupDummy(getSetting("relayDummy", DUMMY_RELAY_COUNT).toInt());
_relaySetupProvider();
_relayBackwards();
_relayConfigure();
_relayBoot();


+ 18
- 18
code/espurna/rpnrules.ino View File

@ -26,11 +26,11 @@ bool _rpnWebSocketOnKeyCheck(const char * key, JsonVariant& value) {
}
void _rpnWebSocketOnConnected(JsonObject& root) {
root["rpnSticky"] = getSetting("rpnSticky", 1).toInt();
root["rpnDelay"] = getSetting("rpnDelay", RPN_DELAY).toInt();
JsonArray& rules = root.createNestedArray("rpnRules");
unsigned char i = 0;
String rule = getSetting("rpnRule", i, "");
while (rule.length()) {
@ -97,24 +97,22 @@ void _rpnConfigure() {
_rpn_delay = getSetting("rpnDelay", RPN_DELAY).toInt();
}
void _rpnBrokerCallback(const unsigned char type, const char * topic, unsigned char id, const char * payload) {
void _rpnBrokerCallback(const String& topic, unsigned char id, double value, const char*) {
char name[32] = {0};
if (BROKER_MSG_TYPE_STATUS == type || BROKER_MSG_TYPE_SENSOR == type) {
snprintf(name, sizeof(name), "%s%d", topic, id);
rpn_variable_set(_rpn_ctxt, name, atof(payload));
} else if (BROKER_MSG_TYPE_DATETIME == type) {
// Timestamp is always available via de "now" operator
} else {
return;
}
snprintf(name, sizeof(name), "%s%u", topic.c_str(), id);
rpn_variable_set(_rpn_ctxt, name, value);
_rpn_last = millis();
_rpn_run = true;
}
void _rpnBrokerStatus(const String& topic, unsigned char id, unsigned int value) {
_rpnBrokerCallback(topic, id, double(value), nullptr);
}
void _rpnInit() {
// Init context
@ -155,7 +153,7 @@ void _rpnInit() {
rpn_operator_set(_rpn_ctxt, "debug", 0, [](rpn_context & ctxt) {
_rpnDump();
return true;
});
});
// Relay operators
rpn_operator_set(_rpn_ctxt, "relay", 2, [](rpn_context & ctxt) {
@ -168,11 +166,11 @@ void _rpnInit() {
relayStatus(int(b), int(a) == 1);
}
return true;
});
});
// Channel operators
#if RELAY_PROVIDER == RELAY_PROVIDER_LIGHT
rpn_operator_set(_rpn_ctxt, "update", 0, [](rpn_context & ctxt) {
lightUpdate(true, true);
return true;
@ -189,7 +187,7 @@ void _rpnInit() {
rpn_stack_pop(ctxt, a); // new value
lightChannel(int(b), int(a));
return true;
});
});
#endif
@ -272,7 +270,7 @@ void _rpnRun() {
}
void _rpnLoop() {
if (_rpn_run && (millis() - _rpn_last > _rpn_delay)) {
_rpnRun();
_rpn_run = false;
@ -306,7 +304,9 @@ void rpnSetup() {
mqttRegister(_rpnMQTTCallback);
#endif
brokerRegister(_rpnBrokerCallback);
StatusBroker::Register(_rpnBrokerStatus);
SensorBroker::Register(_rpnBrokerCallback);
espurnaRegisterReload(_rpnConfigure);
espurnaRegisterLoop(_rpnLoop);


+ 5
- 2
code/espurna/sensor.ino View File

@ -8,6 +8,8 @@ Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#if SENSOR_SUPPORT
#include "broker.h"
#include <vector>
#include "filters/LastFilter.h"
#include "filters/MaxFilter.h"
@ -1542,7 +1544,7 @@ void _sensorReport(unsigned char index, double value) {
#if BROKER_SUPPORT
#if not BROKER_REAL_TIME
brokerPublish(BROKER_MSG_TYPE_SENSOR ,magnitudeTopic(magnitude.type).c_str(), magnitude.global, buffer);
SensorBroker::Publish(magnitudeTopic(magnitude.type), magnitude.global, value, buffer);
#endif
#endif
@ -1804,7 +1806,8 @@ void sensorLoop() {
{
char buffer[64];
dtostrf(value_show, 1-sizeof(buffer), magnitude.decimals, buffer);
brokerPublish(BROKER_MSG_TYPE_SENSOR ,magnitudeTopic(magnitude.type).c_str(), magnitude.global, buffer);
SensorBroker::Publish(magnitudeTopic(magnitude.type), magnitude.global, value_show, buffer);
}
#endif


+ 510
- 509
code/espurna/static/index.all.html.gz.h
File diff suppressed because it is too large
View File


+ 494
- 493
code/espurna/static/index.light.html.gz.h View File

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

+ 131
- 130
code/espurna/static/index.lightfox.html.gz.h View File

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

+ 146
- 145
code/espurna/static/index.rfbridge.html.gz.h View File

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

+ 1487
- 1486
code/espurna/static/index.rfm69.html.gz.h
File diff suppressed because it is too large
View File


+ 140
- 139
code/espurna/static/index.sensor.html.gz.h View File

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

+ 131
- 130
code/espurna/static/index.small.html.gz.h View File

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

+ 1133
- 1132
code/espurna/static/index.thermostat.html.gz.h
File diff suppressed because it is too large
View File


+ 11
- 13
code/espurna/thinkspeak.ino View File

@ -8,6 +8,8 @@ Copyright (C) 2019 by Xose Pérez <xose dot perez at gmail dot com>
#if THINGSPEAK_SUPPORT
#include "broker.h"
#if THINGSPEAK_USE_ASYNC
#include <ESPAsyncTCP.h>
#else
@ -43,19 +45,15 @@ bool _tspk_connected = false;
// -----------------------------------------------------------------------------
#if BROKER_SUPPORT
void _tspkBrokerCallback(const unsigned char type, const char * topic, unsigned char id, const char * payload) {
void _tspkBrokerCallback(const String& topic, unsigned char id, unsigned int value) {
// Process status messages
if (BROKER_MSG_TYPE_STATUS == type) {
tspkEnqueueRelay(id, (char *) payload);
tspkFlush();
// Only process status messages for switches
if (!topic.equals(MQTT_TOPIC_RELAY)) {
return;
}
// Porcess sensor messages
if (BROKER_MSG_TYPE_SENSOR == type) {
//tspkEnqueueMeasurement(id, (char *) payload);
//tspkFlush();
}
tspkEnqueueRelay(id, value > 0);
tspkFlush();
}
#endif // BROKER_SUPPORT
@ -351,11 +349,11 @@ void _tspkFlush() {
// -----------------------------------------------------------------------------
bool tspkEnqueueRelay(unsigned char index, char * payload) {
bool tspkEnqueueRelay(unsigned char index, bool status) {
if (!_tspk_enabled) return true;
unsigned char id = getSetting("tspkRelay", index, 0).toInt();
if (id > 0) {
_tspkEnqueue(id, payload);
_tspkEnqueue(id, status ? "1" : "0");
return true;
}
return false;
@ -391,7 +389,7 @@ void tspkSetup() {
#endif
#if BROKER_SUPPORT
brokerRegister(_tspkBrokerCallback);
StatusBroker::Register(_tspkBrokerCallback);
#endif
DEBUG_MSG_P(PSTR("[THINGSPEAK] Async %s, SSL %s\n"),


+ 25
- 0
code/espurna/tuya.h View File

@ -0,0 +1,25 @@
// -----------------------------------------------------------------------------
// TUYA
// -----------------------------------------------------------------------------
#pragma once
namespace Tuya {
void tuyaSendChannel(unsigned char, unsigned int);
void tuyaSendSwitch(unsigned char, bool);
void tuyaSetup();
void tuyaSetupLight();
void tuyaSyncSwitchStatus();
void tuyaSetupSwitch();
}
using Tuya::tuyaSetup;
using Tuya::tuyaSetupSwitch;
using Tuya::tuyaSyncSwitchStatus;
using Tuya::tuyaSendSwitch;
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
using Tuya::tuyaSetupLight;
using Tuya::tuyaSendChannel;
#endif

+ 557
- 0
code/espurna/tuya.ino View File

@ -0,0 +1,557 @@
/*
TUYA MODULE
Copyright (C) 2019 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
// ref: https://docs.tuya.com/en/mcu/mcu-protocol.html
#if TUYA_SUPPORT
#include <functional>
#include <queue>
#include <StreamString.h>
#include "tuya_types.h"
#include "tuya_transport.h"
#include "tuya_dataframe.h"
#include "tuya_protocol.h"
#include "tuya_util.h"
namespace Tuya {
constexpr const size_t SERIAL_SPEED { 9600u };
constexpr const unsigned char SWITCH_MAX { 8u };
constexpr const unsigned char DIMMER_MAX { 5u };
constexpr const uint32_t DISCOVERY_TIMEOUT { 1500u };
constexpr const uint32_t HEARTBEAT_SLOW { 9000u };
constexpr const uint32_t HEARTBEAT_FAST { 3000u };
// --------------------------------------------
struct dp_states_filter_t {
using type = unsigned char;
static const type NONE = 0;
static const type BOOL = 1 << 0;
static const type INT = 1 << 1;
static const type ALL = (INT | BOOL);
static type clamp(type value) {
return constrain(value, NONE, ALL);
}
};
size_t getHeartbeatInterval(Heartbeat hb) {
switch (hb) {
case Heartbeat::FAST:
return HEARTBEAT_FAST;
case Heartbeat::SLOW:
return HEARTBEAT_SLOW;
case Heartbeat::NONE:
default:
return 0;
}
}
uint8_t getWiFiState() {
uint8_t state = wifiState();
if (state & WIFI_STATE_SMARTCONFIG) return 0x00;
if (state & WIFI_STATE_AP) return 0x01;
if (state & WIFI_STATE_STA) return 0x04;
return 0x02;
}
// TODO: is v2 required to modify pin assigments?
void updatePins(uint8_t led, uint8_t rst) {
setSetting("ledGPIO0", led);
setSetting("btnGPIO0", rst);
//espurnaReload();
}
// --------------------------------------------
States<bool> switchStates(SWITCH_MAX);
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
States<uint32_t> channelStates(DIMMER_MAX);
#endif
// Handle DP data from the MCU, mapping incoming DP ID to the specific relay / channel ID
void applySwitch() {
for (unsigned char id=0; id < switchStates.size(); ++id) {
relayStatus(id, switchStates[id].value);
}
}
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
void applyChannel() {
for (unsigned char id=0; id < channelStates.size(); ++id) {
lightChannel(id, channelStates[id].value);
}
lightUpdate(true, true);
}
#endif
// --------------------------------------------
Transport tuyaSerial(TUYA_SERIAL);
std::queue<DataFrame> outputFrames;
DiscoveryTimeout discoveryTimeout(DISCOVERY_TIMEOUT);
bool transportDebug = false;
bool configDone = false;
bool reportWiFi = false;
dp_states_filter_t::type filterDP = dp_states_filter_t::NONE;
String product;
void showProduct() {
if (product.length()) DEBUG_MSG_P(PSTR("[TUYA] Product: %s\n"), product.c_str());
}
inline void dataframeDebugSend(const char* tag, const DataFrame& frame) {
if (!transportDebug) return;
StreamString out;
Output writer(out, frame.length);
writer.writeHex(frame.serialize());
DEBUG_MSG("[TUYA] %s: %s\n", tag, out.c_str());
}
void sendHeartbeat(Heartbeat hb, State state) {
static uint32_t last = 0;
if (millis() - last > getHeartbeatInterval(hb)) {
outputFrames.emplace(Command::Heartbeat);
last = millis();
}
}
void sendWiFiStatus() {
if (!reportWiFi) return;
outputFrames.emplace(
Command::WiFiStatus, std::initializer_list<uint8_t> { getWiFiState() }
);
}
void pushOrUpdateState(const Type type, const DataFrame& frame) {
if (Type::BOOL == type) {
const DataProtocol<bool> proto(frame);
switchStates.pushOrUpdate(proto.id(), proto.value());
//DEBUG_MSG_P(PSTR("[TUYA] apply BOOL id=%02u value=%s\n"), proto.id(), proto.value() ? "true" : "false");
} else if (Type::INT == type) {
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
const DataProtocol<uint32_t> proto(frame);
channelStates.pushOrUpdate(proto.id(), proto.value());
//DEBUG_MSG_P(PSTR("[TUYA] apply INT id=%02u value=%u\n"), proto.id(), proto.value());
#endif
}
}
// XXX: sometimes we need to ignore incoming state, when not in discovery mode
// ref: https://github.com/xoseperez/espurna/issues/1729#issuecomment-509234195
void updateState(const Type type, const DataFrame& frame) {
if (Type::BOOL == type) {
if (filterDP & dp_states_filter_t::BOOL) return;
const DataProtocol<bool> proto(frame);
switchStates.update(proto.id(), proto.value());
} else if (Type::INT == type) {
if (filterDP & dp_states_filter_t::INT) return;
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
const DataProtocol<uint32_t> proto(frame);
channelStates.update(proto.id(), proto.value());
#endif
}
}
void processDP(State state, const DataFrame& frame) {
// TODO: do not log protocol errors without transport debug enabled
if (!frame.length) {
DEBUG_MSG_P(PSTR("[TUYA] DP frame must have data\n"));
return;
}
const Type type {dataType(frame)};
if (Type::UNKNOWN == type) {
if (frame.length >= 2) {
DEBUG_MSG_P(PSTR("[TUYA] Unknown DP id=%u type=%u\n"), frame[0], frame[1]);
} else {
DEBUG_MSG_P(PSTR("[TUYA] Invalid DP frame\n"));
}
return;
}
if (State::DISCOVERY == state) {
discoveryTimeout.feed();
pushOrUpdateState(type, frame);
} else {
updateState(type, frame);
}
}
void processFrame(State& state, const Transport& buffer) {
const DataFrame frame(buffer);
dataframeDebugSend("<=", frame);
// initial packet has 0, do the initial setup
// all after that have 1. might be a good idea to re-do the setup when that happens on boot
if (frame.commandEquals(Command::Heartbeat) && (frame.length == 1)) {
if (State::HEARTBEAT == state) {
if ((frame[0] == 0) || !configDone) {
DEBUG_MSG_P(PSTR("[TUYA] Starting configuration ...\n"));
state = State::QUERY_PRODUCT;
return;
} else {
DEBUG_MSG_P(PSTR("[TUYA] Already configured\n"));
state = State::IDLE;
}
}
sendWiFiStatus();
return;
}
if (frame.commandEquals(Command::QueryProduct) && frame.length) {
if (product.length()) {
product = "";
}
product.reserve(frame.length);
for (unsigned int n = 0; n < frame.length; ++n) {
product += static_cast<char>(frame[n]);
}
showProduct();
state = State::QUERY_MODE;
return;
}
if (frame.commandEquals(Command::QueryMode)) {
// first and second byte are GPIO pin for WiFi status and RST respectively
if (frame.length == 2) {
DEBUG_MSG_P(PSTR("[TUYA] Mode: ESP only, led=GPIO%02u rst=GPIO%02u\n"), frame[0], frame[1]);
updatePins(frame[0], frame[1]);
// ... or nothing. we need to report wifi status to the mcu via Command::WiFiStatus
} else if (!frame.length) {
DEBUG_MSG_P(PSTR("[TUYA] Mode: ESP & MCU\n"));
reportWiFi = true;
sendWiFiStatus();
}
state = State::QUERY_DP;
return;
}
if (frame.commandEquals(Command::WiFiResetCfg) && !frame.length) {
DEBUG_MSG_P(PSTR("[TUYA] WiFi reset request\n"));
outputFrames.emplace(Command::WiFiResetCfg);
return;
}
if (frame.commandEquals(Command::WiFiResetSelect) && (frame.length == 1)) {
DEBUG_MSG_P(PSTR("[TUYA] WiFi configuration mode request: %s\n"),
(frame[0] == 0) ? "Smart Config" : "AP");
outputFrames.emplace(Command::WiFiResetSelect);
return;
}
if (frame.commandEquals(Command::ReportDP) && frame.length) {
processDP(state, frame);
if (state == State::DISCOVERY) return;
if (state == State::HEARTBEAT) return;
state = State::IDLE;
return;
}
}
void processSerial(State& state) {
while (tuyaSerial.available()) {
tuyaSerial.read();
if (tuyaSerial.done()) {
processFrame(state, tuyaSerial);
tuyaSerial.reset();
}
if (tuyaSerial.full()) {
tuyaSerial.rewind();
tuyaSerial.reset();
}
}
}
// Push local state data, mapping it to the appropriate DP
void tuyaSendSwitch(unsigned char id) {
if (id >= switchStates.size()) return;
outputFrames.emplace(
Command::SetDP, DataProtocol<bool>(switchStates[id].dp, switchStates[id].value).serialize()
);
}
void tuyaSendSwitch(unsigned char id, bool value) {
if (id >= switchStates.size()) return;
if (value == switchStates[id].value) return;
switchStates[id].value = value;
tuyaSendSwitch(id);
}
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
void tuyaSendChannel(unsigned char id) {
if (id >= channelStates.size()) return;
outputFrames.emplace(
Command::SetDP, DataProtocol<uint32_t>(channelStates[id].dp, channelStates[id].value).serialize()
);
}
void tuyaSendChannel(unsigned char id, unsigned int value) {
if (id >= channelStates.size()) return;
if (value == channelStates[id].value) return;
channelStates[id].value = value;
tuyaSendChannel(id);
}
#endif
void brokerCallback(const String& topic, unsigned char id, unsigned int value) {
// Only process status messages for switches and channels
if (!topic.equals(MQTT_TOPIC_CHANNEL)
&& !topic.equals(MQTT_TOPIC_RELAY)) {
return;
}
#if (RELAY_PROVIDER == RELAY_PROVIDER_LIGHT) && (LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA)
if (topic.equals(MQTT_TOPIC_CHANNEL)) {
if (lightState(id) != switchStates[id].value) {
tuyaSendSwitch(id, value > 0);
}
if (lightState(id)) tuyaSendChannel(id, value);
return;
}
if (topic.equals(MQTT_TOPIC_RELAY)) {
if (lightState(id) != switchStates[id].value) {
tuyaSendSwitch(id, bool(value));
}
if (lightState(id)) tuyaSendChannel(id, value);
return;
}
#elif (LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA)
if (topic.equals(MQTT_TOPIC_CHANNEL)) {
tuyaSendChannel(id, value);
return;
}
if (topic.equals(MQTT_TOPIC_RELAY)) {
tuyaSendSwitch(id, bool(value));
return;
}
#else
if (topic.equals(MQTT_TOPIC_RELAY)) {
tuyaSendSwitch(id, bool(value));
return;
}
#endif
}
// Main loop state machine. Process input data and manage output queue
void tuyaLoop() {
static State state = State::INIT;
// running this before anything else to quickly switch to the required state
processSerial(state);
// go through the initial setup step-by-step, as described in
// https://docs.tuya.com/en/mcu/mcu-protocol.html#21-basic-protocol
switch (state) {
// flush serial buffer before transmitting anything
// send fast heartbeat until mcu responds with something
case State::INIT:
tuyaSerial.rewind();
state = State::HEARTBEAT;
case State::HEARTBEAT:
sendHeartbeat(Heartbeat::FAST, state);
break;
// general info about the device (which we don't care about)
case State::QUERY_PRODUCT:
{
outputFrames.emplace(Command::QueryProduct);
state = State::IDLE;
break;
}
// whether we control the led & button or not
// TODO: make updatePins() do something!
case State::QUERY_MODE:
{
outputFrames.emplace(Command::QueryMode);
state = State::IDLE;
break;
}
// full read-out of the data protocol values
case State::QUERY_DP:
{
DEBUG_MSG_P(PSTR("[TUYA] Starting discovery\n"));
outputFrames.emplace(Command::QueryDP);
discoveryTimeout.feed();
state = State::DISCOVERY;
break;
}
// parse known data protocols until discovery timeout expires
case State::DISCOVERY:
{
if (discoveryTimeout) {
DEBUG_MSG_P(PSTR("[TUYA] Discovery finished\n"));
relaySetupDummy(switchStates.size(), true);
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
lightSetupChannels(channelStates.size());
#endif
configDone = true;
state = State::IDLE;
}
break;
}
// initial config is done, only doing heartbeat periodically
case State::IDLE:
{
if (switchStates.changed()) applySwitch();
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
if (channelStates.changed()) applyChannel();
#endif
sendHeartbeat(Heartbeat::SLOW, state);
break;
}
}
if (TUYA_SERIAL && !outputFrames.empty()) {
const DataFrame frame = std::move(outputFrames.front());
dataframeDebugSend("=>", frame);
tuyaSerial.write(frame.serialize());
outputFrames.pop();
}
}
// Predefined DP<->SWITCH, DP<->CHANNEL associations
// Respective provider setup should be called before state restore,
// so we can use dummy values
void initBrokerCallback() {
static bool done = false;
if (done) {
return;
}
::StatusBroker::Register(brokerCallback);
done = true;
}
void tuyaSetupSwitch() {
initBrokerCallback();
for (unsigned char n = 0; n < switchStates.capacity(); ++n) {
if (!hasSetting("tuyaSwitch", n)) break;
uint8_t dp = getSetting("tuyaSwitch", n, 0).toInt();
switchStates.pushOrUpdate(dp, false);
}
relaySetupDummy(switchStates.size());
if (switchStates.size()) configDone = true;
}
void tuyaSyncSwitchStatus() {
for (unsigned char n = 0; n < switchStates.size(); ++n) {
switchStates[n].value = relayStatus(n);
}
}
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
void tuyaSetupLight() {
initBrokerCallback();
for (unsigned char n = 0; n < channelStates.capacity(); ++n) {
if (!hasSetting("tuyaChannel", n)) break;
uint8_t dp = getSetting("tuyaChannel", n, 0).toInt();
channelStates.pushOrUpdate(dp, 0);
}
lightSetupChannels(channelStates.size());
if (channelStates.size()) configDone = true;
}
#endif
void tuyaSetup() {
// Print all known DP associations
#if TERMINAL_SUPPORT
terminalRegisterCommand(F("TUYA.SHOW"), [](Embedis* e) {
static const char fmt[] PROGMEM = "%12s%u => dp=%u value=%u\n";
showProduct();
for (unsigned char id=0; id < switchStates.size(); ++id) {
DEBUG_MSG_P(fmt, "tuyaSwitch", id, switchStates[id].dp, switchStates[id].value);
}
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
for (unsigned char id=0; id < channelStates.size(); ++id) {
DEBUG_MSG_P(fmt, "tuyaChannel", id, channelStates[id].dp, channelStates[id].value);
}
#endif
});
terminalRegisterCommand(F("TUYA.SAVE"), [](Embedis* e) {
DEBUG_MSG_P(PSTR("[TUYA] Saving current configuration ...\n"));
for (unsigned char n=0; n < switchStates.size(); ++n) {
setSetting("tuyaSwitch", n, switchStates[n].dp);
}
#if LIGHT_PROVIDER == LIGHT_PROVIDER_TUYA
for (unsigned char n=0; n < channelStates.size(); ++n) {
setSetting("tuyaChannel", n, channelStates[n].dp);
}
#endif
});
#endif
// Filtering for incoming data
unsigned char filter_raw = getSetting("tuyaFilter", dp_states_filter_t::NONE).toInt();
filterDP = dp_states_filter_t::clamp(filter_raw);
// Print all IN and OUT messages
transportDebug = getSetting("tuyaDebug", 1).toInt() == 1;
// Install main loop method and WiFiStatus ping (only works with specific mode)
TUYA_SERIAL.begin(SERIAL_SPEED);
::espurnaRegisterLoop(tuyaLoop);
::wifiRegister([](justwifi_messages_t code, char * parameter) {
if ((MESSAGE_CONNECTED == code) || (MESSAGE_DISCONNECTED == code)) {
sendWiFiStatus();
}
});
}
}
#endif // TUYA_SUPPORT

+ 133
- 0
code/espurna/tuya_dataframe.h View File

@ -0,0 +1,133 @@
/*
TUYA MODULE
Copyright (C) 2019 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
#pragma once
#include <vector>
#include "tuya_types.h"
#include "tuya_transport.h"
namespace Tuya {
class DataFrame {
public:
using container = std::vector<uint8_t>;
using const_iterator = container::const_iterator;
DataFrame(DataFrame& rhs) = delete;
~DataFrame() = default;
DataFrame(DataFrame&& rhs) = default;
DataFrame(uint8_t command) :
command(command),
length(0)
{}
DataFrame(Command command) :
DataFrame(static_cast<uint8_t>(command))
{}
DataFrame(Command command, uint16_t length,
const const_iterator begin,
const const_iterator end) :
command(static_cast<uint8_t>(command)),
length(length),
_begin(begin),
_end(end)
{}
DataFrame(uint8_t version, uint8_t command, uint16_t length,
const const_iterator begin,
const const_iterator end) :
version(version),
command(command),
length(length),
_begin(begin),
_end(end)
{}
DataFrame(Command command, std::initializer_list<uint8_t> data) :
command(static_cast<uint8_t>(command)),
length(data.size()),
_data(data),
_begin(_data.cbegin()),
_end(_data.cend())
{}
DataFrame(Command command, std::vector<uint8_t>&& data) :
command(static_cast<uint8_t>(command)),
length(data.size()),
_data(std::move(data)),
_begin(_data.cbegin()),
_end(_data.cend())
{}
DataFrame(const_iterator iter) :
version(iter[2]),
command(iter[3]),
length((iter[4] << 8) + iter[5]),
_begin(iter + 6),
_end(iter + 6 + length)
{}
DataFrame(const Transport& input) :
DataFrame(input.cbegin())
{}
bool commandEquals(Command command) const {
return (static_cast<uint8_t>(command) == this->command);
}
const_iterator cbegin() const {
return _begin;
};
const_iterator cend() const {
return _end;
};
uint8_t operator[](size_t i) const {
if (!length) return 0;
return _begin[i];
}
container serialize() const {
container result;
result.reserve(6 + length);
result.assign({
version, command,
uint8_t(length >> 8),
uint8_t(length & 0xff)
});
if (length && (_begin != _end)) {
result.insert(result.end(), _begin, _end);
}
return result;
}
uint8_t version = 0;
uint8_t command = 0;
uint16_t length = 0;
protected:
container _data;
const_iterator _begin;
const_iterator _end;
};
}

+ 116
- 0
code/espurna/tuya_protocol.h View File

@ -0,0 +1,116 @@
/*
TUYA MODULE
Copyright (C) 2019 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
#pragma once
#include "tuya_dataframe.h"
#include "tuya_types.h"
#include "tuya_transport.h"
namespace Tuya {
// 2 known Data Protocols:
//
// id type len value
// 0x?? 0x01 0x00 0x01 0x00 - bool (0 for false, 1 for true)
// 0x?? 0x02 0x00 0x04 0x00 0x00 0x00 0x00 - int
//
// Note: 'id' varies between devices. instead, matching DP in sequence with local controllers
// Note: 'int' type is mostly used for dimmer and while it is 4 byte value,
// only the first byte is used (i.e. value is between 0 and 255)
Type dataType(const DataFrame& frame) {
if (!frame.length) return Type::UNKNOWN;
const Type type = static_cast<Type>(frame[1]);
switch (type) {
case Type::BOOL:
if (frame.length != 5) break;
if (frame[3] != 0x01) break;
return type;
case Type::INT:
if (frame.length != 8) break;
if (frame[3] != 0x04) break;
return type;
default:
return Type::UNKNOWN;
}
return Type::UNKNOWN;
}
// Since we know of the type only at runtime, specialize the protocol container
template <typename T>
class DataProtocol {
public:
DataProtocol(const uint8_t id, const T value) :
_id(id), _value(value)
{}
DataProtocol(const DataFrame& frame);
uint8_t id() const { return _id; }
T value() const { return _value; }
std::vector<uint8_t> serialize();
private:
uint8_t _id;
T _value;
};
template <typename T>
DataProtocol<T>::DataProtocol(const DataFrame& frame) {
static_assert(sizeof(T) != sizeof(T), "No constructor yet for this type!");
}
template <>
DataProtocol<bool>::DataProtocol(const DataFrame& frame) {
auto data = frame.cbegin();
_id = data[0],
_value = data[4];
}
template <>
DataProtocol<uint32_t>::DataProtocol(const DataFrame& frame) {
auto data = frame.cbegin();
_id = data[0];
_value = static_cast<uint32_t>(data[4] << 24)
| static_cast<uint32_t>(data[5] << 16)
| static_cast<uint32_t>(data[6] << 8)
| static_cast<uint32_t>(data[7]);
}
template <>
std::vector<uint8_t> DataProtocol<bool>::serialize() {
return std::vector<uint8_t> {
_id, static_cast<uint8_t>(Type::BOOL), 0x00, 0x01,
static_cast<uint8_t>(_value)
};
}
template <>
std::vector<uint8_t> DataProtocol<uint32_t>::serialize() {
return std::vector<uint8_t> {
_id, static_cast<uint8_t>(Type::INT), 0x00, 0x04,
static_cast<uint8_t>((_value >> 24) & 0xff),
static_cast<uint8_t>((_value >> 16) & 0xff),
static_cast<uint8_t>((_value >> 8) & 0xff),
static_cast<uint8_t>(_value & 0xff)
};
}
}

+ 228
- 0
code/espurna/tuya_transport.h View File

@ -0,0 +1,228 @@
/*
TUYA MODULE
Copyright (C) 2019 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
#pragma once
#include <Print.h>
#include <StreamString.h>
#include <iterator>
#include <vector>
namespace Tuya {
class PrintRaw {
public:
static void write(Print& printer, uint8_t data) {
printer.write(data);
}
static void write(Print& printer, const uint8_t* data, size_t size) {
printer.write(data, size);
}
};
class PrintHex {
public:
static void write(Print& printer, uint8_t data) {
char buffer[3] = {0};
snprintf(buffer, sizeof(buffer), "%02x", data);
printer.write(buffer, 2);
}
static void write(Print& printer, const uint8_t* data, size_t size) {
for (size_t n=0; n<size; ++n) {
char buffer[3] = {0};
snprintf(buffer, sizeof(buffer), "%02x", data[n]);
printer.write(buffer, 2);
}
}
};
class StreamWrapper {
protected:
Stream& _stream;
public:
StreamWrapper(Stream& stream) :
_stream(stream)
{}
int available() {
return _stream.available();
}
void rewind() {
while(_stream.read() != -1);
}
};
class Output : public virtual StreamWrapper {
public:
Output(Stream& stream) :
StreamWrapper(stream)
{}
Output(StreamString& stream, size_t length) :
Output(stream)
{
stream.reserve((length * 2) + 1);
}
template <typename T, typename PrintType>
void _write(const T& data) {
const uint8_t header[2] = {0x55, 0xaa};
uint8_t checksum = 0xff;
PrintType::write(_stream, header, 2);
for (auto it = data.cbegin(); it != data.cend(); ++it) {
checksum += *it;
PrintType::write(_stream, *it);
}
PrintType::write(_stream, checksum);
}
template <typename T>
void write(const T& data) {
_write<T, PrintRaw>(data);
}
template <typename T>
void writeHex(const T& data) {
_write<T, PrintHex>(data);
}
};
class Input : public virtual StreamWrapper {
// Buffer depth based on the SDK recommendations
constexpr static size_t LIMIT = 256;
// 9600 baud ~= 1.04 bytes per second
// 256 * 1.04 = 266.24
constexpr static size_t TIME_LIMIT = 267;
using const_iterator = std::vector<uint8_t>::const_iterator;
public:
Input(Stream& stream) :
StreamWrapper(stream)
{
_buffer.reserve(LIMIT);
}
bool full() { return (_index >= LIMIT); }
bool done() { return _done; }
size_t size() { return _index; }
uint8_t operator[](size_t i) {
if (i > LIMIT) return 0;
return _buffer[i];
}
const_iterator cbegin() const {
return _buffer.cbegin();
}
const_iterator cend() const {
return _buffer.cend();
}
void read() {
if (_done) return;
if (full()) return;
if (_last && (millis() - _last > TIME_LIMIT)) reset();
_last = millis();
int byte = _stream.read();
if (byte < 0) return;
//DEBUG_MSG("i=%u byte=%u chk=%u:%u\n",
// _index, byte, _checksum, uint8_t(_checksum + byte));
// check that header value is 0x55aa
if (0 == _index) {
if (0x55 != byte) return;
} else if (1 == _index) {
if (0xaa != byte) return;
}
// set read boundary from received length
if (4 == _index) {
_read_until = byte << 8;
}
if (5 == _index) {
_read_until += byte + _index + 1;
//DEBUG_MSG("read_until=%u\n", _read_until);
}
// verify that the checksum byte is the same that we got so far
if ((_index > 5) && (_index >= _read_until)) {
if (_checksum != byte) {
//DEBUG_MSG("chk err, recv=%u calc=%u\n", byte, _checksum);
reset();
return;
}
//DEBUG_MSG("chk ok\n");
_done = true;
return;
}
_buffer[_index] = byte;
_checksum += byte;
++_index;
}
void reset() {
std::fill(_buffer.begin(), _buffer.end(), 0);
_read_until = LIMIT;
_checksum = 0;
_index = 0;
_done = false;
_last = 0;
}
private:
bool _done = false;
size_t _index = 0;
size_t _read_until = LIMIT;
uint8_t _checksum = 0;
std::vector<uint8_t> _buffer;
unsigned long _last = 0;
};
class Transport : public Input, public Output, public virtual StreamWrapper {
public:
Transport(Stream& stream) :
StreamWrapper(stream), Input(stream), Output(stream)
{}
};
}

+ 51
- 0
code/espurna/tuya_types.h View File

@ -0,0 +1,51 @@
/*
TUYA MODULE
Copyright (C) 2019 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
#pragma once
namespace Tuya {
enum class Command : uint8_t {
Heartbeat = 0x00,
QueryProduct = 0x01,
QueryMode = 0x02,
WiFiStatus = 0x03,
WiFiResetCfg = 0x04,
WiFiResetSelect = 0x05,
SetDP = 0x06,
ReportDP = 0x07,
QueryDP = 0x08,
OTAInit = 0x0a,
OTATransmit = 0x0b,
LocalTime = 0x1c,
WiFiTest = 0x0e
};
enum class State {
INIT,
HEARTBEAT,
QUERY_PRODUCT,
QUERY_MODE,
QUERY_DP,
DISCOVERY,
IDLE
};
enum class Heartbeat {
NONE,
SLOW,
FAST
};
enum class Type : uint8_t {
UNKNOWN = 0x00,
BOOL = 0x01,
INT = 0x02
};
}

+ 124
- 0
code/espurna/tuya_util.h View File

@ -0,0 +1,124 @@
/*
TUYA MODULE
Copyright (C) 2019 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
#pragma once
#include <algorithm>
#include <vector>
namespace Tuya {
template <typename T>
class States {
public:
struct Container {
uint8_t dp;
T value;
};
using iterator = typename std::vector<Container>::iterator;
using const_iterator = typename std::vector<Container>::const_iterator;
States(size_t capacity) :
_capacity(capacity)
{
_states.reserve(capacity);
}
bool update(const uint8_t dp, const T value, bool create=false) {
auto found = std::find_if(_states.begin(), _states.end(), [dp](const Container& internal) {
return dp == internal.dp;
});
if (found != _states.end()) {
if (found->value != value) {
found->value = value;
_changed = true;
return true;
}
} else if (create) {
_changed = true;
_states.emplace_back(States::Container{dp, value});
return true;
}
return false;
}
bool pushOrUpdate(const uint8_t dp, const T value) {
if (_states.size() >= _capacity) return false;
return update(dp, value, true);
}
bool changed() {
bool res = _changed;
if (_changed) _changed = false;
return res;
}
Container& operator[] (const size_t n) {
return _states[n];
}
size_t size() const {
return _states.size();
}
size_t capacity() const {
return _capacity;
}
iterator begin() {
return _states.begin();
}
iterator end() {
return _states.end();
}
const_iterator begin() const {
return _states.begin();
}
const_iterator end() const {
return _states.end();
}
private:
bool _changed = false;
size_t _capacity = 0;
std::vector<Container> _states;
};
class DiscoveryTimeout {
public:
DiscoveryTimeout(uint32_t start, uint32_t timeout) :
_start(start),
_timeout(timeout)
{}
DiscoveryTimeout(uint32_t timeout) :
DiscoveryTimeout(millis(), timeout)
{}
operator bool() {
return (millis() - _start > _timeout);
}
void feed() {
_start = millis();
}
private:
uint32_t _start;
const uint32_t _timeout;
};
}

+ 6
- 1
code/html/custom.js View File

@ -1041,7 +1041,12 @@ function updateRelays(data) {
for (var i=0; i<size; ++i) {
var elem = $("input[name='relay'][data='" + i + "']");
elem.prop("checked", data.status[i]);
elem.prop("disabled", data.lock[i] < 2); // RELAY_LOCK_DISABLED=2
var lock = {
0: false,
1: !data.status[i],
2: data.status[i]
};
elem.prop("disabled", lock[data.lock[i]]); // RELAY_LOCK_DISABLED=0
}
}


+ 4
- 0
code/platformio.ini View File

@ -303,6 +303,10 @@ build_flags = ${common.build_flags_4m1m} -DTINKERMAN_RFM69GW -DNOWSAUTH
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DNODEMCU_BASIC -DDEBUG_SERIAL_SUPPORT=0 -DPZEM004T_SUPPORT=1 -DDISABLE_POSTMORTEM_STACKDUMP
[env:tuya-generic-dimmer]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DTUYA_GENERIC_DIMMER -DDEBUG_SERIAL_SUPPORT=0 -DDISABLE_POSTMORTEM_STACKDUMP
# ------------------------------------------------------------------------------
[env:foxel-lightfox-dual]


+ 4
- 0
code/test/build/light_tuya.h View File

@ -0,0 +1,4 @@
#define RELAY_PROVIDER RELAY_PROVIDER_LIGHT
#define LIGHT_PROVIDER LIGHT_PROVIDER_TUYA
#define DUMMY_RELAY_COUNT 1
#define LIGHT_CHANNELS 5

+ 60
- 0
code/test/lib/StreamString/StreamString.cpp View File

@ -0,0 +1,60 @@
/**
StreamString.cpp
Copyright (c) 2015 Markus Sattler. All rights reserved.
This file is part of the esp8266 core for Arduino environment.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Arduino.h>
#include "StreamString.h"
size_t StreamString::write(const uint8_t *data, size_t size) {
if (!size || !data) return 0;
copy((const char*)data, size + 1);
return size;
}
size_t StreamString::write(uint8_t data) {
return concat((char) data);
}
int StreamString::available() {
return length();
}
int StreamString::read() {
if(length()) {
char c = charAt(0);
remove(0, 1);
return c;
}
return -1;
}
int StreamString::peek() {
if(length()) {
char c = charAt(0);
return c;
}
return -1;
}
void StreamString::flush() {
}

+ 39
- 0
code/test/lib/StreamString/StreamString.h View File

@ -0,0 +1,39 @@
/**
StreamString.h
Copyright (c) 2015 Markus Sattler. All rights reserved.
This file is part of the esp8266 core for Arduino environment.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef STREAMSTRING_H_
#define STREAMSTRING_H_
class StreamString: public Stream, public String {
public:
size_t write(const uint8_t *buffer, size_t size) override;
size_t write(uint8_t data) override;
int available() override;
int read() override;
int peek() override;
void flush() override;
};
#endif /* STREAMSTRING_H_ */

+ 11
- 0
code/test/platformio.ini View File

@ -0,0 +1,11 @@
[platformio]
test_dir = unit
[env:test]
platform = native
lib_compat_mode = off
lib_deps =
StreamString
https://github.com/bxparks/UnixHostDuino
build_flags =
-I../espurna/

+ 232
- 0
code/test/unit/tuya_test.cpp View File

@ -0,0 +1,232 @@
#include <Arduino.h>
#include <Stream.h>
#include <unity.h>
// -----------------------------------------------------------------------------
// Tests
// -----------------------------------------------------------------------------
#include <type_traits>
#include <queue>
#include "libs/TypeChecks.h"
#include "tuya_types.h"
#include "tuya_util.h"
#include "tuya_transport.h"
#include "tuya_protocol.h"
#include "tuya_dataframe.h"
using namespace Tuya;
bool test_datatype(const DataFrame& frame, const Type expect_type) {
const auto type = dataType(frame);
return expect_type == type;
}
void test_states() {
States<bool> states(8);
// Will not update anything without explicit push
states.update(1, false);
states.update(1, true);
states.update(2, true);
states.update(2, false);
TEST_ASSERT_EQUAL_MESSAGE(8, states.capacity(),
"Capacity has changed");
TEST_ASSERT_EQUAL_MESSAGE(0, states.size(),
"Size should not change when updating non-existant id");
// Push something at specific ID
states.pushOrUpdate(2, true);
TEST_ASSERT_MESSAGE(states.changed(),
"Should change after explicit push");
states.pushOrUpdate(2, false);
TEST_ASSERT_MESSAGE(states.changed(),
"Should change after explicit update");
TEST_ASSERT_EQUAL_MESSAGE(1, states.size(),
"Size should not change when updating existing id");
states.pushOrUpdate(3, true);
TEST_ASSERT_MESSAGE(states.changed(),
"Should change after explicit push");
// Do not trigger "changed" state when value remains the same
states.pushOrUpdate(2, false);
TEST_ASSERT_MESSAGE(!states.changed(),
"Should not change after not changing any values");
// Still shouldn't trigger "changed" without explicit push
states.update(4, false);
TEST_ASSERT_MESSAGE(!states.changed(),
"Should not change after updating non-existant id");
TEST_ASSERT_EQUAL_MESSAGE(2, states.size(),
"Size should remain the same after updating non-existant id");
}
void test_static_dataframe_bool() {
DataFrame frame(Command::SetDP, DataProtocol<bool>(0x02, false).serialize());
TEST_ASSERT_EQUAL_MESSAGE(0, frame.version,
"Version should stay 0 unless explicitly set");
TEST_ASSERT_MESSAGE(frame.commandEquals(Command::SetDP),
"commandEquals should return true with the same arg as in the constructor");
TEST_ASSERT_MESSAGE(test_datatype(frame, Type::BOOL),
"DataProtocol<bool> should translate to Type::BOOL");
}
void test_static_dataframe_int() {
DataFrame frame(Command::ReportDP, DataProtocol<uint32_t>(0x03, 255).serialize());
TEST_ASSERT_EQUAL_MESSAGE(0, frame.version,
"Version should stay 0 unless explicitly set");
TEST_ASSERT_MESSAGE(frame.commandEquals(Command::ReportDP),
"commandEquals should return true with the same arg as in the constructor");
TEST_ASSERT_EQUAL_UINT_MESSAGE(std::distance(frame.cbegin(), frame.cend()), frame.length,
"Data is expected to be stored in a contigious memory and be equal in length to the ::length attribute");
TEST_ASSERT_EQUAL_MESSAGE(0, frame[5],
"Only last byte should be set");
TEST_ASSERT_EQUAL_MESSAGE(255, frame[7],
"Only last byte should be set");
}
void test_dataframe_const() {
const DataFrame frame(Command::SetDP);
TEST_ASSERT_EQUAL_MESSAGE(0, frame.length,
"Frame with Command::SetDP should not have any data attached to it");
TEST_ASSERT_EQUAL_MESSAGE(0, std::distance(frame.cbegin(), frame.cend()),
"Frame with Command::SetDP should not have any data attached to it");
}
void test_static_dataframe_heartbeat() {
DataFrame frame(Command::Heartbeat);
TEST_ASSERT_EQUAL_MESSAGE(0, frame.length,
"Frame with Command::Heartbeat should not have any data attached to it");
TEST_ASSERT_EQUAL_MESSAGE(0, std::distance(frame.cbegin(), frame.cend()),
"Frame with Command::SetDP should not have any data attached to it");
//test_hexdump("static", static_frame.serialize());
}
void test_dataframe_copy() {
DataFrame frame(Command::Heartbeat);
frame.version = 0x7f;
DataFrame moved_frame(std::move(frame));
TEST_ASSERT_EQUAL_MESSAGE(0x7f, moved_frame.version,
"DataFrame should be movable object");
TEST_ASSERT_MESSAGE(!std::is_copy_constructible<DataFrame>::value,
"DataFrame should not be copyable");
}
void test_dataframe_raw_data() {
{
const std::vector<uint8_t> data = {0x55, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01};
DataFrame frame(data.cbegin());
TEST_ASSERT_MESSAGE(frame.commandEquals(Command::Heartbeat),
"This message should be parsed as heartbeat");
TEST_ASSERT_EQUAL_MESSAGE(0, frame.version,
"This message should have version == 0");
TEST_ASSERT_EQUAL_MESSAGE(1, frame.length,
"Heartbeat message contains a single byte");
TEST_ASSERT_EQUAL_MESSAGE(1, frame[0],
"Heartbeat message contains a single 0x01");
}
{
const std::vector<uint8_t> data = {0x55, 0xaa, 0x00, 0x07, 0x00, 0x05, 0x01, 0x01, 0x00, 0x01, 0x01, 0x0f};
DataFrame frame(data.cbegin());
TEST_ASSERT_MESSAGE(frame.commandEquals(Command::ReportDP),
"This message should be parsed as data protocol");
TEST_ASSERT_MESSAGE(test_datatype(frame, Type::BOOL),
"This message should have boolean datatype attached to it");
TEST_ASSERT_EQUAL_MESSAGE(5, frame.length,
"Boolean DP contains 5 bytes");
const DataProtocol<bool> dp(frame);
TEST_ASSERT_EQUAL_MESSAGE(1, dp.id(), "This boolean DP id should be 1");
TEST_ASSERT_MESSAGE(dp.value(), "This boolean DP value should be true");
}
//show_datatype(frame);
//std::cout << "length=" << frame.length << std::endl;
//test_hexdump("input", frame.serialize());
//std::cout << "[" << millis() << "] -------------------bad dp frame----------------" << std::endl;
//DataFrame bad_dp_frame(Command::ReportDP, DataProtocol<uint32_t>(0x03, 255).serialize());
//show_datatype(bad_dp_frame);
//std::cout << "length=" << bad_dp_frame.length << std::endl;
//test_hexdump("input", bad_dp_frame.serialize());
}
class BufferedStream : public Stream {
public:
// Print interface
size_t write(uint8_t c) {
_buffer.push((int)c);
}
size_t write(const unsigned char* data, unsigned long size) {
for (size_t n = 0; n < size; ++n) {
_buffer.push(data[n]);
}
return size;
}
int availableForWrite() { return 1; }
void flush() {
while (!_buffer.empty()) {
_buffer.pop();
}
}
// Stream interface
int available() {
return _buffer.size();
}
int read() {
if (!_buffer.size()) return -1;
int c = _buffer.front();
_buffer.pop();
return c;
}
int peek() {
if (!_buffer.size()) return -1;
return _buffer.front();
}
private:
std::queue<int> _buffer;
};
void test_transport() {
const std::vector<uint8_t> data = {0x55, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01};
BufferedStream stream;
stream.write(data.data(), data.size());
Transport transport(stream);
TEST_ASSERT_MESSAGE(transport.available(), "Available data");
}
int main(int argc, char** argv) {
UNITY_BEGIN();
RUN_TEST(test_states);
RUN_TEST(test_static_dataframe_bool);
RUN_TEST(test_static_dataframe_int);
RUN_TEST(test_static_dataframe_heartbeat);
RUN_TEST(test_dataframe_const);
RUN_TEST(test_dataframe_copy);
RUN_TEST(test_dataframe_raw_data);
RUN_TEST(test_transport);
UNITY_END();
}

Loading…
Cancel
Save