Implemented frontend for system settings

Started preparation for executing triggers
This commit is contained in:
Mark van Renswoude 2018-01-11 21:03:46 +01:00
parent 555eb38300
commit 2f96d0c60d
16 changed files with 2785 additions and 2402 deletions

81
API.md
View File

@ -4,6 +4,8 @@
- [GET /api/connection/status](#get-apiconnectionstatus)
- [GET /api/connection](#get-apiconnection)
- [POST /api/connection](#post-apiconnection)
- [GET /api/system](#get-apisystem)
- [POST /api/system](#post-apisystem)
- [GET /api/steps](#get-apisteps)
- [POST /api/steps](#post-apisteps)
- [GET /api/triggers/time](#get-apitriggerstime)
@ -83,6 +85,28 @@ Updates the settings of the WiFi connections. The module will apply the new sett
```
## GET /api/system
*Example response:*
```json
{
"lat": 52.370216,
"lng": 4.895168,
"pins": {
"ledAP": 4,
"ledSTA": 5,
"apButton": 2,
"pwmSDA": 13,
"pwmSCL": 12
},
"pwmAddress": 64,
"pwmFrequency": 1600,
"mapsAPIKey": ""
}
```
## POST /api/system
## GET /api/steps
Returns the current brightness value for each step. The number of items in the array is equal to the number of configured steps. Each value has a range of 0 to 255.
@ -120,8 +144,65 @@ An optional array 'startTime' can be included which specifies the delay, for eac
## GET /api/triggers/time
Returns the current settings for the time triggers.
time:
Meaning depends on the triggerType
| triggerType | description |
| ----------- | - |
| 0 | fixed time, set time to the number of minutes since midnight |
| 1 | relative to sunrise, set time to the number of minutes before or after sunrise to trigger (negative numbers mean before sunrise) |
| 2 | relative to sunset, set time to the number of minutes before or after sunset to trigger (negative numbers mean before sunset) |
daysOfWeek:
Flags determining which days of the week the trigger is active.
| value | day |
| ----- | --- |
| 1 | Monday |
| 2 | Tuesday |
| 4 | Wednesday |
| 8 | Thursday |
| 16 | Friday |
| 32 | Saturday |
| 64 | Sunday |
Therefore 127 means every day of the week.
brightness: value from 0 to 255
enabled: whether or not this trigger is enabled
*Example response:*
```json
{
"enabled": true,
"transitionTime": 1000,
"triggers": [
{
"time": 480,
"daysOfWeek": 127,
"brightness": 0,
"triggerType": 0,
"enabled": true
},
{
"time": 1200,
"daysOfWeek": 127,
"brightness": 255,
"triggerType": 0,
"enabled": true
}
]
}
```
## POST /api/triggers/time
Changes the time trigger settings. Request body format is the same as is returned in the GET request.
## POST /api/firmware
Uploads new firmware. The bin file should be posted as a multipart/form-data file attachment. Name is not relevant.

View File

@ -62,6 +62,52 @@ app.post('/api/firmware', function(req, res)
});
var system = {
"lat": 52.370216,
"lng": 4.895168,
"pins": {
"ledAP": 4,
"ledSTA": 5,
"apButton": 2,
"pwmSDA": 13,
"pwmSCL": 12
},
"pwmAddress": 64,
"pwmFrequency": 1600,
"mapsAPIKey": ""
};
app.get('/api/system', function(req, res)
{
res.send(system);
});
app.post('/api/system', function(req, res)
{
var body = req.body;
if (body)
{
system.lat = body.lat || system.lat;
system.lng = body.lng || system.lng;
system.pins.ledAP = body.pins.ledAP || system.pins.ledAP;
system.pins.ledSTA = body.pins.ledSTA || system.pins.ledSTA;
system.pins.apButton = body.pins.apButton || system.pins.apButton;
system.pins.pwmSDA = body.pins.pwmSDA || system.pins.pwmSDA;
system.pins.pwmSCL = body.pins.pwmSCL || system.pins.pwmSCL;
system.pwmAddress = body.pwmAddress || system.pwmAddress;
system.pwmFrequency = body.pwmFrequency || system.pwmFrequency;
system.mapsAPIKey = body.mapsAPIKey || system.mapsAPIKey;
res.sendStatus(200);
}
else
res.sendStatus(400);
});
var steps = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
app.get('/api/steps', function(req, res)

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -4,10 +4,10 @@
const uint8_t VersionMajor = 2;
const uint8_t VersionMinor = 0;
const uint8_t VersionPatch = 0;
const uint8_t VersionMetadata = 14;
const uint8_t VersionMetadata = 15;
const char VersionBranch[] = "release/2.0";
const char VersionSemVer[] = "2.0.0-beta.1";
const char VersionFullSemVer[] = "2.0.0-beta.1+14";
const char VersionCommitDate[] = "2018-01-10";
const char VersionFullSemVer[] = "2.0.0-beta.1+15";
const char VersionCommitDate[] = "2018-01-11";
#endif

View File

@ -38,8 +38,9 @@ void updateDebugStatus();
void updateLED();
void updateNTPClient();
void startServer();
void stopServer();
void updateTimeTrigger();
void checkTriggers();
void handleNotFound(AsyncWebServerRequest* request);
@ -56,20 +57,6 @@ bool forceAccessPoint = false;
uint32_t stationModeStart = 0;
uint32_t blinkOnTime = 0;
enum LEDState
{
Off,
BlinkLow,
BlinkHigh,
On
};
bool ledAP = false;
LEDState ledWiFi = Off;
#ifdef SerialDebug
uint32_t debugStatusTime = 0;
#endif
void setup()
@ -201,10 +188,17 @@ void loop()
}
// TODO check AP button
updateLED();
updateNTPClient();
// TODO check for triggers every 10 seconds or so
// if motionTriggerEnabled || timeTriggerEnabled
// {
// TODO check for active time trigger every 10 seconds or so
// updateTimeTrigger();
checkTriggers();
// }
stairs->tick();
}
@ -292,6 +286,8 @@ void wifiEvent(WiFiEvent_t event)
}
uint32_t debugStatusTime = 0;
void updateDebugStatus()
{
if (currentTime - debugStatusTime < 5000) return;
@ -313,6 +309,18 @@ void updateDebugStatus()
#endif
enum LEDState
{
Off,
BlinkLow,
BlinkHigh,
On
};
bool ledAP = false;
LEDState ledWiFi = Off;
void updateLED()
{
uint8_t value = (currentTime - blinkOnTime >= 1000) ? LOW : HIGH;
@ -389,6 +397,64 @@ void updateNTPClient()
}
TimeTrigger* lastTimeTrigger = nullptr;
TimeTrigger* activeTimeTrigger = nullptr;
void updateTimeTrigger()
{
// TODO check active time trigger
}
void checkTriggers()
{
bool inTimeTrigger = timeTriggerSettings->enabled() &&
activeTimeTrigger != nullptr &&
activeTimeTrigger->brightness;
bool timeTriggerChanged = activeTimeTrigger != lastTimeTrigger;
lastTimeTrigger = activeTimeTrigger;
// TODO motion sensor settings
bool inMotionTrigger = false; // && (alsoDuringTimeTrigger || !inTimeTrigger)
bool motionChanged = false;
// TODO dummies, replace these with motionSettings-> values later on
uint16_t motionBrightness = 0;
uint16_t motionTransitionTime = 0;
if (!motionChanged && !timeTriggerChanged)
return;
if (motionChanged)
{
if (inMotionTrigger)
{
// Start sweep
}
else
{
if (inTimeTrigger)
{
// Fall back to time trigger value
stairs->setAll(activeTimeTrigger->brightness, motionTransitionTime, 0);
}
else
{
// No more motion, no active time trigger, turn off
stairs->setAll(0, motionTransitionTime, 0);
}
}
}
else if (timeTriggerChanged && !inMotionTrigger)
{
// Set to time trigger value
stairs->setAll(activeTimeTrigger->brightness, timeTriggerSettings->transitionTime(), 0);
}
}
void handleNotFound(AsyncWebServerRequest *request)
{
_d("HTTP :: not found: "); _dln(request->url());

View File

@ -71,8 +71,9 @@ void handleGetTimeTriggers(AsyncWebServerRequest *request)
uint8_t count = timeTriggerSettings->triggerCount();
DynamicJsonBuffer jsonBuffer(JSON_ARRAY_SIZE(count) + JSON_OBJECT_SIZE(2) + count*JSON_OBJECT_SIZE(5));
DynamicJsonBuffer jsonBuffer(JSON_ARRAY_SIZE(count) + JSON_OBJECT_SIZE(3) + count*JSON_OBJECT_SIZE(5));
JsonObject& root = jsonBuffer.createObject();
root["enabled"] = timeTriggerSettings->enabled();
root["transitionTime"] = timeTriggerSettings->transitionTime();
JsonArray& jsonTriggers = root.createNestedArray("triggers");
@ -82,7 +83,7 @@ void handleGetTimeTriggers(AsyncWebServerRequest *request)
TimeTrigger* trigger = timeTriggerSettings->trigger(i);
JsonObject& jsonTrigger = jsonTriggers.createNestedObject();
jsonTrigger["timeofDay"] = trigger->timeOfDay;
jsonTrigger["time"] = trigger->time;
jsonTrigger["daysOfWeek"] = trigger->daysOfWeek;
jsonTrigger["brightness"] = trigger->brightness;
jsonTrigger["triggerType"] = (uint8_t)trigger->triggerType;
@ -100,7 +101,7 @@ void handlePostTimeTriggers(AsyncWebServerRequest *request, uint8_t *data, size_
{
_dln("API :: post time triggers");
DynamicJsonBuffer jsonBuffer(JSON_ARRAY_SIZE(10) + JSON_OBJECT_SIZE(2) + 10*JSON_OBJECT_SIZE(5) + 510);
DynamicJsonBuffer jsonBuffer(JSON_ARRAY_SIZE(10) + JSON_OBJECT_SIZE(3) + 10*JSON_OBJECT_SIZE(5) + 510);
JsonObject& root = jsonBuffer.parseObject((char*)data);
if (!root.success())
{
@ -115,6 +116,7 @@ void handlePostTimeTriggers(AsyncWebServerRequest *request, uint8_t *data, size_
return;
}
timeTriggerSettings->enabled(root["enabled"]);
timeTriggerSettings->transitionTime(root["transitionTime"]);
timeTriggerSettings->beginSetTriggers(jsonTriggers.size());
@ -123,7 +125,7 @@ void handlePostTimeTriggers(AsyncWebServerRequest *request, uint8_t *data, size_
{
JsonObject& jsonTrigger = jsonTriggers[i];
trigger.timeOfDay = jsonTrigger["timeOfDay"];
trigger.time = jsonTrigger["time"];
trigger.daysOfWeek = jsonTrigger["daysOfWeek"];
trigger.brightness = jsonTrigger["brightness"];
trigger.triggerType = (TimeTriggerType)(uint8_t)jsonTrigger["triggerType"];

View File

@ -49,6 +49,7 @@ struct Header
uint8_t version;
uint8_t triggerCount;
uint16_t transitionTime;
bool enabled;
};
@ -68,6 +69,7 @@ void TimeTriggerSettings::read()
if (header.version != 1)
return;
mEnabled = header.enabled;
mTransitionTime = header.transitionTime;
beginSetTriggers(header.triggerCount);
@ -89,6 +91,7 @@ void TimeTriggerSettings::write()
Header header;
header.version = 1;
header.enabled = mEnabled;
header.transitionTime = mTransitionTime;
header.triggerCount = mTriggerCount;
@ -136,7 +139,7 @@ void TimeTriggerSettings::endSetTriggers()
swapped = false;
for (i = 0, j = gap; j < mTriggerCount; i++, j++)
{
if (mTriggers[i].timeOfDay > mTriggers[j].timeOfDay)
if (mTriggers[i].time > mTriggers[j].time)
{
temp = mTriggers[i];
mTriggers[i] = mTriggers[j];

View File

@ -9,6 +9,7 @@
#include <Arduino.h>
#include <TimeLib.h>
#include <stdbool.h>
enum DayOfWeek
{
@ -36,7 +37,7 @@ enum TimeTriggerType
struct TimeTrigger
{
uint16_t timeOfDay;
uint16_t time;
uint8_t daysOfWeek;
uint8_t brightness;
TimeTriggerType triggerType;
@ -47,6 +48,7 @@ struct TimeTrigger
class TimeTriggerSettings
{
private:
bool mEnabled = false;
uint16_t mTransitionTime = 0;
uint8_t mTriggerCount = 0;
TimeTrigger* mTriggers = nullptr;
@ -56,6 +58,9 @@ class TimeTriggerSettings
void write();
bool enabled() { return mEnabled; }
void enabled(bool value) { mEnabled = value; }
uint16_t transitionTime() { return mTransitionTime; }
void transitionTime(uint16_t value) { mTransitionTime = value; }

View File

@ -40,10 +40,6 @@ function startApp()
searchingLocation: false,
triggers: {
time: {
latlong: '',
location: ''
}
},
connection: {
@ -58,9 +54,26 @@ function startApp()
gateway: null
},
system: {
lat: null,
lng: null,
pins: {
ledAP: null,
ledSTA: null,
apButton: null,
pwmSDA: null,
pwmSCL: null
},
pwmAddress: null,
pwmFrequency: null,
mapsAPIKey: ''
},
allSteps: true,
allStepsValue: 0,
steps: []
steps: [],
location: ''
},
created: function()
@ -89,6 +102,7 @@ function startApp()
console.log(error);
});
// TODO retrieve system settings
axios.all([
axios.get('/api/connection')
.then(function(response)
@ -101,6 +115,17 @@ function startApp()
console.log(error);
}),
axios.get('/api/system')
.then(function(response)
{
if (typeof response.data == 'object')
self.system = response.data;
})
.catch(function(error)
{
console.log(error);
}),
axios.get('/api/steps')
.then(function(response)
{
@ -170,6 +195,27 @@ function startApp()
})
},
applySystem: function()
{
var self = this;
if (self.saving) return;
self.saving = true;
axios.post('/api/system', self.system)
.then(function(response)
{
})
.catch(function(error)
{
console.log(error);
})
.then(function()
{
self.saving = false;
});
},
startLoadingIndicator: function()
{
var self = this;
@ -378,17 +424,18 @@ function startApp()
searchLocation: function()
{
var self = this;
if (!self.triggers.time.location) return;
if (!self.location) return;
self.searchingLocation = true;
axios.get('/api/geocode/latlong', { params: { address: self.triggers.time.location }})
axios.get('https://maps.googleapis.com/maps/api/geocode/json', { params: { address: self.location, key: self.system.mapsAPIKey }})
.then(function(response)
{
if (Array.isArray(response.data.results) && response.data.results.length > 0)
{
var location = response.data.results[0].geometry.location;
self.triggers.time.latlong = location.lat + ',' + location.lng;
self.system.lat = location.lat;
self.system.lng = location.lng;
}
})
.catch(function(error)

2
web/dist/bundle.css vendored

File diff suppressed because one or more lines are too long

2
web/dist/bundle.js vendored

File diff suppressed because one or more lines are too long

View File

@ -36,7 +36,7 @@
<button class="button" :class="{ 'button-outline': activeTab != 'status' }" @click="activeTab = 'status'">{{ $t('status.tabTitle') }}</button>
<button class="button" :class="{ 'button-outline': activeTab != 'triggers' }" @click="activeTab = 'triggers'">{{ $t('triggers.tabTitle') }}</button>
<button class="button" :class="{ 'button-outline': activeTab != 'connection' }" @click="activeTab = 'connection'">{{ $t('connection.tabTitle') }}</button>
<button class="button" :class="{ 'button-outline': activeTab != 'firmware' }" @click="activeTab = 'firmware'">{{ $t('firmware.tabTitle') }}</button>
<button class="button" :class="{ 'button-outline': activeTab != 'system' }" @click="activeTab = 'system'">{{ $t('system.tabTitle') }}</button>
</div>
<div v-if="activeTab == 'status'">
@ -87,16 +87,6 @@
<div class="warning" v-if="!wifiStatus.station.enabled || wifiStatus.station.status != 3">
{{ $t('triggers.timeInternet') }}
</div>
<label for="latlong">{{ $t('triggers.timeLatLong') }}</label>
<input type="text" id="latlong" v-model="triggers.time.latlong">
<div class="suboptions">
<label for="location" class="label-inline">{{ $t('triggers.timeLocation') }}</label>
<input type="text" id="location" v-model="triggers.time.location">
<button class="button" @click.prevent="searchLocation" :disabled="searchingLocation">{{ $t('triggers.timeLocationSearch') }}</button>
</div>
</fieldset>
<fieldset>
@ -156,15 +146,15 @@
</form>
</div>
<div v-if="activeTab == 'firmware'">
<div v-if="activeTab == 'system'">
<!--
Firmware tab
System tab
-->
<form @submit.prevent="uploadFirmware" id="firmware">
<form @submit.prevent="uploadFirmware" id="system">
<fieldset>
<h3>{{ $t('firmware.title') }}</h3>
<h3>{{ $t('system.firmwareTitle') }}</h3>
<input type="file" id="firmwareFile">
@ -177,6 +167,61 @@
</div>
</fieldset>
</form>
<form @submit.prevent="applySystem" id="system">
<fieldset>
<h3>{{ $t('system.ntpTitle') }}</h3>
<div class="warning" v-if="!wifiStatus.station.enabled || wifiStatus.station.status != 3">
{{ $t('triggers.timeInternet') }}
</div>
<label for="lat">{{ $t('system.ntpLat') }}</label>
<input type="text" id="lat" v-model="system.lat">
<label for="lng">{{ $t('system.ntpLng') }}</label>
<input type="text" id="lng" v-model="system.lng">
<div class="suboptions">
<label for="location" class="label-inline">{{ $t('system.ntpLocation') }}</label>
<input type="text" id="location" v-model="location">
<button class="button button-outline" @click.prevent="searchLocation" :disabled="searchingLocation">{{ $t('system.ntpLocationSearch') }}</button>
</div>
<h3>{{ $t('system.pinsTitle') }}</h3>
<label for="pinLEDAP">{{ $t('system.pinLEDAP') }}</label>
<input type="number" id="pinLEDAP" v-model.number="system.pins.ledAP">
<label for="pinLEDSTA">{{ $t('system.pinLEDSTA') }}</label>
<input type="number" id="pinLEDSTA" v-model.number="system.pins.ledSTA">
<label for="pinAPButton">{{ $t('system.pinAPButton') }}</label>
<input type="number" id="pinAPButton" v-model.number="system.pins.apButton">
<label for="pinPWMDriverSDA">{{ $t('system.pinPWMDriverSDA') }}</label>
<input type="number" id="pinPWMDriverSDA" v-model.number="system.pins.pwmSDA">
<label for="pinPWMDriverSCL">{{ $t('system.pinPWMDriverSCL') }}</label>
<input type="number" id="pinPWMDriverSCL" v-model.number="system.pins.pwmSCL">
<label for="pwmAddress">{{ $t('system.pwmAddress') }}</label>
<input type="number" id="pwmAddress" v-model.number="system.pwmAddress">
<label for="pwmFrequency">{{ $t('system.pwmFrequency') }}</label>
<input type="number" id="pwmFrequency" v-model.number="system.pwmFrequency">
<h3>{{ $t('system.mapsTitle') }}</h3>
<label for="mapsAPIKey">{{ $t('system.mapsAPIKey') }}</label>
<input type="number" id="mapsAPIKey" v-model.number="system.mapsAPIKey">
<span class="hint">{{ $t('system.mapsAPIKeyhint') }}</span>
<div class="buttons">
<input class="button-primary" type="submit" :disabled="saving" :value="saving ? $t('applyButtonSaving') : $t('applyButton')">
</div>
</fieldset>
</form>
</div>
</div>

View File

@ -39,9 +39,6 @@ var messages = {
tabTitle: 'Triggers',
timeTitle: 'Time',
timeInternet: 'Please note that time triggers require an internet connection.',
timeLatLong: 'Latitude / longitude',
timeLocation: 'Get latitude / longitude from location',
timeLocationSearch: 'Search',
motionTitle: 'Motion'
},
@ -69,9 +66,28 @@ var messages = {
hostnamePlaceholder: 'Default: mac address'
},
firmware: {
tabTitle: 'Firmware',
title: 'Firmware update'
system: {
tabTitle: 'System',
ntpTitle: 'Time synchronisation (NTP)',
pinsTitle: 'Hardware pinout',
mapsTitle: 'Google Maps API',
firmwareTitle: 'Firmware update',
ntpLat: 'Latitude',
ntpLng: 'Longitude',
ntpLocation: 'Get latitude / longitude from location',
ntpLocationSearch: 'Search',
pinLEDAP: 'Access Point status LED pin (+3.3v)',
pinLEDSTA: 'Station Mode status LED pin (+3.3v)',
pinAPButton: 'Enable Access Point button pin (pull low)',
pinPWMDriverSDA: 'PCA9685 PWM driver SDA pin (data)',
pinPWMDriverSCL: 'PCA9685 PWM driver SCL pin (clock)',
pwmAddress: 'PCA9685 PWM driver I²C address',
pwmFrequency: 'PCA9685 PWM driver frequency',
mapsAPIKey: 'Google Maps API key',
mapsAPIKeyhint: 'Optional. Currently only used for translating a location name to it\'s latitude / longitude, which you will most likely only do once. Will work without an API key, but Google might throttle your request.'
}
},
@ -115,9 +131,6 @@ var messages = {
tabTitle: 'Triggers',
timeTitle: 'Tijd',
timeInternet: 'Let op dat voor tijd triggers een internetverbinding vereist is.',
timeLatLong: 'Breedtegraad / lengtegraad',
timeLocation: 'Breedtegraad / lengtegraad ophalen op basis van locatie',
timeLocationSearch: 'Zoeken',
motionTitle: 'Beweging'
},
@ -145,9 +158,28 @@ var messages = {
hostnamePlaceholder: 'Standaard: mac adres'
},
firmware: {
tabTitle: 'Firmware',
title: 'Firmware bijwerken'
system: {
tabTitle: 'Systeem',
ntpTitle: 'Tijd synchronisatie (NTP)',
pinsTitle: 'Hardware aansluitingen',
mapsTitle: 'Google Maps API',
firmwareTitle: 'Firmware bijwerken',
ntpLat: 'Breedtegraad',
ntpLng: 'Lengtegraad',
ntpLocation: 'Breedtegraad / lengtegraad ophalen op basis van locatie',
ntpLocationSearch: 'Zoeken',
pinLEDAP: 'Access Point status LED pin (+3.3v)',
pinLEDSTA: 'WiFi status LED pin (+3.3v)',
pinAPButton: 'Access Point inschakelen knop pin (actief laag)',
pinPWMDriverSDA: 'PCA9685 PWM driver SDA pin (data)',
pinPWMDriverSCL: 'PCA9685 PWM driver SCL pin (klok)',
pwmAddress: 'PCA9685 PWM driver I²C address',
pwmFrequency: 'PCA9685 PWM driver frequency',
mapsAPIKey: 'Google Maps API key',
mapsAPIKeyhint: 'Optioneel. Wordt op dit moment enkel gebruikt om een locatie te vertalen naar een breedte- / lengtegraad, wat je waarschijnlijk maar één keer nodig hebt. Werkt ook zonder API key, met de kans dat Google je verzoek tijdelijk niet toestaat.'
}
}
}

View File

@ -22,8 +22,8 @@ $sliderValueColor: #808080;
$warningColor: #302f28;
$warningBorderColor: #000000;
$smallScreen: "screen and (min-width: 768px)";
$smallScreen: "screen and (max-width: 767px)";
$mediumScreen: "screen and (min-width: 768px)";
[v-cloak]
@ -40,7 +40,7 @@ body
padding-bottom: 3rem;
@media #{$smallScreen}
@media #{$mediumScreen}
{
padding-top: 3rem;
}
@ -62,7 +62,7 @@ input, textarea
box-shadow: $containerShadow;
border: solid 1px black;
@media #{$smallScreen}
@media #{$mediumScreen}
{
width: 768px;
margin-left: auto;
@ -83,9 +83,18 @@ input, textarea
.wifistatus
{
position: absolute;
right: 0;
top: 0;
@media #{$smallScreen}
{
clear: both;
margin-top: 3rem;
}
@media #{$mediumScreen}
{
position: absolute;
right: 0;
top: 0;
}
.indicator
{
@ -149,6 +158,11 @@ h3
{
background-color: transparent;
}
@media #{$smallScreen}
{
width: 100%;
}
}
}