diff --git a/.travis.yml b/.travis.yml index 194578e4..786cfa62 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_script: - cd $HOME/arduino_ide/hardware - mkdir esp8266com - cd esp8266com - - git clone https://github.com/esp8266/Arduino.git esp8266 + - git clone -b 2.5.2 https://github.com/esp8266/Arduino.git esp8266 - cd esp8266/tools - python get.py - cd $HOME/arduino_ide/hardware diff --git a/README.md b/README.md index cdd6d72f..f694cf74 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ The web interface files are present in data directory but UI has it's own reposi Arduino ide 1.6.5 with stable [2.0.0](http://arduino.esp8266.com/versions/2.0.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP3D/releases/tag/v0.5.1 Arduino ide 1.6.8 with stable [2.2.0](http://arduino.esp8266.com/versions/2.2.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP3D/releases/tag/v0.6.2 Arduino ide 1.8.5 with stable [2.4.0](http://arduino.esp8266.com/versions/2.4.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP3D/releases/tag/1.0 [![Build Status](https://travis-ci.org/luc-github/ESP3D.svg?branch=master)](https://travis-ci.org/luc-github/ESP3D) -Arduino ide 1.8.5 with latest GIT from ESP8266 and ESP32, please use https://github.com/luc-github/ESP3D/releases/tag/2.0 [![Build Status](https://travis-ci.org/luc-github/ESP3D.svg?branch=2.0)](https://travis-ci.org/luc-github/ESP3D) +Arduino ide 1.8.5 with with 2.5.2 version of ESP8266 and git version of ESP32, please use https://github.com/luc-github/ESP3D/releases/tag/2.0 [![Build Status](https://travis-ci.org/luc-github/ESP3D.svg?branch=2.0)](https://travis-ci.org/luc-github/ESP3D) [Development version for 2.1](https://github.com/luc-github/ESP3D/tree/2.1) & [ESP-WEBUI (2.1 branch)](https://github.com/luc-github/ESP3D-WEBUI/tree/2.1): -Arduino ide 1.8.5 with git version from ESP8266 or ESP32 for 100% support of ESP32 : [![Build Status](https://travis-ci.org/luc-github/ESP3D.svg?branch=2.1)](https://travis-ci.org/luc-github/ESP3D) +Arduino ide 1.8.9 with 2.5.2 version of ESP8266 or git version ESP32 for 100% support of ESP32 : [![Build Status](https://travis-ci.org/luc-github/ESP3D.svg?branch=2.1)](https://travis-ci.org/luc-github/ESP3D) [All releases](https://github.com/luc-github/ESP3D/wiki) diff --git a/docs/Commands.txt b/docs/Commands.txt index 996a2178..5a5fd437 100644 --- a/docs/Commands.txt +++ b/docs/Commands.txt @@ -73,7 +73,8 @@ if RAW=YES do not set pinmode just read value * Output to oled line 4 [ESP214] - +* Give EEPROM Version detected +[ESP300] *Get full EEPROM settings content but do not give any passwords @@ -132,16 +133,23 @@ cmd can be RESET, SAFEMODE, CONFIG, RESTART if authentication is on, need admin password for RESET, RESTART and SAFEMODE [ESP444]pwd= +* Send GCode with check sum caching right line numbering +[ESP500] + +* Send line checksum +[ESP501] + * Change / Reset user password [ESP555]pwd= if no password set it use default one -* Send GCode with check sum caching right line numbering -[ESP600] +* Send Notification +[ESP600]msg [pwd=] + +* Set/Get Notification settings +[ESP610]type= T1= T2= TS= [pwd=] +Get will give type and settings only not the protected T1/T2 -* Send line checksum -[ESP601] - * Read SPIFFS file and send each line to serial [ESP700] @@ -157,7 +165,5 @@ if no password set it use default one * Get fw target [ESP801]
-* Check SD presence -[ESP802] diff --git a/docs/Files/404.htm b/docs/Files/404.htm new file mode 100644 index 00000000..a1dec29a --- /dev/null +++ b/docs/Files/404.htm @@ -0,0 +1,18 @@ + + +404 page + + +
+

+ + + + +404 Error, unknown page!

+

What are you doing here ?

+You are not supposed to find this location... +
+ + + diff --git a/docs/Files/favicon.ico b/docs/Files/favicon.ico new file mode 100644 index 00000000..b2b24df7 Binary files /dev/null and b/docs/Files/favicon.ico differ diff --git a/docs/Files/index.html.gz b/docs/Files/index.html.gz new file mode 100644 index 00000000..2f38ea2f Binary files /dev/null and b/docs/Files/index.html.gz differ diff --git a/docs/Files/macrocfg.json b/docs/Files/macrocfg.json new file mode 100644 index 00000000..07b5bd33 --- /dev/null +++ b/docs/Files/macrocfg.json @@ -0,0 +1,74 @@ +[ + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 0 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 1 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 2 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 3 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 4 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 5 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 6 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 7 + }, + { + "name": "", + "glyph": "", + "filename": "", + "target": "", + "class": "", + "index": 8 + } +] \ No newline at end of file diff --git a/embedded/build.bat b/embedded/build.bat index f4a9a8df..3a05a777 100644 --- a/embedded/build.bat +++ b/embedded/build.bat @@ -1 +1,13 @@ -bin2c /infile tool.html.gz /outfile out.h /targetfolder . +cd %~dp0 +cmd.exe /c gulp package +cmd.exe /c bin2c -o nofile.h -m tool.html.gz +cat header.txt > out.h +cat nofile.h >> out.h +cat footer.txt >> out.h +sed -i "s/tool_html_gz_size/PAGE_NOFILES_SIZE/g" ./out.h +sed -i "s/const unsigned char tool_html_gz/const char PAGE_NOFILES/g" ./out.h +sed -i "s/] = {/] PROGMEM = {/g" ./out.h +cat out.h > nofile.h +cat out.h > ../esp3d/nofile.h +rm -f out.h +pause diff --git a/embedded/footer.txt b/embedded/footer.txt new file mode 100644 index 00000000..327a2c06 --- /dev/null +++ b/embedded/footer.txt @@ -0,0 +1 @@ +#endif //__nofile_h diff --git a/embedded/header.txt b/embedded/header.txt new file mode 100644 index 00000000..85c9dfee --- /dev/null +++ b/embedded/header.txt @@ -0,0 +1,24 @@ +/* + nofile.h - ESP3D data file + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + 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 +*/ + +//data generated by https://github.com/AraHaan/bin2c +//bin2c Conversion Tool v0.14.0 - Windows - [FINAL]. +#ifndef __nofile_h +#define __nofile_h diff --git a/embedded/install.bat b/embedded/install.bat deleted file mode 100644 index e3f2831a..00000000 --- a/embedded/install.bat +++ /dev/null @@ -1,15 +0,0 @@ -npm install --global gulp-cli -npm install --save-dev gulp -npm install --save-dev gulp-jshint -npm install --save-dev jshint -npm install --save-dev gulp-if -npm install --save-dev gulp-concat -npm install --save-dev gulp-uglify -npm install --save-dev gulp-clean-css -npm install --save-dev gulp-remove-code -npm install --save-dev del -npm install --save-dev gulp-zip -npm install --save-dev gulp-gzip -npm install --save-dev gulp-htmlmin -npm install --save-dev gulp-replace -npm install --save-dev gulp-smoosher diff --git a/embedded/nofile.h b/embedded/nofile.h new file mode 100644 index 00000000..12ccbfa1 --- /dev/null +++ b/embedded/nofile.h @@ -0,0 +1,406 @@ +/* + nofile.h - ESP3D data file + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + 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 +*/ + +//data generated by https://github.com/AraHaan/bin2c +//bin2c Conversion Tool v0.14.0 - Windows - [FINAL]. +#ifndef __nofile_h +#define __nofile_h +/* Generated by bin2c, do not edit manually */ + +/* Contents of file tool.html.gz */ +#define PAGE_NOFILES_SIZE 5991 +const char PAGE_NOFILES[5991] PROGMEM = { + 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xED, 0x5C, 0x7B, 0x73, 0xDB, 0xC6, + 0xAE, 0xFF, 0x2A, 0x2C, 0x3B, 0x8D, 0xA4, 0x6B, 0x52, 0xE6, 0x4B, 0x12, 0x25, 0x59, 0xCA, 0x69, + 0x9B, 0xA4, 0xCD, 0x9D, 0xA4, 0xC9, 0xC4, 0xC9, 0xE9, 0x9D, 0x69, 0x3A, 0x19, 0x8A, 0x5C, 0x59, + 0x3C, 0xA1, 0x48, 0x89, 0x5C, 0xC5, 0x76, 0x5C, 0x7D, 0xF7, 0x0B, 0x60, 0x97, 0x4F, 0x3D, 0xFC, + 0x48, 0x7A, 0xDA, 0x3F, 0x3A, 0x8E, 0x45, 0x6A, 0x77, 0x81, 0xC5, 0x62, 0x81, 0x1F, 0xB0, 0x20, + 0x9D, 0xB3, 0x05, 0x5F, 0x46, 0xD3, 0xB3, 0x05, 0xF3, 0x82, 0xE9, 0x59, 0xC6, 0xAF, 0x23, 0x36, + 0xC5, 0x96, 0x9B, 0x79, 0x12, 0x73, 0x7D, 0xEE, 0x2D, 0xC3, 0xE8, 0x7A, 0x94, 0x79, 0x71, 0xA6, + 0x67, 0x2C, 0x0D, 0xE7, 0x63, 0x7D, 0x99, 0xE9, 0x9C, 0x5D, 0x71, 0x3D, 0x0B, 0x3F, 0x33, 0xDD, + 0x0B, 0xFE, 0xB3, 0xC9, 0xF8, 0xC8, 0x34, 0x8C, 0xEF, 0xC6, 0xFA, 0x25, 0x9B, 0x7D, 0x0C, 0xF9, + 0x81, 0x5E, 0x62, 0x87, 0xAD, 0xF0, 0x75, 0x75, 0xB5, 0x9D, 0x25, 0xC1, 0x75, 0x6D, 0x0A, 0xF5, + 0x67, 0x16, 0x7D, 0x62, 0x3C, 0xF4, 0x3D, 0xE5, 0x17, 0xB6, 0x61, 0xAA, 0x56, 0x7C, 0xD7, 0xBE, + 0x4F, 0x43, 0x2F, 0xD2, 0x2A, 0x32, 0x54, 0x78, 0x39, 0xAB, 0xAB, 0x71, 0x14, 0xC6, 0x4C, 0x5F, + 0xB0, 0xF0, 0x62, 0x01, 0x73, 0x75, 0x1D, 0xCB, 0xED, 0x0D, 0x4C, 0xC7, 0x1E, 0xFB, 0x49, 0x94, + 0xA4, 0xA3, 0x6F, 0x6D, 0xDB, 0x1E, 0xCF, 0x3C, 0xFF, 0xE3, 0x45, 0x9A, 0x6C, 0xE2, 0x40, 0x97, + 0xAD, 0xF3, 0xF9, 0x7C, 0xDB, 0xF5, 0x81, 0x8F, 0x07, 0xC4, 0xE9, 0xCD, 0xD2, 0x4B, 0x2F, 0xC2, + 0x58, 0x4F, 0x89, 0x87, 0xB7, 0xE1, 0xC9, 0x58, 0xB6, 0x44, 0x6C, 0x2E, 0x1B, 0x56, 0x5E, 0x10, + 0x84, 0xF1, 0x85, 0x68, 0x31, 0x7B, 0x30, 0x6F, 0xDE, 0x22, 0xA8, 0xB0, 0x69, 0xCB, 0xBD, 0x59, + 0xC4, 0x6E, 0x66, 0x49, 0x1A, 0xB0, 0x74, 0x64, 0x8C, 0xC5, 0x8D, 0x9E, 0xAD, 0x3C, 0x1F, 0x06, + 0x42, 0xC3, 0xD2, 0xBB, 0xD2, 0x2F, 0xC3, 0x80, 0x2F, 0x48, 0x29, 0xDB, 0x2E, 0x8D, 0xD7, 0xC5, + 0x30, 0x16, 0xDC, 0x94, 0x5D, 0x92, 0x74, 0x64, 0xAE, 0xAE, 0x94, 0x2C, 0x89, 0xC2, 0x40, 0xF9, + 0x36, 0x08, 0x82, 0x5C, 0xAA, 0x59, 0xC2, 0x79, 0xB2, 0x1C, 0x59, 0xA8, 0x49, 0x0E, 0x64, 0x8B, + 0x90, 0x33, 0x9A, 0x85, 0x8D, 0xE2, 0xE4, 0x32, 0xF5, 0x56, 0xB9, 0x6C, 0x23, 0x6B, 0xB9, 0xDC, + 0xF2, 0xC5, 0x0D, 0xED, 0x89, 0x17, 0x85, 0x17, 0xF1, 0x08, 0xE5, 0x97, 0x13, 0x4F, 0x39, 0x6E, + 0xC3, 0x94, 0xA7, 0x53, 0x1E, 0x68, 0x3B, 0x4D, 0x8B, 0xA2, 0x89, 0x6C, 0xA3, 0x3E, 0xAA, 0x68, + 0x5A, 0xDC, 0xE4, 0x53, 0xB9, 0x87, 0xB7, 0xE2, 0x13, 0x4B, 0x71, 0x27, 0x23, 0x29, 0x02, 0x4F, + 0x56, 0xB9, 0x6A, 0xE0, 0xB6, 0xB1, 0xC6, 0xA6, 0x52, 0xF6, 0x08, 0xB9, 0xAF, 0x6F, 0xB1, 0xDB, + 0xB7, 0x23, 0xF6, 0xBE, 0xBE, 0xC5, 0xCD, 0x5E, 0x4D, 0xEF, 0x4A, 0x71, 0x2F, 0x6E, 0x72, 0x87, + 0xE4, 0x5E, 0x5B, 0xB0, 0x4D, 0x92, 0x26, 0xE3, 0x69, 0xB8, 0xAA, 0x08, 0x3E, 0x8A, 0xF9, 0x42, + 0x4F, 0xE6, 0x3A, 0xBF, 0x5E, 0xB1, 0x76, 0x12, 0x04, 0x9D, 0x9B, 0x3D, 0xB6, 0x3A, 0xC4, 0x9F, + 0xED, 0xBF, 0x96, 0x2C, 0x08, 0x3D, 0xA5, 0xBD, 0x04, 0x03, 0x10, 0x7C, 0x07, 0x7D, 0xD0, 0x79, + 0xE7, 0xA6, 0x62, 0xC7, 0xB2, 0xBD, 0x87, 0x86, 0xB1, 0x87, 0x60, 0x38, 0xB4, 0xF6, 0x12, 0x0C, + 0x07, 0x07, 0x08, 0x4C, 0xCB, 0x30, 0xF6, 0x52, 0x98, 0xA6, 0x20, 0xE9, 0xC6, 0xDE, 0xA7, 0xAA, + 0xD9, 0x4A, 0x91, 0x7D, 0xDF, 0x6F, 0x38, 0x8C, 0xD1, 0x74, 0x17, 0x03, 0x8C, 0x25, 0x03, 0x37, + 0x46, 0xC4, 0x01, 0xAB, 0x8D, 0xD9, 0x1E, 0x2F, 0x25, 0xDF, 0x15, 0x0A, 0x4D, 0xBD, 0x20, 0xDC, + 0x64, 0xA3, 0x3E, 0x18, 0xD9, 0x1E, 0x27, 0xF0, 0x6E, 0x56, 0x49, 0x16, 0xF2, 0x30, 0x89, 0x47, + 0x29, 0x8B, 0x3C, 0x1E, 0x7E, 0x62, 0xE3, 0x20, 0xCC, 0x56, 0x91, 0x77, 0x3D, 0x9A, 0x45, 0x89, + 0xFF, 0xB1, 0x70, 0x08, 0x44, 0x1F, 0x85, 0xDC, 0x97, 0x7C, 0x22, 0x60, 0x7E, 0x92, 0x7A, 0x44, + 0x48, 0x32, 0x94, 0xF2, 0x6F, 0xBB, 0x9E, 0x8F, 0x7C, 0x6E, 0x4A, 0xC4, 0xD8, 0x23, 0xA1, 0x61, + 0x18, 0xF9, 0x40, 0xC5, 0xD3, 0xBC, 0xD1, 0x3C, 0xF1, 0x37, 0x19, 0x5C, 0x17, 0x09, 0xD8, 0xFC, + 0x4D, 0x15, 0x6C, 0x56, 0x5E, 0xCC, 0xA2, 0x9B, 0x5D, 0xD9, 0xF7, 0x83, 0xD3, 0x01, 0xFF, 0xAF, + 0x2B, 0x03, 0xC1, 0x2F, 0x47, 0xDD, 0x59, 0x72, 0xA5, 0x67, 0x0B, 0x2F, 0x48, 0x2E, 0x47, 0x86, + 0x82, 0x54, 0xF8, 0x9B, 0x5E, 0xCC, 0xBC, 0xB6, 0xA1, 0xE1, 0x4F, 0xD7, 0xE8, 0x75, 0xC6, 0x77, + 0x19, 0x24, 0x25, 0xD5, 0x09, 0xA1, 0x0B, 0xAD, 0x21, 0xB8, 0xC9, 0x0E, 0x34, 0x76, 0x68, 0xBB, + 0xD9, 0xD5, 0xE8, 0x71, 0xC4, 0xED, 0xE1, 0x4F, 0xBE, 0x02, 0xD9, 0x58, 0x59, 0x13, 0x20, 0x81, + 0x30, 0x8D, 0x7C, 0x75, 0x36, 0xEA, 0xA6, 0xEC, 0x43, 0x33, 0xDA, 0xD3, 0x25, 0x35, 0xD9, 0xF0, + 0xDE, 0xC8, 0x9B, 0x81, 0xB2, 0x73, 0x0B, 0x08, 0x63, 0xC2, 0x25, 0x61, 0x08, 0x75, 0x08, 0x6E, + 0x18, 0x13, 0xAE, 0x82, 0xA2, 0xCB, 0xA5, 0xC0, 0xB0, 0x01, 0x6E, 0x2F, 0x19, 0x4A, 0x18, 0xCF, + 0x93, 0x7C, 0x3F, 0x6D, 0x30, 0x7E, 0x17, 0xB6, 0x74, 0x9E, 0xA4, 0x4B, 0x1D, 0x3D, 0x23, 0x4D, + 0xCA, 0xC9, 0xC4, 0x2C, 0x62, 0x06, 0x0A, 0x1C, 0x12, 0x0E, 0x6D, 0xA7, 0x0C, 0x19, 0x68, 0xC6, + 0x8A, 0x69, 0xE5, 0x93, 0xDD, 0x35, 0x94, 0xF5, 0x7A, 0xBD, 0x43, 0xD6, 0x52, 0xB6, 0x86, 0x4B, + 0xEF, 0x22, 0x77, 0xA8, 0x1D, 0x1B, 0x42, 0xBF, 0xBC, 0x93, 0x0D, 0x85, 0x71, 0xC6, 0xB8, 0x72, + 0xC0, 0x48, 0x06, 0x75, 0x53, 0xBA, 0x75, 0xAC, 0x9E, 0xE8, 0x3C, 0x85, 0xF0, 0x2D, 0x1C, 0xB4, + 0x6A, 0x01, 0x0A, 0xF3, 0x32, 0x06, 0xBA, 0xD5, 0x93, 0x0D, 0x57, 0xBA, 0x66, 0x2F, 0xD3, 0x4A, + 0xBE, 0x3B, 0x7D, 0x75, 0x85, 0x0B, 0x57, 0xBB, 0xA9, 0xDB, 0x53, 0xBF, 0xEF, 0xCD, 0xD9, 0x70, + 0x0C, 0x14, 0xA8, 0x49, 0x08, 0xB8, 0x0F, 0x58, 0x9A, 0x66, 0x40, 0xA7, 0x9B, 0x77, 0x98, 0x86, + 0xA5, 0x99, 0x83, 0x9E, 0x66, 0xD9, 0xB6, 0xD6, 0xED, 0x77, 0xA4, 0x0C, 0xA8, 0xEB, 0x55, 0xC3, + 0x99, 0x85, 0x8F, 0xCC, 0x78, 0x7C, 0xC8, 0xEE, 0xAA, 0x83, 0x8D, 0x9A, 0x99, 0x39, 0x86, 0x31, + 0xAE, 0x84, 0x68, 0x9F, 0xC5, 0x9C, 0xA5, 0xCD, 0xA8, 0xB9, 0x0C, 0x83, 0x20, 0x62, 0x22, 0x01, + 0x4B, 0x36, 0xFE, 0x42, 0x47, 0xD8, 0x01, 0x7D, 0x2E, 0xBD, 0x38, 0x5C, 0x6D, 0x22, 0x02, 0xB1, + 0xF1, 0xE1, 0x1E, 0x7F, 0x93, 0x66, 0xA0, 0xA2, 0x55, 0x12, 0x12, 0xF3, 0x3B, 0x5A, 0x0C, 0xED, + 0xDB, 0xCA, 0x4B, 0x41, 0xA2, 0xF1, 0x91, 0x34, 0xE3, 0x9E, 0xF6, 0xBC, 0xC7, 0x04, 0x97, 0xC9, + 0x67, 0x7D, 0x93, 0x61, 0xB2, 0xC4, 0x22, 0xE6, 0x73, 0x21, 0x0E, 0xAE, 0x75, 0xA7, 0xB1, 0xD9, + 0x40, 0x3A, 0xD7, 0x57, 0x29, 0x2C, 0x23, 0xBD, 0x3E, 0x8E, 0xD6, 0xB6, 0x3D, 0xF0, 0x66, 0x83, + 0x06, 0x06, 0x59, 0xAC, 0x1F, 0x78, 0x4E, 0x8D, 0x8B, 0x44, 0x74, 0xAD, 0xD6, 0x26, 0xA0, 0xBD, + 0xD6, 0x44, 0x28, 0x5F, 0x6B, 0x1A, 0xED, 0xA1, 0x1C, 0xED, 0x52, 0xEE, 0xC4, 0x87, 0x3D, 0xC2, + 0x5A, 0x6E, 0xDF, 0x18, 0x1A, 0x0D, 0x61, 0x4D, 0xCB, 0x9A, 0x39, 0xC6, 0xD6, 0xF7, 0x56, 0xB8, + 0xA9, 0x39, 0x06, 0x53, 0x1A, 0xE5, 0x56, 0x52, 0x52, 0x69, 0x65, 0x6E, 0x09, 0xCA, 0x83, 0xC1, + 0x60, 0xBC, 0x93, 0x05, 0x7A, 0x11, 0x98, 0x58, 0x0D, 0xE4, 0xF7, 0x04, 0xD7, 0xE3, 0x46, 0xB1, + 0xB3, 0x95, 0x92, 0xAB, 0x9E, 0x6D, 0x7C, 0x9F, 0x65, 0xD9, 0x9E, 0x7C, 0x26, 0x98, 0xCF, 0x8D, + 0xC0, 0x6D, 0x46, 0x82, 0x3E, 0x1B, 0xFA, 0xFD, 0x22, 0x84, 0xF8, 0x83, 0xBE, 0x1D, 0xE4, 0xAC, + 0x02, 0x2F, 0xBE, 0x00, 0x6D, 0xED, 0x81, 0x3E, 0x2B, 0x60, 0x01, 0x6B, 0x70, 0x62, 0x33, 0xDF, + 0x0F, 0xCC, 0x9C, 0x93, 0x37, 0x74, 0x1C, 0xC7, 0xDA, 0x76, 0x17, 0x5E, 0xA6, 0xB3, 0x34, 0x05, + 0xC8, 0xA9, 0xC3, 0x76, 0x9D, 0x56, 0x8C, 0xFE, 0xB3, 0x01, 0xF1, 0xA0, 0x34, 0x7B, 0x31, 0xCD, + 0x75, 0xEC, 0x9E, 0xED, 0x3C, 0x18, 0xC9, 0xD0, 0x35, 0xBF, 0xF5, 0x99, 0xEB, 0xB8, 0xF6, 0x7D, + 0x64, 0x6C, 0xD2, 0xD6, 0x64, 0x96, 0xE2, 0xEA, 0x22, 0xCC, 0xEE, 0xD1, 0xB4, 0xDC, 0xFC, 0xA3, + 0xBA, 0x16, 0x7B, 0xFC, 0xDF, 0xD1, 0xF5, 0x5E, 0x79, 0xF6, 0x6A, 0xDB, 0x9A, 0xF5, 0x1C, 0xCB, + 0xFF, 0x32, 0x6D, 0xF7, 0x07, 0x33, 0xB3, 0xEF, 0x3E, 0x4C, 0xDB, 0x82, 0xB6, 0x21, 0xF5, 0x5E, + 0x7D, 0xE7, 0x3E, 0x82, 0xB0, 0x22, 0x3D, 0xE4, 0x28, 0x9E, 0x04, 0x43, 0x30, 0xA3, 0x79, 0xD3, + 0xED, 0x1C, 0x7B, 0x6E, 0x7B, 0x55, 0x26, 0x35, 0xEC, 0x93, 0x4D, 0x15, 0x00, 0x93, 0x2D, 0x15, + 0xE4, 0x13, 0x2D, 0xA3, 0x5D, 0xB2, 0xD1, 0x0E, 0xD9, 0x5D, 0x60, 0xCF, 0x1F, 0xDA, 0x86, 0xE5, + 0x37, 0xC4, 0x1C, 0xF4, 0x4D, 0xDF, 0x1C, 0x92, 0x98, 0xE1, 0xF2, 0xE2, 0x46, 0xC6, 0xB2, 0x85, + 0x17, 0x37, 0x53, 0xE2, 0xFE, 0x3E, 0xBC, 0x12, 0x09, 0xB8, 0xA0, 0x95, 0x22, 0xEC, 0xC1, 0x12, + 0x03, 0x7F, 0x1A, 0xF3, 0x1A, 0x20, 0xE2, 0x5F, 0xEE, 0x78, 0x20, 0x38, 0x49, 0x7A, 0x7C, 0xE5, + 0xB6, 0x21, 0xD3, 0x8F, 0x7C, 0xEC, 0x6D, 0x2B, 0xFD, 0xEB, 0xD7, 0x15, 0x81, 0x68, 0x90, 0x21, + 0x7C, 0xCC, 0x0D, 0x82, 0x0E, 0x53, 0x45, 0xEB, 0x48, 0xDA, 0xD8, 0x3C, 0x8C, 0x18, 0x7D, 0x17, + 0xEE, 0x5A, 0x8C, 0x1D, 0x3A, 0xB0, 0xAB, 0x61, 0xBC, 0xDA, 0xF0, 0xDF, 0xF0, 0xF4, 0x3C, 0xC1, + 0x71, 0xBF, 0x8F, 0x46, 0xF9, 0xB2, 0xF0, 0xAB, 0xBE, 0x59, 0x45, 0x89, 0x17, 0xE8, 0xB3, 0x0D, + 0x44, 0xB3, 0x7F, 0xF2, 0xB2, 0xFF, 0x6E, 0x5E, 0x36, 0x3E, 0xEA, 0xE6, 0xBD, 0x99, 0x6F, 0xEC, + 0x84, 0x6E, 0xA7, 0x3F, 0x73, 0x03, 0xEF, 0x5E, 0x9B, 0x2A, 0xAD, 0xE2, 0x9F, 0xAD, 0xFD, 0xFB, + 0x6C, 0xAD, 0x6D, 0xCE, 0x8C, 0xA0, 0x79, 0xD2, 0x37, 0x67, 0xFD, 0xC0, 0xED, 0xDD, 0x6F, 0x6B, + 0x05, 0x80, 0xFD, 0xB3, 0xB5, 0x7F, 0xF3, 0xAD, 0xB5, 0xFA, 0x43, 0x6F, 0xE6, 0x6F, 0x0B, 0xA0, + 0xAE, 0xC1, 0x79, 0x1D, 0xBD, 0x2B, 0x68, 0x5E, 0x4B, 0x05, 0x24, 0x9A, 0xCB, 0x0A, 0xD3, 0x3C, + 0x49, 0x40, 0xA9, 0x47, 0x0A, 0x4C, 0x54, 0x7F, 0x79, 0x58, 0x8D, 0x69, 0xA7, 0xCE, 0x8B, 0x06, + 0x87, 0x61, 0x52, 0xEC, 0x95, 0x53, 0x49, 0x1A, 0x6C, 0xFC, 0xA9, 0x92, 0x56, 0x3A, 0x6D, 0x67, + 0xE8, 0x06, 0xB3, 0x86, 0xEA, 0x7B, 0xC6, 0x77, 0xE3, 0xBC, 0x6E, 0x0A, 0xD2, 0xE6, 0x3B, 0x85, + 0xF7, 0x60, 0x3B, 0x4B, 0x51, 0x66, 0xCC, 0x56, 0x61, 0xAC, 0x58, 0x99, 0x82, 0x9B, 0xE9, 0xA5, + 0x4A, 0x18, 0xCF, 0xC3, 0x18, 0x2C, 0x61, 0xFB, 0xAF, 0x8F, 0xEC, 0x7A, 0x9E, 0x7A, 0x4B, 0x96, + 0x29, 0x38, 0xE4, 0xC6, 0xF8, 0xEE, 0x86, 0xCC, 0x05, 0x33, 0xD6, 0x51, 0x9A, 0x70, 0x8F, 0xB3, + 0xB6, 0xD1, 0xD9, 0x62, 0xD1, 0x6A, 0xB7, 0xC3, 0xEE, 0x03, 0x98, 0x5E, 0x74, 0xB6, 0x7F, 0x89, + 0x06, 0x97, 0x49, 0xE0, 0x95, 0xF5, 0x2F, 0x32, 0xA2, 0xA2, 0x1A, 0x3B, 0x0F, 0xAF, 0x58, 0x30, + 0xFE, 0xAC, 0x87, 0x71, 0xC0, 0xAE, 0xB0, 0xE2, 0x66, 0x94, 0x85, 0x60, 0xE2, 0x85, 0xF5, 0xE5, + 0x31, 0x95, 0x88, 0xC1, 0x69, 0xA1, 0xC1, 0x18, 0x57, 0x8A, 0x73, 0xB9, 0x06, 0xF1, 0x1E, 0xCD, + 0x65, 0x1E, 0x41, 0xA2, 0x41, 0x45, 0xB5, 0xBD, 0x95, 0xD8, 0xDD, 0xD6, 0x6A, 0x12, 0xE2, 0x74, + 0xA4, 0xA8, 0x94, 0xFF, 0x83, 0x0B, 0xDE, 0x94, 0x6B, 0xAA, 0x55, 0x17, 0x4D, 0xA3, 0x5E, 0x79, + 0xAC, 0x55, 0x25, 0xAB, 0x9D, 0xB2, 0xC8, 0x7F, 0x88, 0x56, 0x76, 0x1F, 0x22, 0xC7, 0xC7, 0x02, + 0x85, 0x39, 0xE5, 0x85, 0x89, 0x4A, 0x7D, 0x16, 0x4B, 0x50, 0x26, 0x42, 0x81, 0x51, 0xCB, 0xA5, + 0xAC, 0xCE, 0x78, 0xB7, 0xD6, 0x2D, 0xE0, 0xB0, 0xF6, 0xA0, 0x6A, 0xB4, 0x47, 0x1D, 0xDF, 0xCE, + 0x19, 0xFE, 0xE4, 0x7A, 0xC0, 0x4A, 0x6E, 0xC5, 0x4A, 0x2C, 0x39, 0xE1, 0xB8, 0x48, 0x7E, 0xF1, + 0x67, 0x1F, 0x17, 0x0B, 0x7F, 0x0E, 0x15, 0x67, 0xEF, 0xA9, 0xBE, 0x5A, 0x79, 0x72, 0x8E, 0x3F, + 0xB9, 0x78, 0xF5, 0x0A, 0xB4, 0x21, 0xA5, 0xCB, 0x7B, 0x9B, 0x26, 0xDE, 0xCF, 0xA5, 0x97, 0x46, + 0xE3, 0x74, 0x7B, 0x6C, 0x79, 0xFF, 0xA5, 0xEC, 0x8A, 0xF3, 0x85, 0xBB, 0x7D, 0xE4, 0xB9, 0x4D, + 0xDD, 0x1A, 0x45, 0x5F, 0xCF, 0xAD, 0x3E, 0x8A, 0xC9, 0xFC, 0x94, 0xB1, 0x58, 0x81, 0x6C, 0x1F, + 0xE8, 0x8B, 0xC2, 0xF5, 0xA0, 0x3F, 0x38, 0x48, 0x4F, 0xCF, 0x15, 0xB7, 0x67, 0xA7, 0xE2, 0x49, + 0xEE, 0xD9, 0xA9, 0x78, 0xAE, 0x4B, 0x4F, 0x9B, 0xCE, 0x82, 0xF0, 0x93, 0xE2, 0x47, 0x5E, 0x96, + 0x4D, 0x54, 0x82, 0x09, 0x75, 0x7A, 0x46, 0x4F, 0xA5, 0x14, 0x22, 0x9D, 0xA8, 0x48, 0x8B, 0x6D, + 0x29, 0xFC, 0x02, 0x91, 0x97, 0x0F, 0x16, 0x27, 0x27, 0x55, 0x59, 0xA4, 0x6C, 0x3E, 0x51, 0x17, + 0x9C, 0xAF, 0xB2, 0xD1, 0xE9, 0xE9, 0xE5, 0xE5, 0x65, 0xF7, 0x22, 0xE4, 0x8B, 0xCD, 0x0C, 0xCE, + 0xA7, 0xCB, 0xD3, 0x68, 0xE3, 0xEB, 0xE2, 0xEB, 0xE9, 0xD3, 0xF3, 0xD7, 0xF6, 0x93, 0x53, 0x0E, + 0xA2, 0x9F, 0x5A, 0x5D, 0x53, 0x55, 0x38, 0x58, 0x27, 0xE3, 0x13, 0xF5, 0x03, 0xE4, 0xF6, 0xF1, + 0x47, 0x98, 0x21, 0xFB, 0x74, 0x51, 0xCC, 0xC9, 0x96, 0xC0, 0x98, 0xB6, 0x4C, 0x7E, 0xF9, 0x14, + 0xB2, 0xCB, 0x1F, 0x92, 0xAB, 0x89, 0x8A, 0x07, 0x06, 0xD3, 0x36, 0xE0, 0xC3, 0x32, 0x0C, 0xA0, + 0xBA, 0x50, 0x0A, 0xDC, 0x9B, 0xA8, 0x74, 0x1B, 0x21, 0xF6, 0xF5, 0x0C, 0x0D, 0x07, 0x74, 0x40, + 0x59, 0x5E, 0xC4, 0xDA, 0xA6, 0xA6, 0xE8, 0x66, 0x07, 0x86, 0xAF, 0x3C, 0xBE, 0x50, 0x82, 0x89, + 0xFA, 0xB2, 0x8F, 0x2C, 0xCC, 0x81, 0xB3, 0xB6, 0x6D, 0xE0, 0x38, 0x70, 0x14, 0xBD, 0x17, 0xD9, + 0x2E, 0x8C, 0xEA, 0x59, 0x51, 0x0F, 0x2E, 0x6B, 0x67, 0x08, 0x9F, 0x8E, 0x32, 0x84, 0x1E, 0x7B, + 0x88, 0x4D, 0x56, 0x64, 0xDA, 0x8E, 0xE2, 0x1A, 0xEB, 0xBE, 0xA9, 0xE8, 0x8E, 0xAB, 0x98, 0x06, + 0x74, 0x99, 0x46, 0x2F, 0xD2, 0x5D, 0x03, 0x6E, 0x6C, 0x27, 0xB2, 0x81, 0xC9, 0xDA, 0x82, 0xA1, + 0x8E, 0xA3, 0xD8, 0x40, 0x3E, 0xB4, 0x23, 0x18, 0xDA, 0x8F, 0x80, 0x27, 0x30, 0x71, 0xD7, 0xD8, + 0x63, 0x2B, 0xF0, 0x39, 0xB0, 0xD7, 0x40, 0x62, 0xE3, 0xA4, 0xF0, 0xC5, 0x89, 0x74, 0x39, 0x02, + 0x6E, 0x60, 0xFC, 0x1A, 0xBE, 0xC2, 0xC8, 0x21, 0x4E, 0x4C, 0x4C, 0x74, 0x64, 0x1C, 0xC9, 0x59, + 0xD6, 0x38, 0xB7, 0x8E, 0x32, 0x94, 0x02, 0x90, 0x60, 0x66, 0x84, 0xDC, 0xEC, 0x35, 0xCE, 0xAE, + 0xA3, 0x14, 0x52, 0x74, 0x9D, 0x64, 0xD7, 0xC5, 0xE2, 0x4C, 0x65, 0x8D, 0x32, 0x88, 0x79, 0x51, + 0x5C, 0x9D, 0xD6, 0x8F, 0x5F, 0x7A, 0x34, 0x06, 0x86, 0x20, 0x85, 0xB5, 0x46, 0x01, 0x60, 0xFD, + 0xC8, 0x45, 0x30, 0xB1, 0xC5, 0x3C, 0xBA, 0x6B, 0xAE, 0xF5, 0xBE, 0xA1, 0xA0, 0x14, 0x28, 0x01, + 0x0A, 0xE0, 0xE2, 0x9E, 0x38, 0x28, 0x27, 0x30, 0x84, 0xA9, 0x1D, 0x14, 0xC4, 0x55, 0x50, 0x74, + 0x4B, 0xE9, 0x47, 0x34, 0x2F, 0xAC, 0x5F, 0xEF, 0x2B, 0x0E, 0xAC, 0xB3, 0x0F, 0xEA, 0x86, 0xF5, + 0xC3, 0xC4, 0x70, 0x07, 0x2A, 0xA2, 0xCE, 0x08, 0x06, 0xAE, 0x4D, 0x1B, 0xD9, 0x0A, 0x4A, 0x5B, + 0x11, 0x9A, 0xC5, 0x25, 0x3B, 0x03, 0x05, 0x16, 0x0C, 0x33, 0xD1, 0x6C, 0x26, 0x50, 0x42, 0x4F, + 0x84, 0x52, 0xC2, 0x4C, 0x30, 0x9F, 0x90, 0x11, 0x7A, 0x23, 0x5A, 0x01, 0x34, 0xA3, 0x9A, 0x71, + 0x4D, 0x9F, 0x69, 0xA3, 0x5D, 0x50, 0xE8, 0x5A, 0x77, 0x87, 0xB8, 0x52, 0x52, 0x75, 0xDF, 0xE6, + 0xF0, 0x4B, 0x0A, 0xE9, 0xF6, 0x78, 0x79, 0x97, 0x77, 0xE2, 0x15, 0x2E, 0xD0, 0x21, 0xDA, 0xF5, + 0xF2, 0x4E, 0x74, 0x7D, 0x06, 0x5B, 0x3A, 0x45, 0x63, 0x82, 0xCB, 0x05, 0xFC, 0x82, 0xF1, 0x4E, + 0x95, 0x33, 0x48, 0xDC, 0xE2, 0xC2, 0x3F, 0xF2, 0x23, 0xAB, 0x3A, 0x7D, 0x16, 0xA6, 0xCB, 0x4B, + 0x48, 0xF0, 0x60, 0x18, 0x0C, 0x80, 0xD1, 0x1E, 0xFC, 0xA2, 0x33, 0x7D, 0xB9, 0x43, 0xE9, 0xBF, + 0x3E, 0xFD, 0xE1, 0xDD, 0xF3, 0xBF, 0x99, 0x5B, 0x41, 0xDE, 0xB6, 0x76, 0x2D, 0xE4, 0xD8, 0x37, + 0xBA, 0x68, 0x7D, 0x16, 0xAA, 0xD6, 0x01, 0xE5, 0xF7, 0x86, 0xDC, 0x34, 0xFB, 0xD8, 0xE6, 0x62, + 0xDB, 0xD0, 0xC1, 0xDB, 0x21, 0xEC, 0x80, 0x4B, 0x17, 0xC7, 0x2A, 0xBA, 0xD0, 0xF4, 0x7A, 0x03, + 0x52, 0x78, 0x71, 0x87, 0x86, 0x4B, 0x9D, 0x7A, 0xDF, 0x95, 0x84, 0x7A, 0xC1, 0x42, 0xAF, 0x32, + 0xD6, 0xF3, 0xD9, 0x60, 0xBB, 0x86, 0x85, 0x08, 0xF2, 0x8B, 0x55, 0x8C, 0xA0, 0x01, 0x44, 0x26, + 0xA8, 0x88, 0xD9, 0x30, 0xE7, 0x3F, 0x14, 0x53, 0xE6, 0x0C, 0x15, 0x12, 0x22, 0xBF, 0x92, 0xA8, + 0xD4, 0x05, 0xB2, 0x0F, 0x7B, 0x0A, 0xCF, 0x69, 0x2B, 0xFC, 0xE4, 0x14, 0x42, 0x0B, 0x38, 0xEB, + 0xE7, 0x97, 0xAE, 0xEB, 0x42, 0xDF, 0x90, 0x5C, 0x1C, 0xBD, 0xDC, 0x04, 0x7B, 0xB5, 0x38, 0x09, + 0x48, 0xC8, 0xD1, 0x1B, 0xA0, 0x3D, 0x83, 0x50, 0x43, 0x44, 0x08, 0xD3, 0x42, 0x7F, 0x03, 0xDD, + 0x58, 0x30, 0x08, 0x3F, 0xF0, 0x9B, 0xB8, 0xC1, 0x2B, 0xF4, 0xC0, 0xED, 0x1A, 0x27, 0x51, 0x2C, + 0x30, 0x50, 0x13, 0xD4, 0xAE, 0x98, 0x43, 0xC5, 0xA1, 0xE9, 0x40, 0xE6, 0x01, 0x2E, 0x1D, 0x46, + 0xE8, 0x03, 0x60, 0xD6, 0x47, 0x40, 0xEB, 0x23, 0x57, 0x17, 0x40, 0xC4, 0x44, 0x9B, 0xEF, 0x2B, + 0x02, 0x6A, 0x0C, 0xDC, 0x0B, 0xB8, 0x82, 0x88, 0x6B, 0x0B, 0x91, 0x08, 0x1C, 0x75, 0x00, 0xA0, + 0x60, 0x72, 0x24, 0x74, 0x2D, 0x3E, 0x14, 0x1B, 0x63, 0xC2, 0xEA, 0x10, 0x3C, 0x5C, 0x5C, 0x9C, + 0x6D, 0x93, 0x62, 0x71, 0x32, 0xF9, 0xC5, 0x72, 0xA8, 0x9F, 0xBA, 0x89, 0xC2, 0x45, 0x8F, 0x19, + 0x18, 0xE2, 0x0A, 0x1C, 0x07, 0x30, 0xD1, 0xDA, 0x04, 0x4F, 0x06, 0x95, 0x29, 0x4E, 0xAE, 0x57, + 0x07, 0x7A, 0xD7, 0xFA, 0x90, 0xF0, 0x18, 0x85, 0x82, 0x95, 0xB8, 0xC3, 0xCF, 0x2F, 0x1D, 0x80, + 0x82, 0x81, 0x35, 0x00, 0x54, 0x41, 0x34, 0x91, 0xA8, 0x48, 0xBF, 0xB4, 0xA3, 0x36, 0xCE, 0x42, + 0x9B, 0x4F, 0xF4, 0x36, 0x90, 0xE2, 0x4E, 0xE0, 0xB2, 0x4C, 0x40, 0x12, 0x5C, 0x9A, 0xAD, 0xD8, + 0x64, 0x27, 0xA6, 0xC9, 0x6D, 0xDC, 0x14, 0x73, 0x10, 0x01, 0x2F, 0xC0, 0x13, 0x98, 0x14, 0xF5, + 0x8F, 0x22, 0xA2, 0xE0, 0x20, 0x45, 0x5F, 0xDE, 0x12, 0x7A, 0x22, 0x80, 0x02, 0x58, 0x80, 0x38, + 0x30, 0x29, 0x49, 0xAB, 0x5B, 0xA0, 0x6A, 0x83, 0xEB, 0xB6, 0x85, 0xFA, 0xBC, 0x97, 0xF3, 0x3F, + 0xC7, 0xB3, 0xE0, 0x1C, 0x0E, 0x74, 0x7F, 0x82, 0xF7, 0x9F, 0x5E, 0x86, 0x1F, 0xC3, 0xBF, 0x87, + 0xCF, 0x9B, 0x83, 0xC1, 0x1A, 0xF7, 0xCF, 0x00, 0xCB, 0x03, 0xF5, 0x39, 0x3D, 0x34, 0x11, 0xD7, + 0x11, 0x06, 0x08, 0x80, 0x6A, 0xD9, 0x64, 0x78, 0xB8, 0x67, 0x3D, 0xE1, 0x90, 0x0E, 0xD7, 0x2B, + 0xB7, 0x95, 0x01, 0x7A, 0x85, 0x4E, 0x2F, 0xB9, 0xD1, 0xAD, 0xB8, 0x13, 0x03, 0xA8, 0x1F, 0xE9, + 0x24, 0x19, 0x71, 0x43, 0x66, 0xC5, 0x4D, 0xD9, 0x59, 0x52, 0xE4, 0x5C, 0x3E, 0xBF, 0xEC, 0x81, + 0xFF, 0x0C, 0x1D, 0x88, 0x66, 0x16, 0x05, 0x06, 0x70, 0x22, 0xBD, 0x27, 0xB1, 0x5E, 0xB7, 0xD0, + 0x25, 0xC0, 0xD0, 0xA5, 0x9D, 0x91, 0x8D, 0x89, 0xB0, 0x21, 0x51, 0x06, 0x6D, 0x10, 0x5D, 0x14, + 0xBC, 0xD5, 0xA2, 0xCB, 0xC2, 0xB4, 0xCD, 0xB5, 0x8D, 0x7C, 0x14, 0x30, 0x32, 0xD3, 0x5C, 0xF7, + 0xB1, 0xC3, 0x22, 0xD7, 0x77, 0x85, 0x48, 0xEE, 0xDA, 0x42, 0x9D, 0xDB, 0xC4, 0xCB, 0xC4, 0x19, + 0x4C, 0xBA, 0xB5, 0x60, 0x0A, 0xE2, 0x05, 0x13, 0x0F, 0x30, 0x2F, 0x80, 0xB5, 0xA2, 0xFD, 0x42, + 0xC4, 0x34, 0x29, 0x64, 0x91, 0xA7, 0xA1, 0x92, 0xC8, 0xF2, 0x09, 0x0B, 0x71, 0x52, 0x62, 0xA1, + 0xA3, 0xC3, 0x9A, 0x03, 0x54, 0x8A, 0xF0, 0x47, 0x84, 0x39, 0x72, 0x10, 0xE8, 0x03, 0xF9, 0x1D, + 0xF4, 0x1C, 0x10, 0x58, 0xA1, 0x46, 0x94, 0x9E, 0x93, 0x50, 0x3A, 0x0C, 0x5F, 0x98, 0x90, 0x89, + 0x88, 0x3D, 0x53, 0x5C, 0x6E, 0x93, 0xA4, 0x36, 0x82, 0x86, 0xE3, 0x72, 0x0B, 0xE7, 0x1A, 0xA0, + 0x0E, 0x01, 0xD0, 0x0D, 0x10, 0x0F, 0x11, 0x01, 0x36, 0xD8, 0xB5, 0x15, 0x4E, 0x48, 0x01, 0x38, + 0x08, 0x1A, 0xC2, 0x51, 0x36, 0xA9, 0xBF, 0x0F, 0x4E, 0xE5, 0x62, 0x0B, 0xE2, 0x0F, 0xC4, 0xDD, + 0x01, 0xB0, 0x31, 0x8C, 0x05, 0x48, 0x63, 0x80, 0x04, 0x06, 0x2D, 0x64, 0x50, 0xC8, 0x2F, 0xA0, + 0x09, 0x3E, 0x3F, 0xD1, 0x00, 0x5A, 0x8D, 0x52, 0x34, 0xF2, 0x62, 0xE4, 0x02, 0x7B, 0x89, 0x9A, + 0x9A, 0xB0, 0x6F, 0x40, 0xAE, 0x0C, 0x94, 0x82, 0xD0, 0x34, 0x68, 0x20, 0x35, 0x49, 0xCC, 0x83, + 0xDF, 0x7B, 0xF9, 0xE8, 0xCF, 0x2C, 0x5A, 0xED, 0x71, 0x4F, 0x85, 0xF2, 0xE5, 0x89, 0x5A, 0x39, + 0x7C, 0x56, 0x4A, 0x48, 0x94, 0xD4, 0xAB, 0x4A, 0x08, 0x2E, 0xF0, 0xEC, 0xD7, 0x7F, 0x3F, 0x7D, + 0x73, 0xFE, 0xFC, 0xD5, 0x2F, 0xEA, 0xF4, 0xDF, 0x66, 0xD7, 0x16, 0xF4, 0xA7, 0x98, 0x32, 0x9F, + 0x8A, 0x57, 0xE3, 0xCE, 0x4E, 0x21, 0xCD, 0xDE, 0x9B, 0x6B, 0x8B, 0x42, 0xD4, 0xF4, 0x6C, 0x61, + 0x11, 0xA7, 0x97, 0xE7, 0x3F, 0xA1, 0xE0, 0x0B, 0x0B, 0x3E, 0xF2, 0xAE, 0x03, 0xB4, 0x34, 0xFE, + 0xFC, 0xF5, 0xF3, 0x67, 0xCF, 0xCE, 0xD5, 0xDD, 0xEE, 0xFC, 0x8D, 0x1C, 0xC8, 0x3E, 0xA0, 0x75, + 0xA1, 0x3C, 0x0B, 0x23, 0x96, 0x5D, 0x67, 0x9C, 0x2D, 0x0F, 0xF0, 0xA3, 0x93, 0x15, 0x30, 0xA2, + 0x62, 0x9C, 0x42, 0xC5, 0x38, 0x15, 0xEB, 0x32, 0x62, 0x1E, 0x2A, 0xC4, 0x89, 0x8A, 0x90, 0xAA, + 0xC4, 0xDE, 0x12, 0x3A, 0x97, 0xD7, 0xD8, 0x98, 0xFD, 0xF6, 0xBB, 0xAA, 0x2C, 0x37, 0x11, 0x0F, + 0x57, 0xA8, 0xAA, 0xFC, 0x4E, 0x05, 0x65, 0x0B, 0x4E, 0x25, 0xBE, 0x29, 0x95, 0x67, 0xDD, 0xAA, + 0x9C, 0x41, 0x14, 0xF5, 0xC4, 0x1C, 0xB5, 0x3A, 0x9F, 0xAA, 0x24, 0xB1, 0x1F, 0x85, 0xFE, 0x47, + 0x58, 0x23, 0x8B, 0x03, 0x9C, 0xAA, 0xDD, 0x19, 0x03, 0x7A, 0x79, 0xD1, 0x06, 0xE8, 0xDE, 0xD1, + 0x58, 0x75, 0xFA, 0x28, 0x9E, 0x65, 0xAB, 0xB1, 0xF8, 0x3C, 0x5B, 0xA5, 0xC9, 0x45, 0x8A, 0xCF, + 0xC6, 0xE4, 0xBE, 0x7D, 0x0A, 0xB3, 0x70, 0x16, 0x46, 0x21, 0xBF, 0x1E, 0x2D, 0xC2, 0x20, 0x60, + 0x71, 0x2E, 0xFA, 0x2A, 0xBD, 0x10, 0x53, 0xD2, 0x0D, 0x9C, 0xA1, 0xE8, 0x98, 0x43, 0x16, 0x23, + 0x59, 0xC0, 0xE9, 0x28, 0x15, 0xBF, 0x7B, 0xF6, 0xEC, 0x90, 0xEA, 0xE4, 0x5E, 0x8B, 0xA3, 0x52, + 0x0E, 0xC0, 0x74, 0x7A, 0xBA, 0x8F, 0x2A, 0x6A, 0xEB, 0xFE, 0x31, 0x59, 0x2E, 0xE1, 0xA0, 0xD7, + 0x6E, 0xE1, 0x7B, 0x71, 0x2D, 0xAD, 0xE5, 0x45, 0x51, 0xAB, 0xA2, 0x86, 0x37, 0x6C, 0x0E, 0xD2, + 0x2E, 0xD4, 0xD2, 0x64, 0xAB, 0xB3, 0xA2, 0x9C, 0x05, 0xB7, 0x1F, 0x53, 0x06, 0x68, 0x1E, 0x84, + 0x69, 0xBB, 0xA3, 0x36, 0x82, 0x4E, 0x2D, 0x60, 0x38, 0x46, 0x19, 0x2F, 0xF0, 0xBE, 0x16, 0x2E, + 0x1C, 0xFC, 0x07, 0xE3, 0x53, 0xB0, 0x03, 0x05, 0xDA, 0x7A, 0xAA, 0x72, 0x8D, 0xBA, 0x53, 0x73, + 0x6A, 0xBB, 0x42, 0x6D, 0xC1, 0x7D, 0x0A, 0x83, 0x2C, 0xB8, 0x5C, 0xD3, 0x05, 0x76, 0x31, 0x9A, + 0xA8, 0xB2, 0x60, 0xA8, 0x9E, 0x96, 0x7C, 0x70, 0xE8, 0x35, 0xB1, 0xCB, 0xC3, 0x56, 0xAF, 0x12, + 0xB5, 0x7A, 0xB7, 0xF2, 0x41, 0xB7, 0x44, 0x3E, 0xA6, 0x10, 0xC8, 0x82, 0x4B, 0x51, 0x26, 0x85, + 0x56, 0x57, 0x7E, 0xBD, 0x94, 0x1C, 0x5D, 0xD8, 0x6C, 0xC9, 0x84, 0x2A, 0xAE, 0xEA, 0xF4, 0x04, + 0x14, 0x08, 0x3C, 0x24, 0x50, 0x48, 0x17, 0x29, 0xA2, 0x34, 0x2A, 0x12, 0xCD, 0x45, 0x94, 0x05, + 0x0B, 0xF5, 0xC9, 0xAF, 0x8D, 0xE1, 0x8D, 0x83, 0x73, 0x4E, 0x8B, 0x58, 0x54, 0x50, 0xE2, 0x8B, + 0x63, 0xB9, 0xF1, 0x56, 0xA9, 0x6B, 0x98, 0x21, 0x8E, 0xE1, 0x92, 0x42, 0x7C, 0xA9, 0xBD, 0x2F, + 0xAA, 0xE6, 0x76, 0x5E, 0x96, 0x94, 0xD1, 0x08, 0xC5, 0xE1, 0x9E, 0x8C, 0x70, 0x51, 0x35, 0x87, + 0xB7, 0x60, 0x65, 0xC0, 0x7B, 0x81, 0xED, 0xD3, 0x5F, 0xC0, 0x0F, 0x8A, 0x2F, 0xE7, 0xA0, 0xA5, + 0xFC, 0x4B, 0xCD, 0x80, 0x1A, 0x6D, 0x72, 0x45, 0xD4, 0x2A, 0x25, 0x95, 0x93, 0xA1, 0x03, 0x14, + 0x38, 0xF1, 0x01, 0x6D, 0x95, 0xC6, 0x89, 0x0A, 0xC3, 0x71, 0x0C, 0x94, 0x35, 0x1B, 0xE1, 0x8F, + 0x19, 0xF7, 0xF8, 0x26, 0x2B, 0x35, 0xBA, 0xF3, 0x79, 0x17, 0x6F, 0x2C, 0x91, 0x4F, 0x9E, 0xBB, + 0x94, 0x77, 0xAB, 0x00, 0x6C, 0xFF, 0x16, 0xE0, 0xAB, 0x79, 0xEF, 0x41, 0x1C, 0xBC, 0x3C, 0x88, + 0x82, 0x15, 0x7B, 0x79, 0x18, 0xF2, 0x01, 0xEF, 0x1D, 0x0C, 0x10, 0x38, 0xB7, 0x8B, 0x7E, 0xB8, + 0x9E, 0xEA, 0x8C, 0xF7, 0x81, 0xBE, 0xF9, 0x65, 0x01, 0x7E, 0x78, 0xBB, 0x1F, 0xFE, 0x0A, 0xCE, + 0x14, 0x32, 0x71, 0xB8, 0x9F, 0x6C, 0x30, 0x1E, 0xE1, 0x30, 0x19, 0x29, 0x0F, 0x44, 0xB9, 0x52, + 0xCD, 0xC2, 0x67, 0x2E, 0x40, 0x1D, 0xDE, 0x05, 0x2B, 0x8C, 0x9F, 0x2A, 0x54, 0xF5, 0x8D, 0xAB, + 0x15, 0xAD, 0xF6, 0x75, 0x89, 0xAA, 0x24, 0xF4, 0x2C, 0xEC, 0xE9, 0x73, 0x58, 0x0E, 0x0F, 0xE7, + 0xA1, 0x4F, 0xB5, 0x73, 0x08, 0x96, 0xF6, 0x1E, 0xEB, 0x28, 0xAB, 0x85, 0xAA, 0x58, 0xC3, 0xB4, + 0x16, 0xFC, 0x45, 0x37, 0xBA, 0xBC, 0xAA, 0x14, 0xA9, 0xEE, 0xF4, 0x5D, 0x06, 0x6E, 0x24, 0x97, + 0xD7, 0x88, 0x5F, 0xD5, 0x77, 0x44, 0xF2, 0x2D, 0x14, 0xE4, 0xC5, 0x22, 0x3F, 0xE0, 0x63, 0x93, + 0x0F, 0xA2, 0xB1, 0x96, 0x39, 0x60, 0x05, 0xB6, 0x54, 0xDB, 0x22, 0xBD, 0xBB, 0x40, 0xAF, 0xA1, + 0xEF, 0x12, 0xBC, 0xFB, 0x1E, 0x42, 0xAD, 0x24, 0x49, 0x55, 0xB0, 0xBC, 0xED, 0x76, 0xE1, 0x66, + 0xFB, 0xF2, 0x8D, 0x6A, 0x6D, 0xB5, 0x91, 0x21, 0xE4, 0x06, 0x7B, 0xC8, 0xD6, 0xCB, 0x60, 0xB6, + 0x99, 0x2D, 0x43, 0xFE, 0x86, 0xAD, 0x37, 0x2C, 0xE3, 0x18, 0x82, 0xA4, 0x29, 0x8B, 0xF6, 0xBD, + 0x1E, 0x9F, 0xF9, 0x00, 0x73, 0x7C, 0xFA, 0xC9, 0x4B, 0x15, 0x7F, 0x93, 0xE2, 0xF3, 0x31, 0xC4, + 0xD0, 0x89, 0x7A, 0xAA, 0x8E, 0xE7, 0x9B, 0x98, 0x9E, 0xBF, 0x81, 0x51, 0x7F, 0x9A, 0x79, 0x10, + 0xD2, 0x6E, 0x70, 0x14, 0xB0, 0xAB, 0x78, 0xB1, 0xAA, 0xF1, 0x49, 0x85, 0xAE, 0x9B, 0xAD, 0xC0, + 0x1D, 0xDA, 0x40, 0xDD, 0xD1, 0x62, 0x64, 0xA2, 0x85, 0x13, 0x73, 0x0C, 0x1A, 0x6C, 0xB3, 0x13, + 0xA4, 0x0B, 0xE4, 0x1A, 0x5A, 0x22, 0x28, 0xB6, 0x94, 0x42, 0xF6, 0xF7, 0x6A, 0x75, 0xFA, 0xD6, + 0x69, 0x6B, 0xAC, 0x1C, 0x0E, 0xCD, 0xEF, 0xD5, 0xE9, 0x29, 0x79, 0x86, 0x3A, 0x0E, 0xCF, 0x78, + 0x37, 0x62, 0xF1, 0x05, 0x87, 0x1C, 0x78, 0xDC, 0x39, 0x30, 0xCB, 0x81, 0x49, 0xD4, 0x93, 0x76, + 0x7C, 0x32, 0xE1, 0xBF, 0x85, 0xBF, 0x9F, 0xA0, 0xC4, 0x27, 0xEA, 0x6D, 0x93, 0xAA, 0x27, 0x62, + 0x70, 0xE1, 0xB8, 0x52, 0x0A, 0x2D, 0x3C, 0x39, 0x19, 0xA7, 0x8C, 0x6F, 0xD2, 0x58, 0x21, 0x11, + 0xAA, 0x0E, 0xAB, 0x6E, 0x0B, 0x45, 0x82, 0xCD, 0x65, 0x8B, 0x0F, 0x21, 0x18, 0x13, 0x28, 0x53, + 0x8C, 0x57, 0xF3, 0xF0, 0xDC, 0xEA, 0x59, 0x2D, 0x08, 0xAB, 0x2D, 0x13, 0x2E, 0x10, 0x88, 0x5B, + 0xFD, 0x16, 0x06, 0x62, 0xBC, 0x88, 0xC0, 0xD0, 0xB2, 0x7A, 0xAD, 0x3C, 0x5A, 0xB7, 0x06, 0x2D, + 0x69, 0x5F, 0x2D, 0x0C, 0xB0, 0xA3, 0x94, 0x05, 0xE3, 0x96, 0x72, 0x0A, 0x82, 0xEC, 0xB2, 0xDB, + 0xCF, 0xC0, 0xAA, 0x33, 0xA0, 0x00, 0xBD, 0xC3, 0xC2, 0x36, 0x04, 0x0B, 0xF7, 0x80, 0x44, 0xFD, + 0x41, 0xC9, 0x10, 0xB0, 0xED, 0x76, 0x99, 0xAC, 0x3A, 0x43, 0xD3, 0x10, 0x1C, 0xF1, 0x2A, 0x59, + 0xBA, 0x55, 0x96, 0xCE, 0x9D, 0x39, 0x5A, 0xC3, 0xBD, 0x1C, 0xEC, 0xBB, 0xAC, 0xD2, 0x11, 0x2C, + 0x1C, 0x5B, 0x08, 0x35, 0x10, 0x32, 0x0D, 0x0A, 0x86, 0x15, 0x7E, 0xFD, 0x3B, 0x31, 0xEC, 0x7F, + 0x6D, 0x86, 0xEE, 0xD7, 0x60, 0x28, 0x92, 0x2E, 0x64, 0x5B, 0xE6, 0xA1, 0x2D, 0xCB, 0xA9, 0x98, + 0x04, 0xDC, 0xE7, 0x79, 0x68, 0x8B, 0xCE, 0x82, 0x16, 0xD6, 0xCD, 0xDC, 0xD6, 0xF4, 0x6B, 0x9A, + 0xE8, 0x97, 0xDA, 0xE7, 0xD7, 0x35, 0xCE, 0xAF, 0x6C, 0x99, 0x5F, 0x6A, 0x96, 0x5F, 0xD7, 0x26, + 0xBF, 0xAE, 0x41, 0xFE, 0x29, 0xD6, 0x58, 0x42, 0x23, 0x3E, 0x20, 0x6C, 0x22, 0xE3, 0x5D, 0x0D, + 0xD5, 0x72, 0xE0, 0x5F, 0xAB, 0x28, 0x96, 0xB5, 0x5E, 0x0E, 0x34, 0x5B, 0x79, 0x61, 0x69, 0xAE, + 0xF2, 0x62, 0xA0, 0x99, 0x36, 0x7D, 0x1A, 0xCA, 0x0B, 0x53, 0x5E, 0x5C, 0xCD, 0x34, 0xC5, 0xA5, + 0x27, 0x1A, 0xFB, 0x70, 0x31, 0xE8, 0x32, 0xD4, 0xCC, 0x01, 0x7D, 0x0E, 0xA9, 0xC9, 0x82, 0xE1, + 0x96, 0xBC, 0x58, 0x9A, 0xE9, 0xD2, 0xC5, 0xA5, 0xB6, 0x3E, 0x72, 0xED, 0x2B, 0x9F, 0x71, 0x81, + 0x69, 0xF2, 0x11, 0x56, 0x48, 0xA5, 0x8E, 0x96, 0x38, 0xF1, 0xB4, 0x68, 0xA5, 0x7B, 0x17, 0x2A, + 0x32, 0xDB, 0x0F, 0x78, 0x46, 0x64, 0x9D, 0x9B, 0x4A, 0x3C, 0x3A, 0x99, 0x30, 0x0C, 0x43, 0x5A, + 0x35, 0x02, 0xA9, 0x94, 0xE5, 0x6B, 0x2A, 0x44, 0x20, 0xB5, 0x53, 0xF2, 0xF0, 0x93, 0x25, 0xBE, + 0xCB, 0x72, 0x0E, 0x47, 0x94, 0xF8, 0x22, 0x6B, 0x33, 0x8D, 0xE7, 0x4A, 0x6B, 0xB3, 0x09, 0xEB, + 0xF2, 0xE4, 0x45, 0x72, 0xC9, 0xD2, 0x1F, 0xBD, 0x0C, 0x12, 0xDA, 0xCE, 0x59, 0x9B, 0x4F, 0x78, + 0xA3, 0xED, 0xB1, 0x6E, 0x8E, 0xF8, 0x19, 0x7B, 0x6C, 0x8E, 0x8C, 0x92, 0x2B, 0xBE, 0x47, 0xE0, + 0x71, 0x7F, 0x41, 0xB9, 0x36, 0x9D, 0x11, 0x50, 0x42, 0x8C, 0xF9, 0x70, 0x9A, 0x53, 0x21, 0x9E, + 0x7F, 0x63, 0x8E, 0xC3, 0x39, 0x70, 0x53, 0xAB, 0x05, 0x81, 0x73, 0x1A, 0x39, 0x52, 0xD4, 0x13, + 0xD6, 0x15, 0x54, 0x1A, 0x3F, 0xA9, 0x0F, 0xF9, 0xA3, 0xFA, 0xE5, 0x6D, 0xC2, 0xBD, 0x48, 0x11, + 0x6F, 0xDF, 0x10, 0x11, 0xC7, 0x86, 0xE3, 0x34, 0x90, 0x32, 0x06, 0x55, 0x12, 0xC8, 0x01, 0x83, + 0xE3, 0x14, 0xAF, 0x7C, 0x7F, 0xB3, 0x12, 0xAF, 0x7D, 0x28, 0x2A, 0x0D, 0x3D, 0x5B, 0x32, 0xC8, + 0xAC, 0x94, 0x65, 0x18, 0x83, 0xD1, 0xB4, 0x28, 0x21, 0x17, 0xB8, 0xB0, 0x00, 0xAB, 0x9A, 0xB4, + 0x86, 0x70, 0x27, 0xB2, 0xA5, 0x16, 0xCE, 0x90, 0x14, 0xF4, 0x90, 0x15, 0xC0, 0x26, 0x12, 0xB1, + 0x3C, 0x4B, 0x36, 0xFB, 0xBF, 0x53, 0xB5, 0x20, 0xF1, 0x37, 0x4B, 0xD8, 0xC7, 0xEE, 0x05, 0xE3, + 0x4F, 0x23, 0x86, 0xB7, 0x3F, 0x5C, 0x3F, 0x87, 0xFD, 0x93, 0x67, 0xAD, 0x4E, 0x37, 0x8C, 0x63, + 0x96, 0xFE, 0xFC, 0xF6, 0xE5, 0x8B, 0x09, 0xD7, 0x48, 0x9D, 0xB0, 0xD5, 0xDF, 0x54, 0x53, 0x27, + 0xA1, 0xE9, 0xB0, 0x96, 0x4D, 0x41, 0x16, 0xC3, 0x9F, 0xE3, 0xFB, 0x1B, 0xAF, 0xE6, 0x98, 0x53, + 0x69, 0xB5, 0x3E, 0x91, 0xF4, 0x58, 0x9D, 0x31, 0xAD, 0x8E, 0xA7, 0xB9, 0xA7, 0x55, 0x5F, 0x54, + 0x3D, 0x92, 0xFA, 0xD4, 0xB2, 0x36, 0x18, 0xC2, 0xDA, 0x06, 0xA4, 0x31, 0xE6, 0x1D, 0xB2, 0x20, + 0x4C, 0xB0, 0x20, 0x15, 0xAA, 0x78, 0x6C, 0x99, 0x11, 0x81, 0x69, 0x46, 0x98, 0xE4, 0x02, 0x3E, + 0xB4, 0xA6, 0x70, 0x24, 0xEC, 0x76, 0xCB, 0x13, 0x8C, 0xBA, 0x85, 0x35, 0x4C, 0xAA, 0x0B, 0x7C, + 0xF4, 0xA8, 0x0D, 0x56, 0x65, 0x74, 0x34, 0x46, 0x6F, 0x27, 0x65, 0x5D, 0x10, 0x9C, 0xB7, 0x73, + 0x83, 0xAC, 0xDA, 0xF5, 0x8E, 0xC9, 0x77, 0xF1, 0xA4, 0xA5, 0x71, 0xBA, 0x74, 0xB6, 0x1D, 0xCA, + 0x31, 0x51, 0x81, 0xD1, 0xC4, 0x18, 0x47, 0x67, 0x39, 0x3F, 0xA1, 0xA4, 0x71, 0x74, 0x72, 0xD2, + 0x51, 0x75, 0x13, 0x14, 0x2E, 0xE8, 0xDB, 0xB2, 0xFF, 0xB7, 0xE8, 0xF7, 0x2E, 0x56, 0x2F, 0x3A, + 0x20, 0x08, 0x69, 0xF1, 0xED, 0x9B, 0xA9, 0xB4, 0x16, 0x3A, 0x95, 0x01, 0xFE, 0x54, 0x41, 0xA7, + 0x82, 0x45, 0x7B, 0xF0, 0x47, 0x99, 0xBE, 0xE7, 0x25, 0x04, 0x99, 0x9A, 0x05, 0x10, 0xA2, 0x59, + 0x26, 0x02, 0x91, 0x85, 0xF7, 0x7D, 0x71, 0x19, 0x50, 0x9B, 0x89, 0xE0, 0xF1, 0xC2, 0xB4, 0xE4, + 0xA7, 0xA9, 0xE0, 0x30, 0xF3, 0x0E, 0x70, 0x82, 0x2F, 0x2F, 0x29, 0x57, 0xA6, 0x08, 0xC2, 0xD7, + 0x78, 0x6D, 0x29, 0x57, 0x16, 0x5C, 0x00, 0x76, 0xAF, 0x2D, 0x0A, 0x80, 0x0D, 0x0E, 0xE2, 0xAB, + 0x2E, 0x85, 0x37, 0x5B, 0xA7, 0xF9, 0x12, 0x0B, 0x56, 0x3D, 0xC9, 0xC9, 0x90, 0xAC, 0x6C, 0xC1, + 0xCA, 0x34, 0xEE, 0xC0, 0x0B, 0xD6, 0xBC, 0xC3, 0xC7, 0x69, 0xF0, 0x71, 0x1E, 0xC8, 0xC7, 0x6D, + 0xF0, 0x71, 0xEF, 0xC0, 0x27, 0xAF, 0x2D, 0x51, 0x5A, 0x0E, 0xCB, 0x6C, 0x9D, 0xBD, 0x7D, 0x22, + 0x8F, 0x03, 0xEF, 0xE5, 0x79, 0xE0, 0x7D, 0x1E, 0x94, 0xD4, 0xE2, 0x85, 0x9D, 0xD5, 0xD5, 0x58, + 0xC5, 0xE7, 0x44, 0xE2, 0xC1, 0x50, 0x0B, 0x1C, 0x9C, 0x10, 0xB9, 0x62, 0x26, 0x68, 0x67, 0x27, + 0xAD, 0xE2, 0x31, 0x90, 0x78, 0x0A, 0x54, 0x3B, 0xC0, 0x55, 0x4A, 0xDD, 0x2D, 0x9C, 0xB9, 0x41, + 0xAC, 0xA9, 0xF4, 0x26, 0x56, 0x17, 0xFF, 0xC4, 0xBF, 0x7B, 0xF1, 0x19, 0x6C, 0xB1, 0x31, 0xE0, + 0xD1, 0xA3, 0xCA, 0x88, 0xDD, 0xEE, 0x3F, 0xFE, 0x40, 0x5F, 0x31, 0x3B, 0x62, 0xEF, 0xE4, 0x11, + 0x0E, 0xCB, 0xE8, 0x6F, 0x9F, 0x4C, 0x61, 0x8D, 0x62, 0xB5, 0x0D, 0xBB, 0x96, 0x63, 0xC5, 0x88, + 0xDC, 0x7C, 0x8D, 0xEF, 0x5A, 0x55, 0xB9, 0xDF, 0xCB, 0x02, 0xE5, 0x7B, 0xB5, 0x82, 0x15, 0x4F, + 0x20, 0x48, 0x71, 0xD6, 0x26, 0x28, 0xAC, 0xAB, 0x40, 0x6D, 0x75, 0xF0, 0x20, 0x84, 0x9C, 0xAB, + 0xA7, 0x99, 0x9A, 0x54, 0x38, 0x9F, 0x70, 0x7A, 0xFC, 0x40, 0x9F, 0x2A, 0xFD, 0x33, 0x00, 0xFF, + 0x0C, 0x9A, 0xFE, 0x19, 0x48, 0xFF, 0x9C, 0x34, 0xFD, 0x33, 0xF8, 0xAA, 0xFE, 0x59, 0xF1, 0xCE, + 0xA1, 0xC8, 0x01, 0x86, 0x18, 0xCD, 0x21, 0x13, 0x80, 0xA0, 0x2F, 0x3F, 0x7A, 0x18, 0xD7, 0x1D, + 0xF4, 0x46, 0x07, 0xFD, 0xB7, 0x47, 0x4E, 0x6C, 0xD1, 0x50, 0xBC, 0x60, 0x36, 0x80, 0x2E, 0x6D, + 0x13, 0x7D, 0x8F, 0x3E, 0x2D, 0xE1, 0xD1, 0xD0, 0x7F, 0xB7, 0x64, 0xA0, 0x34, 0x4E, 0x15, 0xB7, + 0xA5, 0x7E, 0x58, 0x55, 0x0A, 0x33, 0x2A, 0x52, 0xA7, 0xDD, 0x77, 0x09, 0xAB, 0xB0, 0x5E, 0xC9, + 0x27, 0x2A, 0xDB, 0x15, 0x94, 0xDB, 0x35, 0xCE, 0xF7, 0xAB, 0xD1, 0x57, 0x33, 0x8E, 0x5C, 0x9E, + 0x07, 0xDB, 0xCA, 0xE1, 0xF9, 0x1F, 0x64, 0x2E, 0x07, 0x03, 0x2A, 0x3E, 0xBB, 0xA9, 0x46, 0xD3, + 0xF8, 0xB1, 0x8A, 0x4F, 0x5D, 0x94, 0x9A, 0x73, 0x29, 0x61, 0x06, 0x81, 0x3E, 0xCB, 0x40, 0x6B, + 0x9A, 0xB2, 0x8A, 0xF0, 0xCF, 0x59, 0x15, 0x51, 0xFE, 0x53, 0x42, 0xAE, 0x8E, 0xD4, 0xDC, 0xD3, + 0x5B, 0xA7, 0x2D, 0xB9, 0x32, 0xA5, 0xD5, 0xA8, 0xAA, 0xB4, 0xA6, 0x3F, 0x25, 0x0A, 0x4F, 0x14, + 0x7A, 0x04, 0xAC, 0x84, 0xE5, 0xF3, 0x65, 0x6F, 0x7A, 0x24, 0xDC, 0x97, 0x95, 0xD9, 0x7A, 0xC4, + 0x3F, 0x48, 0x40, 0x05, 0xEB, 0xDA, 0x7A, 0x64, 0xAD, 0xA5, 0x4C, 0xCB, 0xA4, 0x2F, 0x62, 0xB2, + 0x98, 0xC4, 0xF3, 0x30, 0x5D, 0xB6, 0xD5, 0x1F, 0xC5, 0x8D, 0x12, 0x60, 0x17, 0x8E, 0x49, 0xE6, + 0x68, 0x6A, 0x22, 0x3B, 0x02, 0x67, 0xA9, 0xA5, 0x90, 0x34, 0x88, 0xA9, 0x1A, 0xDB, 0xE1, 0x99, + 0xE7, 0xA0, 0xC7, 0xD8, 0xC2, 0x18, 0x30, 0xAF, 0x24, 0xBD, 0x3E, 0xC2, 0x1B, 0xC6, 0xD4, 0xD9, + 0x57, 0x1E, 0x83, 0xC8, 0x9A, 0xD1, 0x2A, 0x85, 0xF8, 0xCD, 0xDB, 0xEA, 0x6B, 0xB1, 0x19, 0xF4, + 0xD0, 0xAD, 0xE4, 0x4D, 0x65, 0x53, 0x48, 0x89, 0x60, 0xE3, 0xE3, 0x4D, 0x14, 0x01, 0xF6, 0x35, + 0xE6, 0xF1, 0x73, 0x86, 0x30, 0x4F, 0x17, 0x20, 0x62, 0x09, 0x39, 0x6C, 0x39, 0x5D, 0x75, 0x28, + 0xE5, 0x0C, 0x38, 0x67, 0x3C, 0x89, 0xD9, 0xA5, 0xF2, 0x7F, 0x2F, 0x5F, 0xFC, 0xCC, 0xF9, 0x4A, + 0x96, 0xC4, 0xB4, 0x70, 0xA2, 0x9E, 0x92, 0x81, 0x3E, 0x16, 0xAF, 0x96, 0x4F, 0x60, 0x4D, 0xE3, + 0x10, 0x13, 0x49, 0x6C, 0x15, 0xC5, 0xDB, 0x13, 0x16, 0xFB, 0x49, 0xC0, 0xDE, 0xBD, 0x79, 0xDE, + 0xE6, 0x1D, 0x8D, 0x3A, 0x45, 0x49, 0xAC, 0xD2, 0x51, 0xCD, 0xDB, 0x0E, 0x6F, 0xAE, 0x7C, 0x74, + 0xD1, 0xE9, 0x92, 0x23, 0x77, 0xCB, 0x72, 0xB1, 0x2C, 0x1D, 0x47, 0xB0, 0xE6, 0xB8, 0x9B, 0xC4, + 0xB0, 0xB8, 0xE0, 0x1A, 0x33, 0x45, 0xE6, 0x2F, 0xF0, 0xAF, 0xB5, 0x26, 0x45, 0x06, 0xD4, 0xB9, + 0x81, 0x84, 0xDB, 0x99, 0x4C, 0xE2, 0x2E, 0x8D, 0xC1, 0x5C, 0x9B, 0x75, 0xA0, 0xC9, 0x32, 0x0C, + 0x6C, 0x14, 0xD9, 0x65, 0xAE, 0xE3, 0xFF, 0x3D, 0x7F, 0xF5, 0x0B, 0xC4, 0xAD, 0x14, 0x32, 0x7C, + 0x1C, 0x9F, 0xAD, 0x92, 0x38, 0x63, 0x6F, 0xD9, 0x15, 0x3F, 0xE2, 0x4E, 0x47, 0x44, 0x94, 0x25, + 0x6D, 0x6D, 0xEF, 0xB1, 0x60, 0xCB, 0x22, 0xD8, 0xC6, 0x46, 0xBD, 0x71, 0x8B, 0xAB, 0x59, 0xB1, + 0xB8, 0xAD, 0xFE, 0xF4, 0xF4, 0xAD, 0xAA, 0x85, 0x1A, 0xA6, 0x76, 0x20, 0x25, 0x6C, 0x4F, 0xBB, + 0xB1, 0x5D, 0xA2, 0xD8, 0x2E, 0x05, 0x3F, 0xEA, 0x4E, 0xF9, 0xA3, 0x80, 0x8E, 0x40, 0x16, 0x3C, + 0x81, 0x18, 0x18, 0x1C, 0x45, 0xE8, 0xE8, 0xDC, 0x1C, 0x24, 0xAE, 0x3F, 0xE9, 0xEC, 0x74, 0x6B, + 0x0F, 0x35, 0x01, 0x19, 0xBA, 0xDD, 0xEE, 0x11, 0x4F, 0xC6, 0x87, 0x96, 0xC7, 0x36, 0x6E, 0x2C, + 0xCE, 0x45, 0x68, 0x63, 0xCF, 0x92, 0x74, 0xF9, 0xC4, 0xE3, 0xDE, 0x98, 0x77, 0xBD, 0xD5, 0x0A, + 0x17, 0x2B, 0xDC, 0xBA, 0x9A, 0xAE, 0x97, 0x01, 0x30, 0x86, 0x00, 0x18, 0x9F, 0xE5, 0xF2, 0x8F, + 0x63, 0x08, 0x7D, 0x32, 0xF3, 0x67, 0xBF, 0xC5, 0xBF, 0x6B, 0x51, 0x35, 0x3F, 0x3E, 0x09, 0x25, + 0x8A, 0x9E, 0xAB, 0x25, 0xF3, 0x48, 0x0B, 0x45, 0x50, 0xD4, 0xCA, 0xF9, 0xCA, 0x07, 0x24, 0xA0, + 0xF5, 0x5D, 0x06, 0x9D, 0xAD, 0x08, 0xBD, 0xBB, 0x1E, 0x31, 0x0E, 0xE4, 0x8E, 0xBD, 0x7E, 0x75, + 0xFE, 0x16, 0x0F, 0x25, 0xC4, 0x47, 0xA5, 0x9D, 0x0B, 0xBA, 0x42, 0x85, 0x5D, 0x88, 0x3F, 0x4F, + 0x3F, 0x01, 0xC7, 0x17, 0x00, 0x6C, 0x0C, 0x80, 0x0A, 0xB5, 0x23, 0x1E, 0x61, 0xA8, 0x5A, 0x99, + 0xAC, 0x93, 0xAD, 0xE6, 0xEB, 0x02, 0x77, 0x5C, 0x6D, 0xA8, 0xFE, 0x99, 0x9F, 0x20, 0x99, 0x78, + 0xDF, 0x3F, 0x38, 0x95, 0x27, 0xBE, 0xFF, 0x81, 0xC3, 0xD7, 0x61, 0xBB, 0x14, 0xEA, 0x17, 0x5B, + 0x76, 0x04, 0x3E, 0x6F, 0xDB, 0x63, 0x05, 0x37, 0xF9, 0x04, 0x4F, 0xBF, 0xCF, 0xF0, 0x75, 0xF8, + 0xB6, 0xD1, 0xC1, 0xE3, 0xDA, 0x76, 0xAB, 0x61, 0x22, 0x05, 0x4B, 0x8F, 0x71, 0x5C, 0xD5, 0xDD, + 0xC8, 0xB1, 0x26, 0x81, 0xF4, 0xAC, 0xC7, 0xED, 0x87, 0xCD, 0xFC, 0x00, 0xBB, 0x2A, 0xBC, 0xED, + 0x6E, 0xBE, 0x20, 0xA7, 0xDB, 0xEB, 0x9D, 0x15, 0x1C, 0x08, 0xEA, 0x38, 0xD0, 0xE9, 0x8C, 0xE8, + 0xEF, 0xBA, 0xDB, 0xEA, 0xF7, 0xB1, 0x22, 0xFE, 0xA2, 0x18, 0x0F, 0xB2, 0x60, 0x2E, 0xC1, 0x37, + 0x2A, 0xB8, 0x6F, 0x20, 0x7C, 0x95, 0x77, 0xB6, 0xA5, 0xB7, 0x56, 0x1F, 0x8E, 0xE1, 0x0E, 0xEF, + 0x44, 0x8B, 0xC6, 0x03, 0x40, 0xE5, 0xB1, 0xDA, 0xB9, 0xDD, 0xB1, 0x2F, 0xBF, 0xD0, 0xAD, 0xCB, + 0xC7, 0x78, 0x0F, 0x53, 0x66, 0x65, 0xFE, 0x07, 0x90, 0x37, 0x93, 0x10, 0xF5, 0xC8, 0x58, 0xF9, + 0xF2, 0x48, 0x3E, 0x8F, 0xFC, 0x63, 0x8D, 0x89, 0x8A, 0x7F, 0xAD, 0x71, 0xDC, 0x4E, 0xE6, 0x97, + 0xC7, 0x11, 0x28, 0x47, 0x94, 0x3A, 0x0A, 0x69, 0xB7, 0x02, 0x0C, 0x9C, 0xC2, 0xEF, 0x09, 0x2C, + 0x02, 0x57, 0x4A, 0xBA, 0x7B, 0xE0, 0xC9, 0x86, 0x8C, 0x02, 0x96, 0xF2, 0x77, 0x80, 0x14, 0xD2, + 0xE8, 0xAD, 0xA0, 0xB2, 0xB3, 0xBB, 0x0F, 0x87, 0x93, 0x3C, 0x54, 0x17, 0x88, 0x72, 0x2F, 0xC3, + 0xBE, 0x2B, 0xA6, 0xEC, 0x08, 0xFC, 0x06, 0xA1, 0x20, 0xE5, 0xD5, 0xF4, 0xF7, 0xD2, 0x0B, 0x79, + 0xF7, 0x78, 0xC8, 0xCB, 0x9F, 0x3D, 0x1F, 0xCD, 0x57, 0xFE, 0x5C, 0xBF, 0x3C, 0xC4, 0x24, 0x7F, + 0x5F, 0x62, 0x75, 0x75, 0x47, 0xA7, 0x2E, 0xF1, 0xF1, 0x4F, 0x82, 0x80, 0x5D, 0xF2, 0x8A, 0x8C, + 0xE3, 0x9D, 0x84, 0xAC, 0x01, 0xC4, 0x08, 0x77, 0xAA, 0x49, 0x87, 0x7C, 0x61, 0x17, 0x70, 0xF8, + 0x77, 0xEA, 0x5F, 0xAB, 0xBD, 0x7F, 0xFC, 0x21, 0x61, 0x5B, 0x42, 0xEC, 0xDC, 0x03, 0xA7, 0x0C, + 0xD4, 0x8E, 0xA6, 0x5A, 0x70, 0x66, 0xCE, 0x47, 0x75, 0xEA, 0x83, 0x7C, 0x2F, 0xF6, 0x41, 0x42, + 0x44, 0xF6, 0x31, 0x65, 0x6B, 0x38, 0xA7, 0x5D, 0x1D, 0x2F, 0xDC, 0x88, 0x00, 0xE3, 0x56, 0xAF, + 0xC1, 0x7A, 0xA9, 0x63, 0x68, 0x7C, 0x92, 0x31, 0x4E, 0x6F, 0xDB, 0x82, 0x86, 0xDB, 0x15, 0x4B, + 0x8F, 0x4F, 0x26, 0xA6, 0x5C, 0xB6, 0x63, 0xEA, 0x87, 0xE3, 0x66, 0xDD, 0x0B, 0x63, 0x10, 0x0D, + 0x12, 0x6C, 0x25, 0x63, 0x10, 0x56, 0x82, 0xEC, 0x4E, 0xC6, 0x59, 0xDA, 0x39, 0xD3, 0x1C, 0xE3, + 0x2C, 0x7E, 0xF4, 0xA8, 0xED, 0x83, 0x8D, 0xA7, 0x85, 0x54, 0x90, 0xB5, 0x47, 0x89, 0x78, 0x6F, + 0x01, 0xB4, 0x8E, 0x06, 0x85, 0xA7, 0x05, 0xCD, 0x64, 0xB6, 0x4C, 0x5B, 0xF7, 0x29, 0x13, 0xE3, + 0x5F, 0xB5, 0xF3, 0xD6, 0x00, 0x59, 0x46, 0x48, 0x09, 0x7D, 0x2F, 0xF0, 0x2D, 0x80, 0xF6, 0x11, + 0x07, 0xBF, 0x4B, 0xAE, 0x7D, 0x98, 0x36, 0x7F, 0xC1, 0x63, 0x27, 0x90, 0xD0, 0x9F, 0xE5, 0x56, + 0x1E, 0x30, 0x34, 0x92, 0xF2, 0x63, 0xF2, 0x1C, 0xE4, 0x49, 0xC1, 0x69, 0x7C, 0x4B, 0x10, 0x6F, + 0xBE, 0x8F, 0x21, 0x37, 0x55, 0x9E, 0xCF, 0xC0, 0x54, 0x6E, 0xA1, 0xAC, 0xBF, 0x30, 0xD1, 0xA0, + 0xC6, 0xB7, 0x07, 0x68, 0xD8, 0xE3, 0x77, 0xE7, 0x4F, 0xDF, 0x54, 0x0F, 0x5F, 0x18, 0x07, 0x40, + 0xBC, 0x98, 0x43, 0x7C, 0x38, 0x51, 0x1F, 0xBD, 0xFE, 0xFE, 0xFC, 0xFC, 0xD7, 0x57, 0x6F, 0x9E, + 0xEC, 0x1F, 0xC2, 0x71, 0xC8, 0xF9, 0xBB, 0x1F, 0x5E, 0x3E, 0x7F, 0x3B, 0xB9, 0xC6, 0xC4, 0x36, + 0xDC, 0x17, 0xB4, 0xC2, 0x5B, 0x0E, 0x61, 0x70, 0x02, 0x0B, 0x2B, 0x27, 0xB0, 0x47, 0x8F, 0x00, + 0xD4, 0xBF, 0x81, 0xA6, 0xDC, 0x59, 0xEB, 0x16, 0xB0, 0x85, 0x38, 0x5A, 0x39, 0x06, 0xC5, 0x14, + 0xF9, 0xC2, 0xFC, 0x18, 0x74, 0x19, 0xC6, 0x41, 0x72, 0xB9, 0x27, 0x56, 0x1C, 0x7E, 0xEE, 0x33, + 0x3E, 0x3B, 0x95, 0xAF, 0x69, 0x9C, 0x9D, 0xCA, 0xB7, 0xBD, 0xE8, 0xBF, 0x0E, 0xFD, 0x7F, 0x17, + 0x2C, 0x35, 0x10, 0x41, 0x54, 0x00, 0x00 +}; +#endif //__nofile_h diff --git a/embedded/out.h b/embedded/out.h deleted file mode 100644 index 89d14862..00000000 --- a/embedded/out.h +++ /dev/null @@ -1,319 +0,0 @@ -/* - File Generated with bin2c Conversion Tool v0.14.0 - Windows - [FINAL]. - Free for any use. - Compiled on Jan 1 2017 at 05:41:46. - DO NOT MODIFY THIS FILE!!! -*/ -/* - ut.h -*/ - -const unsigned char a[4862] = { - 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xED, 0x5C, 0x7D, 0x93, 0xDA, 0x46, - 0x93, 0xFF, 0x2A, 0xB2, 0x52, 0x36, 0x70, 0x2B, 0x40, 0x12, 0xAF, 0x8B, 0x16, 0xF2, 0x24, 0xB1, - 0x7D, 0xF1, 0x95, 0x13, 0xBB, 0xBC, 0xEB, 0x7B, 0xAE, 0x2A, 0x4E, 0xB9, 0x84, 0x34, 0x80, 0xCE, - 0x42, 0xD2, 0x49, 0xC3, 0xEE, 0x62, 0xC2, 0x77, 0xBF, 0xEE, 0x79, 0x91, 0x46, 0x42, 0xB0, 0xEC, - 0x26, 0x79, 0xF2, 0xFC, 0x91, 0x60, 0x23, 0x98, 0x99, 0xEE, 0xE9, 0xE9, 0xE9, 0xFE, 0x75, 0x4F, - 0x0F, 0xCE, 0xD5, 0x8A, 0xAE, 0xC3, 0xD9, 0xD5, 0x8A, 0xB8, 0xFE, 0xEC, 0x2A, 0xA3, 0xDB, 0x90, - 0xCC, 0xB0, 0x65, 0xB7, 0x88, 0x23, 0xDA, 0x5E, 0xB8, 0xEB, 0x20, 0xDC, 0x4E, 0x32, 0x37, 0xCA, - 0xDA, 0x19, 0x49, 0x83, 0x85, 0xD3, 0x5E, 0x67, 0x6D, 0x4A, 0xEE, 0x69, 0x3B, 0x0B, 0xBE, 0x92, - 0xB6, 0xEB, 0xFF, 0xEF, 0x26, 0xA3, 0x13, 0xCB, 0x34, 0x9F, 0x3B, 0xED, 0x3B, 0x32, 0xFF, 0x12, - 0xD0, 0x23, 0xBD, 0x8C, 0x1D, 0xB6, 0xC2, 0xD7, 0xE4, 0x7E, 0x3F, 0x8F, 0xFD, 0x6D, 0x69, 0x0A, - 0xFD, 0x47, 0x12, 0xDE, 0x12, 0x1A, 0x78, 0xAE, 0xF6, 0x33, 0xD9, 0x10, 0xDD, 0xC8, 0xBF, 0x1B, - 0xDF, 0xA5, 0x81, 0x1B, 0x1A, 0x8A, 0x0C, 0x0A, 0xAF, 0x7E, 0x72, 0xEF, 0x84, 0x41, 0x44, 0xDA, - 0x2B, 0x12, 0x2C, 0x57, 0x30, 0x57, 0xA7, 0x6F, 0x8F, 0x07, 0x23, 0xAB, 0xDF, 0x73, 0xBC, 0x38, - 0x8C, 0xD3, 0xC9, 0x37, 0xBD, 0x5E, 0xCF, 0x99, 0xBB, 0xDE, 0x97, 0x65, 0x1A, 0x6F, 0x22, 0xBF, - 0x2D, 0x5A, 0x17, 0x8B, 0xC5, 0xBE, 0xE3, 0x01, 0x1F, 0x17, 0x88, 0xD3, 0xDD, 0xDA, 0x4D, 0x97, - 0x41, 0xD4, 0x4E, 0x19, 0x0F, 0x77, 0x43, 0x63, 0x47, 0xB4, 0x84, 0x64, 0x21, 0x1A, 0x12, 0xD7, - 0xF7, 0x83, 0x68, 0xC9, 0x5B, 0xAC, 0x01, 0xCC, 0x2B, 0x5B, 0x38, 0x15, 0x36, 0xED, 0xA9, 0x3B, - 0x0F, 0xC9, 0x6E, 0x1E, 0xA7, 0x3E, 0x49, 0x27, 0xA6, 0xC3, 0x3F, 0xB4, 0xB3, 0xC4, 0xF5, 0x60, - 0x20, 0x34, 0xAC, 0xDD, 0xFB, 0xF6, 0x5D, 0xE0, 0xD3, 0x15, 0x53, 0xCA, 0xBE, 0xC3, 0xC6, 0xB7, - 0xF9, 0x30, 0xE2, 0xEF, 0x8A, 0x2E, 0x41, 0x3A, 0xB1, 0x92, 0x7B, 0x2D, 0x8B, 0xC3, 0xC0, 0xD7, - 0xBE, 0xF1, 0x7D, 0x5F, 0x4A, 0x35, 0x8F, 0x29, 0x8D, 0xD7, 0x13, 0x1B, 0x35, 0x49, 0x81, 0x6C, - 0x15, 0x50, 0xC2, 0x66, 0x21, 0x93, 0x28, 0xBE, 0x4B, 0xDD, 0x44, 0xCA, 0x36, 0xB1, 0xD7, 0xEB, - 0x3D, 0x5D, 0xED, 0xD8, 0x9E, 0xB8, 0x61, 0xB0, 0x8C, 0x26, 0x28, 0xBF, 0x98, 0x78, 0x46, 0x71, - 0x1B, 0x66, 0x34, 0x9D, 0x51, 0xDF, 0x38, 0x68, 0x5A, 0xE5, 0x4D, 0xCC, 0x36, 0xCA, 0xA3, 0xF2, - 0xA6, 0xD5, 0x4E, 0x4E, 0x35, 0x3E, 0xBE, 0x15, 0xB7, 0x24, 0xC5, 0x9D, 0x0C, 0x85, 0x08, 0x34, - 0x4E, 0xA4, 0x6A, 0xE0, 0x63, 0x65, 0x8D, 0x55, 0xA5, 0xD4, 0x08, 0x59, 0xD7, 0xB7, 0x3A, 0xEC, - 0x3B, 0x10, 0xBB, 0xAE, 0x6F, 0xB5, 0xAB, 0xD5, 0xF4, 0xA1, 0x14, 0x8F, 0xE2, 0x26, 0x76, 0x48, - 0xEC, 0xB5, 0x0D, 0xDB, 0x24, 0x68, 0x32, 0x9A, 0x06, 0x89, 0x22, 0xF8, 0x24, 0xA2, 0xAB, 0x76, - 0xBC, 0x68, 0xD3, 0x6D, 0x42, 0x9A, 0xB1, 0xEF, 0xB7, 0x76, 0x35, 0xB6, 0x7A, 0x89, 0xAF, 0xFD, - 0x3F, 0xD6, 0xC4, 0x0F, 0x5C, 0xAD, 0xB9, 0x06, 0x03, 0xE0, 0x7C, 0x47, 0x43, 0xD0, 0x79, 0x6B, - 0xA7, 0xD8, 0xB1, 0x68, 0x1F, 0xA0, 0x61, 0xD4, 0x10, 0x5C, 0x5E, 0xDA, 0xB5, 0x04, 0x97, 0xA3, - 0x23, 0x04, 0x96, 0x6D, 0x9A, 0xB5, 0x14, 0x96, 0xC5, 0x49, 0x3A, 0x91, 0x7B, 0xAB, 0x9A, 0xAD, - 0x10, 0xD9, 0xF3, 0xBC, 0x8A, 0xC3, 0x98, 0x55, 0x77, 0x31, 0xC1, 0x58, 0x32, 0x70, 0x63, 0x44, - 0x1C, 0xB0, 0xDA, 0x88, 0xD4, 0x78, 0x29, 0xF3, 0x5D, 0xAE, 0xD0, 0xD4, 0xF5, 0x83, 0x4D, 0x36, - 0x19, 0x82, 0x91, 0xD5, 0x38, 0x81, 0xBB, 0x4B, 0xE2, 0x2C, 0xA0, 0x41, 0x1C, 0x4D, 0x52, 0x12, - 0xBA, 0x34, 0xB8, 0x25, 0x8E, 0x1F, 0x64, 0x49, 0xE8, 0x6E, 0x27, 0xF3, 0x30, 0xF6, 0xBE, 0xE4, - 0x0E, 0x81, 0xE8, 0xA3, 0x31, 0xF7, 0x65, 0x3E, 0xE1, 0x13, 0x2F, 0x4E, 0x5D, 0x46, 0xC8, 0x64, - 0x28, 0xE4, 0xDF, 0x77, 0x5C, 0x0F, 0xF9, 0xEC, 0x0A, 0xC4, 0xA8, 0x91, 0xD0, 0x34, 0x4D, 0x39, - 0x50, 0x73, 0x0D, 0x77, 0xB2, 0x88, 0xBD, 0x4D, 0x06, 0xCF, 0x55, 0x0C, 0x36, 0xBF, 0x53, 0xC1, - 0x26, 0x71, 0x23, 0x12, 0xEE, 0x0E, 0x65, 0xAF, 0x07, 0xA7, 0x23, 0xFE, 0x5F, 0x56, 0x06, 0x82, - 0x9F, 0x44, 0xDD, 0x79, 0x7C, 0xDF, 0xCE, 0x56, 0xAE, 0x1F, 0xDF, 0x4D, 0x4C, 0x0D, 0xA9, 0xF0, - 0x6F, 0xBA, 0x9C, 0xBB, 0x4D, 0xD3, 0xC0, 0x57, 0xC7, 0x1C, 0xB4, 0x9C, 0x73, 0x06, 0x09, 0x49, - 0xDB, 0x0C, 0xA1, 0x73, 0xAD, 0x21, 0xB8, 0x89, 0x0E, 0x34, 0x76, 0x68, 0xDB, 0x1D, 0x6A, 0xF4, - 0x34, 0xE2, 0x0E, 0xF0, 0x25, 0x57, 0x20, 0x1A, 0x95, 0x35, 0x01, 0x12, 0x70, 0xD3, 0x90, 0xAB, - 0xEB, 0xA1, 0x6E, 0x8A, 0x3E, 0x34, 0xA3, 0x9A, 0x2E, 0xA1, 0xC9, 0x8A, 0xF7, 0x86, 0xEE, 0x1C, - 0x94, 0x2D, 0x2D, 0x20, 0x88, 0x18, 0x2E, 0x71, 0x43, 0x28, 0x43, 0x70, 0xC5, 0x98, 0x70, 0x15, - 0x2C, 0xBA, 0xDC, 0x71, 0x0C, 0x1B, 0xE1, 0xF6, 0x32, 0x43, 0x09, 0xA2, 0x45, 0x2C, 0xF7, 0xB3, - 0x07, 0xC6, 0x3F, 0x86, 0x2D, 0x5D, 0xC4, 0xE9, 0xBA, 0x8D, 0x9E, 0x91, 0xC6, 0xC5, 0x64, 0x7C, - 0x16, 0x3E, 0x03, 0x0B, 0x1C, 0x02, 0x0E, 0x7B, 0xFD, 0x22, 0x64, 0xA0, 0x19, 0x6B, 0x96, 0x2D, - 0x27, 0x3B, 0x37, 0x94, 0x0D, 0x06, 0x83, 0x63, 0xD6, 0x52, 0xB4, 0x06, 0x6B, 0x77, 0x29, 0x1D, - 0xEA, 0xC0, 0x86, 0xD0, 0x2F, 0xCF, 0xB2, 0xA1, 0x20, 0xCA, 0x08, 0xD5, 0x8E, 0x18, 0xC9, 0xA8, - 0x6C, 0x4A, 0x0F, 0x8E, 0x6D, 0xC7, 0x6D, 0x9A, 0x42, 0xF8, 0xE6, 0x0E, 0xAA, 0x5A, 0x80, 0x46, - 0xDC, 0x8C, 0x80, 0x6E, 0xDB, 0xF1, 0x86, 0x6A, 0x1D, 0x6B, 0x90, 0x19, 0x05, 0xDF, 0x83, 0xBE, - 0xB2, 0xC2, 0xB9, 0xAB, 0xED, 0xCA, 0xF6, 0x34, 0x1C, 0xBA, 0x0B, 0x72, 0xE9, 0x00, 0x05, 0x6A, - 0x12, 0x02, 0xEE, 0x13, 0x96, 0x66, 0x98, 0xD0, 0x39, 0x96, 0x1D, 0x96, 0x69, 0x1B, 0xD6, 0x68, - 0x60, 0xD8, 0xBD, 0x9E, 0xD1, 0x19, 0xB6, 0x84, 0x0C, 0xA8, 0xEB, 0xA4, 0xE2, 0xCC, 0xDC, 0x47, - 0xE6, 0x34, 0x3A, 0x66, 0x77, 0xEA, 0x60, 0xB3, 0x64, 0x66, 0x7D, 0xD3, 0x74, 0x94, 0x10, 0xED, - 0x91, 0x88, 0x92, 0xB4, 0x1A, 0x35, 0xD7, 0x81, 0xEF, 0x87, 0x84, 0x27, 0x60, 0xF1, 0xC6, 0x5B, - 0xB5, 0x11, 0x76, 0x40, 0x9F, 0x6B, 0x37, 0x0A, 0x92, 0x4D, 0xC8, 0x40, 0xCC, 0x39, 0xDE, 0xE3, - 0x6D, 0xD2, 0x0C, 0x54, 0x94, 0xC4, 0x01, 0x63, 0x7E, 0xA6, 0xC5, 0xB0, 0x7D, 0x4B, 0xDC, 0x14, - 0x24, 0x72, 0x4E, 0xA4, 0x19, 0x8F, 0xB4, 0xE7, 0x1A, 0x13, 0x5C, 0xC7, 0x5F, 0xDB, 0x9B, 0x0C, - 0x93, 0x25, 0x12, 0x12, 0x8F, 0x72, 0x71, 0x70, 0xAD, 0x07, 0x8D, 0xD5, 0x06, 0xA6, 0xF3, 0x76, - 0x92, 0xC2, 0x32, 0xD2, 0xED, 0x69, 0xB4, 0xEE, 0xF5, 0x46, 0xEE, 0x7C, 0x54, 0xC1, 0x20, 0x9B, - 0x0C, 0x7D, 0xB7, 0x5F, 0xE2, 0x22, 0x10, 0xDD, 0x28, 0xB5, 0x71, 0x68, 0x2F, 0x35, 0x31, 0x94, - 0x2F, 0x35, 0x4D, 0x6A, 0x28, 0x27, 0x87, 0x94, 0x07, 0xF1, 0xA1, 0x46, 0x58, 0x7B, 0x3C, 0x34, - 0x2F, 0xCD, 0x8A, 0xB0, 0x96, 0x6D, 0xCF, 0xFB, 0xE6, 0xDE, 0x73, 0x13, 0xDC, 0x54, 0x89, 0xC1, - 0x2C, 0x8D, 0x1A, 0x2B, 0x29, 0xA9, 0xB0, 0xB2, 0x71, 0x01, 0xCA, 0xA3, 0xD1, 0xC8, 0x39, 0xC8, - 0x02, 0xDD, 0x10, 0x4C, 0xAC, 0x04, 0xF2, 0x35, 0xC1, 0xF5, 0xB4, 0x51, 0x1C, 0x6C, 0xA5, 0xE0, - 0xDA, 0xCE, 0x36, 0x9E, 0x47, 0xB2, 0xAC, 0x26, 0x9F, 0xF1, 0x17, 0x0B, 0xD3, 0x1F, 0x57, 0x23, - 0xC1, 0x90, 0x5C, 0x7A, 0xC3, 0x3C, 0x84, 0x78, 0xA3, 0x61, 0xCF, 0x97, 0xAC, 0x7C, 0x37, 0x5A, - 0x82, 0xB6, 0x6A, 0xA0, 0xCF, 0xF6, 0x89, 0x4F, 0x2A, 0x9C, 0xC8, 0xDC, 0xF3, 0x7C, 0x4B, 0x72, - 0x72, 0x2F, 0xFB, 0xFD, 0xBE, 0xBD, 0xEF, 0xAC, 0xDC, 0xAC, 0x4D, 0xD2, 0x14, 0x20, 0xA7, 0x0C, - 0xDB, 0x65, 0x5A, 0x3E, 0xFA, 0xCF, 0x06, 0xC4, 0xA3, 0xD2, 0xD4, 0x62, 0xDA, 0xB8, 0xDF, 0x1B, - 0xF4, 0xFA, 0x4F, 0x46, 0x32, 0x74, 0xCD, 0x6F, 0x3C, 0x32, 0xEE, 0x8F, 0x7B, 0x8F, 0x91, 0xB1, - 0x4A, 0x5B, 0x92, 0x59, 0x88, 0xDB, 0xE6, 0x61, 0xB6, 0x46, 0xD3, 0x62, 0xF3, 0x4F, 0xEA, 0x9A, - 0xEF, 0xF1, 0xBF, 0x46, 0xD7, 0xB5, 0xF2, 0xD4, 0x6A, 0xDB, 0x9E, 0x0F, 0xFA, 0xB6, 0xF7, 0xFB, - 0xB4, 0x3D, 0x1C, 0xCD, 0xAD, 0xE1, 0xF8, 0x69, 0xDA, 0xE6, 0xB4, 0x15, 0xA9, 0x6B, 0xF5, 0x2D, - 0x7D, 0x04, 0x61, 0x45, 0x78, 0xC8, 0x49, 0x3C, 0xF1, 0x2F, 0xC1, 0x8C, 0x16, 0x55, 0xB7, 0xEB, - 0xF7, 0x16, 0x3D, 0x57, 0x65, 0x52, 0xC2, 0x3E, 0xD1, 0xA4, 0x00, 0x98, 0x68, 0x51, 0x90, 0x8F, - 0xB7, 0x4C, 0x0E, 0xC9, 0x26, 0x07, 0x64, 0xE7, 0xC0, 0x9E, 0x77, 0xD9, 0x33, 0x6D, 0xAF, 0x22, - 0xE6, 0x68, 0x68, 0x79, 0xD6, 0x25, 0x13, 0x33, 0x58, 0x2F, 0x77, 0x22, 0x96, 0xAD, 0xDC, 0xA8, - 0x9A, 0x12, 0x0F, 0xEB, 0xF0, 0x8A, 0x27, 0xE0, 0x9C, 0x56, 0x88, 0x50, 0x83, 0x25, 0x26, 0xBE, - 0x2A, 0xF3, 0x9A, 0x20, 0xE2, 0x5F, 0xEE, 0x78, 0x20, 0x38, 0x93, 0xF4, 0xF4, 0xCA, 0x7B, 0xA6, - 0x48, 0x3F, 0xE4, 0xD8, 0x87, 0x56, 0xFA, 0xD7, 0xAF, 0x2B, 0x04, 0xD1, 0x20, 0x43, 0xF8, 0x22, - 0x0D, 0x82, 0x1D, 0xA6, 0xF2, 0xD6, 0x89, 0xB0, 0xB1, 0x45, 0x10, 0x12, 0xF6, 0x9D, 0xBB, 0x6B, - 0x3E, 0xF6, 0xB2, 0x0F, 0xBB, 0x1A, 0x44, 0xC9, 0x86, 0xFE, 0x82, 0xA7, 0xE7, 0x29, 0x8E, 0xFB, - 0x75, 0x32, 0x91, 0xCB, 0xC2, 0xAF, 0xED, 0x4D, 0x12, 0xC6, 0xAE, 0xDF, 0x9E, 0x6F, 0x20, 0x9A, - 0xFD, 0x9D, 0x97, 0xFD, 0x6B, 0xF3, 0x32, 0xE7, 0xA4, 0x9B, 0x0F, 0xE6, 0x9E, 0x79, 0x10, 0xBA, - 0xFB, 0xC3, 0xF9, 0xD8, 0x77, 0x1F, 0xB5, 0xA9, 0xC2, 0x2A, 0xFE, 0xDE, 0xDA, 0x7F, 0x9F, 0xAD, - 0xED, 0x59, 0x73, 0xD3, 0xAF, 0x9E, 0xF4, 0xAD, 0xF9, 0xD0, 0x1F, 0x0F, 0x1E, 0xB7, 0xB5, 0x1C, - 0xC0, 0xFE, 0xDE, 0xDA, 0x7F, 0xF3, 0xAD, 0xB5, 0x87, 0x97, 0xEE, 0xDC, 0xDB, 0xE7, 0x40, 0x5D, - 0x82, 0xF3, 0x32, 0x7A, 0x2B, 0x68, 0x5E, 0x4A, 0x05, 0x04, 0x9A, 0x8B, 0x0A, 0xD3, 0x22, 0x8E, - 0x41, 0xA9, 0x27, 0x0A, 0x4C, 0xAC, 0xFE, 0xF2, 0xB4, 0x1A, 0xD3, 0x41, 0x9D, 0x17, 0x0D, 0x0E, - 0xC3, 0x24, 0xDF, 0xAB, 0xBE, 0x92, 0x34, 0xF4, 0xF0, 0xA5, 0x92, 0x2A, 0x9D, 0xBD, 0xFE, 0xE5, - 0xD8, 0x9F, 0x57, 0x54, 0x3F, 0x30, 0x9F, 0x3B, 0xB2, 0x6E, 0x0A, 0xD2, 0xCA, 0x9D, 0xC2, 0xCF, - 0x60, 0x3B, 0x6B, 0x5E, 0x66, 0xCC, 0x92, 0x20, 0xD2, 0xEC, 0x4C, 0xC3, 0xCD, 0x74, 0x53, 0x2D, - 0x88, 0x16, 0x41, 0x04, 0x96, 0xB0, 0xFF, 0xC7, 0x17, 0xB2, 0x5D, 0xA4, 0xEE, 0x9A, 0x64, 0x1A, - 0x0E, 0xD9, 0x99, 0xCF, 0x77, 0xCC, 0x5C, 0x30, 0x63, 0x9D, 0xA4, 0x31, 0x75, 0x29, 0x69, 0x9A, - 0xAD, 0x3D, 0x16, 0xAD, 0x0E, 0x3B, 0x7A, 0x43, 0x00, 0xD3, 0x65, 0x6B, 0xFF, 0x97, 0x68, 0x70, - 0x1D, 0xFB, 0x6E, 0x51, 0xFF, 0x62, 0x46, 0x94, 0x57, 0x63, 0x17, 0xC1, 0x3D, 0xF1, 0x9D, 0xAF, - 0xED, 0x20, 0xF2, 0xC9, 0x3D, 0x56, 0xDC, 0xCC, 0xA2, 0x10, 0xCC, 0x78, 0x61, 0x7D, 0xD9, 0x61, - 0x25, 0x62, 0x70, 0x5A, 0x68, 0x30, 0x1D, 0xA5, 0x38, 0x27, 0x35, 0x88, 0x9F, 0xD1, 0x5C, 0x16, - 0x21, 0x24, 0x1A, 0xAC, 0xA8, 0x56, 0x5B, 0x89, 0x3D, 0x6C, 0x55, 0x93, 0x90, 0x7E, 0x4B, 0x88, - 0xCA, 0xF2, 0x7F, 0x70, 0xC1, 0x5D, 0xB1, 0xA6, 0x52, 0x75, 0xD1, 0x32, 0xCB, 0x95, 0xC7, 0x52, - 0x55, 0x52, 0xED, 0x14, 0x45, 0xFE, 0x63, 0xB4, 0xA2, 0xFB, 0x18, 0x39, 0x5E, 0x0B, 0xE4, 0xE6, - 0x24, 0x0B, 0x13, 0x4A, 0x7D, 0x16, 0x4B, 0x50, 0x16, 0x42, 0x81, 0x59, 0xCA, 0xA5, 0xEC, 0x96, - 0x73, 0x58, 0xEB, 0xE6, 0x70, 0x58, 0xBA, 0xA8, 0x9A, 0xD4, 0xA8, 0xE3, 0x9B, 0x05, 0xC1, 0x97, - 0xD4, 0x03, 0x56, 0x72, 0x15, 0x2B, 0xB1, 0xC5, 0x84, 0x4E, 0x9E, 0xFC, 0xE2, 0xAB, 0x8E, 0x8B, - 0x8D, 0xAF, 0x63, 0xC5, 0xD9, 0x47, 0xAA, 0xAF, 0x54, 0x9E, 0x5C, 0xE0, 0x4B, 0x8A, 0x57, 0xAE, - 0x40, 0x9B, 0x42, 0x3A, 0xD9, 0x5B, 0x35, 0xF1, 0xA1, 0x94, 0x5E, 0x18, 0x4D, 0xBF, 0x33, 0x20, - 0xEB, 0xC7, 0x2F, 0xE5, 0x50, 0x9C, 0xDF, 0xB9, 0xDB, 0x27, 0xEE, 0x6D, 0xCA, 0xD6, 0xC8, 0xFB, - 0x06, 0x63, 0xF5, 0x2A, 0x26, 0xF3, 0x52, 0x42, 0x22, 0x0D, 0xB2, 0x7D, 0xA0, 0xCF, 0x0B, 0xD7, - 0xA3, 0xE1, 0xE8, 0x28, 0x3D, 0xBB, 0x57, 0xDC, 0x5F, 0x75, 0xF9, 0x4D, 0xEE, 0x55, 0x97, 0xDF, - 0xEB, 0xB2, 0xDB, 0xA6, 0x2B, 0x3F, 0xB8, 0xD5, 0x58, 0xFB, 0x54, 0xCF, 0x4D, 0xC8, 0x9D, 0xC3, - 0x62, 0x37, 0x94, 0x08, 0xE7, 0xE3, 0x97, 0x33, 0xA6, 0x3E, 0xFB, 0x6F, 0xAB, 0x63, 0x6B, 0x2F, - 0xA2, 0x79, 0x96, 0x38, 0xFC, 0xFD, 0xAA, 0x0B, 0xE4, 0xB3, 0x2B, 0x1E, 0x4D, 0x67, 0x57, 0x2B, - 0x7B, 0xF6, 0x86, 0x6A, 0x19, 0x21, 0xEB, 0x4C, 0xDB, 0xC6, 0x1B, 0xCD, 0x8F, 0xB5, 0x28, 0xA6, - 0xDA, 0xCA, 0xC5, 0x8B, 0x90, 0x68, 0xAB, 0x31, 0x87, 0xEF, 0xE0, 0x4D, 0xB2, 0x16, 0x91, 0x80, - 0xAE, 0x48, 0xAA, 0x34, 0x75, 0x96, 0x5F, 0x0D, 0x2D, 0x09, 0xB1, 0xC0, 0xAB, 0xF1, 0x90, 0xAF, - 0x05, 0x54, 0x8B, 0x53, 0xF8, 0xE2, 0x03, 0x9C, 0x21, 0xC3, 0x54, 0x5B, 0x04, 0xE9, 0xFA, 0x0E, - 0x62, 0xA5, 0x16, 0x2C, 0x80, 0x05, 0x1E, 0x84, 0xB1, 0xE4, 0x06, 0x2B, 0xB2, 0x67, 0x38, 0xA1, - 0xE7, 0x46, 0x30, 0x04, 0x14, 0x03, 0x78, 0xA3, 0x01, 0x7B, 0xA2, 0x4D, 0xB4, 0x2B, 0x57, 0xF3, - 0x42, 0x37, 0xCB, 0xA6, 0x7A, 0x7E, 0x8A, 0xD0, 0xB5, 0x55, 0x4A, 0x16, 0x53, 0x7D, 0x45, 0x69, - 0x92, 0x4D, 0xBA, 0xDD, 0x25, 0xC8, 0xB2, 0x99, 0xC3, 0x89, 0x7A, 0xDD, 0x0D, 0x37, 0x5E, 0x9B, - 0x7F, 0xED, 0xBE, 0xBA, 0x7E, 0xDF, 0x7B, 0xD9, 0xFE, 0xE7, 0xAB, 0xEF, 0x3F, 0xBE, 0xD1, 0x67, - 0x67, 0x0F, 0xBD, 0xEA, 0xBA, 0xA0, 0x61, 0xA9, 0x11, 0xD4, 0xAE, 0x98, 0x9D, 0x81, 0xB0, 0xAE, - 0x05, 0xFE, 0x54, 0xBF, 0x7E, 0xFF, 0xE6, 0xF5, 0xEB, 0x6B, 0xFD, 0xB0, 0x5B, 0xDE, 0xA3, 0xE8, - 0xB3, 0xD7, 0xD0, 0xBA, 0xD2, 0x5E, 0x43, 0x60, 0xCC, 0xB6, 0x19, 0x25, 0x6B, 0xA1, 0xE9, 0x03, - 0x02, 0xDC, 0x44, 0x60, 0xC4, 0x52, 0x28, 0x8D, 0xA5, 0x50, 0x3A, 0x46, 0x53, 0x3E, 0x0F, 0x4B, - 0x9F, 0x78, 0x1C, 0xD7, 0xB5, 0x08, 0xC2, 0xC8, 0x54, 0x5F, 0x6F, 0xB1, 0x31, 0xFB, 0xE5, 0x57, - 0x5D, 0x5B, 0x6F, 0x42, 0x1A, 0x24, 0xB8, 0xF1, 0xF2, 0x93, 0x3E, 0xD3, 0x04, 0x27, 0xA9, 0x31, - 0x1A, 0x69, 0x4A, 0x85, 0x52, 0x17, 0x33, 0xF0, 0x54, 0x8C, 0xCF, 0x51, 0xCA, 0xCE, 0x74, 0x50, - 0xBC, 0x17, 0x06, 0xDE, 0x17, 0x58, 0x23, 0x89, 0x7C, 0x9C, 0xAA, 0xD9, 0x72, 0x74, 0xED, 0xD6, - 0x0D, 0x37, 0x40, 0xF7, 0x91, 0x8D, 0xD5, 0x67, 0x25, 0x13, 0x4A, 0xD2, 0x78, 0x99, 0x62, 0x45, - 0x43, 0x58, 0xE1, 0x6D, 0x90, 0x05, 0xF3, 0x20, 0x0C, 0xE8, 0x76, 0xB2, 0x82, 0x7C, 0x8C, 0x44, - 0x52, 0xF4, 0x24, 0x5D, 0xF2, 0x29, 0xD9, 0x07, 0xB0, 0xFC, 0xA9, 0x0E, 0x86, 0x0D, 0x8B, 0xEF, - 0x4A, 0x16, 0x60, 0xD3, 0x29, 0xFF, 0x7B, 0xA0, 0xF7, 0xE3, 0xAA, 0xE3, 0x97, 0xD7, 0x57, 0x14, - 0xA8, 0xA8, 0xAF, 0x31, 0x87, 0x99, 0xEA, 0xE6, 0xF3, 0x5C, 0xA9, 0xE7, 0xA9, 0xA2, 0xB4, 0xEE, - 0x1F, 0xE2, 0x35, 0x24, 0x86, 0x7E, 0xB3, 0x81, 0xB7, 0x99, 0x0D, 0xA3, 0xE1, 0x86, 0x61, 0x43, - 0x51, 0xC3, 0x07, 0xB2, 0x00, 0x69, 0x57, 0x28, 0x39, 0xF5, 0x0F, 0x66, 0x45, 0x39, 0x73, 0x6E, - 0x3F, 0xA4, 0x04, 0x6C, 0xDF, 0x0F, 0xD2, 0x66, 0x4B, 0x57, 0x24, 0x81, 0x93, 0x3C, 0x8C, 0xCC, - 0x6E, 0x97, 0x92, 0xB2, 0x6F, 0x82, 0x4D, 0x33, 0x8C, 0xE3, 0x9F, 0x6F, 0x03, 0x72, 0xF7, 0x7D, - 0x0C, 0x1A, 0xC2, 0x03, 0x76, 0x1F, 0xFF, 0xC0, 0xF8, 0x14, 0xEC, 0x40, 0x83, 0xB6, 0x81, 0xAE, - 0x6D, 0x51, 0x77, 0xBA, 0xA4, 0xEE, 0x29, 0xD4, 0x36, 0x7C, 0x4E, 0x61, 0x90, 0x0D, 0x8F, 0x2D, - 0x7B, 0xC0, 0x2E, 0x86, 0x53, 0x5D, 0xA4, 0x79, 0x7A, 0xB7, 0xE0, 0x83, 0x43, 0xB7, 0x8C, 0x9D, - 0xE0, 0x63, 0x0D, 0x0A, 0x3E, 0xF8, 0xF9, 0x01, 0x3E, 0x98, 0x8F, 0x23, 0x1F, 0x8B, 0x0B, 0x64, - 0xC3, 0x23, 0x4F, 0x6E, 0xA1, 0x75, 0x2C, 0xBE, 0xDE, 0x09, 0x8E, 0x63, 0xD8, 0x6C, 0xC1, 0x84, - 0xE5, 0xC9, 0xFA, 0xEC, 0x02, 0x14, 0x08, 0x3C, 0x40, 0x8F, 0xA0, 0x8A, 0x99, 0x70, 0x11, 0xA1, - 0x53, 0xAE, 0x48, 0x34, 0x17, 0x9E, 0xCC, 0xE5, 0xEA, 0x13, 0x5F, 0x2B, 0xC3, 0xF3, 0x25, 0x98, - 0xF9, 0x26, 0x30, 0x53, 0x73, 0xE9, 0x2A, 0xA7, 0xC4, 0xEB, 0x3E, 0x69, 0xBC, 0x2A, 0x75, 0x17, - 0x6D, 0xA7, 0x2B, 0xED, 0x08, 0x1F, 0x92, 0x82, 0x7F, 0x29, 0xDD, 0xF2, 0xEB, 0xD2, 0xCE, 0x8B, - 0x83, 0x00, 0x1A, 0x21, 0x87, 0x64, 0x66, 0x84, 0x2B, 0xD5, 0x1C, 0x6E, 0xC0, 0xCA, 0x80, 0xF7, - 0x0A, 0xDB, 0x67, 0x3F, 0x83, 0x1F, 0xE4, 0x5F, 0xAE, 0x41, 0x4B, 0xF2, 0x4B, 0xC9, 0x80, 0x2A, - 0x6D, 0x62, 0x45, 0xAC, 0x55, 0x48, 0x2A, 0x26, 0x43, 0x07, 0xC8, 0x71, 0xE2, 0x33, 0xDA, 0x2A, - 0x1B, 0xC7, 0xE3, 0x82, 0x5C, 0xCF, 0x11, 0xDC, 0xE1, 0x91, 0x96, 0xFB, 0x63, 0x06, 0xE9, 0xE6, - 0x26, 0x2B, 0x34, 0x7A, 0xF0, 0x7E, 0x8E, 0x37, 0x16, 0xC8, 0x27, 0x21, 0xFE, 0x23, 0xC3, 0xFD, - 0x07, 0x80, 0xAF, 0xE4, 0xBD, 0x47, 0x71, 0xF0, 0xEE, 0x28, 0x0A, 0x2A, 0xF6, 0xF2, 0x34, 0xE4, - 0x03, 0xDE, 0x07, 0x18, 0xC0, 0x71, 0xEE, 0x10, 0xFD, 0x70, 0x3D, 0xEA, 0x8C, 0x8F, 0x81, 0xBE, - 0xC5, 0x5D, 0x0E, 0x7E, 0xF8, 0xB1, 0x1E, 0xFE, 0x72, 0xCE, 0x70, 0x84, 0x8C, 0xD8, 0xF0, 0x75, - 0xB6, 0xD4, 0x8F, 0xB3, 0x9F, 0x7D, 0x20, 0xB0, 0x79, 0x70, 0x06, 0x8E, 0x96, 0x79, 0xEC, 0xBD, - 0x73, 0x03, 0xDA, 0x81, 0xFF, 0xC0, 0xA9, 0x80, 0x89, 0xC2, 0xCA, 0x83, 0x1C, 0x89, 0x72, 0xCF, - 0xE1, 0x3D, 0x87, 0xC6, 0x5F, 0xDD, 0x74, 0xEE, 0x7E, 0x90, 0x85, 0x26, 0x70, 0xFE, 0xCD, 0xFD, - 0x88, 0xA5, 0x28, 0x65, 0x1B, 0x28, 0x65, 0x2D, 0x75, 0x5D, 0x3C, 0x2D, 0x85, 0x9E, 0x55, 0x6F, - 0xF6, 0x06, 0x44, 0xA7, 0xC1, 0x02, 0x0E, 0xEE, 0x98, 0xAD, 0x40, 0xF0, 0xEF, 0xD5, 0x18, 0x5A, - 0x91, 0x2E, 0xEA, 0x7C, 0x0D, 0x62, 0x25, 0xA5, 0x6E, 0x44, 0x0F, 0x9D, 0x9F, 0xC0, 0x21, 0x69, - 0x26, 0xB3, 0x8F, 0x70, 0xF0, 0x9D, 0x88, 0xE5, 0x55, 0x42, 0xA1, 0x7A, 0x49, 0x20, 0xAD, 0x81, - 0x93, 0xE7, 0x8B, 0xFC, 0x8C, 0xE7, 0xE6, 0xCF, 0xBC, 0x51, 0xA8, 0xBC, 0xB8, 0xF2, 0x2F, 0xD4, - 0xB6, 0x4A, 0xCF, 0x17, 0xE8, 0x3D, 0xF4, 0xDD, 0x01, 0x50, 0x3C, 0x42, 0xA8, 0x44, 0x90, 0xA8, - 0x82, 0xC9, 0xB6, 0x87, 0x85, 0xC3, 0xE0, 0x79, 0x44, 0x97, 0xC2, 0xE5, 0xCB, 0x4E, 0x26, 0x6D, - 0xFF, 0x98, 0xDB, 0x14, 0x71, 0x71, 0x33, 0x5F, 0x07, 0xF4, 0x03, 0xF9, 0xBF, 0x0D, 0x98, 0x1C, - 0x46, 0x33, 0xE1, 0x15, 0xBC, 0xBD, 0x16, 0x3C, 0x20, 0xD1, 0x0D, 0x12, 0x3A, 0x5B, 0x6C, 0x22, - 0x56, 0x6C, 0x01, 0x5F, 0xB8, 0x9D, 0xBB, 0x10, 0x09, 0x77, 0xB7, 0x70, 0x46, 0x06, 0x52, 0xC5, - 0xF9, 0x75, 0x83, 0x4E, 0xBD, 0x4D, 0x8A, 0x45, 0x14, 0x84, 0xEC, 0x0E, 0x1C, 0x3B, 0x03, 0xDA, - 0xD4, 0xBB, 0x7A, 0xCB, 0x88, 0xA6, 0xF0, 0x30, 0x82, 0xA9, 0xE5, 0x80, 0xB6, 0x9A, 0xE4, 0x02, - 0xE9, 0x7C, 0x21, 0x6F, 0x83, 0xC7, 0xD2, 0x86, 0x96, 0xCB, 0xF9, 0x49, 0x57, 0xD8, 0x4C, 0x1B, - 0xDD, 0x86, 0xA3, 0x1D, 0x8F, 0xE8, 0x9F, 0xF4, 0x59, 0x97, 0x79, 0x81, 0xEE, 0x04, 0x57, 0xB4, - 0x13, 0x92, 0x68, 0x49, 0x57, 0x6D, 0xCB, 0x69, 0x45, 0x17, 0x53, 0xFA, 0x4B, 0xF0, 0xEB, 0x05, - 0xCE, 0x7C, 0x64, 0xC6, 0x23, 0x13, 0xEA, 0x17, 0xD1, 0x85, 0xFE, 0xD0, 0xA4, 0xFA, 0x05, 0xE7, - 0x9E, 0xFB, 0xBB, 0x90, 0xC2, 0x08, 0x2E, 0x2E, 0x9C, 0x94, 0xD0, 0x4D, 0x1A, 0x69, 0x6C, 0x5A, - 0xD5, 0x39, 0xF5, 0x7D, 0xAE, 0x48, 0xB0, 0xAF, 0x6C, 0xF5, 0x39, 0x00, 0xC3, 0x51, 0x94, 0x59, - 0x64, 0x13, 0x0D, 0xBB, 0xDF, 0x90, 0x71, 0x9C, 0x7D, 0x96, 0xD9, 0x44, 0x03, 0xB3, 0x09, 0xCB, - 0x1E, 0xE3, 0xDF, 0x06, 0x2C, 0x5A, 0x9D, 0x4A, 0x24, 0x05, 0x8D, 0x81, 0xDD, 0x80, 0x60, 0xDE, - 0xB0, 0xE0, 0x01, 0xE1, 0xBF, 0x31, 0x6C, 0x60, 0xF8, 0xC7, 0x87, 0xE4, 0x3D, 0x28, 0x78, 0x8F, - 0x1A, 0xC2, 0x14, 0x1B, 0x18, 0xD6, 0xE1, 0xE4, 0xEA, 0x3B, 0x0D, 0xAD, 0x3B, 0x13, 0x3A, 0xAB, - 0x72, 0xAC, 0xE7, 0x61, 0x97, 0x79, 0xB0, 0xCC, 0xA0, 0x8E, 0x4B, 0xCF, 0xE4, 0x5C, 0xC6, 0x47, - 0xE4, 0x1A, 0x8E, 0x0A, 0x9E, 0x80, 0xAB, 0x67, 0x49, 0x66, 0x97, 0x79, 0x5A, 0x26, 0x67, 0x8A, - 0x4F, 0xC1, 0x75, 0xAC, 0x72, 0xED, 0x3F, 0x86, 0xA9, 0x7D, 0x59, 0xCB, 0xA4, 0x77, 0xE6, 0x72, - 0xFB, 0x9C, 0x4B, 0xBF, 0xC7, 0x45, 0x1B, 0x71, 0xC9, 0x46, 0x39, 0x4F, 0x85, 0xE5, 0xF0, 0x5C, - 0x9E, 0xC3, 0x3F, 0x81, 0xE7, 0xF8, 0x8F, 0xE0, 0xC9, 0xF3, 0x3F, 0xC5, 0xC0, 0xF1, 0x4C, 0x2F, - 0xED, 0x9B, 0x1B, 0xE9, 0xF9, 0xF6, 0x6D, 0xF7, 0xE1, 0x4F, 0x03, 0x82, 0x33, 0xF8, 0xA3, 0xE6, - 0x4F, 0x1B, 0x3F, 0x8D, 0x8C, 0x9E, 0xF6, 0xD6, 0x36, 0xC6, 0xDA, 0xDB, 0x91, 0x61, 0xF5, 0xD8, - 0xBB, 0xA9, 0xBD, 0xB5, 0xC4, 0x63, 0x6C, 0x58, 0x16, 0x7F, 0x0C, 0x78, 0xE3, 0x10, 0x1E, 0x26, - 0x7B, 0x5C, 0x1A, 0xD6, 0x88, 0xBD, 0x5F, 0xB2, 0x26, 0x1B, 0x86, 0xDB, 0xE2, 0x61, 0x1B, 0xD6, - 0x98, 0x3D, 0xC6, 0xAC, 0x6D, 0x88, 0x5C, 0x87, 0xDA, 0x57, 0x5C, 0x60, 0x1A, 0x7F, 0x81, 0x15, - 0xB2, 0xB3, 0x6A, 0x83, 0xA7, 0xBB, 0x0D, 0xB6, 0xD2, 0xDA, 0x85, 0xF2, 0xB4, 0xE6, 0x33, 0x1E, - 0x10, 0x48, 0x6B, 0xA7, 0x20, 0xC9, 0xC5, 0x94, 0x30, 0xF4, 0x51, 0x71, 0x44, 0x67, 0x29, 0x9E, - 0xA1, 0x03, 0x8E, 0xE8, 0xAD, 0x82, 0x07, 0x9C, 0x65, 0xB1, 0xFC, 0x7C, 0x0D, 0xF9, 0x69, 0xB4, - 0xCC, 0x9A, 0xC4, 0xA0, 0x52, 0x69, 0x80, 0x0B, 0xA4, 0x43, 0xE3, 0xB7, 0xF1, 0x1D, 0x49, 0x7F, - 0x80, 0xDC, 0xA0, 0xD9, 0x02, 0x98, 0xA5, 0x95, 0x16, 0x72, 0x45, 0xBF, 0x6D, 0x5B, 0x13, 0x32, - 0xA3, 0xDF, 0x5A, 0x13, 0xB3, 0x60, 0x8B, 0xB5, 0x3F, 0x97, 0x7A, 0x2B, 0x96, 0x69, 0xB1, 0x0C, - 0x11, 0x45, 0x44, 0xB4, 0x81, 0x5C, 0x1E, 0x00, 0x73, 0xD1, 0x84, 0xA7, 0x7A, 0x12, 0xBC, 0x66, - 0x83, 0x26, 0x9A, 0x7E, 0x41, 0x3A, 0x9C, 0xC0, 0xA0, 0x17, 0xE5, 0x21, 0xBF, 0xA9, 0x5F, 0x6E, - 0x62, 0xEA, 0x86, 0x1A, 0x2F, 0x96, 0x33, 0x22, 0x8A, 0x0D, 0xA7, 0x69, 0x20, 0xC0, 0xFB, 0x2A, - 0x09, 0x44, 0x6C, 0xFF, 0x34, 0xC5, 0x3B, 0xCF, 0xDB, 0x24, 0xBC, 0x4A, 0xAB, 0xE9, 0x6C, 0xE8, - 0xD5, 0x9A, 0x40, 0x1C, 0xD4, 0xD6, 0x41, 0x04, 0x06, 0xD3, 0x60, 0x99, 0x18, 0x47, 0x8C, 0x15, - 0x58, 0xD4, 0xB4, 0x71, 0x09, 0x9F, 0x78, 0x6C, 0x6B, 0xE0, 0x0C, 0x71, 0x4E, 0x0F, 0xB8, 0x0E, - 0x1B, 0xC8, 0x88, 0xC5, 0x21, 0xA2, 0xDA, 0xFF, 0x5C, 0x37, 0xFC, 0xD8, 0xDB, 0xAC, 0x61, 0x0F, - 0x3B, 0x4B, 0x42, 0x5F, 0x85, 0x04, 0x3F, 0x7E, 0xBF, 0x7D, 0x03, 0x7B, 0x27, 0x92, 0xEC, 0x56, - 0x27, 0x88, 0x22, 0x92, 0xFE, 0x78, 0xF3, 0xD3, 0xDB, 0x29, 0x35, 0x50, 0x93, 0x06, 0x6C, 0xF3, - 0x33, 0x35, 0xF8, 0x71, 0x25, 0x47, 0xA5, 0x78, 0x08, 0xB1, 0x87, 0xBE, 0xC1, 0x52, 0xCB, 0xBB, - 0x05, 0x46, 0x45, 0xA3, 0xD4, 0xC7, 0xC3, 0x96, 0xDD, 0x72, 0xD8, 0xEA, 0x68, 0x2A, 0xBD, 0x4C, - 0xBD, 0x57, 0x3E, 0x11, 0xB0, 0x4A, 0x71, 0x17, 0x86, 0x90, 0xA6, 0x69, 0x44, 0x17, 0x56, 0xEB, - 0xE1, 0x38, 0x86, 0x61, 0x11, 0x82, 0x99, 0xE2, 0xAD, 0x45, 0x4C, 0x03, 0xB3, 0x0C, 0x31, 0x25, - 0x01, 0x6C, 0x68, 0xCC, 0xE0, 0x2C, 0x80, 0x09, 0xA9, 0xCC, 0x37, 0xF5, 0x3D, 0x61, 0x77, 0x06, - 0x59, 0x07, 0xE4, 0xA3, 0x4D, 0x69, 0x72, 0x25, 0xD3, 0xAD, 0x5A, 0x75, 0x07, 0x33, 0x69, 0x83, - 0xB2, 0x47, 0x6B, 0xDF, 0x62, 0xC9, 0x00, 0xEA, 0x29, 0x98, 0x9A, 0x10, 0xBC, 0x25, 0x3F, 0xAE, - 0x0B, 0x07, 0xE2, 0x68, 0x4B, 0x6F, 0x5B, 0xA0, 0x57, 0x4E, 0xDF, 0x14, 0xFD, 0x10, 0x75, 0x3B, - 0x78, 0x3A, 0x6D, 0xBD, 0x78, 0xD1, 0x64, 0xCA, 0xBA, 0xF9, 0x30, 0x13, 0x46, 0xC1, 0xB2, 0x6E, - 0x80, 0x18, 0x15, 0x57, 0x14, 0xB8, 0xA9, 0x81, 0x18, 0x6D, 0xF6, 0x89, 0x16, 0x28, 0x63, 0x19, - 0x36, 0xA0, 0x84, 0x61, 0x5B, 0x88, 0x35, 0x36, 0x7E, 0x1E, 0xF2, 0xC7, 0x88, 0xB5, 0x59, 0x88, - 0x0F, 0x6F, 0x2D, 0x5B, 0xBC, 0x5B, 0x1A, 0x0E, 0xB3, 0xCE, 0x40, 0x0C, 0xBC, 0x52, 0xD0, 0xEE, - 0x2D, 0x1E, 0x91, 0xB7, 0xF8, 0x6C, 0x68, 0xF7, 0x36, 0x3C, 0x00, 0x59, 0xB7, 0x36, 0x8B, 0x80, - 0x15, 0x0E, 0xFC, 0x6B, 0x5B, 0x08, 0x6F, 0x35, 0xBA, 0x72, 0x89, 0x39, 0xAB, 0x81, 0xE0, 0x64, - 0x0A, 0x56, 0x3D, 0xCE, 0xCA, 0x32, 0xCF, 0xE0, 0x05, 0x6B, 0x3E, 0xE0, 0xD3, 0xAF, 0xF0, 0xE9, - 0x3F, 0x91, 0xCF, 0xB8, 0xC2, 0x67, 0x7C, 0x06, 0x1F, 0x59, 0x3B, 0x60, 0xF9, 0x13, 0x2C, 0xB3, - 0x71, 0x75, 0xF3, 0x52, 0xE4, 0x6A, 0x9F, 0x44, 0xB2, 0xF6, 0xA9, 0x91, 0x57, 0x48, 0x65, 0x19, - 0x3D, 0xB9, 0x77, 0xC0, 0x7C, 0x5D, 0x51, 0x47, 0x6C, 0x80, 0x1F, 0x33, 0xD0, 0x55, 0xCC, 0x04, - 0xED, 0xEC, 0xA2, 0x01, 0x49, 0xB9, 0x9B, 0x82, 0x2B, 0x4F, 0x3F, 0x83, 0x00, 0xD1, 0x97, 0x52, - 0x56, 0x5D, 0x94, 0x23, 0x67, 0x0D, 0x9C, 0xB9, 0x42, 0xCC, 0x75, 0x2E, 0xF2, 0x61, 0xAC, 0x29, - 0xDE, 0xBC, 0x9C, 0x81, 0x6C, 0x5C, 0xCA, 0x8A, 0x3D, 0x8A, 0xB1, 0x7C, 0x84, 0x34, 0x3B, 0xF3, - 0x79, 0x43, 0x9D, 0xEF, 0x93, 0x28, 0x1C, 0x7D, 0xD2, 0x15, 0x57, 0x7E, 0x09, 0xF1, 0x83, 0x92, - 0x26, 0x43, 0xAA, 0xB2, 0xE8, 0x7A, 0xA3, 0x85, 0x99, 0x26, 0x72, 0x56, 0xD3, 0xC5, 0x92, 0x54, - 0x38, 0x1F, 0xF7, 0x49, 0x7C, 0x43, 0x5F, 0x28, 0xFC, 0x2A, 0x04, 0xBF, 0x0A, 0xAB, 0x7E, 0x15, - 0x0A, 0xBF, 0x9A, 0x56, 0xFD, 0x2A, 0xFC, 0x43, 0xFD, 0x4A, 0xF1, 0xAA, 0x4B, 0x1E, 0x9E, 0x2F, - 0x31, 0xD0, 0x42, 0x90, 0x86, 0x78, 0x2C, 0xDE, 0x06, 0x18, 0x72, 0xFB, 0xE8, 0x45, 0x7D, 0xF4, - 0xBB, 0x01, 0x73, 0x3E, 0x9B, 0x0D, 0xC5, 0x07, 0x06, 0x6A, 0x74, 0xC5, 0x1E, 0xA3, 0x1F, 0xB0, - 0x77, 0x9B, 0x7B, 0x22, 0xF4, 0x9F, 0x17, 0xA7, 0x0B, 0xA3, 0xD2, 0x71, 0x5B, 0xCA, 0x27, 0x00, - 0x2D, 0xDF, 0xFE, 0x3C, 0xAB, 0x39, 0xBC, 0x99, 0x53, 0x51, 0x57, 0x09, 0xF5, 0xCA, 0x76, 0x85, - 0xC5, 0x76, 0x39, 0x72, 0xBF, 0x2A, 0x7D, 0x25, 0xE3, 0x90, 0xF2, 0x3C, 0xD9, 0x56, 0x8E, 0xCF, - 0xFF, 0x24, 0x73, 0x39, 0x1A, 0xEF, 0x8A, 0x9A, 0x54, 0x39, 0xE4, 0x1D, 0x25, 0x60, 0xA5, 0x3A, - 0x75, 0xAC, 0x3C, 0x2E, 0x16, 0x29, 0x89, 0xB0, 0x76, 0xCC, 0x94, 0xE2, 0x08, 0xAF, 0x12, 0x9A, - 0xFA, 0x0F, 0xFC, 0x83, 0xE6, 0x63, 0x17, 0x8E, 0x89, 0x17, 0xB8, 0x99, 0x3C, 0x3D, 0x00, 0x73, - 0x2C, 0xE5, 0x4F, 0x6C, 0x10, 0x81, 0x0C, 0xF6, 0x80, 0xA7, 0x4C, 0xC0, 0x4E, 0xB1, 0x85, 0x31, - 0xB0, 0x81, 0x71, 0xBA, 0x3D, 0xC1, 0x1B, 0xC6, 0x94, 0xD9, 0x2B, 0x05, 0x60, 0x71, 0x52, 0x4B, - 0x52, 0x88, 0x6C, 0x70, 0xB6, 0x7D, 0xCF, 0xCB, 0x35, 0xEC, 0xA2, 0xA1, 0xE0, 0xCD, 0x0A, 0x46, - 0x90, 0x13, 0x80, 0x6A, 0xA3, 0x4D, 0x18, 0x3E, 0x9B, 0x92, 0xCA, 0x3C, 0x9E, 0x64, 0x08, 0xF3, - 0x74, 0xC0, 0x09, 0xD7, 0xCD, 0x96, 0x32, 0x9D, 0x3A, 0x94, 0x45, 0x53, 0x9E, 0x4A, 0x44, 0xE4, - 0x4E, 0xFB, 0x9F, 0x9F, 0xDE, 0xFE, 0x48, 0x69, 0x22, 0x4E, 0xF0, 0x70, 0xA0, 0xD6, 0xBB, 0xCC, - 0x04, 0xBE, 0xE5, 0x3F, 0x85, 0x98, 0xC2, 0x9A, 0x20, 0x6E, 0x42, 0x26, 0x85, 0xAD, 0xBC, 0x6C, - 0x75, 0x41, 0x22, 0x2F, 0xF6, 0xC9, 0xC7, 0x0F, 0x6F, 0x9A, 0xB4, 0x65, 0xB0, 0x4E, 0x96, 0x34, - 0xA8, 0x1D, 0x6A, 0xE2, 0x72, 0x7C, 0x73, 0x45, 0xD1, 0xB6, 0xD5, 0x61, 0xAE, 0xD2, 0x29, 0x2A, - 0x59, 0xA2, 0xAA, 0x15, 0xC2, 0x9A, 0xA3, 0x4E, 0x1C, 0xC1, 0xE2, 0xFC, 0x2D, 0xA6, 0x4A, 0xC4, - 0x5B, 0xE1, 0xAF, 0x0B, 0xA7, 0x79, 0x6E, 0xD0, 0xDA, 0x41, 0xC6, 0xD9, 0x9F, 0x4E, 0xA3, 0x0E, - 0x1B, 0x83, 0xC9, 0x26, 0x69, 0x41, 0x93, 0x6D, 0x9A, 0xD8, 0xC8, 0xD3, 0x2B, 0xA9, 0xE3, 0xFF, - 0xBA, 0x7E, 0xF7, 0x33, 0x20, 0x7A, 0x0A, 0x09, 0x2E, 0x8E, 0xCF, 0x92, 0x38, 0xCA, 0xC8, 0x0D, - 0xB9, 0xA7, 0x27, 0x0C, 0xF6, 0x84, 0x88, 0xA2, 0xDA, 0x66, 0xD4, 0xA6, 0xC4, 0x7B, 0x12, 0xC2, - 0x36, 0x56, 0xCA, 0x23, 0x7B, 0x5C, 0x4D, 0x42, 0xA2, 0xA6, 0xFE, 0x9F, 0xAF, 0x6E, 0xE0, 0x5C, - 0x6F, 0x3C, 0x33, 0x5B, 0xD0, 0x94, 0xC1, 0xF6, 0x34, 0x2B, 0xDB, 0xC5, 0xCB, 0x8C, 0xBB, 0xBC, - 0x8D, 0xD9, 0x37, 0x2C, 0x8C, 0x08, 0xD0, 0x85, 0xED, 0x4C, 0x36, 0xAC, 0x04, 0x20, 0xB3, 0x6F, - 0xC2, 0x7F, 0xDF, 0xE0, 0x77, 0x45, 0xCA, 0xFC, 0x1F, 0x90, 0xBD, 0x1E, 0x5F, 0x17, 0xDE, 0xB6, - 0xB4, 0x3A, 0x3C, 0xA3, 0x3D, 0xE1, 0x7E, 0xE5, 0x7B, 0x20, 0x49, 0x20, 0x4A, 0xA1, 0x80, 0x6A, - 0x5A, 0xA7, 0xD3, 0xD1, 0x2F, 0xF0, 0xF0, 0xF0, 0x1A, 0xAF, 0xFF, 0x9B, 0x66, 0x0B, 0xF3, 0xDD, - 0xFD, 0x9E, 0x8B, 0x74, 0x12, 0x06, 0x64, 0xF1, 0xB6, 0xC5, 0x31, 0x07, 0x8F, 0x0E, 0xE6, 0xB3, - 0xA9, 0xAC, 0xB7, 0xB4, 0x76, 0x4F, 0x96, 0x09, 0x45, 0x3A, 0x01, 0x28, 0x6C, 0xE1, 0xC7, 0x0D, - 0xCE, 0x29, 0x7C, 0xE3, 0x75, 0x9C, 0xAE, 0x5F, 0xBA, 0xD4, 0x75, 0xA2, 0x8E, 0x9B, 0x24, 0xB8, - 0x49, 0x1C, 0x8E, 0xD4, 0x3C, 0xBB, 0x9A, 0x72, 0x52, 0x35, 0xD9, 0xDC, 0xF1, 0x90, 0x89, 0x65, - 0x1D, 0xC3, 0x57, 0x33, 0xF7, 0x8B, 0x50, 0xE0, 0xEB, 0xB5, 0x5E, 0x30, 0xF7, 0x8D, 0x90, 0x87, - 0x4B, 0xA3, 0x98, 0xAF, 0x28, 0x69, 0x1B, 0xA1, 0x71, 0xC8, 0xA0, 0xC5, 0x14, 0xED, 0xD6, 0x78, - 0xB2, 0xE3, 0x0A, 0x4B, 0x7B, 0xFF, 0xEE, 0xFA, 0x06, 0x4F, 0x13, 0x8C, 0x8F, 0xCE, 0x2C, 0xCE, - 0xED, 0x70, 0x15, 0x76, 0x20, 0x32, 0xBD, 0xBA, 0x05, 0x8E, 0x6F, 0x01, 0x90, 0x09, 0x00, 0x2C, - 0x6A, 0x87, 0x17, 0x9D, 0x01, 0x46, 0x8C, 0x67, 0x16, 0x0E, 0x8D, 0x23, 0x1C, 0x5A, 0xF1, 0x38, - 0xE6, 0x5E, 0x53, 0x37, 0xF7, 0xAF, 0xA7, 0xED, 0xD5, 0x13, 0x76, 0x29, 0xF7, 0xB9, 0xF3, 0x2C, - 0x4B, 0x4C, 0xA7, 0x3B, 0x35, 0x3E, 0xAA, 0xA0, 0x81, 0x5B, 0x46, 0x03, 0xE1, 0xBC, 0xEC, 0x5F, - 0x24, 0x34, 0xF5, 0xEF, 0xC0, 0xF9, 0xD8, 0x6F, 0xE1, 0xF1, 0x4C, 0x07, 0x1B, 0xE0, 0x3F, 0x83, - 0x63, 0x36, 0x28, 0x86, 0x79, 0x6D, 0xD4, 0xDA, 0x17, 0x7E, 0xAB, 0x5E, 0x10, 0xFC, 0xA9, 0x9E, - 0xBB, 0xB8, 0x3B, 0xC7, 0x77, 0xF1, 0x92, 0x40, 0x8D, 0x9C, 0x0F, 0x7B, 0x2D, 0x48, 0x79, 0x10, - 0xEB, 0x2A, 0x17, 0x37, 0xDA, 0xB7, 0x7A, 0x4B, 0xCA, 0x7D, 0x7C, 0x13, 0xEE, 0x7E, 0xA7, 0x73, - 0x17, 0xD7, 0x2F, 0x4F, 0x33, 0x02, 0x65, 0xFE, 0x27, 0x90, 0x73, 0xC5, 0x9D, 0x88, 0x49, 0xE7, - 0xAB, 0xFC, 0xC4, 0x58, 0xF1, 0x73, 0x01, 0x39, 0x91, 0xF8, 0x51, 0xD5, 0x54, 0xC7, 0x5F, 0x55, - 0x9D, 0xF6, 0x0C, 0xB6, 0xFD, 0x27, 0x10, 0x4C, 0x22, 0x52, 0x19, 0xC5, 0x8C, 0x07, 0x01, 0x4A, - 0xEF, 0xEA, 0x8F, 0x04, 0x26, 0x8E, 0x4B, 0x05, 0xDD, 0x23, 0xF0, 0x88, 0xFF, 0xFE, 0x03, 0x96, - 0xF2, 0xD7, 0x40, 0x92, 0x6A, 0x61, 0xE7, 0x82, 0xD2, 0xC1, 0xEE, 0x9E, 0xB8, 0x67, 0x3B, 0xC1, - 0x46, 0xDE, 0xB8, 0x3D, 0xCD, 0xC4, 0xFE, 0x10, 0x07, 0x39, 0xC6, 0x44, 0x5E, 0x38, 0x27, 0xF7, - 0x67, 0x7A, 0x97, 0x04, 0xD8, 0x3F, 0xCD, 0x17, 0x0F, 0xC9, 0x15, 0x19, 0x9D, 0x83, 0xBC, 0xAE, - 0x82, 0xE4, 0x88, 0x3B, 0x3A, 0x16, 0x7C, 0x64, 0xED, 0xF1, 0xC5, 0x0B, 0xBD, 0x5F, 0xFE, 0xAA, - 0xF6, 0xFE, 0xF6, 0x9B, 0xC0, 0x7C, 0x81, 0x75, 0x0B, 0x17, 0x6C, 0xDC, 0xD7, 0x5B, 0x86, 0x6E, - 0xC3, 0xE1, 0x56, 0x8E, 0x6A, 0x95, 0x07, 0x79, 0x6E, 0xE4, 0x81, 0x84, 0x18, 0x16, 0x1C, 0x16, - 0x37, 0x70, 0xCE, 0x9E, 0x3A, 0x9E, 0xC3, 0xA5, 0x11, 0x4D, 0x4D, 0xF0, 0xC1, 0x87, 0x1C, 0xDB, - 0x09, 0x3A, 0x58, 0x7B, 0xEC, 0x9B, 0x06, 0x9D, 0x66, 0x84, 0xBE, 0x41, 0x53, 0x01, 0x2D, 0x37, - 0x15, 0x6B, 0x8F, 0x2E, 0xA6, 0xD6, 0xC3, 0x00, 0xC1, 0xB7, 0x26, 0x3A, 0xC7, 0x0E, 0x0B, 0x93, - 0xEE, 0x5B, 0xED, 0xC8, 0x88, 0x66, 0x7D, 0x13, 0x8E, 0xEC, 0x1E, 0x58, 0x74, 0x9A, 0xCF, 0x0F, - 0xA9, 0x7E, 0x18, 0xF3, 0xBB, 0x59, 0xD0, 0x31, 0x9A, 0x0F, 0x1E, 0x31, 0x0C, 0x8B, 0xF4, 0xCA, - 0xE1, 0xB2, 0xA4, 0x3A, 0x0C, 0x95, 0x8F, 0x8A, 0xA5, 0x45, 0x30, 0x15, 0xB8, 0xF1, 0x16, 0x6F, - 0x3A, 0x9B, 0x27, 0xDC, 0xF9, 0x9C, 0x04, 0xFD, 0x38, 0xAD, 0xBC, 0xC4, 0x3E, 0x40, 0x61, 0xF6, - 0xDB, 0x73, 0xA5, 0x24, 0x5F, 0xC9, 0xE4, 0x4F, 0xC9, 0x73, 0x94, 0x27, 0x43, 0x76, 0x61, 0xB3, - 0xA7, 0xE9, 0x95, 0x3B, 0x67, 0xB1, 0x91, 0xE2, 0x50, 0x67, 0x9C, 0x88, 0xBA, 0x75, 0x97, 0xC2, - 0x15, 0x6A, 0xBC, 0x35, 0x65, 0xC3, 0xBE, 0xFD, 0x78, 0xFD, 0xEA, 0x83, 0x7A, 0x62, 0xC3, 0xAC, - 0x04, 0xC4, 0x8B, 0x28, 0x64, 0x2B, 0x17, 0xFA, 0x8B, 0xF7, 0xDF, 0x5D, 0x5F, 0xFF, 0xF3, 0xDD, - 0x87, 0x97, 0xF5, 0x43, 0x28, 0x0E, 0xB9, 0xFE, 0xF8, 0xFD, 0x4F, 0x6F, 0x6E, 0xA6, 0x5B, 0xCC, - 0x2A, 0x83, 0x3A, 0xC4, 0x0F, 0x1E, 0x38, 0xB9, 0xC1, 0xB1, 0x2D, 0x50, 0x8E, 0x6D, 0x2F, 0x5E, - 0x00, 0x84, 0x3F, 0x83, 0x26, 0xE9, 0x9A, 0x65, 0x0B, 0xD8, 0x1B, 0x81, 0x7A, 0x76, 0x8A, 0x58, - 0xD8, 0x08, 0xE4, 0xD9, 0x09, 0x95, 0xAA, 0x16, 0xB0, 0x21, 0x24, 0x39, 0x77, 0x41, 0xE4, 0xC7, - 0x77, 0x35, 0xD1, 0xE2, 0xF8, 0xED, 0x89, 0x73, 0xD5, 0x15, 0xD7, 0xD3, 0x57, 0x5D, 0xF1, 0x83, - 0x19, 0xF6, 0xFF, 0xCC, 0xF9, 0x7F, 0xE5, 0xCC, 0x32, 0xCA, 0x3A, 0x47, 0x00, 0x00 -}; - -size_t a_SIZE = 4862; -const char * a_NAME = "ool.html.gz"; diff --git a/embedded/package-lock.json b/embedded/package-lock.json new file mode 100644 index 00000000..87ff3fe1 --- /dev/null +++ b/embedded/package-lock.json @@ -0,0 +1,5665 @@ +{ + "name": "embedded4ESP3D", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "CSSselect": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz", + "integrity": "sha1-+Kt+H4QYzmPNput713ioXX7EkrI=", + "dev": true, + "requires": { + "CSSwhat": "0.4", + "domutils": "1.4" + } + }, + "CSSwhat": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz", + "integrity": "sha1-hn2g/zn3eGEyQsRM/qg/CqTr35s=", + "dev": true + }, + "acorn": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.6.4.tgz", + "integrity": "sha1-6x9FtKQ/ox0DcBpexG87Umc+kO4=", + "dev": true + }, + "alter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", + "dev": true, + "requires": { + "stable": "~0.1.3" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "async-done": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", + "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^1.0.7", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-replace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-replace/-/async-replace-1.0.1.tgz", + "integrity": "sha1-0/CFfM0C8elOsUnLX4nVisTwIdY=", + "dev": true, + "requires": { + "async": "^1.4.2" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "binaryextensions": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.2.tgz", + "integrity": "sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "bufferstreams": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz", + "integrity": "sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "cdnizer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/cdnizer/-/cdnizer-3.0.2.tgz", + "integrity": "sha512-XTBGCv61pn9r8o/HDkUlPLv9hQ1bx0maWj07UdIU1VV/2P5KAswN9OEHPu6Tz7C5zMXIywdERtpCw0osQYm1ZA==", + "dev": true, + "requires": { + "cdnjs-cdn-data": "^0.1.1", + "google-cdn-data": "^0.1.6", + "jsdelivr-cdn-data": "git://github.com/shahata/jsdelivr-cdn-data.git#d014a2ad1bdfb4c6e3d3cefc7f264435281b91e0", + "lodash": "^4.17.11", + "minimatch": "^3.0.2" + } + }, + "cdnjs-cdn-data": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cdnjs-cdn-data/-/cdnjs-cdn-data-0.1.2.tgz", + "integrity": "sha1-hl00uk5I3Rtz/WaOJKYaWt+biyE=", + "dev": true, + "requires": { + "semver": "~5.0.1" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cheerio": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.13.1.tgz", + "integrity": "sha1-SK8RNFYbNSf4PZFWxPmo69grBuw=", + "dev": true, + "requires": { + "CSSselect": "~0.4.0", + "entities": "0.x", + "htmlparser2": "~3.4.0", + "underscore": "~1.5" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "^7.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "deprecated": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.2.tgz", + "integrity": "sha1-vJ3Pm86RdPz5CQzxKVExxDnGgv0=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.2.1.tgz", + "integrity": "sha1-Wd+dzSJ+gIs2Wuc+H2aErD2Ub8I=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", + "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-0.5.0.tgz", + "integrity": "sha1-9hHLWuIhBQ4AEsZpeVA/164ZzEk=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "filesize": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.1.6.tgz", + "integrity": "sha1-WISSTvyBpkTjcJqsQDIWGDw9eYo=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "fined": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", + "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fork-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", + "integrity": "sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "google-cdn-data": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/google-cdn-data/-/google-cdn-data-0.1.25.tgz", + "integrity": "sha1-nDwxSasYp8LV7V8PC07ovEWZK3E=", + "dev": true + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "gulp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", + "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", + "dev": true, + "requires": { + "glob-watcher": "^5.0.0", + "gulp-cli": "^2.0.0", + "undertaker": "^1.0.0", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", + "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^2.5.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } + } + }, + "gulp-bytediff": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-bytediff/-/gulp-bytediff-1.0.0.tgz", + "integrity": "sha1-VXPidyiwsW1cqIaU/NNhYzj5xS0=", + "dev": true, + "requires": { + "filesize": "~3.1.3", + "gulp-util": "~3.0.6", + "map-stream": "~0.0.6" + } + }, + "gulp-cdnizer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-cdnizer/-/gulp-cdnizer-2.0.2.tgz", + "integrity": "sha512-kXTdxYMiUoQXvRUaqwm5+uGR2LqUy/7GHde2EtRBK1qY0BUKnbV2mInLBvdsITFQpZ/F6zX2FVFIpLa0qz/8Bw==", + "dev": true, + "requires": { + "cdnizer": "^3.0.2", + "gulp-util": "^3.0.0", + "through2": "^0.5.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-clean-css": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.0.0.tgz", + "integrity": "sha512-/Hs+dmclQfFBSpwrAKd4wTVsahJvrVIg2ga0J7Eo7DKVTVfJrM7wXlfU1mK9iJ9Y7OmkO/YstZVtmhfAKzZ00g==", + "dev": true, + "requires": { + "clean-css": "4.2.1", + "plugin-error": "1.0.1", + "through2": "3.0.0", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "through2": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", + "integrity": "sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==", + "dev": true, + "requires": { + "readable-stream": "2 || 3", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + } + }, + "gulp-gzip": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gulp-gzip/-/gulp-gzip-1.4.2.tgz", + "integrity": "sha512-ZIxfkUwk2XmZPTT9pPHrHUQlZMyp9nPhg2sfoeN27mBGpi7OaHnOD+WCN41NXjfJQ69lV1nQ9LLm1hYxx4h3UQ==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "bytes": "^3.0.0", + "fancy-log": "^1.3.2", + "plugin-error": "^1.0.0", + "stream-to-array": "^2.3.0", + "through2": "^2.0.3" + } + }, + "gulp-htmlmin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz", + "integrity": "sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA==", + "dev": true, + "requires": { + "html-minifier": "^3.5.20", + "plugin-error": "^1.0.1", + "through2": "^2.0.3" + } + }, + "gulp-if": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", + "integrity": "sha1-pJe351cwBQQcqivIt92jyARE1ik=", + "dev": true, + "requires": { + "gulp-match": "^1.0.3", + "ternary-stream": "^2.0.1", + "through2": "^2.0.1" + } + }, + "gulp-jshint": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-jshint/-/gulp-jshint-2.1.0.tgz", + "integrity": "sha512-sP3NK8Y/1e58O0PH9t6s7DAr/lKDSUbIY207oWSeufM6/VclB7jJrIBcPCsyhrFTCDUl9DauePbt6VqP2vPM5w==", + "dev": true, + "requires": { + "lodash": "^4.12.0", + "minimatch": "^3.0.3", + "plugin-error": "^0.1.2", + "rcloader": "^0.2.2", + "through2": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + } + } + }, + "gulp-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.0.3.tgz", + "integrity": "sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4=", + "dev": true, + "requires": { + "minimatch": "^3.0.3" + } + }, + "gulp-ng-annotate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-ng-annotate/-/gulp-ng-annotate-2.1.0.tgz", + "integrity": "sha512-wjazOa5qE83akCih+lK2a0LFvkLbIMeblxr54ofmc3WKJ3Ipx/BM98ZCtCDfQW/008EVUSRqwfEjFKEEGI0QbA==", + "dev": true, + "requires": { + "bufferstreams": "^1.1.0", + "merge": "^1.2.0", + "ng-annotate": "^1.2.1", + "plugin-error": "^0.1.2", + "through2": "^2.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + } + } + }, + "gulp-remove-code": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/gulp-remove-code/-/gulp-remove-code-3.0.4.tgz", + "integrity": "sha512-nfGXuE2ra/o008t+XPzd3/dbkgmO4XNLEUibCFlv4KS5+V2cLGU0m9Rmdd4L9ZkduwC1+/AuSEyySt7CZhcLzw==", + "dev": true, + "requires": { + "bufferstreams": "^2.0.1", + "escape-string-regexp": "^1.0.5", + "object.entries": "^1.0.4", + "plugin-error": "^1.0.1", + "through2": "^2.0.3" + }, + "dependencies": { + "bufferstreams": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-2.0.1.tgz", + "integrity": "sha512-ZswyIoBfFb3cVDsnZLLj2IDJ/0ppYdil/v2EGlZXvoefO689FokEmFEldhN5dV7R2QBxFneqTJOMIpfqhj+n0g==", + "dev": true, + "requires": { + "readable-stream": "^2.3.6" + } + } + } + }, + "gulp-replace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", + "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", + "dev": true, + "requires": { + "istextorbinary": "2.2.1", + "readable-stream": "^2.0.1", + "replacestream": "^4.0.0" + } + }, + "gulp-smoosher": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/gulp-smoosher/-/gulp-smoosher-0.0.9.tgz", + "integrity": "sha1-IiqiHu5TEzzvKL8ki1xJdbid2x8=", + "dev": true, + "requires": { + "async": "^0.9.0", + "async-replace": "^1.0.0", + "cheerio": "~0.13.1", + "gulp-util": "~2.2.14", + "lodash": "^3.10.1", + "through2": "~0.4.1" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "dependencies": { + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-uglify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.1.tgz", + "integrity": "sha512-KVffbGY9d4Wv90bW/B1KZJyunLMyfHTBbilpDvmcrj5Go0/a1G3uVpt+1gRBWSw/11dqR3coJ1oWNTt1AiXuWQ==", + "dev": true, + "requires": { + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash": "^4.13.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-4.2.0.tgz", + "integrity": "sha512-I+697f6jf+PncdTrqfuwoauxgnLG1yHRg3vlmvDgmJuEnlEHy4meBktJ/oHgfyg4tp6X25wuZqUOraVeVg97wQ==", + "dev": true, + "requires": { + "get-stream": "^3.0.0", + "plugin-error": "^0.1.2", + "through2": "^2.0.1", + "vinyl": "^2.1.0", + "yazl": "^2.1.0" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "htmlparser2": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.4.0.tgz", + "integrity": "sha1-oc1l9YI60oXhnWOwha1yLQpR6uc=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.2", + "domutils": "1.3", + "readable-stream": "1.1" + }, + "dependencies": { + "domutils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.3.0.tgz", + "integrity": "sha1-mtTVm1r2ymhMYv5tdo7xcOcN8ZI=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istextorbinary": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "dev": true, + "requires": { + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" + } + }, + "jsdelivr-cdn-data": { + "version": "git://github.com/shahata/jsdelivr-cdn-data.git#d014a2ad1bdfb4c6e3d3cefc7f264435281b91e0", + "from": "git://github.com/shahata/jsdelivr-cdn-data.git#d014a2ad1bdfb4c6e3d3cefc7f264435281b91e0", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "jshint": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.1.tgz", + "integrity": "sha512-9GpPfKeffYBl7oBDX2lHPG16j0AM7D2bn3aLy9DaWTr6CWa0i/7UGhX8WLZ7V14QQnnr4hXbjauTLYg06F+HYw==", + "dev": true, + "requires": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "~4.17.10", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + }, + "dependencies": { + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._escapehtmlchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", + "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1" + } + }, + "lodash._escapestringchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", + "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._htmlescapes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", + "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=", + "dev": true + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._reunescapedhtml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", + "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.defaults": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", + "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "dev": true, + "requires": { + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "ng-annotate": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ng-annotate/-/ng-annotate-1.2.2.tgz", + "integrity": "sha1-3D/FG6Cy+LOF2+BH9NoG9YCh/WE=", + "dev": true, + "requires": { + "acorn": "~2.6.4", + "alter": "~0.2.0", + "convert-source-map": "~1.1.2", + "optimist": "~0.6.1", + "ordered-ast-traverse": "~1.1.1", + "simple-fmt": "~0.1.0", + "simple-is": "~0.2.0", + "source-map": "~0.5.3", + "stable": "~0.1.5", + "stringmap": "~0.2.2", + "stringset": "~0.2.1", + "tryor": "~0.1.2" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + } + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "ordered-ast-traverse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz", + "integrity": "sha1-aEOhcLwO7otSDMjdwd3TqjD6BXw=", + "dev": true, + "requires": { + "ordered-esprima-props": "~1.1.0" + } + }, + "ordered-esprima-props": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz", + "integrity": "sha1-qYJwht9fAQqmDpvQK24DNc6i/8s=", + "dev": true + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", + "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "rcfinder": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/rcfinder/-/rcfinder-0.1.9.tgz", + "integrity": "sha1-8+gPOH3fmugK4wpBADKWQuroERU=", + "dev": true, + "requires": { + "lodash.clonedeep": "^4.3.2" + } + }, + "rcloader": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/rcloader/-/rcloader-0.2.2.tgz", + "integrity": "sha1-WNIpi0YtC5v9ITPSoex0+9cFxxc=", + "dev": true, + "requires": { + "lodash.assign": "^4.2.0", + "lodash.isobject": "^3.0.2", + "lodash.merge": "^4.6.0", + "rcfinder": "^0.1.6" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", + "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-fmt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", + "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=", + "dev": true + }, + "simple-is": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", + "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringmap": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", + "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=", + "dev": true + }, + "stringset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", + "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "ternary-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-2.0.1.tgz", + "integrity": "sha1-Bk5Im0tb9gumpre8fy9cJ07Pgmk=", + "dev": true, + "requires": { + "duplexify": "^3.5.0", + "fork-stream": "^0.0.4", + "merge-stream": "^1.0.0", + "through2": "^2.0.1" + } + }, + "textextensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.4.0.tgz", + "integrity": "sha512-qftQXnX1DzpSV8EddtHIT0eDDEiBF8ywhFYR2lI9xrGtxqKN+CvLXhACeCIGbCpQfxxERbrkZEFb8cZcDKbVZA==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tryor": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", + "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.5.2.tgz", + "integrity": "sha1-EzXF5PXm0zu7SwBrqMhqAPVW3gg=", + "dev": true + }, + "undertaker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", + "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", + "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/embedded/package.json b/embedded/package.json index 00299619..b7a2d060 100644 --- a/embedded/package.json +++ b/embedded/package.json @@ -2,27 +2,26 @@ "name": "embedded4ESP3D", "description": "Embedded files for ESP3D", "devDependencies": { - "del": "^2.2.2", - "deprecated": "0.0.1", - "fs": "0.0.1-security", - "gulp": "github:gulpjs/gulp#4.0", - "gulp-bytediff": "^1.0.0", - "gulp-cdnizer": "^1.1.7", - "gulp-clean-css": "^2.4.0", - "gulp-concat": "^2.6.1", - "gulp-gzip": "^1.4.0", - "gulp-htmlmin": "^3.0.0", - "gulp-if": "^2.0.2", - "gulp-jshint": "^2.0.4", - "gulp-ng-annotate": "^2.0.0", - "gulp-remove-code": "^1.0.2", - "gulp-replace": "^0.5.4", - "gulp-smoosher": "0.0.9", - "gulp-uglify": "^2.1.2", - "gulp-util": "^3.0.1", - "gulp-zip": "^3.2.0", - "jshint": "^2.9.5", - "merge-stream": "^1.0.1" + "del": "latest", + "deprecated": "latest", + "fs": "latest", + "gulp": "^4.0.0", + "gulp-bytediff": "latest", + "gulp-cdnizer": "latest", + "gulp-clean-css": "latest", + "gulp-concat": "latest", + "gulp-gzip": "latest", + "gulp-htmlmin": "latest", + "gulp-if": "latest", + "gulp-jshint": "latest", + "gulp-ng-annotate": "latest", + "gulp-remove-code": "latest", + "gulp-replace": "latest", + "gulp-smoosher": "latest", + "gulp-uglify": "latest", + "gulp-zip": "latest", + "jshint": "latest", + "merge-stream": "latest" }, "repository": "https://github.com/luc-github/ESP3D", "author": "Luc LEBOSSE", diff --git a/embedded/tool.html.gz b/embedded/tool.html.gz index 4478b2f1..75935b19 100644 Binary files a/embedded/tool.html.gz and b/embedded/tool.html.gz differ diff --git a/embedded/www/js/script.js b/embedded/www/js/script.js index c24253e3..116507bc 100644 --- a/embedded/www/js/script.js +++ b/embedded/www/js/script.js @@ -43,6 +43,7 @@ function compareStrings(a, b) { function dispatchfilestatus(jsonresponse) { var content =""; +var display_message = false; content ="  Status: "+jsonresponse.status; content +="  |  Total space: "+jsonresponse.total; content +="  |  Used space: "+jsonresponse.used; @@ -56,6 +57,9 @@ if (currentpath!="/") var previouspath = currentpath.slice(0,pos+1); content +=""+back_icon()+" Up.."; } +if (currentpath=="/") { + display_message = true; +} jsonresponse.files.sort(function(a, b) { return compareStrings(a.name, b.name); }); @@ -68,6 +72,9 @@ if (String(jsonresponse.files[i1].size) != "-1") content +=" "; content +="
"; content +=jsonresponse.files[i1].name; + if ((jsonresponse.files[i1].name == "index.html.gz")||(jsonresponse.files[i1].name == "index.html")){ + display_message = false; + } content +="
"; content +=jsonresponse.files[i1].size; content +="
"; @@ -89,6 +96,12 @@ if (String(jsonresponse.files[i2].size) == "-1") content +="
"; } } +if (display_message) { + + document.getElementById('MSG').innerHTML = "File index.html.gz is missing, please upload it"; + } else { + document.getElementById('MSG').innerHTML = "Go to ESP3D interface"; + } document.getElementById('file_list').innerHTML=content; document.getElementById('path').innerHTML=navbar();} @@ -116,7 +129,7 @@ xmlhttp.onreadystatechange = function() { var jsonresponse = JSON.parse(xmlhttp.responseText); document.getElementById('loader').style.visibility="hidden"; dispatchfilestatus(jsonresponse);} - else SubmitRequest () + else SubmitRequest (); } }; xmlhttp.open("GET", url, true); @@ -171,8 +184,7 @@ var files = document.getElementById('fw-select').files; if (files.length==0)return; document.getElementById('uploadfw-button').style.visibility = 'hidden'; document.getElementById('fw-select').style.visibility = 'hidden'; -document.getElementById('msg').style.visibility = "visible"; -document.getElementById('msg').innerHTML=""; +document.getElementById('MSG').innerHTML=""; document.getElementById('SPIFFS').style.display = "none"; document.getElementById('prgfw').style.visibility = "visible"; var formData = new FormData(); @@ -191,7 +203,7 @@ function updateProgress (oEvent) { if (oEvent.lengthComputable) { var percentComplete = (oEvent.loaded / oEvent.total)*100; document.getElementById('prgfw').value=percentComplete; - document.getElementById('msg').innerHTML = "Uploading ..." + percentComplete.toFixed(0)+"%" ; + document.getElementById('MSG').innerHTML = "Uploading ..." + percentComplete.toFixed(0)+"%" ; } else { // Impossible because size is unknown } @@ -199,7 +211,7 @@ function updateProgress (oEvent) { xmlhttp.onload = function () { if (xmlhttp.status === 200) { document.getElementById('uploadfw-button').value = 'Upload'; -document.getElementById('msg').innerHTML="Restarting, please wait...."; +document.getElementById('MSG').innerHTML="Restarting, please wait...."; document.getElementById('counter').style.visibility = "visible"; document.getElementById('uploadfw-button').style.visibility = 'hidden'; document.getElementById('uploadfw-button').style.width = '0px'; @@ -220,7 +232,9 @@ else if (jsonresponse.status=='3') i5=i5+1; var x = document.getElementById("prgfw"); x.value=i5; - document.getElementById('counter').innerHTML=41-i5; + var st = 41-i5; + st = st + " seconds"; + document.getElementById('counter').innerHTML=st; if (i5>40) { clearInterval(interval); diff --git a/embedded/www/tool.html b/embedded/www/tool.html index ea68774e..94a726d5 100644 --- a/embedded/www/tool.html +++ b/embedded/www/tool.html @@ -5,15 +5,37 @@ -
- V1.2 -    + +
+

-
-

It seems you do not have any index.html neither index.html.gz, please upload it or update your firmware if necessary.

- you can find one here : https://github.com/luc-github/ESP3D-WEBUI -
-
Flash Filesystem
@@ -65,7 +87,7 @@ - +
diff --git a/esp3d/command.cpp b/esp3d/command.cpp index 63808ac7..cd7295cf 100644 --- a/esp3d/command.cpp +++ b/esp3d/command.cpp @@ -43,6 +43,11 @@ int ChannelAttached2Pin[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; #include "DHTesp.h" extern DHTesp dht; #endif + +#ifdef NOTIFICATION_FEATURE +#include "notifications_service.h" +#endif + String COMMAND::buffer_serial; String COMMAND::buffer_tcp; @@ -441,6 +446,7 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a //restart time client case 114: { CONFIG::init_time_client(); + ESPCOM::println (OK_CMD_MSG, output, espresponse); LOG ("restart time client\r\n") } break; @@ -462,7 +468,7 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a stmp += String(tmstruct.tm_min) + ":"; if (tmstruct.tm_sec < 10) stmp +="0"; stmp += String(tmstruct.tm_sec); - ESPCOM::println(stmp.c_str(), output); + ESPCOM::println(stmp.c_str(), output, espresponse); } break; #endif @@ -694,6 +700,13 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a } break; #endif + //display ESP3D EEPROM version detected + case 300: + { + uint8_t v = CONFIG::get_EEPROM_version(); + ESPCOM::println (String(v).c_str(), output, espresponse); + } + break; //Get full EEPROM settings content //[ESP400] case 400: { @@ -1077,7 +1090,6 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a ESPCOM::print (F ("\",\"H\":\"AP Static Gateway\"}"), output, espresponse); #if defined(TIMESTAMP_FEATURE) ESPCOM::println (F (","), output, espresponse); - //26-Time zone ESPCOM::print (F ("{\"F\":\"network\",\"P\":\""), output, espresponse); ESPCOM::print ( (const char *) CONFIG::intTostr (EP_TIMEZONE), output, espresponse); @@ -1160,6 +1172,71 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a ESPCOM::print ( (const char *) CONFIG::intTostr (MIN_DATA_LENGTH), output, espresponse); ESPCOM::print (F ("\"}"), output, espresponse); #endif + +#ifdef NOTIFICATION_FEATURE + ESPCOM::println (F (","), output, espresponse); + //Notification type + ESPCOM::print (F ("{\"F\":\"network\",\"P\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_NOTIFICATION_TYPE), output, espresponse); + ESPCOM::print (F("\",\"T\":\"B\",\"V\":\""), output, espresponse); + if (!CONFIG::read_byte (ESP_NOTIFICATION_TYPE, &bbuf ) ) { + ESPCOM::print ("???", output, espresponse); + } else { + ESPCOM::print ( (const char *) CONFIG::intTostr (bbuf), output, espresponse); + } + ESPCOM::print (F("\",\"H\":\"Notification\",\"O\":[{\"None\":\"0\"},{\"Pushover\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_PUSHOVER_NOTIFICATION), output, espresponse); + ESPCOM::print (F("\"},{\"Email\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_EMAIL_NOTIFICATION), output, espresponse); + ESPCOM::print (F("\"},{\"Line\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_LINE_NOTIFICATION), output, espresponse); + ESPCOM::print (F("\"}]}"), output, espresponse); + ESPCOM::println (F (","), output, espresponse); + //Token 1 + ESPCOM::print (F("{\"F\":\"network\",\"P\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_NOTIFICATION_TOKEN1), output, espresponse); + ESPCOM::print ( F("\",\"T\":\"S\",\"V\":\""), output, espresponse); + if (!CONFIG::read_string (ESP_NOTIFICATION_TOKEN1, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + ESPCOM::print ("???", output, espresponse); + } else { + ESPCOM::print ("********", output, espresponse); + } + ESPCOM::print ( F("\",\"S\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (MAX_NOTIFICATION_TOKEN_LENGTH), output, espresponse); + ESPCOM::print ( F ("\",\"H\":\"Token 1\",\"M\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (MIN_NOTIFICATION_TOKEN_LENGTH), output, espresponse); + ESPCOM::print ( F("\"}"), output, espresponse); + ESPCOM::println (F (","), output, espresponse); + //Token 2 + ESPCOM::print (F("{\"F\":\"network\",\"P\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_NOTIFICATION_TOKEN2), output, espresponse); + ESPCOM::print ( F("\",\"T\":\"S\",\"V\":\""), output, espresponse); + if (!CONFIG::read_string (ESP_NOTIFICATION_TOKEN2, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + ESPCOM::print ("???", output, espresponse); + } else { + ESPCOM::print ("********", output, espresponse); + } + ESPCOM::print ( F("\",\"S\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (MAX_NOTIFICATION_TOKEN_LENGTH), output, espresponse); + ESPCOM::print ( F ("\",\"H\":\"Token 2\",\"M\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (MIN_NOTIFICATION_TOKEN_LENGTH), output, espresponse); + ESPCOM::print ( F("\"}"), output, espresponse); + ESPCOM::println (F (","), output, espresponse); + //Notifications Settings + ESPCOM::print (F("{\"F\":\"network\",\"P\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (ESP_NOTIFICATION_SETTINGS), output, espresponse); + ESPCOM::print ( F("\",\"T\":\"S\",\"V\":\""), output, espresponse); + if (!CONFIG::read_string (ESP_NOTIFICATION_SETTINGS, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + ESPCOM::print ("???", output, espresponse); + } else { + ESPCOM::print (sbuf, output, espresponse); + } + ESPCOM::print ( F("\",\"S\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (MAX_NOTIFICATION_SETTINGS_LENGTH), output, espresponse); + ESPCOM::print ( F ("\",\"H\":\"Notifications Settings\",\"M\":\""), output, espresponse); + ESPCOM::print ( (const char *) CONFIG::intTostr (MIN_NOTIFICATION_SETTINGS_LENGTH), output, espresponse); + ESPCOM::print ( F("\"}"), output, espresponse); +#endif //NOTIFICATION_FEATURE } if (cmd_params == "printer" || cmd_params == "") { @@ -1470,6 +1547,46 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a } } break; + //[ESP500] + case 500: { //send GCode with check sum caching right line numbering + //be sure serial is locked + if ( (web_interface->blockserial) ) { + break; + } + int32_t linenb = 1; + cmd_params.trim() ; + if (sendLine2Serial (cmd_params, linenb, &linenb))ESPCOM::println (OK_CMD_MSG, output, espresponse); + else { //it may failed because of skip if repetier so let's reset numbering first + if ( ( CONFIG::GetFirmwareTarget() == REPETIER4DV) || (CONFIG::GetFirmwareTarget() == REPETIER) ) { + //reset numbering + String cmd = "M110 N0"; + if (sendLine2Serial (cmd, -1, NULL)){ + linenb = 1; + //if success let's try again to send the command + if (sendLine2Serial (cmd_params, linenb, &linenb))ESPCOM::println (OK_CMD_MSG, output, espresponse); + else { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + response = false; + } + } else { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + response = false; + } + } else { + + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + response = false; + } + } + } + break; + //[ESP501] + case 501: { //send line checksum + cmd_params.trim(); + int8_t chk = Checksum(cmd_params.c_str(),cmd_params.length()); + String schecksum = "Checksum: " + String(chk); + ESPCOM::println (schecksum, output, espresponse); + } #ifdef AUTHENTICATION_FEATURE //Change / Reset user password //[ESP555]pwd= @@ -1503,47 +1620,119 @@ bool COMMAND::execute_command (int cmd, String cmd_params, tpipe output, level_a break; } #endif - //[ESP600] - case 600: { //send GCode with check sum caching right line numbering - //be sure serial is locked - if ( (web_interface->blockserial) ) { - break; +#ifdef NOTIFICATION_FEATURE + //Send Notification + //[ESP600]msg [pwd=] + case 600: +#ifdef AUTHENTICATION_FEATURE + if (auth_type == LEVEL_GUEST) { + ESPCOM::println (INCORRECT_CMD_MSG, output, espresponse); + return false; } - int32_t linenb = 1; - cmd_params.trim() ; - if (sendLine2Serial (cmd_params, linenb, &linenb))ESPCOM::println (OK_CMD_MSG, output, espresponse); - else { //it may failed because of skip if repetier so let's reset numbering first - if ( ( CONFIG::GetFirmwareTarget() == REPETIER4DV) || (CONFIG::GetFirmwareTarget() == REPETIER) ) { - //reset numbering - String cmd = "M110 N0"; - if (sendLine2Serial (cmd, -1, NULL)){ - linenb = 1; - //if success let's try again to send the command - if (sendLine2Serial (cmd_params, linenb, &linenb))ESPCOM::println (OK_CMD_MSG, output, espresponse); - else { - ESPCOM::println (ERROR_CMD_MSG, output, espresponse); - response = false; - } - } else { - ESPCOM::println (ERROR_CMD_MSG, output, espresponse); - response = false; +#endif + parameter = get_param (cmd_params, "", true); + if (parameter.length() == 0) { + ESPCOM::println (INCORRECT_CMD_MSG, output, espresponse); + return false; + } + if (notificationsservice.sendMSG("ESP3D Notification", parameter.c_str())) { + ESPCOM::println (OK_CMD_MSG, output, espresponse); + } else { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + response = false; + } + break; + //Set/Get Notification settings + //[ESP610]type= T1= T2= TS= [pwd=] + //Get will give type and settings only not the protected T1/T2 + case 610: +#ifdef AUTHENTICATION_FEATURE + if (auth_type == LEVEL_GUEST) { + ESPCOM::println (INCORRECT_CMD_MSG, output, espresponse); + return false; + } +#endif + parameter = get_param (cmd_params, "", false); + //get + if (parameter.length() == 0) { + uint8_t Ntype = 0; + if (!CONFIG::read_byte (ESP_NOTIFICATION_TYPE, &Ntype ) ){ + Ntype =0; + } + char sbuf[MAX_DATA_LENGTH + 1]; + static String tmp; + tmp = (Ntype == ESP_PUSHOVER_NOTIFICATION)?"PUSHOVER":(Ntype == ESP_EMAIL_NOTIFICATION)?"EMAIL":(Ntype == ESP_LINE_NOTIFICATION)?"LINE":"NONE"; + if (CONFIG::read_string (ESP_NOTIFICATION_SETTINGS, sbuf, MAX_NOTIFICATION_SETTINGS_LENGTH) ) { + tmp+= " "; + tmp += sbuf; } + ESPCOM::println (tmp.c_str(), output, espresponse); + } else { + response = false; + //type + parameter = get_param (cmd_params, "type="); + if (parameter.length() > 0) { + uint8_t Ntype; + parameter.toUpperCase(); + if (parameter == "NONE") { + Ntype = 0; + } else if (parameter == "PUSHOVER") { + Ntype = ESP_PUSHOVER_NOTIFICATION; + } else if (parameter == "EMAIL") { + Ntype = ESP_EMAIL_NOTIFICATION; + } else if (parameter == "LINE") { + Ntype = ESP_LINE_NOTIFICATION; + } else { + ESPCOM::println (INCORRECT_CMD_MSG, output, espresponse); + return false; + } + if (!CONFIG::write_byte (ESP_NOTIFICATION_TYPE, Ntype) ) { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + return false; + } else { + response = true; + } + } + //Settings + parameter = get_param (cmd_params, "TS="); + if (parameter.length() > 0) { + if (!CONFIG::write_string (ESP_NOTIFICATION_SETTINGS, parameter.c_str() ) ) { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + return false; + } else { + response = true; + } + } + //Token1 + parameter = get_param (cmd_params, "T1="); + if (parameter.length() > 0) { + if (!CONFIG::write_string (ESP_NOTIFICATION_TOKEN1, parameter.c_str() ) ) { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + return false; + } else { + response = true; + } + } + //Token2 + parameter = get_param (cmd_params, "T2="); + if (parameter.length() > 0) { + if (!CONFIG::write_string (ESP_NOTIFICATION_TOKEN2, parameter.c_str() ) ) { + ESPCOM::println (ERROR_CMD_MSG, output, espresponse); + return false; + } else { + response = true; + } + } + if (response) { + //Restart service + notificationsservice.begin(); + ESPCOM::println (OK_CMD_MSG, output, espresponse); } else { - ESPCOM::println (ERROR_CMD_MSG, output, espresponse); - response = false; } } - } - break; - //[ESP601] - case 601: { //send line checksum - cmd_params.trim(); - int8_t chk = Checksum(cmd_params.c_str(),cmd_params.length()); - String schecksum = "Checksum: " + String(chk); - ESPCOM::println (schecksum, output, espresponse); - } break; +#endif //[ESP700] case 700: { //read local file //be sure serial is locked @@ -1747,6 +1936,9 @@ bool COMMAND::check_command (String buffer, tpipe output, bool handlelockserial, if (executecmd) { String ESP_Command; int ESPpos = buffer.indexOf ("[ESP"); + if (ESPpos == -1 && (CONFIG::GetFirmwareTarget() == SMOOTHIEWARE)){ + ESPpos = buffer.indexOf ("[esp"); + } if (ESPpos > -1) { //is there the second part? int ESPpos2 = buffer.indexOf ("]", ESPpos); diff --git a/esp3d/config.cpp b/esp3d/config.cpp index de836500..4ee44399 100644 --- a/esp3d/config.cpp +++ b/esp3d/config.cpp @@ -43,6 +43,10 @@ extern "C" { extern DHTesp dht; #endif +#ifdef NOTIFICATION_FEATURE +#include "notifications_service.h" +#endif + uint8_t CONFIG::FirmwareTarget = UNKNOWN_FW; byte CONFIG::output_flag = DEFAULT_OUTPUT_FLAG; @@ -206,7 +210,7 @@ bool CONFIG::InitBaudrate(long value) #endif wifi_config.baud_rate = baud_rate; - delay (1000); + delay (100); return true; } @@ -228,8 +232,9 @@ void CONFIG::esp_restart (bool async) { LOG ("Restarting\r\n") ESPCOM::flush (DEFAULT_PRINTER_PIPE); + SPIFFS.end(); if (!async) { - delay (100); + delay (1000); } #ifdef ARDUINO_ARCH_ESP8266 //ESP8266 has only serial @@ -435,16 +440,16 @@ char * CONFIG::intTostr (int value) return result; } -String CONFIG::formatBytes (uint32_t bytes) +String CONFIG::formatBytes (uint64_t bytes) { if (bytes < 1024) { - return String (bytes) + " B"; + return String ((uint16_t)bytes) + " B"; } else if (bytes < (1024 * 1024) ) { - return String (bytes / 1024.0) + " KB"; + return String ((float)(bytes / 1024.0)) + " KB"; } else if (bytes < (1024 * 1024 * 1024) ) { - return String (bytes / 1024.0 / 1024.0) + " MB"; + return String ((float)(bytes / 1024.0 / 1024.0)) + " MB"; } else { - return String (bytes / 1024.0 / 1024.0 / 1024.0) + " GB"; + return String ((float)(bytes / 1024.0 / 1024.0 / 1024.0)) + " GB"; } } @@ -497,6 +502,64 @@ char * CONFIG::mac2str (uint8_t mac [WL_MAC_ADDR_LENGTH]) } +bool CONFIG::set_EEPROM_version(uint8_t v){ + byte byte_buffer[6]; + byte_buffer[0]='E'; + byte_buffer[1]='S'; + byte_buffer[2]='P'; + byte_buffer[3]='3'; + byte_buffer[4]='D'; + byte_buffer[5]=v; + return CONFIG::write_buffer (EP_EEPROM_VERSION, byte_buffer, 6); +} + +uint8_t CONFIG::get_EEPROM_version(){ + byte byte_buffer[6]; + long baud_rate; + if (!CONFIG::read_buffer (EP_EEPROM_VERSION, byte_buffer, 6)) return EEPROM_V0; + if ((byte_buffer[0]=='E') && (byte_buffer[1]=='S') && (byte_buffer[2]=='P')&& (byte_buffer[3]=='3') && (byte_buffer[4]=='D')){ + return byte_buffer[5]; + } + + if ( !CONFIG::read_buffer (EP_BAUD_RATE, (byte *) &baud_rate, INTEGER_LENGTH) ) { + return EEPROM_V0; + } + if ((baud_rate == 9600 || baud_rate == 19200 || baud_rate == 38400 || baud_rate == 57600 || baud_rate == 115200 || baud_rate == 230400 || baud_rate == 250000 || baud_rate == 500000 || baud_rate == 921600 ) ) { + return EEPROM_V1; + } + return EEPROM_V0; +} + +bool CONFIG::adjust_EEPROM_settings(){ + uint8_t v = get_EEPROM_version(); + bool bdone =false; + if (v == EEPROM_CURRENT_VERSION) return true; + if (v == 1) { + bdone =true; +#ifdef SDCARD_FEATURE + if (!CONFIG::write_byte (EP_SD_SPEED_DIV, DEFAULT_SDREADER_SPEED) ) { + bdone =false; + } +#endif +#ifdef DHT_FEATURE + if (!CONFIG::write_buffer (EP_DHT_INTERVAL, (const byte *) &DEFAULT_DHT_INTERVAL, INTEGER_LENGTH) ) { + bdone =false; + } + + if (!CONFIG::write_byte (EP_DHT_TYPE, DEFAULT_DHT_TYPE) ) { + bdone =false; + } +#endif + if (!CONFIG::write_byte (EP_OUTPUT_FLAG, DEFAULT_OUTPUT_FLAG) ) { + bdone =false; + } + } + if (bdone){ + set_EEPROM_version(EEPROM_CURRENT_VERSION); + } + return bdone; +} + //read a string //a string is multibyte + \0, this is won't work if 1 char is multibyte like chinese char bool CONFIG::read_string (int pos, char byte_buffer[], int size_max) @@ -618,6 +681,13 @@ bool CONFIG::write_string (int pos, const char * byte_buffer) case EP_TIME_SERVER3: maxsize = MAX_DATA_LENGTH; break; + case ESP_NOTIFICATION_TOKEN1: + case ESP_NOTIFICATION_TOKEN2: + maxsize = MAX_NOTIFICATION_TOKEN_LENGTH; + break; + case ESP_NOTIFICATION_SETTINGS: + maxsize = MAX_NOTIFICATION_SETTINGS_LENGTH; + break; default: maxsize = EEPROM_SIZE; break; @@ -789,7 +859,23 @@ bool CONFIG::reset_config() return false; } #endif - return true; + +#ifdef NOTIFICATION_FEATURE + if (!CONFIG::write_byte (ESP_NOTIFICATION_TYPE, DEFAULT_NOTIFICATION_TYPE) ) { + return false; + } + if (!CONFIG::write_string (ESP_NOTIFICATION_TOKEN1, DEFAULT_NOTIFICATION_TOKEN1 ) ) { + return false; + } + if (!CONFIG::write_string (ESP_NOTIFICATION_TOKEN2, DEFAULT_NOTIFICATION_TOKEN2 ) ) { + return false; + } + if (!CONFIG::write_string (ESP_NOTIFICATION_SETTINGS, DEFAULT_NOTIFICATION_SETTINGS ) ) { + return false; + } +#endif + + return set_EEPROM_version(EEPROM_CURRENT_VERSION); } void CONFIG::print_config (tpipe output, bool plaintext, ESPResponseStream *espresponse) @@ -1678,6 +1764,30 @@ void CONFIG::print_config (tpipe output, bool plaintext, ESPResponseStream *esp { ESPCOM::print (F ("\n"), output, espresponse); } +#ifdef NOTIFICATION_FEATURE +if (!plaintext) + { + ESPCOM::print (F ("\"Notifications\":\""), output, espresponse); + } else + { + ESPCOM::print (F ("Notifications: "), output, espresponse); + } + if (notificationsservice.started()) + { + ESPCOM::print (notificationsservice.getTypeString(), output, espresponse); + } else + { + ESPCOM::print (F ("Disabled"), output, espresponse); + } + + if (!plaintext) + { + ESPCOM::print (F ("\","), output, espresponse); + } else + { + ESPCOM::print (F ("\n"), output, espresponse); + } +#endif //Flag Oled #ifdef ESP_OLED_FEATURE diff --git a/esp3d/config.h b/esp3d/config.h index 02e040e8..d4478a59 100644 --- a/esp3d/config.h +++ b/esp3d/config.h @@ -19,7 +19,7 @@ */ //version and sources location -#define FW_VERSION "2.1.0.c26" +#define FW_VERSION "2.1.0.b27" #define REPOSITORY "https://github.com/luc-github/ESP3D" //Customize ESP3D //////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ #define ESP8266_MODEL_URL "http://espressif.com/en/products/esp8266/" #define ESP32_MODEL_NAME "ESP32" #define ESP32_MODEL_URL "https://www.espressif.com/en/products/hardware/esp-wroom-32/overview" -#define ESP_MODEL_NUMBER "ESP3D 2.0" +#define ESP_MODEL_NUMBER "ESP3D 2.1" #define ESP_MANUFACTURER_NAME "Espressif Systems" #define ESP_MANUFACTURER_URL "http://espressif.com" //default name if no mac address is valid @@ -48,6 +48,9 @@ //TCP_IP_DATA_FEATURE: allow to connect serial from TCP/IP #define TCP_IP_DATA_FEATURE +//NOTIFICATION_FEATURE : allow to push notifications +#define NOTIFICATION_FEATURE + //MDNS_FEATURE: this feature allow type the name defined //in web browser by default: http:\\esp8266.local and connect #define MDNS_FEATURE @@ -111,10 +114,10 @@ #endif #ifdef DHT_FEATURE -#define ESP_DHT_PIN 15 +#define ESP_DHT_PIN 2 #endif -//Pins where the screen is connected +//Pins where the screen is connected #ifdef ESP_OLED_FEATURE #define OLED_DISPLAY_SSD1306 // OLED Display Type: SSD1306(OLED_DISPLAY_SSD1306) / SH1106(OLED_DISPLAY_SH1106), comment this line out to disable oled #define OLED_PIN_SDA 4 //5 //SDA; // i2c SDA Pin @@ -306,7 +309,8 @@ typedef enum { #define EP_OUTPUT_FLAG 129 //1 bytes = flag #define EP_HOSTNAME 130//33 bytes 32+1 = string ; warning does not support multibyte char like chinese #define EP_DHT_INTERVAL 164//4 bytes = int -#define EP_FREE_INT2 168//4 bytes = int +#define ESP_NOTIFICATION_TYPE 168 //1 byte = flag +#define EP_FREE_INT2 169//3 bytes = int #define EP_FREE_INT3 172//4 bytes = int #define EP_ADMIN_PWD 176//21 bytes 20+1 = string ; warning does not support multibyte char like chinese #define EP_USER_PWD 197//21 bytes 20+1 = string ; warning does not support multibyte char like chinese @@ -318,7 +322,8 @@ typedef enum { #define EP_AP_IP_MODE 329 //1 byte = flag #define EP_AP_PHY_MODE 330 //1 byte = flag #define EP_SD_SPEED_DIV 331 //1 byte = flag -#define EP_FREE_STRING1 332 //128 bytes 127+1 = string ; warning does not support multibyte char like chinese +#define ESP_NOTIFICATION_TOKEN1 332 //64 bytes 63+1 = string ; warning does not support multibyte char like chinese +#define ESP_NOTIFICATION_TOKEN2 396 //64 bytes 63+1 = string ; warning does not support multibyte char like chinese #define EP_DHT_TYPE 460 //1 bytes = flag #define EP_TARGET_FW 461 //1 bytes = flag #define EP_TIMEZONE 462//1 bytes = flag @@ -331,14 +336,11 @@ typedef enum { #define EP_SECONDARY_SD 852//1 bytes = flag #define EP_DIRECT_SD_CHECK 853//1 bytes = flag #define EP_SD_CHECK_UPDATE_AT_BOOT 854//1 bytes = flag +#define ESP_NOTIFICATION_SETTINGS 855//128 bytes 127+1 = string ; warning does not support multibyte char like chinese -#define LAST_EEPROM_ADDRESS 855 -//next available is 855 -//space left 1024 - 855 = 169 -//extra fre -//#define EP_FREE_INT2 168//4 bytes = int -//#define EP_FREE_INT3 172//4 bytes = int -//#define EP_FREE_STRING1 331 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese +#define EP_EEPROM_VERSION 1017// 6 bytes = ESP3D + +#define LAST_EEPROM_ADDRESS 983 //default values #define DEFAULT_WIFI_MODE AP_MODE @@ -365,9 +367,9 @@ const char DEFAULT_ADMIN_PWD [] PROGMEM = "admin"; const char DEFAULT_USER_PWD [] PROGMEM = "user"; const char DEFAULT_ADMIN_LOGIN [] PROGMEM = "admin"; const char DEFAULT_USER_LOGIN [] PROGMEM = "user"; -const char DEFAULT_TIME_SERVER1 [] PROGMEM = "time.nist.gov"; -const char DEFAULT_TIME_SERVER2 [] PROGMEM = "0.pool.ntp.org"; -const char DEFAULT_TIME_SERVER3 [] PROGMEM = "1.pool.ntp.org"; +const char DEFAULT_TIME_SERVER1 [] PROGMEM = "1.pool.ntp.org"; +const char DEFAULT_TIME_SERVER2 [] PROGMEM = "2.pool.ntp.org"; +const char DEFAULT_TIME_SERVER3 [] PROGMEM = "0.pool.ntp.org"; #define DEFAULT_TIME_ZONE 0 #define DEFAULT_TIME_DST 0 #define DEFAULT_PRIMARY_SD 2 @@ -376,9 +378,29 @@ const char DEFAULT_TIME_SERVER3 [] PROGMEM = "1.pool.ntp.org"; #define DEFAULT_SD_CHECK_UPDATE_AT_BOOT 1 #define DEFAULT_OUTPUT_FLAG 0 #define DEFAULT_DHT_TYPE 255 -const int DEFAULT_DHT_INTERVAL = 30; +const int DEFAULT_DHT_INTERVAL = 30; + +#define MIN_NOTIFICATION_TOKEN_LENGTH 0 +#define MIN_NOTIFICATION_SETTINGS_LENGTH 0 +#define MAX_NOTIFICATION_TOKEN_LENGTH 63 +#define MAX_NOTIFICATION_SETTINGS_LENGTH 127 + +#define DEFAULT_NOTIFICATION_TYPE 0 +#define DEFAULT_NOTIFICATION_TOKEN1 "" +#define DEFAULT_NOTIFICATION_TOKEN2 "" +#define DEFAULT_NOTIFICATION_SETTINGS "" + +//Notifications +#define ESP_PUSHOVER_NOTIFICATION 1 +#define ESP_EMAIL_NOTIFICATION 2 +#define ESP_LINE_NOTIFICATION 3 + +#ifdef SDCARD_FEATURE +#define DEFAULT_IS_DIRECT_SD 1 +#else #define DEFAULT_IS_DIRECT_SD 0 +#endif //SD Card reader speed //possible values are :SPI_FULL_SPEED, SPI_DIV3_SPEED, @@ -386,7 +408,7 @@ const int DEFAULT_DHT_INTERVAL = 30; //SPI_EIGHTH_SPEED, SPI_SIXTEENTH_SPEED //Decrease if reader give error #ifdef ARDUINO_ARCH_ESP8266 -#define DEFAULT_SDREADER_SPEED SPI_HALF_SPEED +#define DEFAULT_SDREADER_SPEED 2 #else #define DEFAULT_SDREADER_SPEED 4 #endif @@ -467,6 +489,14 @@ const uint16_t Setting[][2] = { #define MIN_HOSTNAME_LENGTH 1 #define WL_MAC_ADDR_LENGTH 6 +//EEPROM Version +#define EEPROM_V0 0 +#define EEPROM_V1 1 +#define EEPROM_V2 2 + +#define EEPROM_CURRENT_VERSION EEPROM_V2 + + #if defined(ASYNCWEBSERVER) class AsyncResponseStream; typedef AsyncResponseStream ESPResponseStream; @@ -512,13 +542,16 @@ public: static uint8_t GetFirmwareTarget(); static const char* GetFirmwareTargetName(); static const char* GetFirmwareTargetShortName(); + static uint8_t get_EEPROM_version(); + static bool set_EEPROM_version(uint8_t v); + static bool adjust_EEPROM_settings(); static bool isHostnameValid (const char * hostname); static bool isSSIDValid (const char * ssid); static bool isPasswordValid (const char * password); static bool isLocalPasswordValid (const char * password); static bool isIPValid (const char * IP); static char * intTostr (int value); - static String formatBytes (uint32_t bytes); + static String formatBytes (uint64_t bytes); static char * mac2str (uint8_t mac [WL_MAC_ADDR_LENGTH]); static byte split_ip (const char * ptr, byte * part); static void esp_restart (bool async = false); diff --git a/esp3d/esp3d.cpp b/esp3d/esp3d.cpp index 2229f639..ebe50305 100644 --- a/esp3d/esp3d.cpp +++ b/esp3d/esp3d.cpp @@ -94,15 +94,20 @@ Esp3D::Esp3D() { void Esp3D::begin(uint16_t startdelayms, uint16_t recoverydelayms) { // init: + //WiFi.disconnect(); + WiFi.mode (WIFI_OFF); + wifi_config.WiFi_on = false; + //check EEPROM Version #if defined( DEBUG_ESP3D) && defined(DEBUG_OUTPUT_SERIAL) CONFIG::InitBaudrate(DEFAULT_BAUD_RATE); delay (2000); LOG ("\r\nDebug Serial set\r\n") #endif -CONFIG::InitOutput(); + CONFIG::adjust_EEPROM_settings(); + CONFIG::InitOutput(); #ifdef ESP_OLED_FEATURE -OLED_DISPLAY::begin(); -OLED_DISPLAY::splash(); + OLED_DISPLAY::begin(); + OLED_DISPLAY::splash(); #endif #ifdef ARDUINO_ARCH_ESP8266 struct rst_info *rtc_info = system_get_rst_info(); @@ -116,9 +121,6 @@ OLED_DISPLAY::splash(); data_server = NULL; #endif - //WiFi.disconnect(); - WiFi.mode (WIFI_OFF); - wifi_config.WiFi_on = false; #ifdef ESP_OLED_FEATURE uint32_t start_display_time = millis(); uint32_t now = millis(); @@ -132,7 +134,6 @@ OLED_DISPLAY::splash(); #else delay (startdelayms); #endif - CONFIG::InitDirectSD(); CONFIG::InitPins(); #ifdef RECOVERY_FEATURE @@ -147,7 +148,6 @@ OLED_DISPLAY::splash(); breset_config = true; //cannot access to config settings=> reset settings LOG ("Error no EEPROM access\r\n") } - //reset is requested if (breset_config) { //update EEPROM with default settings @@ -180,13 +180,27 @@ OLED_DISPLAY::splash(); #endif //get target FW CONFIG::InitFirmwareTarget(); + delay(100); //Update is done if any so should be Ok #ifdef ARDUINO_ARCH_ESP32 SPIFFS.begin (true); #else SPIFFS.begin(); #endif - +//basic autostart + if(SPIFFS.exists("/autostart.g")){ + FS_FILE file = SPIFFS.open("/autostart.g", SPIFFS_FILE_READ); + if (file){ + String autoscript = file.readString(); + if (autoscript.length() > 0){ + //clean line + autoscript.replace("\n",""); + autoscript.replace("\r",""); + ESPCOM::println (autoscript.c_str(), DEFAULT_PRINTER_PIPE); + } + file.close(); + } + } //setup wifi according settings if (!wifi_config.Setup() ) { ESPCOM::println (F ("Safe mode 1"), PRINTER_PIPE); @@ -196,7 +210,7 @@ OLED_DISPLAY::splash(); wifi_config.Safe_Setup(); } } - delay (1000); + delay (100); //setup servers if (!wifi_config.Enable_servers() ) { ESPCOM::println (F ("Error enabling servers"), PRINTER_PIPE); diff --git a/esp3d/nofile.h b/esp3d/nofile.h index da8f3356..12ccbfa1 100644 --- a/esp3d/nofile.h +++ b/esp3d/nofile.h @@ -20,314 +20,387 @@ //data generated by https://github.com/AraHaan/bin2c //bin2c Conversion Tool v0.14.0 - Windows - [FINAL]. -#define PAGE_NOFILES_SIZE 4862 -#if defined(ASYNCWEBSERVER) -const uint8_t PAGE_NOFILES [] PROGMEM = { -#else -const char PAGE_NOFILES [] PROGMEM = { -#endif - 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xED, 0x5C, 0x7D, 0x93, 0xDA, 0x46, - 0x93, 0xFF, 0x2A, 0xB2, 0x52, 0x36, 0x70, 0x2B, 0x40, 0x12, 0xAF, 0x8B, 0x16, 0xF2, 0x24, 0xB1, - 0x7D, 0xF1, 0x95, 0x13, 0xBB, 0xBC, 0xEB, 0x7B, 0xAE, 0x2A, 0x4E, 0xB9, 0x84, 0x34, 0x80, 0xCE, - 0x42, 0xD2, 0x49, 0xC3, 0xEE, 0x62, 0xC2, 0x77, 0xBF, 0xEE, 0x79, 0x91, 0x46, 0x42, 0xB0, 0xEC, - 0x26, 0x79, 0xF2, 0xFC, 0x91, 0x60, 0x23, 0x98, 0x99, 0xEE, 0xE9, 0xE9, 0xE9, 0xFE, 0x75, 0x4F, - 0x0F, 0xCE, 0xD5, 0x8A, 0xAE, 0xC3, 0xD9, 0xD5, 0x8A, 0xB8, 0xFE, 0xEC, 0x2A, 0xA3, 0xDB, 0x90, - 0xCC, 0xB0, 0x65, 0xB7, 0x88, 0x23, 0xDA, 0x5E, 0xB8, 0xEB, 0x20, 0xDC, 0x4E, 0x32, 0x37, 0xCA, - 0xDA, 0x19, 0x49, 0x83, 0x85, 0xD3, 0x5E, 0x67, 0x6D, 0x4A, 0xEE, 0x69, 0x3B, 0x0B, 0xBE, 0x92, - 0xB6, 0xEB, 0xFF, 0xEF, 0x26, 0xA3, 0x13, 0xCB, 0x34, 0x9F, 0x3B, 0xED, 0x3B, 0x32, 0xFF, 0x12, - 0xD0, 0x23, 0xBD, 0x8C, 0x1D, 0xB6, 0xC2, 0xD7, 0xE4, 0x7E, 0x3F, 0x8F, 0xFD, 0x6D, 0x69, 0x0A, - 0xFD, 0x47, 0x12, 0xDE, 0x12, 0x1A, 0x78, 0xAE, 0xF6, 0x33, 0xD9, 0x10, 0xDD, 0xC8, 0xBF, 0x1B, - 0xDF, 0xA5, 0x81, 0x1B, 0x1A, 0x8A, 0x0C, 0x0A, 0xAF, 0x7E, 0x72, 0xEF, 0x84, 0x41, 0x44, 0xDA, - 0x2B, 0x12, 0x2C, 0x57, 0x30, 0x57, 0xA7, 0x6F, 0x8F, 0x07, 0x23, 0xAB, 0xDF, 0x73, 0xBC, 0x38, - 0x8C, 0xD3, 0xC9, 0x37, 0xBD, 0x5E, 0xCF, 0x99, 0xBB, 0xDE, 0x97, 0x65, 0x1A, 0x6F, 0x22, 0xBF, - 0x2D, 0x5A, 0x17, 0x8B, 0xC5, 0xBE, 0xE3, 0x01, 0x1F, 0x17, 0x88, 0xD3, 0xDD, 0xDA, 0x4D, 0x97, - 0x41, 0xD4, 0x4E, 0x19, 0x0F, 0x77, 0x43, 0x63, 0x47, 0xB4, 0x84, 0x64, 0x21, 0x1A, 0x12, 0xD7, - 0xF7, 0x83, 0x68, 0xC9, 0x5B, 0xAC, 0x01, 0xCC, 0x2B, 0x5B, 0x38, 0x15, 0x36, 0xED, 0xA9, 0x3B, - 0x0F, 0xC9, 0x6E, 0x1E, 0xA7, 0x3E, 0x49, 0x27, 0xA6, 0xC3, 0x3F, 0xB4, 0xB3, 0xC4, 0xF5, 0x60, - 0x20, 0x34, 0xAC, 0xDD, 0xFB, 0xF6, 0x5D, 0xE0, 0xD3, 0x15, 0x53, 0xCA, 0xBE, 0xC3, 0xC6, 0xB7, - 0xF9, 0x30, 0xE2, 0xEF, 0x8A, 0x2E, 0x41, 0x3A, 0xB1, 0x92, 0x7B, 0x2D, 0x8B, 0xC3, 0xC0, 0xD7, - 0xBE, 0xF1, 0x7D, 0x5F, 0x4A, 0x35, 0x8F, 0x29, 0x8D, 0xD7, 0x13, 0x1B, 0x35, 0x49, 0x81, 0x6C, - 0x15, 0x50, 0xC2, 0x66, 0x21, 0x93, 0x28, 0xBE, 0x4B, 0xDD, 0x44, 0xCA, 0x36, 0xB1, 0xD7, 0xEB, - 0x3D, 0x5D, 0xED, 0xD8, 0x9E, 0xB8, 0x61, 0xB0, 0x8C, 0x26, 0x28, 0xBF, 0x98, 0x78, 0x46, 0x71, - 0x1B, 0x66, 0x34, 0x9D, 0x51, 0xDF, 0x38, 0x68, 0x5A, 0xE5, 0x4D, 0xCC, 0x36, 0xCA, 0xA3, 0xF2, - 0xA6, 0xD5, 0x4E, 0x4E, 0x35, 0x3E, 0xBE, 0x15, 0xB7, 0x24, 0xC5, 0x9D, 0x0C, 0x85, 0x08, 0x34, - 0x4E, 0xA4, 0x6A, 0xE0, 0x63, 0x65, 0x8D, 0x55, 0xA5, 0xD4, 0x08, 0x59, 0xD7, 0xB7, 0x3A, 0xEC, - 0x3B, 0x10, 0xBB, 0xAE, 0x6F, 0xB5, 0xAB, 0xD5, 0xF4, 0xA1, 0x14, 0x8F, 0xE2, 0x26, 0x76, 0x48, - 0xEC, 0xB5, 0x0D, 0xDB, 0x24, 0x68, 0x32, 0x9A, 0x06, 0x89, 0x22, 0xF8, 0x24, 0xA2, 0xAB, 0x76, - 0xBC, 0x68, 0xD3, 0x6D, 0x42, 0x9A, 0xB1, 0xEF, 0xB7, 0x76, 0x35, 0xB6, 0x7A, 0x89, 0xAF, 0xFD, - 0x3F, 0xD6, 0xC4, 0x0F, 0x5C, 0xAD, 0xB9, 0x06, 0x03, 0xE0, 0x7C, 0x47, 0x43, 0xD0, 0x79, 0x6B, - 0xA7, 0xD8, 0xB1, 0x68, 0x1F, 0xA0, 0x61, 0xD4, 0x10, 0x5C, 0x5E, 0xDA, 0xB5, 0x04, 0x97, 0xA3, - 0x23, 0x04, 0x96, 0x6D, 0x9A, 0xB5, 0x14, 0x96, 0xC5, 0x49, 0x3A, 0x91, 0x7B, 0xAB, 0x9A, 0xAD, - 0x10, 0xD9, 0xF3, 0xBC, 0x8A, 0xC3, 0x98, 0x55, 0x77, 0x31, 0xC1, 0x58, 0x32, 0x70, 0x63, 0x44, - 0x1C, 0xB0, 0xDA, 0x88, 0xD4, 0x78, 0x29, 0xF3, 0x5D, 0xAE, 0xD0, 0xD4, 0xF5, 0x83, 0x4D, 0x36, - 0x19, 0x82, 0x91, 0xD5, 0x38, 0x81, 0xBB, 0x4B, 0xE2, 0x2C, 0xA0, 0x41, 0x1C, 0x4D, 0x52, 0x12, - 0xBA, 0x34, 0xB8, 0x25, 0x8E, 0x1F, 0x64, 0x49, 0xE8, 0x6E, 0x27, 0xF3, 0x30, 0xF6, 0xBE, 0xE4, - 0x0E, 0x81, 0xE8, 0xA3, 0x31, 0xF7, 0x65, 0x3E, 0xE1, 0x13, 0x2F, 0x4E, 0x5D, 0x46, 0xC8, 0x64, - 0x28, 0xE4, 0xDF, 0x77, 0x5C, 0x0F, 0xF9, 0xEC, 0x0A, 0xC4, 0xA8, 0x91, 0xD0, 0x34, 0x4D, 0x39, - 0x50, 0x73, 0x0D, 0x77, 0xB2, 0x88, 0xBD, 0x4D, 0x06, 0xCF, 0x55, 0x0C, 0x36, 0xBF, 0x53, 0xC1, - 0x26, 0x71, 0x23, 0x12, 0xEE, 0x0E, 0x65, 0xAF, 0x07, 0xA7, 0x23, 0xFE, 0x5F, 0x56, 0x06, 0x82, - 0x9F, 0x44, 0xDD, 0x79, 0x7C, 0xDF, 0xCE, 0x56, 0xAE, 0x1F, 0xDF, 0x4D, 0x4C, 0x0D, 0xA9, 0xF0, - 0x6F, 0xBA, 0x9C, 0xBB, 0x4D, 0xD3, 0xC0, 0x57, 0xC7, 0x1C, 0xB4, 0x9C, 0x73, 0x06, 0x09, 0x49, - 0xDB, 0x0C, 0xA1, 0x73, 0xAD, 0x21, 0xB8, 0x89, 0x0E, 0x34, 0x76, 0x68, 0xDB, 0x1D, 0x6A, 0xF4, - 0x34, 0xE2, 0x0E, 0xF0, 0x25, 0x57, 0x20, 0x1A, 0x95, 0x35, 0x01, 0x12, 0x70, 0xD3, 0x90, 0xAB, - 0xEB, 0xA1, 0x6E, 0x8A, 0x3E, 0x34, 0xA3, 0x9A, 0x2E, 0xA1, 0xC9, 0x8A, 0xF7, 0x86, 0xEE, 0x1C, - 0x94, 0x2D, 0x2D, 0x20, 0x88, 0x18, 0x2E, 0x71, 0x43, 0x28, 0x43, 0x70, 0xC5, 0x98, 0x70, 0x15, - 0x2C, 0xBA, 0xDC, 0x71, 0x0C, 0x1B, 0xE1, 0xF6, 0x32, 0x43, 0x09, 0xA2, 0x45, 0x2C, 0xF7, 0xB3, - 0x07, 0xC6, 0x3F, 0x86, 0x2D, 0x5D, 0xC4, 0xE9, 0xBA, 0x8D, 0x9E, 0x91, 0xC6, 0xC5, 0x64, 0x7C, - 0x16, 0x3E, 0x03, 0x0B, 0x1C, 0x02, 0x0E, 0x7B, 0xFD, 0x22, 0x64, 0xA0, 0x19, 0x6B, 0x96, 0x2D, - 0x27, 0x3B, 0x37, 0x94, 0x0D, 0x06, 0x83, 0x63, 0xD6, 0x52, 0xB4, 0x06, 0x6B, 0x77, 0x29, 0x1D, - 0xEA, 0xC0, 0x86, 0xD0, 0x2F, 0xCF, 0xB2, 0xA1, 0x20, 0xCA, 0x08, 0xD5, 0x8E, 0x18, 0xC9, 0xA8, - 0x6C, 0x4A, 0x0F, 0x8E, 0x6D, 0xC7, 0x6D, 0x9A, 0x42, 0xF8, 0xE6, 0x0E, 0xAA, 0x5A, 0x80, 0x46, - 0xDC, 0x8C, 0x80, 0x6E, 0xDB, 0xF1, 0x86, 0x6A, 0x1D, 0x6B, 0x90, 0x19, 0x05, 0xDF, 0x83, 0xBE, - 0xB2, 0xC2, 0xB9, 0xAB, 0xED, 0xCA, 0xF6, 0x34, 0x1C, 0xBA, 0x0B, 0x72, 0xE9, 0x00, 0x05, 0x6A, - 0x12, 0x02, 0xEE, 0x13, 0x96, 0x66, 0x98, 0xD0, 0x39, 0x96, 0x1D, 0x96, 0x69, 0x1B, 0xD6, 0x68, - 0x60, 0xD8, 0xBD, 0x9E, 0xD1, 0x19, 0xB6, 0x84, 0x0C, 0xA8, 0xEB, 0xA4, 0xE2, 0xCC, 0xDC, 0x47, - 0xE6, 0x34, 0x3A, 0x66, 0x77, 0xEA, 0x60, 0xB3, 0x64, 0x66, 0x7D, 0xD3, 0x74, 0x94, 0x10, 0xED, - 0x91, 0x88, 0x92, 0xB4, 0x1A, 0x35, 0xD7, 0x81, 0xEF, 0x87, 0x84, 0x27, 0x60, 0xF1, 0xC6, 0x5B, - 0xB5, 0x11, 0x76, 0x40, 0x9F, 0x6B, 0x37, 0x0A, 0x92, 0x4D, 0xC8, 0x40, 0xCC, 0x39, 0xDE, 0xE3, - 0x6D, 0xD2, 0x0C, 0x54, 0x94, 0xC4, 0x01, 0x63, 0x7E, 0xA6, 0xC5, 0xB0, 0x7D, 0x4B, 0xDC, 0x14, - 0x24, 0x72, 0x4E, 0xA4, 0x19, 0x8F, 0xB4, 0xE7, 0x1A, 0x13, 0x5C, 0xC7, 0x5F, 0xDB, 0x9B, 0x0C, - 0x93, 0x25, 0x12, 0x12, 0x8F, 0x72, 0x71, 0x70, 0xAD, 0x07, 0x8D, 0xD5, 0x06, 0xA6, 0xF3, 0x76, - 0x92, 0xC2, 0x32, 0xD2, 0xED, 0x69, 0xB4, 0xEE, 0xF5, 0x46, 0xEE, 0x7C, 0x54, 0xC1, 0x20, 0x9B, - 0x0C, 0x7D, 0xB7, 0x5F, 0xE2, 0x22, 0x10, 0xDD, 0x28, 0xB5, 0x71, 0x68, 0x2F, 0x35, 0x31, 0x94, - 0x2F, 0x35, 0x4D, 0x6A, 0x28, 0x27, 0x87, 0x94, 0x07, 0xF1, 0xA1, 0x46, 0x58, 0x7B, 0x3C, 0x34, - 0x2F, 0xCD, 0x8A, 0xB0, 0x96, 0x6D, 0xCF, 0xFB, 0xE6, 0xDE, 0x73, 0x13, 0xDC, 0x54, 0x89, 0xC1, - 0x2C, 0x8D, 0x1A, 0x2B, 0x29, 0xA9, 0xB0, 0xB2, 0x71, 0x01, 0xCA, 0xA3, 0xD1, 0xC8, 0x39, 0xC8, - 0x02, 0xDD, 0x10, 0x4C, 0xAC, 0x04, 0xF2, 0x35, 0xC1, 0xF5, 0xB4, 0x51, 0x1C, 0x6C, 0xA5, 0xE0, - 0xDA, 0xCE, 0x36, 0x9E, 0x47, 0xB2, 0xAC, 0x26, 0x9F, 0xF1, 0x17, 0x0B, 0xD3, 0x1F, 0x57, 0x23, - 0xC1, 0x90, 0x5C, 0x7A, 0xC3, 0x3C, 0x84, 0x78, 0xA3, 0x61, 0xCF, 0x97, 0xAC, 0x7C, 0x37, 0x5A, - 0x82, 0xB6, 0x6A, 0xA0, 0xCF, 0xF6, 0x89, 0x4F, 0x2A, 0x9C, 0xC8, 0xDC, 0xF3, 0x7C, 0x4B, 0x72, - 0x72, 0x2F, 0xFB, 0xFD, 0xBE, 0xBD, 0xEF, 0xAC, 0xDC, 0xAC, 0x4D, 0xD2, 0x14, 0x20, 0xA7, 0x0C, - 0xDB, 0x65, 0x5A, 0x3E, 0xFA, 0xCF, 0x06, 0xC4, 0xA3, 0xD2, 0xD4, 0x62, 0xDA, 0xB8, 0xDF, 0x1B, - 0xF4, 0xFA, 0x4F, 0x46, 0x32, 0x74, 0xCD, 0x6F, 0x3C, 0x32, 0xEE, 0x8F, 0x7B, 0x8F, 0x91, 0xB1, - 0x4A, 0x5B, 0x92, 0x59, 0x88, 0xDB, 0xE6, 0x61, 0xB6, 0x46, 0xD3, 0x62, 0xF3, 0x4F, 0xEA, 0x9A, - 0xEF, 0xF1, 0xBF, 0x46, 0xD7, 0xB5, 0xF2, 0xD4, 0x6A, 0xDB, 0x9E, 0x0F, 0xFA, 0xB6, 0xF7, 0xFB, - 0xB4, 0x3D, 0x1C, 0xCD, 0xAD, 0xE1, 0xF8, 0x69, 0xDA, 0xE6, 0xB4, 0x15, 0xA9, 0x6B, 0xF5, 0x2D, - 0x7D, 0x04, 0x61, 0x45, 0x78, 0xC8, 0x49, 0x3C, 0xF1, 0x2F, 0xC1, 0x8C, 0x16, 0x55, 0xB7, 0xEB, - 0xF7, 0x16, 0x3D, 0x57, 0x65, 0x52, 0xC2, 0x3E, 0xD1, 0xA4, 0x00, 0x98, 0x68, 0x51, 0x90, 0x8F, - 0xB7, 0x4C, 0x0E, 0xC9, 0x26, 0x07, 0x64, 0xE7, 0xC0, 0x9E, 0x77, 0xD9, 0x33, 0x6D, 0xAF, 0x22, - 0xE6, 0x68, 0x68, 0x79, 0xD6, 0x25, 0x13, 0x33, 0x58, 0x2F, 0x77, 0x22, 0x96, 0xAD, 0xDC, 0xA8, - 0x9A, 0x12, 0x0F, 0xEB, 0xF0, 0x8A, 0x27, 0xE0, 0x9C, 0x56, 0x88, 0x50, 0x83, 0x25, 0x26, 0xBE, - 0x2A, 0xF3, 0x9A, 0x20, 0xE2, 0x5F, 0xEE, 0x78, 0x20, 0x38, 0x93, 0xF4, 0xF4, 0xCA, 0x7B, 0xA6, - 0x48, 0x3F, 0xE4, 0xD8, 0x87, 0x56, 0xFA, 0xD7, 0xAF, 0x2B, 0x04, 0xD1, 0x20, 0x43, 0xF8, 0x22, - 0x0D, 0x82, 0x1D, 0xA6, 0xF2, 0xD6, 0x89, 0xB0, 0xB1, 0x45, 0x10, 0x12, 0xF6, 0x9D, 0xBB, 0x6B, - 0x3E, 0xF6, 0xB2, 0x0F, 0xBB, 0x1A, 0x44, 0xC9, 0x86, 0xFE, 0x82, 0xA7, 0xE7, 0x29, 0x8E, 0xFB, - 0x75, 0x32, 0x91, 0xCB, 0xC2, 0xAF, 0xED, 0x4D, 0x12, 0xC6, 0xAE, 0xDF, 0x9E, 0x6F, 0x20, 0x9A, - 0xFD, 0x9D, 0x97, 0xFD, 0x6B, 0xF3, 0x32, 0xE7, 0xA4, 0x9B, 0x0F, 0xE6, 0x9E, 0x79, 0x10, 0xBA, - 0xFB, 0xC3, 0xF9, 0xD8, 0x77, 0x1F, 0xB5, 0xA9, 0xC2, 0x2A, 0xFE, 0xDE, 0xDA, 0x7F, 0x9F, 0xAD, - 0xED, 0x59, 0x73, 0xD3, 0xAF, 0x9E, 0xF4, 0xAD, 0xF9, 0xD0, 0x1F, 0x0F, 0x1E, 0xB7, 0xB5, 0x1C, - 0xC0, 0xFE, 0xDE, 0xDA, 0x7F, 0xF3, 0xAD, 0xB5, 0x87, 0x97, 0xEE, 0xDC, 0xDB, 0xE7, 0x40, 0x5D, - 0x82, 0xF3, 0x32, 0x7A, 0x2B, 0x68, 0x5E, 0x4A, 0x05, 0x04, 0x9A, 0x8B, 0x0A, 0xD3, 0x22, 0x8E, - 0x41, 0xA9, 0x27, 0x0A, 0x4C, 0xAC, 0xFE, 0xF2, 0xB4, 0x1A, 0xD3, 0x41, 0x9D, 0x17, 0x0D, 0x0E, - 0xC3, 0x24, 0xDF, 0xAB, 0xBE, 0x92, 0x34, 0xF4, 0xF0, 0xA5, 0x92, 0x2A, 0x9D, 0xBD, 0xFE, 0xE5, - 0xD8, 0x9F, 0x57, 0x54, 0x3F, 0x30, 0x9F, 0x3B, 0xB2, 0x6E, 0x0A, 0xD2, 0xCA, 0x9D, 0xC2, 0xCF, - 0x60, 0x3B, 0x6B, 0x5E, 0x66, 0xCC, 0x92, 0x20, 0xD2, 0xEC, 0x4C, 0xC3, 0xCD, 0x74, 0x53, 0x2D, - 0x88, 0x16, 0x41, 0x04, 0x96, 0xB0, 0xFF, 0xC7, 0x17, 0xB2, 0x5D, 0xA4, 0xEE, 0x9A, 0x64, 0x1A, - 0x0E, 0xD9, 0x99, 0xCF, 0x77, 0xCC, 0x5C, 0x30, 0x63, 0x9D, 0xA4, 0x31, 0x75, 0x29, 0x69, 0x9A, - 0xAD, 0x3D, 0x16, 0xAD, 0x0E, 0x3B, 0x7A, 0x43, 0x00, 0xD3, 0x65, 0x6B, 0xFF, 0x97, 0x68, 0x70, - 0x1D, 0xFB, 0x6E, 0x51, 0xFF, 0x62, 0x46, 0x94, 0x57, 0x63, 0x17, 0xC1, 0x3D, 0xF1, 0x9D, 0xAF, - 0xED, 0x20, 0xF2, 0xC9, 0x3D, 0x56, 0xDC, 0xCC, 0xA2, 0x10, 0xCC, 0x78, 0x61, 0x7D, 0xD9, 0x61, - 0x25, 0x62, 0x70, 0x5A, 0x68, 0x30, 0x1D, 0xA5, 0x38, 0x27, 0x35, 0x88, 0x9F, 0xD1, 0x5C, 0x16, - 0x21, 0x24, 0x1A, 0xAC, 0xA8, 0x56, 0x5B, 0x89, 0x3D, 0x6C, 0x55, 0x93, 0x90, 0x7E, 0x4B, 0x88, - 0xCA, 0xF2, 0x7F, 0x70, 0xC1, 0x5D, 0xB1, 0xA6, 0x52, 0x75, 0xD1, 0x32, 0xCB, 0x95, 0xC7, 0x52, - 0x55, 0x52, 0xED, 0x14, 0x45, 0xFE, 0x63, 0xB4, 0xA2, 0xFB, 0x18, 0x39, 0x5E, 0x0B, 0xE4, 0xE6, - 0x24, 0x0B, 0x13, 0x4A, 0x7D, 0x16, 0x4B, 0x50, 0x16, 0x42, 0x81, 0x59, 0xCA, 0xA5, 0xEC, 0x96, - 0x73, 0x58, 0xEB, 0xE6, 0x70, 0x58, 0xBA, 0xA8, 0x9A, 0xD4, 0xA8, 0xE3, 0x9B, 0x05, 0xC1, 0x97, - 0xD4, 0x03, 0x56, 0x72, 0x15, 0x2B, 0xB1, 0xC5, 0x84, 0x4E, 0x9E, 0xFC, 0xE2, 0xAB, 0x8E, 0x8B, - 0x8D, 0xAF, 0x63, 0xC5, 0xD9, 0x47, 0xAA, 0xAF, 0x54, 0x9E, 0x5C, 0xE0, 0x4B, 0x8A, 0x57, 0xAE, - 0x40, 0x9B, 0x42, 0x3A, 0xD9, 0x5B, 0x35, 0xF1, 0xA1, 0x94, 0x5E, 0x18, 0x4D, 0xBF, 0x33, 0x20, - 0xEB, 0xC7, 0x2F, 0xE5, 0x50, 0x9C, 0xDF, 0xB9, 0xDB, 0x27, 0xEE, 0x6D, 0xCA, 0xD6, 0xC8, 0xFB, - 0x06, 0x63, 0xF5, 0x2A, 0x26, 0xF3, 0x52, 0x42, 0x22, 0x0D, 0xB2, 0x7D, 0xA0, 0xCF, 0x0B, 0xD7, - 0xA3, 0xE1, 0xE8, 0x28, 0x3D, 0xBB, 0x57, 0xDC, 0x5F, 0x75, 0xF9, 0x4D, 0xEE, 0x55, 0x97, 0xDF, - 0xEB, 0xB2, 0xDB, 0xA6, 0x2B, 0x3F, 0xB8, 0xD5, 0x58, 0xFB, 0x54, 0xCF, 0x4D, 0xC8, 0x9D, 0xC3, - 0x62, 0x37, 0x94, 0x08, 0xE7, 0xE3, 0x97, 0x33, 0xA6, 0x3E, 0xFB, 0x6F, 0xAB, 0x63, 0x6B, 0x2F, - 0xA2, 0x79, 0x96, 0x38, 0xFC, 0xFD, 0xAA, 0x0B, 0xE4, 0xB3, 0x2B, 0x1E, 0x4D, 0x67, 0x57, 0x2B, - 0x7B, 0xF6, 0x86, 0x6A, 0x19, 0x21, 0xEB, 0x4C, 0xDB, 0xC6, 0x1B, 0xCD, 0x8F, 0xB5, 0x28, 0xA6, - 0xDA, 0xCA, 0xC5, 0x8B, 0x90, 0x68, 0xAB, 0x31, 0x87, 0xEF, 0xE0, 0x4D, 0xB2, 0x16, 0x91, 0x80, - 0xAE, 0x48, 0xAA, 0x34, 0x75, 0x96, 0x5F, 0x0D, 0x2D, 0x09, 0xB1, 0xC0, 0xAB, 0xF1, 0x90, 0xAF, - 0x05, 0x54, 0x8B, 0x53, 0xF8, 0xE2, 0x03, 0x9C, 0x21, 0xC3, 0x54, 0x5B, 0x04, 0xE9, 0xFA, 0x0E, - 0x62, 0xA5, 0x16, 0x2C, 0x80, 0x05, 0x1E, 0x84, 0xB1, 0xE4, 0x06, 0x2B, 0xB2, 0x67, 0x38, 0xA1, - 0xE7, 0x46, 0x30, 0x04, 0x14, 0x03, 0x78, 0xA3, 0x01, 0x7B, 0xA2, 0x4D, 0xB4, 0x2B, 0x57, 0xF3, - 0x42, 0x37, 0xCB, 0xA6, 0x7A, 0x7E, 0x8A, 0xD0, 0xB5, 0x55, 0x4A, 0x16, 0x53, 0x7D, 0x45, 0x69, - 0x92, 0x4D, 0xBA, 0xDD, 0x25, 0xC8, 0xB2, 0x99, 0xC3, 0x89, 0x7A, 0xDD, 0x0D, 0x37, 0x5E, 0x9B, - 0x7F, 0xED, 0xBE, 0xBA, 0x7E, 0xDF, 0x7B, 0xD9, 0xFE, 0xE7, 0xAB, 0xEF, 0x3F, 0xBE, 0xD1, 0x67, - 0x67, 0x0F, 0xBD, 0xEA, 0xBA, 0xA0, 0x61, 0xA9, 0x11, 0xD4, 0xAE, 0x98, 0x9D, 0x81, 0xB0, 0xAE, - 0x05, 0xFE, 0x54, 0xBF, 0x7E, 0xFF, 0xE6, 0xF5, 0xEB, 0x6B, 0xFD, 0xB0, 0x5B, 0xDE, 0xA3, 0xE8, - 0xB3, 0xD7, 0xD0, 0xBA, 0xD2, 0x5E, 0x43, 0x60, 0xCC, 0xB6, 0x19, 0x25, 0x6B, 0xA1, 0xE9, 0x03, - 0x02, 0xDC, 0x44, 0x60, 0xC4, 0x52, 0x28, 0x8D, 0xA5, 0x50, 0x3A, 0x46, 0x53, 0x3E, 0x0F, 0x4B, - 0x9F, 0x78, 0x1C, 0xD7, 0xB5, 0x08, 0xC2, 0xC8, 0x54, 0x5F, 0x6F, 0xB1, 0x31, 0xFB, 0xE5, 0x57, - 0x5D, 0x5B, 0x6F, 0x42, 0x1A, 0x24, 0xB8, 0xF1, 0xF2, 0x93, 0x3E, 0xD3, 0x04, 0x27, 0xA9, 0x31, - 0x1A, 0x69, 0x4A, 0x85, 0x52, 0x17, 0x33, 0xF0, 0x54, 0x8C, 0xCF, 0x51, 0xCA, 0xCE, 0x74, 0x50, - 0xBC, 0x17, 0x06, 0xDE, 0x17, 0x58, 0x23, 0x89, 0x7C, 0x9C, 0xAA, 0xD9, 0x72, 0x74, 0xED, 0xD6, - 0x0D, 0x37, 0x40, 0xF7, 0x91, 0x8D, 0xD5, 0x67, 0x25, 0x13, 0x4A, 0xD2, 0x78, 0x99, 0x62, 0x45, - 0x43, 0x58, 0xE1, 0x6D, 0x90, 0x05, 0xF3, 0x20, 0x0C, 0xE8, 0x76, 0xB2, 0x82, 0x7C, 0x8C, 0x44, - 0x52, 0xF4, 0x24, 0x5D, 0xF2, 0x29, 0xD9, 0x07, 0xB0, 0xFC, 0xA9, 0x0E, 0x86, 0x0D, 0x8B, 0xEF, - 0x4A, 0x16, 0x60, 0xD3, 0x29, 0xFF, 0x7B, 0xA0, 0xF7, 0xE3, 0xAA, 0xE3, 0x97, 0xD7, 0x57, 0x14, - 0xA8, 0xA8, 0xAF, 0x31, 0x87, 0x99, 0xEA, 0xE6, 0xF3, 0x5C, 0xA9, 0xE7, 0xA9, 0xA2, 0xB4, 0xEE, - 0x1F, 0xE2, 0x35, 0x24, 0x86, 0x7E, 0xB3, 0x81, 0xB7, 0x99, 0x0D, 0xA3, 0xE1, 0x86, 0x61, 0x43, - 0x51, 0xC3, 0x07, 0xB2, 0x00, 0x69, 0x57, 0x28, 0x39, 0xF5, 0x0F, 0x66, 0x45, 0x39, 0x73, 0x6E, - 0x3F, 0xA4, 0x04, 0x6C, 0xDF, 0x0F, 0xD2, 0x66, 0x4B, 0x57, 0x24, 0x81, 0x93, 0x3C, 0x8C, 0xCC, - 0x6E, 0x97, 0x92, 0xB2, 0x6F, 0x82, 0x4D, 0x33, 0x8C, 0xE3, 0x9F, 0x6F, 0x03, 0x72, 0xF7, 0x7D, - 0x0C, 0x1A, 0xC2, 0x03, 0x76, 0x1F, 0xFF, 0xC0, 0xF8, 0x14, 0xEC, 0x40, 0x83, 0xB6, 0x81, 0xAE, - 0x6D, 0x51, 0x77, 0xBA, 0xA4, 0xEE, 0x29, 0xD4, 0x36, 0x7C, 0x4E, 0x61, 0x90, 0x0D, 0x8F, 0x2D, - 0x7B, 0xC0, 0x2E, 0x86, 0x53, 0x5D, 0xA4, 0x79, 0x7A, 0xB7, 0xE0, 0x83, 0x43, 0xB7, 0x8C, 0x9D, - 0xE0, 0x63, 0x0D, 0x0A, 0x3E, 0xF8, 0xF9, 0x01, 0x3E, 0x98, 0x8F, 0x23, 0x1F, 0x8B, 0x0B, 0x64, - 0xC3, 0x23, 0x4F, 0x6E, 0xA1, 0x75, 0x2C, 0xBE, 0xDE, 0x09, 0x8E, 0x63, 0xD8, 0x6C, 0xC1, 0x84, - 0xE5, 0xC9, 0xFA, 0xEC, 0x02, 0x14, 0x08, 0x3C, 0x40, 0x8F, 0xA0, 0x8A, 0x99, 0x70, 0x11, 0xA1, - 0x53, 0xAE, 0x48, 0x34, 0x17, 0x9E, 0xCC, 0xE5, 0xEA, 0x13, 0x5F, 0x2B, 0xC3, 0xF3, 0x25, 0x98, - 0xF9, 0x26, 0x30, 0x53, 0x73, 0xE9, 0x2A, 0xA7, 0xC4, 0xEB, 0x3E, 0x69, 0xBC, 0x2A, 0x75, 0x17, - 0x6D, 0xA7, 0x2B, 0xED, 0x08, 0x1F, 0x92, 0x82, 0x7F, 0x29, 0xDD, 0xF2, 0xEB, 0xD2, 0xCE, 0x8B, - 0x83, 0x00, 0x1A, 0x21, 0x87, 0x64, 0x66, 0x84, 0x2B, 0xD5, 0x1C, 0x6E, 0xC0, 0xCA, 0x80, 0xF7, - 0x0A, 0xDB, 0x67, 0x3F, 0x83, 0x1F, 0xE4, 0x5F, 0xAE, 0x41, 0x4B, 0xF2, 0x4B, 0xC9, 0x80, 0x2A, - 0x6D, 0x62, 0x45, 0xAC, 0x55, 0x48, 0x2A, 0x26, 0x43, 0x07, 0xC8, 0x71, 0xE2, 0x33, 0xDA, 0x2A, - 0x1B, 0xC7, 0xE3, 0x82, 0x5C, 0xCF, 0x11, 0xDC, 0xE1, 0x91, 0x96, 0xFB, 0x63, 0x06, 0xE9, 0xE6, - 0x26, 0x2B, 0x34, 0x7A, 0xF0, 0x7E, 0x8E, 0x37, 0x16, 0xC8, 0x27, 0x21, 0xFE, 0x23, 0xC3, 0xFD, - 0x07, 0x80, 0xAF, 0xE4, 0xBD, 0x47, 0x71, 0xF0, 0xEE, 0x28, 0x0A, 0x2A, 0xF6, 0xF2, 0x34, 0xE4, - 0x03, 0xDE, 0x07, 0x18, 0xC0, 0x71, 0xEE, 0x10, 0xFD, 0x70, 0x3D, 0xEA, 0x8C, 0x8F, 0x81, 0xBE, - 0xC5, 0x5D, 0x0E, 0x7E, 0xF8, 0xB1, 0x1E, 0xFE, 0x72, 0xCE, 0x70, 0x84, 0x8C, 0xD8, 0xF0, 0x75, - 0xB6, 0xD4, 0x8F, 0xB3, 0x9F, 0x7D, 0x20, 0xB0, 0x79, 0x70, 0x06, 0x8E, 0x96, 0x79, 0xEC, 0xBD, - 0x73, 0x03, 0xDA, 0x81, 0xFF, 0xC0, 0xA9, 0x80, 0x89, 0xC2, 0xCA, 0x83, 0x1C, 0x89, 0x72, 0xCF, - 0xE1, 0x3D, 0x87, 0xC6, 0x5F, 0xDD, 0x74, 0xEE, 0x7E, 0x90, 0x85, 0x26, 0x70, 0xFE, 0xCD, 0xFD, - 0x88, 0xA5, 0x28, 0x65, 0x1B, 0x28, 0x65, 0x2D, 0x75, 0x5D, 0x3C, 0x2D, 0x85, 0x9E, 0x55, 0x6F, - 0xF6, 0x06, 0x44, 0xA7, 0xC1, 0x02, 0x0E, 0xEE, 0x98, 0xAD, 0x40, 0xF0, 0xEF, 0xD5, 0x18, 0x5A, - 0x91, 0x2E, 0xEA, 0x7C, 0x0D, 0x62, 0x25, 0xA5, 0x6E, 0x44, 0x0F, 0x9D, 0x9F, 0xC0, 0x21, 0x69, - 0x26, 0xB3, 0x8F, 0x70, 0xF0, 0x9D, 0x88, 0xE5, 0x55, 0x42, 0xA1, 0x7A, 0x49, 0x20, 0xAD, 0x81, - 0x93, 0xE7, 0x8B, 0xFC, 0x8C, 0xE7, 0xE6, 0xCF, 0xBC, 0x51, 0xA8, 0xBC, 0xB8, 0xF2, 0x2F, 0xD4, - 0xB6, 0x4A, 0xCF, 0x17, 0xE8, 0x3D, 0xF4, 0xDD, 0x01, 0x50, 0x3C, 0x42, 0xA8, 0x44, 0x90, 0xA8, - 0x82, 0xC9, 0xB6, 0x87, 0x85, 0xC3, 0xE0, 0x79, 0x44, 0x97, 0xC2, 0xE5, 0xCB, 0x4E, 0x26, 0x6D, - 0xFF, 0x98, 0xDB, 0x14, 0x71, 0x71, 0x33, 0x5F, 0x07, 0xF4, 0x03, 0xF9, 0xBF, 0x0D, 0x98, 0x1C, - 0x46, 0x33, 0xE1, 0x15, 0xBC, 0xBD, 0x16, 0x3C, 0x20, 0xD1, 0x0D, 0x12, 0x3A, 0x5B, 0x6C, 0x22, - 0x56, 0x6C, 0x01, 0x5F, 0xB8, 0x9D, 0xBB, 0x10, 0x09, 0x77, 0xB7, 0x70, 0x46, 0x06, 0x52, 0xC5, - 0xF9, 0x75, 0x83, 0x4E, 0xBD, 0x4D, 0x8A, 0x45, 0x14, 0x84, 0xEC, 0x0E, 0x1C, 0x3B, 0x03, 0xDA, - 0xD4, 0xBB, 0x7A, 0xCB, 0x88, 0xA6, 0xF0, 0x30, 0x82, 0xA9, 0xE5, 0x80, 0xB6, 0x9A, 0xE4, 0x02, - 0xE9, 0x7C, 0x21, 0x6F, 0x83, 0xC7, 0xD2, 0x86, 0x96, 0xCB, 0xF9, 0x49, 0x57, 0xD8, 0x4C, 0x1B, - 0xDD, 0x86, 0xA3, 0x1D, 0x8F, 0xE8, 0x9F, 0xF4, 0x59, 0x97, 0x79, 0x81, 0xEE, 0x04, 0x57, 0xB4, - 0x13, 0x92, 0x68, 0x49, 0x57, 0x6D, 0xCB, 0x69, 0x45, 0x17, 0x53, 0xFA, 0x4B, 0xF0, 0xEB, 0x05, - 0xCE, 0x7C, 0x64, 0xC6, 0x23, 0x13, 0xEA, 0x17, 0xD1, 0x85, 0xFE, 0xD0, 0xA4, 0xFA, 0x05, 0xE7, - 0x9E, 0xFB, 0xBB, 0x90, 0xC2, 0x08, 0x2E, 0x2E, 0x9C, 0x94, 0xD0, 0x4D, 0x1A, 0x69, 0x6C, 0x5A, - 0xD5, 0x39, 0xF5, 0x7D, 0xAE, 0x48, 0xB0, 0xAF, 0x6C, 0xF5, 0x39, 0x00, 0xC3, 0x51, 0x94, 0x59, - 0x64, 0x13, 0x0D, 0xBB, 0xDF, 0x90, 0x71, 0x9C, 0x7D, 0x96, 0xD9, 0x44, 0x03, 0xB3, 0x09, 0xCB, - 0x1E, 0xE3, 0xDF, 0x06, 0x2C, 0x5A, 0x9D, 0x4A, 0x24, 0x05, 0x8D, 0x81, 0xDD, 0x80, 0x60, 0xDE, - 0xB0, 0xE0, 0x01, 0xE1, 0xBF, 0x31, 0x6C, 0x60, 0xF8, 0xC7, 0x87, 0xE4, 0x3D, 0x28, 0x78, 0x8F, - 0x1A, 0xC2, 0x14, 0x1B, 0x18, 0xD6, 0xE1, 0xE4, 0xEA, 0x3B, 0x0D, 0xAD, 0x3B, 0x13, 0x3A, 0xAB, - 0x72, 0xAC, 0xE7, 0x61, 0x97, 0x79, 0xB0, 0xCC, 0xA0, 0x8E, 0x4B, 0xCF, 0xE4, 0x5C, 0xC6, 0x47, - 0xE4, 0x1A, 0x8E, 0x0A, 0x9E, 0x80, 0xAB, 0x67, 0x49, 0x66, 0x97, 0x79, 0x5A, 0x26, 0x67, 0x8A, - 0x4F, 0xC1, 0x75, 0xAC, 0x72, 0xED, 0x3F, 0x86, 0xA9, 0x7D, 0x59, 0xCB, 0xA4, 0x77, 0xE6, 0x72, - 0xFB, 0x9C, 0x4B, 0xBF, 0xC7, 0x45, 0x1B, 0x71, 0xC9, 0x46, 0x39, 0x4F, 0x85, 0xE5, 0xF0, 0x5C, - 0x9E, 0xC3, 0x3F, 0x81, 0xE7, 0xF8, 0x8F, 0xE0, 0xC9, 0xF3, 0x3F, 0xC5, 0xC0, 0xF1, 0x4C, 0x2F, - 0xED, 0x9B, 0x1B, 0xE9, 0xF9, 0xF6, 0x6D, 0xF7, 0xE1, 0x4F, 0x03, 0x82, 0x33, 0xF8, 0xA3, 0xE6, - 0x4F, 0x1B, 0x3F, 0x8D, 0x8C, 0x9E, 0xF6, 0xD6, 0x36, 0xC6, 0xDA, 0xDB, 0x91, 0x61, 0xF5, 0xD8, - 0xBB, 0xA9, 0xBD, 0xB5, 0xC4, 0x63, 0x6C, 0x58, 0x16, 0x7F, 0x0C, 0x78, 0xE3, 0x10, 0x1E, 0x26, - 0x7B, 0x5C, 0x1A, 0xD6, 0x88, 0xBD, 0x5F, 0xB2, 0x26, 0x1B, 0x86, 0xDB, 0xE2, 0x61, 0x1B, 0xD6, - 0x98, 0x3D, 0xC6, 0xAC, 0x6D, 0x88, 0x5C, 0x87, 0xDA, 0x57, 0x5C, 0x60, 0x1A, 0x7F, 0x81, 0x15, - 0xB2, 0xB3, 0x6A, 0x83, 0xA7, 0xBB, 0x0D, 0xB6, 0xD2, 0xDA, 0x85, 0xF2, 0xB4, 0xE6, 0x33, 0x1E, - 0x10, 0x48, 0x6B, 0xA7, 0x20, 0xC9, 0xC5, 0x94, 0x30, 0xF4, 0x51, 0x71, 0x44, 0x67, 0x29, 0x9E, - 0xA1, 0x03, 0x8E, 0xE8, 0xAD, 0x82, 0x07, 0x9C, 0x65, 0xB1, 0xFC, 0x7C, 0x0D, 0xF9, 0x69, 0xB4, - 0xCC, 0x9A, 0xC4, 0xA0, 0x52, 0x69, 0x80, 0x0B, 0xA4, 0x43, 0xE3, 0xB7, 0xF1, 0x1D, 0x49, 0x7F, - 0x80, 0xDC, 0xA0, 0xD9, 0x02, 0x98, 0xA5, 0x95, 0x16, 0x72, 0x45, 0xBF, 0x6D, 0x5B, 0x13, 0x32, - 0xA3, 0xDF, 0x5A, 0x13, 0xB3, 0x60, 0x8B, 0xB5, 0x3F, 0x97, 0x7A, 0x2B, 0x96, 0x69, 0xB1, 0x0C, - 0x11, 0x45, 0x44, 0xB4, 0x81, 0x5C, 0x1E, 0x00, 0x73, 0xD1, 0x84, 0xA7, 0x7A, 0x12, 0xBC, 0x66, - 0x83, 0x26, 0x9A, 0x7E, 0x41, 0x3A, 0x9C, 0xC0, 0xA0, 0x17, 0xE5, 0x21, 0xBF, 0xA9, 0x5F, 0x6E, - 0x62, 0xEA, 0x86, 0x1A, 0x2F, 0x96, 0x33, 0x22, 0x8A, 0x0D, 0xA7, 0x69, 0x20, 0xC0, 0xFB, 0x2A, - 0x09, 0x44, 0x6C, 0xFF, 0x34, 0xC5, 0x3B, 0xCF, 0xDB, 0x24, 0xBC, 0x4A, 0xAB, 0xE9, 0x6C, 0xE8, - 0xD5, 0x9A, 0x40, 0x1C, 0xD4, 0xD6, 0x41, 0x04, 0x06, 0xD3, 0x60, 0x99, 0x18, 0x47, 0x8C, 0x15, - 0x58, 0xD4, 0xB4, 0x71, 0x09, 0x9F, 0x78, 0x6C, 0x6B, 0xE0, 0x0C, 0x71, 0x4E, 0x0F, 0xB8, 0x0E, - 0x1B, 0xC8, 0x88, 0xC5, 0x21, 0xA2, 0xDA, 0xFF, 0x5C, 0x37, 0xFC, 0xD8, 0xDB, 0xAC, 0x61, 0x0F, - 0x3B, 0x4B, 0x42, 0x5F, 0x85, 0x04, 0x3F, 0x7E, 0xBF, 0x7D, 0x03, 0x7B, 0x27, 0x92, 0xEC, 0x56, - 0x27, 0x88, 0x22, 0x92, 0xFE, 0x78, 0xF3, 0xD3, 0xDB, 0x29, 0x35, 0x50, 0x93, 0x06, 0x6C, 0xF3, - 0x33, 0x35, 0xF8, 0x71, 0x25, 0x47, 0xA5, 0x78, 0x08, 0xB1, 0x87, 0xBE, 0xC1, 0x52, 0xCB, 0xBB, - 0x05, 0x46, 0x45, 0xA3, 0xD4, 0xC7, 0xC3, 0x96, 0xDD, 0x72, 0xD8, 0xEA, 0x68, 0x2A, 0xBD, 0x4C, - 0xBD, 0x57, 0x3E, 0x11, 0xB0, 0x4A, 0x71, 0x17, 0x86, 0x90, 0xA6, 0x69, 0x44, 0x17, 0x56, 0xEB, - 0xE1, 0x38, 0x86, 0x61, 0x11, 0x82, 0x99, 0xE2, 0xAD, 0x45, 0x4C, 0x03, 0xB3, 0x0C, 0x31, 0x25, - 0x01, 0x6C, 0x68, 0xCC, 0xE0, 0x2C, 0x80, 0x09, 0xA9, 0xCC, 0x37, 0xF5, 0x3D, 0x61, 0x77, 0x06, - 0x59, 0x07, 0xE4, 0xA3, 0x4D, 0x69, 0x72, 0x25, 0xD3, 0xAD, 0x5A, 0x75, 0x07, 0x33, 0x69, 0x83, - 0xB2, 0x47, 0x6B, 0xDF, 0x62, 0xC9, 0x00, 0xEA, 0x29, 0x98, 0x9A, 0x10, 0xBC, 0x25, 0x3F, 0xAE, - 0x0B, 0x07, 0xE2, 0x68, 0x4B, 0x6F, 0x5B, 0xA0, 0x57, 0x4E, 0xDF, 0x14, 0xFD, 0x10, 0x75, 0x3B, - 0x78, 0x3A, 0x6D, 0xBD, 0x78, 0xD1, 0x64, 0xCA, 0xBA, 0xF9, 0x30, 0x13, 0x46, 0xC1, 0xB2, 0x6E, - 0x80, 0x18, 0x15, 0x57, 0x14, 0xB8, 0xA9, 0x81, 0x18, 0x6D, 0xF6, 0x89, 0x16, 0x28, 0x63, 0x19, - 0x36, 0xA0, 0x84, 0x61, 0x5B, 0x88, 0x35, 0x36, 0x7E, 0x1E, 0xF2, 0xC7, 0x88, 0xB5, 0x59, 0x88, - 0x0F, 0x6F, 0x2D, 0x5B, 0xBC, 0x5B, 0x1A, 0x0E, 0xB3, 0xCE, 0x40, 0x0C, 0xBC, 0x52, 0xD0, 0xEE, - 0x2D, 0x1E, 0x91, 0xB7, 0xF8, 0x6C, 0x68, 0xF7, 0x36, 0x3C, 0x00, 0x59, 0xB7, 0x36, 0x8B, 0x80, - 0x15, 0x0E, 0xFC, 0x6B, 0x5B, 0x08, 0x6F, 0x35, 0xBA, 0x72, 0x89, 0x39, 0xAB, 0x81, 0xE0, 0x64, - 0x0A, 0x56, 0x3D, 0xCE, 0xCA, 0x32, 0xCF, 0xE0, 0x05, 0x6B, 0x3E, 0xE0, 0xD3, 0xAF, 0xF0, 0xE9, - 0x3F, 0x91, 0xCF, 0xB8, 0xC2, 0x67, 0x7C, 0x06, 0x1F, 0x59, 0x3B, 0x60, 0xF9, 0x13, 0x2C, 0xB3, - 0x71, 0x75, 0xF3, 0x52, 0xE4, 0x6A, 0x9F, 0x44, 0xB2, 0xF6, 0xA9, 0x91, 0x57, 0x48, 0x65, 0x19, - 0x3D, 0xB9, 0x77, 0xC0, 0x7C, 0x5D, 0x51, 0x47, 0x6C, 0x80, 0x1F, 0x33, 0xD0, 0x55, 0xCC, 0x04, - 0xED, 0xEC, 0xA2, 0x01, 0x49, 0xB9, 0x9B, 0x82, 0x2B, 0x4F, 0x3F, 0x83, 0x00, 0xD1, 0x97, 0x52, - 0x56, 0x5D, 0x94, 0x23, 0x67, 0x0D, 0x9C, 0xB9, 0x42, 0xCC, 0x75, 0x2E, 0xF2, 0x61, 0xAC, 0x29, - 0xDE, 0xBC, 0x9C, 0x81, 0x6C, 0x5C, 0xCA, 0x8A, 0x3D, 0x8A, 0xB1, 0x7C, 0x84, 0x34, 0x3B, 0xF3, - 0x79, 0x43, 0x9D, 0xEF, 0x93, 0x28, 0x1C, 0x7D, 0xD2, 0x15, 0x57, 0x7E, 0x09, 0xF1, 0x83, 0x92, - 0x26, 0x43, 0xAA, 0xB2, 0xE8, 0x7A, 0xA3, 0x85, 0x99, 0x26, 0x72, 0x56, 0xD3, 0xC5, 0x92, 0x54, - 0x38, 0x1F, 0xF7, 0x49, 0x7C, 0x43, 0x5F, 0x28, 0xFC, 0x2A, 0x04, 0xBF, 0x0A, 0xAB, 0x7E, 0x15, - 0x0A, 0xBF, 0x9A, 0x56, 0xFD, 0x2A, 0xFC, 0x43, 0xFD, 0x4A, 0xF1, 0xAA, 0x4B, 0x1E, 0x9E, 0x2F, - 0x31, 0xD0, 0x42, 0x90, 0x86, 0x78, 0x2C, 0xDE, 0x06, 0x18, 0x72, 0xFB, 0xE8, 0x45, 0x7D, 0xF4, - 0xBB, 0x01, 0x73, 0x3E, 0x9B, 0x0D, 0xC5, 0x07, 0x06, 0x6A, 0x74, 0xC5, 0x1E, 0xA3, 0x1F, 0xB0, - 0x77, 0x9B, 0x7B, 0x22, 0xF4, 0x9F, 0x17, 0xA7, 0x0B, 0xA3, 0xD2, 0x71, 0x5B, 0xCA, 0x27, 0x00, - 0x2D, 0xDF, 0xFE, 0x3C, 0xAB, 0x39, 0xBC, 0x99, 0x53, 0x51, 0x57, 0x09, 0xF5, 0xCA, 0x76, 0x85, - 0xC5, 0x76, 0x39, 0x72, 0xBF, 0x2A, 0x7D, 0x25, 0xE3, 0x90, 0xF2, 0x3C, 0xD9, 0x56, 0x8E, 0xCF, - 0xFF, 0x24, 0x73, 0x39, 0x1A, 0xEF, 0x8A, 0x9A, 0x54, 0x39, 0xE4, 0x1D, 0x25, 0x60, 0xA5, 0x3A, - 0x75, 0xAC, 0x3C, 0x2E, 0x16, 0x29, 0x89, 0xB0, 0x76, 0xCC, 0x94, 0xE2, 0x08, 0xAF, 0x12, 0x9A, - 0xFA, 0x0F, 0xFC, 0x83, 0xE6, 0x63, 0x17, 0x8E, 0x89, 0x17, 0xB8, 0x99, 0x3C, 0x3D, 0x00, 0x73, - 0x2C, 0xE5, 0x4F, 0x6C, 0x10, 0x81, 0x0C, 0xF6, 0x80, 0xA7, 0x4C, 0xC0, 0x4E, 0xB1, 0x85, 0x31, - 0xB0, 0x81, 0x71, 0xBA, 0x3D, 0xC1, 0x1B, 0xC6, 0x94, 0xD9, 0x2B, 0x05, 0x60, 0x71, 0x52, 0x4B, - 0x52, 0x88, 0x6C, 0x70, 0xB6, 0x7D, 0xCF, 0xCB, 0x35, 0xEC, 0xA2, 0xA1, 0xE0, 0xCD, 0x0A, 0x46, - 0x90, 0x13, 0x80, 0x6A, 0xA3, 0x4D, 0x18, 0x3E, 0x9B, 0x92, 0xCA, 0x3C, 0x9E, 0x64, 0x08, 0xF3, - 0x74, 0xC0, 0x09, 0xD7, 0xCD, 0x96, 0x32, 0x9D, 0x3A, 0x94, 0x45, 0x53, 0x9E, 0x4A, 0x44, 0xE4, - 0x4E, 0xFB, 0x9F, 0x9F, 0xDE, 0xFE, 0x48, 0x69, 0x22, 0x4E, 0xF0, 0x70, 0xA0, 0xD6, 0xBB, 0xCC, - 0x04, 0xBE, 0xE5, 0x3F, 0x85, 0x98, 0xC2, 0x9A, 0x20, 0x6E, 0x42, 0x26, 0x85, 0xAD, 0xBC, 0x6C, - 0x75, 0x41, 0x22, 0x2F, 0xF6, 0xC9, 0xC7, 0x0F, 0x6F, 0x9A, 0xB4, 0x65, 0xB0, 0x4E, 0x96, 0x34, - 0xA8, 0x1D, 0x6A, 0xE2, 0x72, 0x7C, 0x73, 0x45, 0xD1, 0xB6, 0xD5, 0x61, 0xAE, 0xD2, 0x29, 0x2A, - 0x59, 0xA2, 0xAA, 0x15, 0xC2, 0x9A, 0xA3, 0x4E, 0x1C, 0xC1, 0xE2, 0xFC, 0x2D, 0xA6, 0x4A, 0xC4, - 0x5B, 0xE1, 0xAF, 0x0B, 0xA7, 0x79, 0x6E, 0xD0, 0xDA, 0x41, 0xC6, 0xD9, 0x9F, 0x4E, 0xA3, 0x0E, - 0x1B, 0x83, 0xC9, 0x26, 0x69, 0x41, 0x93, 0x6D, 0x9A, 0xD8, 0xC8, 0xD3, 0x2B, 0xA9, 0xE3, 0xFF, - 0xBA, 0x7E, 0xF7, 0x33, 0x20, 0x7A, 0x0A, 0x09, 0x2E, 0x8E, 0xCF, 0x92, 0x38, 0xCA, 0xC8, 0x0D, - 0xB9, 0xA7, 0x27, 0x0C, 0xF6, 0x84, 0x88, 0xA2, 0xDA, 0x66, 0xD4, 0xA6, 0xC4, 0x7B, 0x12, 0xC2, - 0x36, 0x56, 0xCA, 0x23, 0x7B, 0x5C, 0x4D, 0x42, 0xA2, 0xA6, 0xFE, 0x9F, 0xAF, 0x6E, 0xE0, 0x5C, - 0x6F, 0x3C, 0x33, 0x5B, 0xD0, 0x94, 0xC1, 0xF6, 0x34, 0x2B, 0xDB, 0xC5, 0xCB, 0x8C, 0xBB, 0xBC, - 0x8D, 0xD9, 0x37, 0x2C, 0x8C, 0x08, 0xD0, 0x85, 0xED, 0x4C, 0x36, 0xAC, 0x04, 0x20, 0xB3, 0x6F, - 0xC2, 0x7F, 0xDF, 0xE0, 0x77, 0x45, 0xCA, 0xFC, 0x1F, 0x90, 0xBD, 0x1E, 0x5F, 0x17, 0xDE, 0xB6, - 0xB4, 0x3A, 0x3C, 0xA3, 0x3D, 0xE1, 0x7E, 0xE5, 0x7B, 0x20, 0x49, 0x20, 0x4A, 0xA1, 0x80, 0x6A, - 0x5A, 0xA7, 0xD3, 0xD1, 0x2F, 0xF0, 0xF0, 0xF0, 0x1A, 0xAF, 0xFF, 0x9B, 0x66, 0x0B, 0xF3, 0xDD, - 0xFD, 0x9E, 0x8B, 0x74, 0x12, 0x06, 0x64, 0xF1, 0xB6, 0xC5, 0x31, 0x07, 0x8F, 0x0E, 0xE6, 0xB3, - 0xA9, 0xAC, 0xB7, 0xB4, 0x76, 0x4F, 0x96, 0x09, 0x45, 0x3A, 0x01, 0x28, 0x6C, 0xE1, 0xC7, 0x0D, - 0xCE, 0x29, 0x7C, 0xE3, 0x75, 0x9C, 0xAE, 0x5F, 0xBA, 0xD4, 0x75, 0xA2, 0x8E, 0x9B, 0x24, 0xB8, - 0x49, 0x1C, 0x8E, 0xD4, 0x3C, 0xBB, 0x9A, 0x72, 0x52, 0x35, 0xD9, 0xDC, 0xF1, 0x90, 0x89, 0x65, - 0x1D, 0xC3, 0x57, 0x33, 0xF7, 0x8B, 0x50, 0xE0, 0xEB, 0xB5, 0x5E, 0x30, 0xF7, 0x8D, 0x90, 0x87, - 0x4B, 0xA3, 0x98, 0xAF, 0x28, 0x69, 0x1B, 0xA1, 0x71, 0xC8, 0xA0, 0xC5, 0x14, 0xED, 0xD6, 0x78, - 0xB2, 0xE3, 0x0A, 0x4B, 0x7B, 0xFF, 0xEE, 0xFA, 0x06, 0x4F, 0x13, 0x8C, 0x8F, 0xCE, 0x2C, 0xCE, - 0xED, 0x70, 0x15, 0x76, 0x20, 0x32, 0xBD, 0xBA, 0x05, 0x8E, 0x6F, 0x01, 0x90, 0x09, 0x00, 0x2C, - 0x6A, 0x87, 0x17, 0x9D, 0x01, 0x46, 0x8C, 0x67, 0x16, 0x0E, 0x8D, 0x23, 0x1C, 0x5A, 0xF1, 0x38, - 0xE6, 0x5E, 0x53, 0x37, 0xF7, 0xAF, 0xA7, 0xED, 0xD5, 0x13, 0x76, 0x29, 0xF7, 0xB9, 0xF3, 0x2C, - 0x4B, 0x4C, 0xA7, 0x3B, 0x35, 0x3E, 0xAA, 0xA0, 0x81, 0x5B, 0x46, 0x03, 0xE1, 0xBC, 0xEC, 0x5F, - 0x24, 0x34, 0xF5, 0xEF, 0xC0, 0xF9, 0xD8, 0x6F, 0xE1, 0xF1, 0x4C, 0x07, 0x1B, 0xE0, 0x3F, 0x83, - 0x63, 0x36, 0x28, 0x86, 0x79, 0x6D, 0xD4, 0xDA, 0x17, 0x7E, 0xAB, 0x5E, 0x10, 0xFC, 0xA9, 0x9E, - 0xBB, 0xB8, 0x3B, 0xC7, 0x77, 0xF1, 0x92, 0x40, 0x8D, 0x9C, 0x0F, 0x7B, 0x2D, 0x48, 0x79, 0x10, - 0xEB, 0x2A, 0x17, 0x37, 0xDA, 0xB7, 0x7A, 0x4B, 0xCA, 0x7D, 0x7C, 0x13, 0xEE, 0x7E, 0xA7, 0x73, - 0x17, 0xD7, 0x2F, 0x4F, 0x33, 0x02, 0x65, 0xFE, 0x27, 0x90, 0x73, 0xC5, 0x9D, 0x88, 0x49, 0xE7, - 0xAB, 0xFC, 0xC4, 0x58, 0xF1, 0x73, 0x01, 0x39, 0x91, 0xF8, 0x51, 0xD5, 0x54, 0xC7, 0x5F, 0x55, - 0x9D, 0xF6, 0x0C, 0xB6, 0xFD, 0x27, 0x10, 0x4C, 0x22, 0x52, 0x19, 0xC5, 0x8C, 0x07, 0x01, 0x4A, - 0xEF, 0xEA, 0x8F, 0x04, 0x26, 0x8E, 0x4B, 0x05, 0xDD, 0x23, 0xF0, 0x88, 0xFF, 0xFE, 0x03, 0x96, - 0xF2, 0xD7, 0x40, 0x92, 0x6A, 0x61, 0xE7, 0x82, 0xD2, 0xC1, 0xEE, 0x9E, 0xB8, 0x67, 0x3B, 0xC1, - 0x46, 0xDE, 0xB8, 0x3D, 0xCD, 0xC4, 0xFE, 0x10, 0x07, 0x39, 0xC6, 0x44, 0x5E, 0x38, 0x27, 0xF7, - 0x67, 0x7A, 0x97, 0x04, 0xD8, 0x3F, 0xCD, 0x17, 0x0F, 0xC9, 0x15, 0x19, 0x9D, 0x83, 0xBC, 0xAE, - 0x82, 0xE4, 0x88, 0x3B, 0x3A, 0x16, 0x7C, 0x64, 0xED, 0xF1, 0xC5, 0x0B, 0xBD, 0x5F, 0xFE, 0xAA, - 0xF6, 0xFE, 0xF6, 0x9B, 0xC0, 0x7C, 0x81, 0x75, 0x0B, 0x17, 0x6C, 0xDC, 0xD7, 0x5B, 0x86, 0x6E, - 0xC3, 0xE1, 0x56, 0x8E, 0x6A, 0x95, 0x07, 0x79, 0x6E, 0xE4, 0x81, 0x84, 0x18, 0x16, 0x1C, 0x16, - 0x37, 0x70, 0xCE, 0x9E, 0x3A, 0x9E, 0xC3, 0xA5, 0x11, 0x4D, 0x4D, 0xF0, 0xC1, 0x87, 0x1C, 0xDB, - 0x09, 0x3A, 0x58, 0x7B, 0xEC, 0x9B, 0x06, 0x9D, 0x66, 0x84, 0xBE, 0x41, 0x53, 0x01, 0x2D, 0x37, - 0x15, 0x6B, 0x8F, 0x2E, 0xA6, 0xD6, 0xC3, 0x00, 0xC1, 0xB7, 0x26, 0x3A, 0xC7, 0x0E, 0x0B, 0x93, - 0xEE, 0x5B, 0xED, 0xC8, 0x88, 0x66, 0x7D, 0x13, 0x8E, 0xEC, 0x1E, 0x58, 0x74, 0x9A, 0xCF, 0x0F, - 0xA9, 0x7E, 0x18, 0xF3, 0xBB, 0x59, 0xD0, 0x31, 0x9A, 0x0F, 0x1E, 0x31, 0x0C, 0x8B, 0xF4, 0xCA, - 0xE1, 0xB2, 0xA4, 0x3A, 0x0C, 0x95, 0x8F, 0x8A, 0xA5, 0x45, 0x30, 0x15, 0xB8, 0xF1, 0x16, 0x6F, - 0x3A, 0x9B, 0x27, 0xDC, 0xF9, 0x9C, 0x04, 0xFD, 0x38, 0xAD, 0xBC, 0xC4, 0x3E, 0x40, 0x61, 0xF6, - 0xDB, 0x73, 0xA5, 0x24, 0x5F, 0xC9, 0xE4, 0x4F, 0xC9, 0x73, 0x94, 0x27, 0x43, 0x76, 0x61, 0xB3, - 0xA7, 0xE9, 0x95, 0x3B, 0x67, 0xB1, 0x91, 0xE2, 0x50, 0x67, 0x9C, 0x88, 0xBA, 0x75, 0x97, 0xC2, - 0x15, 0x6A, 0xBC, 0x35, 0x65, 0xC3, 0xBE, 0xFD, 0x78, 0xFD, 0xEA, 0x83, 0x7A, 0x62, 0xC3, 0xAC, - 0x04, 0xC4, 0x8B, 0x28, 0x64, 0x2B, 0x17, 0xFA, 0x8B, 0xF7, 0xDF, 0x5D, 0x5F, 0xFF, 0xF3, 0xDD, - 0x87, 0x97, 0xF5, 0x43, 0x28, 0x0E, 0xB9, 0xFE, 0xF8, 0xFD, 0x4F, 0x6F, 0x6E, 0xA6, 0x5B, 0xCC, - 0x2A, 0x83, 0x3A, 0xC4, 0x0F, 0x1E, 0x38, 0xB9, 0xC1, 0xB1, 0x2D, 0x50, 0x8E, 0x6D, 0x2F, 0x5E, - 0x00, 0x84, 0x3F, 0x83, 0x26, 0xE9, 0x9A, 0x65, 0x0B, 0xD8, 0x1B, 0x81, 0x7A, 0x76, 0x8A, 0x58, - 0xD8, 0x08, 0xE4, 0xD9, 0x09, 0x95, 0xAA, 0x16, 0xB0, 0x21, 0x24, 0x39, 0x77, 0x41, 0xE4, 0xC7, - 0x77, 0x35, 0xD1, 0xE2, 0xF8, 0xED, 0x89, 0x73, 0xD5, 0x15, 0xD7, 0xD3, 0x57, 0x5D, 0xF1, 0x83, - 0x19, 0xF6, 0xFF, 0xCC, 0xF9, 0x7F, 0xE5, 0xCC, 0x32, 0xCA, 0x3A, 0x47, 0x00, 0x00 +#ifndef __nofile_h +#define __nofile_h +/* Generated by bin2c, do not edit manually */ + +/* Contents of file tool.html.gz */ +#define PAGE_NOFILES_SIZE 5991 +const char PAGE_NOFILES[5991] PROGMEM = { + 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xED, 0x5C, 0x7B, 0x73, 0xDB, 0xC6, + 0xAE, 0xFF, 0x2A, 0x2C, 0x3B, 0x8D, 0xA4, 0x6B, 0x52, 0xE6, 0x4B, 0x12, 0x25, 0x59, 0xCA, 0x69, + 0x9B, 0xA4, 0xCD, 0x9D, 0xA4, 0xC9, 0xC4, 0xC9, 0xE9, 0x9D, 0x69, 0x3A, 0x19, 0x8A, 0x5C, 0x59, + 0x3C, 0xA1, 0x48, 0x89, 0x5C, 0xC5, 0x76, 0x5C, 0x7D, 0xF7, 0x0B, 0x60, 0x97, 0x4F, 0x3D, 0xFC, + 0x48, 0x7A, 0xDA, 0x3F, 0x3A, 0x8E, 0x45, 0x6A, 0x77, 0x81, 0xC5, 0x62, 0x81, 0x1F, 0xB0, 0x20, + 0x9D, 0xB3, 0x05, 0x5F, 0x46, 0xD3, 0xB3, 0x05, 0xF3, 0x82, 0xE9, 0x59, 0xC6, 0xAF, 0x23, 0x36, + 0xC5, 0x96, 0x9B, 0x79, 0x12, 0x73, 0x7D, 0xEE, 0x2D, 0xC3, 0xE8, 0x7A, 0x94, 0x79, 0x71, 0xA6, + 0x67, 0x2C, 0x0D, 0xE7, 0x63, 0x7D, 0x99, 0xE9, 0x9C, 0x5D, 0x71, 0x3D, 0x0B, 0x3F, 0x33, 0xDD, + 0x0B, 0xFE, 0xB3, 0xC9, 0xF8, 0xC8, 0x34, 0x8C, 0xEF, 0xC6, 0xFA, 0x25, 0x9B, 0x7D, 0x0C, 0xF9, + 0x81, 0x5E, 0x62, 0x87, 0xAD, 0xF0, 0x75, 0x75, 0xB5, 0x9D, 0x25, 0xC1, 0x75, 0x6D, 0x0A, 0xF5, + 0x67, 0x16, 0x7D, 0x62, 0x3C, 0xF4, 0x3D, 0xE5, 0x17, 0xB6, 0x61, 0xAA, 0x56, 0x7C, 0xD7, 0xBE, + 0x4F, 0x43, 0x2F, 0xD2, 0x2A, 0x32, 0x54, 0x78, 0x39, 0xAB, 0xAB, 0x71, 0x14, 0xC6, 0x4C, 0x5F, + 0xB0, 0xF0, 0x62, 0x01, 0x73, 0x75, 0x1D, 0xCB, 0xED, 0x0D, 0x4C, 0xC7, 0x1E, 0xFB, 0x49, 0x94, + 0xA4, 0xA3, 0x6F, 0x6D, 0xDB, 0x1E, 0xCF, 0x3C, 0xFF, 0xE3, 0x45, 0x9A, 0x6C, 0xE2, 0x40, 0x97, + 0xAD, 0xF3, 0xF9, 0x7C, 0xDB, 0xF5, 0x81, 0x8F, 0x07, 0xC4, 0xE9, 0xCD, 0xD2, 0x4B, 0x2F, 0xC2, + 0x58, 0x4F, 0x89, 0x87, 0xB7, 0xE1, 0xC9, 0x58, 0xB6, 0x44, 0x6C, 0x2E, 0x1B, 0x56, 0x5E, 0x10, + 0x84, 0xF1, 0x85, 0x68, 0x31, 0x7B, 0x30, 0x6F, 0xDE, 0x22, 0xA8, 0xB0, 0x69, 0xCB, 0xBD, 0x59, + 0xC4, 0x6E, 0x66, 0x49, 0x1A, 0xB0, 0x74, 0x64, 0x8C, 0xC5, 0x8D, 0x9E, 0xAD, 0x3C, 0x1F, 0x06, + 0x42, 0xC3, 0xD2, 0xBB, 0xD2, 0x2F, 0xC3, 0x80, 0x2F, 0x48, 0x29, 0xDB, 0x2E, 0x8D, 0xD7, 0xC5, + 0x30, 0x16, 0xDC, 0x94, 0x5D, 0x92, 0x74, 0x64, 0xAE, 0xAE, 0x94, 0x2C, 0x89, 0xC2, 0x40, 0xF9, + 0x36, 0x08, 0x82, 0x5C, 0xAA, 0x59, 0xC2, 0x79, 0xB2, 0x1C, 0x59, 0xA8, 0x49, 0x0E, 0x64, 0x8B, + 0x90, 0x33, 0x9A, 0x85, 0x8D, 0xE2, 0xE4, 0x32, 0xF5, 0x56, 0xB9, 0x6C, 0x23, 0x6B, 0xB9, 0xDC, + 0xF2, 0xC5, 0x0D, 0xED, 0x89, 0x17, 0x85, 0x17, 0xF1, 0x08, 0xE5, 0x97, 0x13, 0x4F, 0x39, 0x6E, + 0xC3, 0x94, 0xA7, 0x53, 0x1E, 0x68, 0x3B, 0x4D, 0x8B, 0xA2, 0x89, 0x6C, 0xA3, 0x3E, 0xAA, 0x68, + 0x5A, 0xDC, 0xE4, 0x53, 0xB9, 0x87, 0xB7, 0xE2, 0x13, 0x4B, 0x71, 0x27, 0x23, 0x29, 0x02, 0x4F, + 0x56, 0xB9, 0x6A, 0xE0, 0xB6, 0xB1, 0xC6, 0xA6, 0x52, 0xF6, 0x08, 0xB9, 0xAF, 0x6F, 0xB1, 0xDB, + 0xB7, 0x23, 0xF6, 0xBE, 0xBE, 0xC5, 0xCD, 0x5E, 0x4D, 0xEF, 0x4A, 0x71, 0x2F, 0x6E, 0x72, 0x87, + 0xE4, 0x5E, 0x5B, 0xB0, 0x4D, 0x92, 0x26, 0xE3, 0x69, 0xB8, 0xAA, 0x08, 0x3E, 0x8A, 0xF9, 0x42, + 0x4F, 0xE6, 0x3A, 0xBF, 0x5E, 0xB1, 0x76, 0x12, 0x04, 0x9D, 0x9B, 0x3D, 0xB6, 0x3A, 0xC4, 0x9F, + 0xED, 0xBF, 0x96, 0x2C, 0x08, 0x3D, 0xA5, 0xBD, 0x04, 0x03, 0x10, 0x7C, 0x07, 0x7D, 0xD0, 0x79, + 0xE7, 0xA6, 0x62, 0xC7, 0xB2, 0xBD, 0x87, 0x86, 0xB1, 0x87, 0x60, 0x38, 0xB4, 0xF6, 0x12, 0x0C, + 0x07, 0x07, 0x08, 0x4C, 0xCB, 0x30, 0xF6, 0x52, 0x98, 0xA6, 0x20, 0xE9, 0xC6, 0xDE, 0xA7, 0xAA, + 0xD9, 0x4A, 0x91, 0x7D, 0xDF, 0x6F, 0x38, 0x8C, 0xD1, 0x74, 0x17, 0x03, 0x8C, 0x25, 0x03, 0x37, + 0x46, 0xC4, 0x01, 0xAB, 0x8D, 0xD9, 0x1E, 0x2F, 0x25, 0xDF, 0x15, 0x0A, 0x4D, 0xBD, 0x20, 0xDC, + 0x64, 0xA3, 0x3E, 0x18, 0xD9, 0x1E, 0x27, 0xF0, 0x6E, 0x56, 0x49, 0x16, 0xF2, 0x30, 0x89, 0x47, + 0x29, 0x8B, 0x3C, 0x1E, 0x7E, 0x62, 0xE3, 0x20, 0xCC, 0x56, 0x91, 0x77, 0x3D, 0x9A, 0x45, 0x89, + 0xFF, 0xB1, 0x70, 0x08, 0x44, 0x1F, 0x85, 0xDC, 0x97, 0x7C, 0x22, 0x60, 0x7E, 0x92, 0x7A, 0x44, + 0x48, 0x32, 0x94, 0xF2, 0x6F, 0xBB, 0x9E, 0x8F, 0x7C, 0x6E, 0x4A, 0xC4, 0xD8, 0x23, 0xA1, 0x61, + 0x18, 0xF9, 0x40, 0xC5, 0xD3, 0xBC, 0xD1, 0x3C, 0xF1, 0x37, 0x19, 0x5C, 0x17, 0x09, 0xD8, 0xFC, + 0x4D, 0x15, 0x6C, 0x56, 0x5E, 0xCC, 0xA2, 0x9B, 0x5D, 0xD9, 0xF7, 0x83, 0xD3, 0x01, 0xFF, 0xAF, + 0x2B, 0x03, 0xC1, 0x2F, 0x47, 0xDD, 0x59, 0x72, 0xA5, 0x67, 0x0B, 0x2F, 0x48, 0x2E, 0x47, 0x86, + 0x82, 0x54, 0xF8, 0x9B, 0x5E, 0xCC, 0xBC, 0xB6, 0xA1, 0xE1, 0x4F, 0xD7, 0xE8, 0x75, 0xC6, 0x77, + 0x19, 0x24, 0x25, 0xD5, 0x09, 0xA1, 0x0B, 0xAD, 0x21, 0xB8, 0xC9, 0x0E, 0x34, 0x76, 0x68, 0xBB, + 0xD9, 0xD5, 0xE8, 0x71, 0xC4, 0xED, 0xE1, 0x4F, 0xBE, 0x02, 0xD9, 0x58, 0x59, 0x13, 0x20, 0x81, + 0x30, 0x8D, 0x7C, 0x75, 0x36, 0xEA, 0xA6, 0xEC, 0x43, 0x33, 0xDA, 0xD3, 0x25, 0x35, 0xD9, 0xF0, + 0xDE, 0xC8, 0x9B, 0x81, 0xB2, 0x73, 0x0B, 0x08, 0x63, 0xC2, 0x25, 0x61, 0x08, 0x75, 0x08, 0x6E, + 0x18, 0x13, 0xAE, 0x82, 0xA2, 0xCB, 0xA5, 0xC0, 0xB0, 0x01, 0x6E, 0x2F, 0x19, 0x4A, 0x18, 0xCF, + 0x93, 0x7C, 0x3F, 0x6D, 0x30, 0x7E, 0x17, 0xB6, 0x74, 0x9E, 0xA4, 0x4B, 0x1D, 0x3D, 0x23, 0x4D, + 0xCA, 0xC9, 0xC4, 0x2C, 0x62, 0x06, 0x0A, 0x1C, 0x12, 0x0E, 0x6D, 0xA7, 0x0C, 0x19, 0x68, 0xC6, + 0x8A, 0x69, 0xE5, 0x93, 0xDD, 0x35, 0x94, 0xF5, 0x7A, 0xBD, 0x43, 0xD6, 0x52, 0xB6, 0x86, 0x4B, + 0xEF, 0x22, 0x77, 0xA8, 0x1D, 0x1B, 0x42, 0xBF, 0xBC, 0x93, 0x0D, 0x85, 0x71, 0xC6, 0xB8, 0x72, + 0xC0, 0x48, 0x06, 0x75, 0x53, 0xBA, 0x75, 0xAC, 0x9E, 0xE8, 0x3C, 0x85, 0xF0, 0x2D, 0x1C, 0xB4, + 0x6A, 0x01, 0x0A, 0xF3, 0x32, 0x06, 0xBA, 0xD5, 0x93, 0x0D, 0x57, 0xBA, 0x66, 0x2F, 0xD3, 0x4A, + 0xBE, 0x3B, 0x7D, 0x75, 0x85, 0x0B, 0x57, 0xBB, 0xA9, 0xDB, 0x53, 0xBF, 0xEF, 0xCD, 0xD9, 0x70, + 0x0C, 0x14, 0xA8, 0x49, 0x08, 0xB8, 0x0F, 0x58, 0x9A, 0x66, 0x40, 0xA7, 0x9B, 0x77, 0x98, 0x86, + 0xA5, 0x99, 0x83, 0x9E, 0x66, 0xD9, 0xB6, 0xD6, 0xED, 0x77, 0xA4, 0x0C, 0xA8, 0xEB, 0x55, 0xC3, + 0x99, 0x85, 0x8F, 0xCC, 0x78, 0x7C, 0xC8, 0xEE, 0xAA, 0x83, 0x8D, 0x9A, 0x99, 0x39, 0x86, 0x31, + 0xAE, 0x84, 0x68, 0x9F, 0xC5, 0x9C, 0xA5, 0xCD, 0xA8, 0xB9, 0x0C, 0x83, 0x20, 0x62, 0x22, 0x01, + 0x4B, 0x36, 0xFE, 0x42, 0x47, 0xD8, 0x01, 0x7D, 0x2E, 0xBD, 0x38, 0x5C, 0x6D, 0x22, 0x02, 0xB1, + 0xF1, 0xE1, 0x1E, 0x7F, 0x93, 0x66, 0xA0, 0xA2, 0x55, 0x12, 0x12, 0xF3, 0x3B, 0x5A, 0x0C, 0xED, + 0xDB, 0xCA, 0x4B, 0x41, 0xA2, 0xF1, 0x91, 0x34, 0xE3, 0x9E, 0xF6, 0xBC, 0xC7, 0x04, 0x97, 0xC9, + 0x67, 0x7D, 0x93, 0x61, 0xB2, 0xC4, 0x22, 0xE6, 0x73, 0x21, 0x0E, 0xAE, 0x75, 0xA7, 0xB1, 0xD9, + 0x40, 0x3A, 0xD7, 0x57, 0x29, 0x2C, 0x23, 0xBD, 0x3E, 0x8E, 0xD6, 0xB6, 0x3D, 0xF0, 0x66, 0x83, + 0x06, 0x06, 0x59, 0xAC, 0x1F, 0x78, 0x4E, 0x8D, 0x8B, 0x44, 0x74, 0xAD, 0xD6, 0x26, 0xA0, 0xBD, + 0xD6, 0x44, 0x28, 0x5F, 0x6B, 0x1A, 0xED, 0xA1, 0x1C, 0xED, 0x52, 0xEE, 0xC4, 0x87, 0x3D, 0xC2, + 0x5A, 0x6E, 0xDF, 0x18, 0x1A, 0x0D, 0x61, 0x4D, 0xCB, 0x9A, 0x39, 0xC6, 0xD6, 0xF7, 0x56, 0xB8, + 0xA9, 0x39, 0x06, 0x53, 0x1A, 0xE5, 0x56, 0x52, 0x52, 0x69, 0x65, 0x6E, 0x09, 0xCA, 0x83, 0xC1, + 0x60, 0xBC, 0x93, 0x05, 0x7A, 0x11, 0x98, 0x58, 0x0D, 0xE4, 0xF7, 0x04, 0xD7, 0xE3, 0x46, 0xB1, + 0xB3, 0x95, 0x92, 0xAB, 0x9E, 0x6D, 0x7C, 0x9F, 0x65, 0xD9, 0x9E, 0x7C, 0x26, 0x98, 0xCF, 0x8D, + 0xC0, 0x6D, 0x46, 0x82, 0x3E, 0x1B, 0xFA, 0xFD, 0x22, 0x84, 0xF8, 0x83, 0xBE, 0x1D, 0xE4, 0xAC, + 0x02, 0x2F, 0xBE, 0x00, 0x6D, 0xED, 0x81, 0x3E, 0x2B, 0x60, 0x01, 0x6B, 0x70, 0x62, 0x33, 0xDF, + 0x0F, 0xCC, 0x9C, 0x93, 0x37, 0x74, 0x1C, 0xC7, 0xDA, 0x76, 0x17, 0x5E, 0xA6, 0xB3, 0x34, 0x05, + 0xC8, 0xA9, 0xC3, 0x76, 0x9D, 0x56, 0x8C, 0xFE, 0xB3, 0x01, 0xF1, 0xA0, 0x34, 0x7B, 0x31, 0xCD, + 0x75, 0xEC, 0x9E, 0xED, 0x3C, 0x18, 0xC9, 0xD0, 0x35, 0xBF, 0xF5, 0x99, 0xEB, 0xB8, 0xF6, 0x7D, + 0x64, 0x6C, 0xD2, 0xD6, 0x64, 0x96, 0xE2, 0xEA, 0x22, 0xCC, 0xEE, 0xD1, 0xB4, 0xDC, 0xFC, 0xA3, + 0xBA, 0x16, 0x7B, 0xFC, 0xDF, 0xD1, 0xF5, 0x5E, 0x79, 0xF6, 0x6A, 0xDB, 0x9A, 0xF5, 0x1C, 0xCB, + 0xFF, 0x32, 0x6D, 0xF7, 0x07, 0x33, 0xB3, 0xEF, 0x3E, 0x4C, 0xDB, 0x82, 0xB6, 0x21, 0xF5, 0x5E, + 0x7D, 0xE7, 0x3E, 0x82, 0xB0, 0x22, 0x3D, 0xE4, 0x28, 0x9E, 0x04, 0x43, 0x30, 0xA3, 0x79, 0xD3, + 0xED, 0x1C, 0x7B, 0x6E, 0x7B, 0x55, 0x26, 0x35, 0xEC, 0x93, 0x4D, 0x15, 0x00, 0x93, 0x2D, 0x15, + 0xE4, 0x13, 0x2D, 0xA3, 0x5D, 0xB2, 0xD1, 0x0E, 0xD9, 0x5D, 0x60, 0xCF, 0x1F, 0xDA, 0x86, 0xE5, + 0x37, 0xC4, 0x1C, 0xF4, 0x4D, 0xDF, 0x1C, 0x92, 0x98, 0xE1, 0xF2, 0xE2, 0x46, 0xC6, 0xB2, 0x85, + 0x17, 0x37, 0x53, 0xE2, 0xFE, 0x3E, 0xBC, 0x12, 0x09, 0xB8, 0xA0, 0x95, 0x22, 0xEC, 0xC1, 0x12, + 0x03, 0x7F, 0x1A, 0xF3, 0x1A, 0x20, 0xE2, 0x5F, 0xEE, 0x78, 0x20, 0x38, 0x49, 0x7A, 0x7C, 0xE5, + 0xB6, 0x21, 0xD3, 0x8F, 0x7C, 0xEC, 0x6D, 0x2B, 0xFD, 0xEB, 0xD7, 0x15, 0x81, 0x68, 0x90, 0x21, + 0x7C, 0xCC, 0x0D, 0x82, 0x0E, 0x53, 0x45, 0xEB, 0x48, 0xDA, 0xD8, 0x3C, 0x8C, 0x18, 0x7D, 0x17, + 0xEE, 0x5A, 0x8C, 0x1D, 0x3A, 0xB0, 0xAB, 0x61, 0xBC, 0xDA, 0xF0, 0xDF, 0xF0, 0xF4, 0x3C, 0xC1, + 0x71, 0xBF, 0x8F, 0x46, 0xF9, 0xB2, 0xF0, 0xAB, 0xBE, 0x59, 0x45, 0x89, 0x17, 0xE8, 0xB3, 0x0D, + 0x44, 0xB3, 0x7F, 0xF2, 0xB2, 0xFF, 0x6E, 0x5E, 0x36, 0x3E, 0xEA, 0xE6, 0xBD, 0x99, 0x6F, 0xEC, + 0x84, 0x6E, 0xA7, 0x3F, 0x73, 0x03, 0xEF, 0x5E, 0x9B, 0x2A, 0xAD, 0xE2, 0x9F, 0xAD, 0xFD, 0xFB, + 0x6C, 0xAD, 0x6D, 0xCE, 0x8C, 0xA0, 0x79, 0xD2, 0x37, 0x67, 0xFD, 0xC0, 0xED, 0xDD, 0x6F, 0x6B, + 0x05, 0x80, 0xFD, 0xB3, 0xB5, 0x7F, 0xF3, 0xAD, 0xB5, 0xFA, 0x43, 0x6F, 0xE6, 0x6F, 0x0B, 0xA0, + 0xAE, 0xC1, 0x79, 0x1D, 0xBD, 0x2B, 0x68, 0x5E, 0x4B, 0x05, 0x24, 0x9A, 0xCB, 0x0A, 0xD3, 0x3C, + 0x49, 0x40, 0xA9, 0x47, 0x0A, 0x4C, 0x54, 0x7F, 0x79, 0x58, 0x8D, 0x69, 0xA7, 0xCE, 0x8B, 0x06, + 0x87, 0x61, 0x52, 0xEC, 0x95, 0x53, 0x49, 0x1A, 0x6C, 0xFC, 0xA9, 0x92, 0x56, 0x3A, 0x6D, 0x67, + 0xE8, 0x06, 0xB3, 0x86, 0xEA, 0x7B, 0xC6, 0x77, 0xE3, 0xBC, 0x6E, 0x0A, 0xD2, 0xE6, 0x3B, 0x85, + 0xF7, 0x60, 0x3B, 0x4B, 0x51, 0x66, 0xCC, 0x56, 0x61, 0xAC, 0x58, 0x99, 0x82, 0x9B, 0xE9, 0xA5, + 0x4A, 0x18, 0xCF, 0xC3, 0x18, 0x2C, 0x61, 0xFB, 0xAF, 0x8F, 0xEC, 0x7A, 0x9E, 0x7A, 0x4B, 0x96, + 0x29, 0x38, 0xE4, 0xC6, 0xF8, 0xEE, 0x86, 0xCC, 0x05, 0x33, 0xD6, 0x51, 0x9A, 0x70, 0x8F, 0xB3, + 0xB6, 0xD1, 0xD9, 0x62, 0xD1, 0x6A, 0xB7, 0xC3, 0xEE, 0x03, 0x98, 0x5E, 0x74, 0xB6, 0x7F, 0x89, + 0x06, 0x97, 0x49, 0xE0, 0x95, 0xF5, 0x2F, 0x32, 0xA2, 0xA2, 0x1A, 0x3B, 0x0F, 0xAF, 0x58, 0x30, + 0xFE, 0xAC, 0x87, 0x71, 0xC0, 0xAE, 0xB0, 0xE2, 0x66, 0x94, 0x85, 0x60, 0xE2, 0x85, 0xF5, 0xE5, + 0x31, 0x95, 0x88, 0xC1, 0x69, 0xA1, 0xC1, 0x18, 0x57, 0x8A, 0x73, 0xB9, 0x06, 0xF1, 0x1E, 0xCD, + 0x65, 0x1E, 0x41, 0xA2, 0x41, 0x45, 0xB5, 0xBD, 0x95, 0xD8, 0xDD, 0xD6, 0x6A, 0x12, 0xE2, 0x74, + 0xA4, 0xA8, 0x94, 0xFF, 0x83, 0x0B, 0xDE, 0x94, 0x6B, 0xAA, 0x55, 0x17, 0x4D, 0xA3, 0x5E, 0x79, + 0xAC, 0x55, 0x25, 0xAB, 0x9D, 0xB2, 0xC8, 0x7F, 0x88, 0x56, 0x76, 0x1F, 0x22, 0xC7, 0xC7, 0x02, + 0x85, 0x39, 0xE5, 0x85, 0x89, 0x4A, 0x7D, 0x16, 0x4B, 0x50, 0x26, 0x42, 0x81, 0x51, 0xCB, 0xA5, + 0xAC, 0xCE, 0x78, 0xB7, 0xD6, 0x2D, 0xE0, 0xB0, 0xF6, 0xA0, 0x6A, 0xB4, 0x47, 0x1D, 0xDF, 0xCE, + 0x19, 0xFE, 0xE4, 0x7A, 0xC0, 0x4A, 0x6E, 0xC5, 0x4A, 0x2C, 0x39, 0xE1, 0xB8, 0x48, 0x7E, 0xF1, + 0x67, 0x1F, 0x17, 0x0B, 0x7F, 0x0E, 0x15, 0x67, 0xEF, 0xA9, 0xBE, 0x5A, 0x79, 0x72, 0x8E, 0x3F, + 0xB9, 0x78, 0xF5, 0x0A, 0xB4, 0x21, 0xA5, 0xCB, 0x7B, 0x9B, 0x26, 0xDE, 0xCF, 0xA5, 0x97, 0x46, + 0xE3, 0x74, 0x7B, 0x6C, 0x79, 0xFF, 0xA5, 0xEC, 0x8A, 0xF3, 0x85, 0xBB, 0x7D, 0xE4, 0xB9, 0x4D, + 0xDD, 0x1A, 0x45, 0x5F, 0xCF, 0xAD, 0x3E, 0x8A, 0xC9, 0xFC, 0x94, 0xB1, 0x58, 0x81, 0x6C, 0x1F, + 0xE8, 0x8B, 0xC2, 0xF5, 0xA0, 0x3F, 0x38, 0x48, 0x4F, 0xCF, 0x15, 0xB7, 0x67, 0xA7, 0xE2, 0x49, + 0xEE, 0xD9, 0xA9, 0x78, 0xAE, 0x4B, 0x4F, 0x9B, 0xCE, 0x82, 0xF0, 0x93, 0xE2, 0x47, 0x5E, 0x96, + 0x4D, 0x54, 0x82, 0x09, 0x75, 0x7A, 0x46, 0x4F, 0xA5, 0x14, 0x22, 0x9D, 0xA8, 0x48, 0x8B, 0x6D, + 0x29, 0xFC, 0x02, 0x91, 0x97, 0x0F, 0x16, 0x27, 0x27, 0x55, 0x59, 0xA4, 0x6C, 0x3E, 0x51, 0x17, + 0x9C, 0xAF, 0xB2, 0xD1, 0xE9, 0xE9, 0xE5, 0xE5, 0x65, 0xF7, 0x22, 0xE4, 0x8B, 0xCD, 0x0C, 0xCE, + 0xA7, 0xCB, 0xD3, 0x68, 0xE3, 0xEB, 0xE2, 0xEB, 0xE9, 0xD3, 0xF3, 0xD7, 0xF6, 0x93, 0x53, 0x0E, + 0xA2, 0x9F, 0x5A, 0x5D, 0x53, 0x55, 0x38, 0x58, 0x27, 0xE3, 0x13, 0xF5, 0x03, 0xE4, 0xF6, 0xF1, + 0x47, 0x98, 0x21, 0xFB, 0x74, 0x51, 0xCC, 0xC9, 0x96, 0xC0, 0x98, 0xB6, 0x4C, 0x7E, 0xF9, 0x14, + 0xB2, 0xCB, 0x1F, 0x92, 0xAB, 0x89, 0x8A, 0x07, 0x06, 0xD3, 0x36, 0xE0, 0xC3, 0x32, 0x0C, 0xA0, + 0xBA, 0x50, 0x0A, 0xDC, 0x9B, 0xA8, 0x74, 0x1B, 0x21, 0xF6, 0xF5, 0x0C, 0x0D, 0x07, 0x74, 0x40, + 0x59, 0x5E, 0xC4, 0xDA, 0xA6, 0xA6, 0xE8, 0x66, 0x07, 0x86, 0xAF, 0x3C, 0xBE, 0x50, 0x82, 0x89, + 0xFA, 0xB2, 0x8F, 0x2C, 0xCC, 0x81, 0xB3, 0xB6, 0x6D, 0xE0, 0x38, 0x70, 0x14, 0xBD, 0x17, 0xD9, + 0x2E, 0x8C, 0xEA, 0x59, 0x51, 0x0F, 0x2E, 0x6B, 0x67, 0x08, 0x9F, 0x8E, 0x32, 0x84, 0x1E, 0x7B, + 0x88, 0x4D, 0x56, 0x64, 0xDA, 0x8E, 0xE2, 0x1A, 0xEB, 0xBE, 0xA9, 0xE8, 0x8E, 0xAB, 0x98, 0x06, + 0x74, 0x99, 0x46, 0x2F, 0xD2, 0x5D, 0x03, 0x6E, 0x6C, 0x27, 0xB2, 0x81, 0xC9, 0xDA, 0x82, 0xA1, + 0x8E, 0xA3, 0xD8, 0x40, 0x3E, 0xB4, 0x23, 0x18, 0xDA, 0x8F, 0x80, 0x27, 0x30, 0x71, 0xD7, 0xD8, + 0x63, 0x2B, 0xF0, 0x39, 0xB0, 0xD7, 0x40, 0x62, 0xE3, 0xA4, 0xF0, 0xC5, 0x89, 0x74, 0x39, 0x02, + 0x6E, 0x60, 0xFC, 0x1A, 0xBE, 0xC2, 0xC8, 0x21, 0x4E, 0x4C, 0x4C, 0x74, 0x64, 0x1C, 0xC9, 0x59, + 0xD6, 0x38, 0xB7, 0x8E, 0x32, 0x94, 0x02, 0x90, 0x60, 0x66, 0x84, 0xDC, 0xEC, 0x35, 0xCE, 0xAE, + 0xA3, 0x14, 0x52, 0x74, 0x9D, 0x64, 0xD7, 0xC5, 0xE2, 0x4C, 0x65, 0x8D, 0x32, 0x88, 0x79, 0x51, + 0x5C, 0x9D, 0xD6, 0x8F, 0x5F, 0x7A, 0x34, 0x06, 0x86, 0x20, 0x85, 0xB5, 0x46, 0x01, 0x60, 0xFD, + 0xC8, 0x45, 0x30, 0xB1, 0xC5, 0x3C, 0xBA, 0x6B, 0xAE, 0xF5, 0xBE, 0xA1, 0xA0, 0x14, 0x28, 0x01, + 0x0A, 0xE0, 0xE2, 0x9E, 0x38, 0x28, 0x27, 0x30, 0x84, 0xA9, 0x1D, 0x14, 0xC4, 0x55, 0x50, 0x74, + 0x4B, 0xE9, 0x47, 0x34, 0x2F, 0xAC, 0x5F, 0xEF, 0x2B, 0x0E, 0xAC, 0xB3, 0x0F, 0xEA, 0x86, 0xF5, + 0xC3, 0xC4, 0x70, 0x07, 0x2A, 0xA2, 0xCE, 0x08, 0x06, 0xAE, 0x4D, 0x1B, 0xD9, 0x0A, 0x4A, 0x5B, + 0x11, 0x9A, 0xC5, 0x25, 0x3B, 0x03, 0x05, 0x16, 0x0C, 0x33, 0xD1, 0x6C, 0x26, 0x50, 0x42, 0x4F, + 0x84, 0x52, 0xC2, 0x4C, 0x30, 0x9F, 0x90, 0x11, 0x7A, 0x23, 0x5A, 0x01, 0x34, 0xA3, 0x9A, 0x71, + 0x4D, 0x9F, 0x69, 0xA3, 0x5D, 0x50, 0xE8, 0x5A, 0x77, 0x87, 0xB8, 0x52, 0x52, 0x75, 0xDF, 0xE6, + 0xF0, 0x4B, 0x0A, 0xE9, 0xF6, 0x78, 0x79, 0x97, 0x77, 0xE2, 0x15, 0x2E, 0xD0, 0x21, 0xDA, 0xF5, + 0xF2, 0x4E, 0x74, 0x7D, 0x06, 0x5B, 0x3A, 0x45, 0x63, 0x82, 0xCB, 0x05, 0xFC, 0x82, 0xF1, 0x4E, + 0x95, 0x33, 0x48, 0xDC, 0xE2, 0xC2, 0x3F, 0xF2, 0x23, 0xAB, 0x3A, 0x7D, 0x16, 0xA6, 0xCB, 0x4B, + 0x48, 0xF0, 0x60, 0x18, 0x0C, 0x80, 0xD1, 0x1E, 0xFC, 0xA2, 0x33, 0x7D, 0xB9, 0x43, 0xE9, 0xBF, + 0x3E, 0xFD, 0xE1, 0xDD, 0xF3, 0xBF, 0x99, 0x5B, 0x41, 0xDE, 0xB6, 0x76, 0x2D, 0xE4, 0xD8, 0x37, + 0xBA, 0x68, 0x7D, 0x16, 0xAA, 0xD6, 0x01, 0xE5, 0xF7, 0x86, 0xDC, 0x34, 0xFB, 0xD8, 0xE6, 0x62, + 0xDB, 0xD0, 0xC1, 0xDB, 0x21, 0xEC, 0x80, 0x4B, 0x17, 0xC7, 0x2A, 0xBA, 0xD0, 0xF4, 0x7A, 0x03, + 0x52, 0x78, 0x71, 0x87, 0x86, 0x4B, 0x9D, 0x7A, 0xDF, 0x95, 0x84, 0x7A, 0xC1, 0x42, 0xAF, 0x32, + 0xD6, 0xF3, 0xD9, 0x60, 0xBB, 0x86, 0x85, 0x08, 0xF2, 0x8B, 0x55, 0x8C, 0xA0, 0x01, 0x44, 0x26, + 0xA8, 0x88, 0xD9, 0x30, 0xE7, 0x3F, 0x14, 0x53, 0xE6, 0x0C, 0x15, 0x12, 0x22, 0xBF, 0x92, 0xA8, + 0xD4, 0x05, 0xB2, 0x0F, 0x7B, 0x0A, 0xCF, 0x69, 0x2B, 0xFC, 0xE4, 0x14, 0x42, 0x0B, 0x38, 0xEB, + 0xE7, 0x97, 0xAE, 0xEB, 0x42, 0xDF, 0x90, 0x5C, 0x1C, 0xBD, 0xDC, 0x04, 0x7B, 0xB5, 0x38, 0x09, + 0x48, 0xC8, 0xD1, 0x1B, 0xA0, 0x3D, 0x83, 0x50, 0x43, 0x44, 0x08, 0xD3, 0x42, 0x7F, 0x03, 0xDD, + 0x58, 0x30, 0x08, 0x3F, 0xF0, 0x9B, 0xB8, 0xC1, 0x2B, 0xF4, 0xC0, 0xED, 0x1A, 0x27, 0x51, 0x2C, + 0x30, 0x50, 0x13, 0xD4, 0xAE, 0x98, 0x43, 0xC5, 0xA1, 0xE9, 0x40, 0xE6, 0x01, 0x2E, 0x1D, 0x46, + 0xE8, 0x03, 0x60, 0xD6, 0x47, 0x40, 0xEB, 0x23, 0x57, 0x17, 0x40, 0xC4, 0x44, 0x9B, 0xEF, 0x2B, + 0x02, 0x6A, 0x0C, 0xDC, 0x0B, 0xB8, 0x82, 0x88, 0x6B, 0x0B, 0x91, 0x08, 0x1C, 0x75, 0x00, 0xA0, + 0x60, 0x72, 0x24, 0x74, 0x2D, 0x3E, 0x14, 0x1B, 0x63, 0xC2, 0xEA, 0x10, 0x3C, 0x5C, 0x5C, 0x9C, + 0x6D, 0x93, 0x62, 0x71, 0x32, 0xF9, 0xC5, 0x72, 0xA8, 0x9F, 0xBA, 0x89, 0xC2, 0x45, 0x8F, 0x19, + 0x18, 0xE2, 0x0A, 0x1C, 0x07, 0x30, 0xD1, 0xDA, 0x04, 0x4F, 0x06, 0x95, 0x29, 0x4E, 0xAE, 0x57, + 0x07, 0x7A, 0xD7, 0xFA, 0x90, 0xF0, 0x18, 0x85, 0x82, 0x95, 0xB8, 0xC3, 0xCF, 0x2F, 0x1D, 0x80, + 0x82, 0x81, 0x35, 0x00, 0x54, 0x41, 0x34, 0x91, 0xA8, 0x48, 0xBF, 0xB4, 0xA3, 0x36, 0xCE, 0x42, + 0x9B, 0x4F, 0xF4, 0x36, 0x90, 0xE2, 0x4E, 0xE0, 0xB2, 0x4C, 0x40, 0x12, 0x5C, 0x9A, 0xAD, 0xD8, + 0x64, 0x27, 0xA6, 0xC9, 0x6D, 0xDC, 0x14, 0x73, 0x10, 0x01, 0x2F, 0xC0, 0x13, 0x98, 0x14, 0xF5, + 0x8F, 0x22, 0xA2, 0xE0, 0x20, 0x45, 0x5F, 0xDE, 0x12, 0x7A, 0x22, 0x80, 0x02, 0x58, 0x80, 0x38, + 0x30, 0x29, 0x49, 0xAB, 0x5B, 0xA0, 0x6A, 0x83, 0xEB, 0xB6, 0x85, 0xFA, 0xBC, 0x97, 0xF3, 0x3F, + 0xC7, 0xB3, 0xE0, 0x1C, 0x0E, 0x74, 0x7F, 0x82, 0xF7, 0x9F, 0x5E, 0x86, 0x1F, 0xC3, 0xBF, 0x87, + 0xCF, 0x9B, 0x83, 0xC1, 0x1A, 0xF7, 0xCF, 0x00, 0xCB, 0x03, 0xF5, 0x39, 0x3D, 0x34, 0x11, 0xD7, + 0x11, 0x06, 0x08, 0x80, 0x6A, 0xD9, 0x64, 0x78, 0xB8, 0x67, 0x3D, 0xE1, 0x90, 0x0E, 0xD7, 0x2B, + 0xB7, 0x95, 0x01, 0x7A, 0x85, 0x4E, 0x2F, 0xB9, 0xD1, 0xAD, 0xB8, 0x13, 0x03, 0xA8, 0x1F, 0xE9, + 0x24, 0x19, 0x71, 0x43, 0x66, 0xC5, 0x4D, 0xD9, 0x59, 0x52, 0xE4, 0x5C, 0x3E, 0xBF, 0xEC, 0x81, + 0xFF, 0x0C, 0x1D, 0x88, 0x66, 0x16, 0x05, 0x06, 0x70, 0x22, 0xBD, 0x27, 0xB1, 0x5E, 0xB7, 0xD0, + 0x25, 0xC0, 0xD0, 0xA5, 0x9D, 0x91, 0x8D, 0x89, 0xB0, 0x21, 0x51, 0x06, 0x6D, 0x10, 0x5D, 0x14, + 0xBC, 0xD5, 0xA2, 0xCB, 0xC2, 0xB4, 0xCD, 0xB5, 0x8D, 0x7C, 0x14, 0x30, 0x32, 0xD3, 0x5C, 0xF7, + 0xB1, 0xC3, 0x22, 0xD7, 0x77, 0x85, 0x48, 0xEE, 0xDA, 0x42, 0x9D, 0xDB, 0xC4, 0xCB, 0xC4, 0x19, + 0x4C, 0xBA, 0xB5, 0x60, 0x0A, 0xE2, 0x05, 0x13, 0x0F, 0x30, 0x2F, 0x80, 0xB5, 0xA2, 0xFD, 0x42, + 0xC4, 0x34, 0x29, 0x64, 0x91, 0xA7, 0xA1, 0x92, 0xC8, 0xF2, 0x09, 0x0B, 0x71, 0x52, 0x62, 0xA1, + 0xA3, 0xC3, 0x9A, 0x03, 0x54, 0x8A, 0xF0, 0x47, 0x84, 0x39, 0x72, 0x10, 0xE8, 0x03, 0xF9, 0x1D, + 0xF4, 0x1C, 0x10, 0x58, 0xA1, 0x46, 0x94, 0x9E, 0x93, 0x50, 0x3A, 0x0C, 0x5F, 0x98, 0x90, 0x89, + 0x88, 0x3D, 0x53, 0x5C, 0x6E, 0x93, 0xA4, 0x36, 0x82, 0x86, 0xE3, 0x72, 0x0B, 0xE7, 0x1A, 0xA0, + 0x0E, 0x01, 0xD0, 0x0D, 0x10, 0x0F, 0x11, 0x01, 0x36, 0xD8, 0xB5, 0x15, 0x4E, 0x48, 0x01, 0x38, + 0x08, 0x1A, 0xC2, 0x51, 0x36, 0xA9, 0xBF, 0x0F, 0x4E, 0xE5, 0x62, 0x0B, 0xE2, 0x0F, 0xC4, 0xDD, + 0x01, 0xB0, 0x31, 0x8C, 0x05, 0x48, 0x63, 0x80, 0x04, 0x06, 0x2D, 0x64, 0x50, 0xC8, 0x2F, 0xA0, + 0x09, 0x3E, 0x3F, 0xD1, 0x00, 0x5A, 0x8D, 0x52, 0x34, 0xF2, 0x62, 0xE4, 0x02, 0x7B, 0x89, 0x9A, + 0x9A, 0xB0, 0x6F, 0x40, 0xAE, 0x0C, 0x94, 0x82, 0xD0, 0x34, 0x68, 0x20, 0x35, 0x49, 0xCC, 0x83, + 0xDF, 0x7B, 0xF9, 0xE8, 0xCF, 0x2C, 0x5A, 0xED, 0x71, 0x4F, 0x85, 0xF2, 0xE5, 0x89, 0x5A, 0x39, + 0x7C, 0x56, 0x4A, 0x48, 0x94, 0xD4, 0xAB, 0x4A, 0x08, 0x2E, 0xF0, 0xEC, 0xD7, 0x7F, 0x3F, 0x7D, + 0x73, 0xFE, 0xFC, 0xD5, 0x2F, 0xEA, 0xF4, 0xDF, 0x66, 0xD7, 0x16, 0xF4, 0xA7, 0x98, 0x32, 0x9F, + 0x8A, 0x57, 0xE3, 0xCE, 0x4E, 0x21, 0xCD, 0xDE, 0x9B, 0x6B, 0x8B, 0x42, 0xD4, 0xF4, 0x6C, 0x61, + 0x11, 0xA7, 0x97, 0xE7, 0x3F, 0xA1, 0xE0, 0x0B, 0x0B, 0x3E, 0xF2, 0xAE, 0x03, 0xB4, 0x34, 0xFE, + 0xFC, 0xF5, 0xF3, 0x67, 0xCF, 0xCE, 0xD5, 0xDD, 0xEE, 0xFC, 0x8D, 0x1C, 0xC8, 0x3E, 0xA0, 0x75, + 0xA1, 0x3C, 0x0B, 0x23, 0x96, 0x5D, 0x67, 0x9C, 0x2D, 0x0F, 0xF0, 0xA3, 0x93, 0x15, 0x30, 0xA2, + 0x62, 0x9C, 0x42, 0xC5, 0x38, 0x15, 0xEB, 0x32, 0x62, 0x1E, 0x2A, 0xC4, 0x89, 0x8A, 0x90, 0xAA, + 0xC4, 0xDE, 0x12, 0x3A, 0x97, 0xD7, 0xD8, 0x98, 0xFD, 0xF6, 0xBB, 0xAA, 0x2C, 0x37, 0x11, 0x0F, + 0x57, 0xA8, 0xAA, 0xFC, 0x4E, 0x05, 0x65, 0x0B, 0x4E, 0x25, 0xBE, 0x29, 0x95, 0x67, 0xDD, 0xAA, + 0x9C, 0x41, 0x14, 0xF5, 0xC4, 0x1C, 0xB5, 0x3A, 0x9F, 0xAA, 0x24, 0xB1, 0x1F, 0x85, 0xFE, 0x47, + 0x58, 0x23, 0x8B, 0x03, 0x9C, 0xAA, 0xDD, 0x19, 0x03, 0x7A, 0x79, 0xD1, 0x06, 0xE8, 0xDE, 0xD1, + 0x58, 0x75, 0xFA, 0x28, 0x9E, 0x65, 0xAB, 0xB1, 0xF8, 0x3C, 0x5B, 0xA5, 0xC9, 0x45, 0x8A, 0xCF, + 0xC6, 0xE4, 0xBE, 0x7D, 0x0A, 0xB3, 0x70, 0x16, 0x46, 0x21, 0xBF, 0x1E, 0x2D, 0xC2, 0x20, 0x60, + 0x71, 0x2E, 0xFA, 0x2A, 0xBD, 0x10, 0x53, 0xD2, 0x0D, 0x9C, 0xA1, 0xE8, 0x98, 0x43, 0x16, 0x23, + 0x59, 0xC0, 0xE9, 0x28, 0x15, 0xBF, 0x7B, 0xF6, 0xEC, 0x90, 0xEA, 0xE4, 0x5E, 0x8B, 0xA3, 0x52, + 0x0E, 0xC0, 0x74, 0x7A, 0xBA, 0x8F, 0x2A, 0x6A, 0xEB, 0xFE, 0x31, 0x59, 0x2E, 0xE1, 0xA0, 0xD7, + 0x6E, 0xE1, 0x7B, 0x71, 0x2D, 0xAD, 0xE5, 0x45, 0x51, 0xAB, 0xA2, 0x86, 0x37, 0x6C, 0x0E, 0xD2, + 0x2E, 0xD4, 0xD2, 0x64, 0xAB, 0xB3, 0xA2, 0x9C, 0x05, 0xB7, 0x1F, 0x53, 0x06, 0x68, 0x1E, 0x84, + 0x69, 0xBB, 0xA3, 0x36, 0x82, 0x4E, 0x2D, 0x60, 0x38, 0x46, 0x19, 0x2F, 0xF0, 0xBE, 0x16, 0x2E, + 0x1C, 0xFC, 0x07, 0xE3, 0x53, 0xB0, 0x03, 0x05, 0xDA, 0x7A, 0xAA, 0x72, 0x8D, 0xBA, 0x53, 0x73, + 0x6A, 0xBB, 0x42, 0x6D, 0xC1, 0x7D, 0x0A, 0x83, 0x2C, 0xB8, 0x5C, 0xD3, 0x05, 0x76, 0x31, 0x9A, + 0xA8, 0xB2, 0x60, 0xA8, 0x9E, 0x96, 0x7C, 0x70, 0xE8, 0x35, 0xB1, 0xCB, 0xC3, 0x56, 0xAF, 0x12, + 0xB5, 0x7A, 0xB7, 0xF2, 0x41, 0xB7, 0x44, 0x3E, 0xA6, 0x10, 0xC8, 0x82, 0x4B, 0x51, 0x26, 0x85, + 0x56, 0x57, 0x7E, 0xBD, 0x94, 0x1C, 0x5D, 0xD8, 0x6C, 0xC9, 0x84, 0x2A, 0xAE, 0xEA, 0xF4, 0x04, + 0x14, 0x08, 0x3C, 0x24, 0x50, 0x48, 0x17, 0x29, 0xA2, 0x34, 0x2A, 0x12, 0xCD, 0x45, 0x94, 0x05, + 0x0B, 0xF5, 0xC9, 0xAF, 0x8D, 0xE1, 0x8D, 0x83, 0x73, 0x4E, 0x8B, 0x58, 0x54, 0x50, 0xE2, 0x8B, + 0x63, 0xB9, 0xF1, 0x56, 0xA9, 0x6B, 0x98, 0x21, 0x8E, 0xE1, 0x92, 0x42, 0x7C, 0xA9, 0xBD, 0x2F, + 0xAA, 0xE6, 0x76, 0x5E, 0x96, 0x94, 0xD1, 0x08, 0xC5, 0xE1, 0x9E, 0x8C, 0x70, 0x51, 0x35, 0x87, + 0xB7, 0x60, 0x65, 0xC0, 0x7B, 0x81, 0xED, 0xD3, 0x5F, 0xC0, 0x0F, 0x8A, 0x2F, 0xE7, 0xA0, 0xA5, + 0xFC, 0x4B, 0xCD, 0x80, 0x1A, 0x6D, 0x72, 0x45, 0xD4, 0x2A, 0x25, 0x95, 0x93, 0xA1, 0x03, 0x14, + 0x38, 0xF1, 0x01, 0x6D, 0x95, 0xC6, 0x89, 0x0A, 0xC3, 0x71, 0x0C, 0x94, 0x35, 0x1B, 0xE1, 0x8F, + 0x19, 0xF7, 0xF8, 0x26, 0x2B, 0x35, 0xBA, 0xF3, 0x79, 0x17, 0x6F, 0x2C, 0x91, 0x4F, 0x9E, 0xBB, + 0x94, 0x77, 0xAB, 0x00, 0x6C, 0xFF, 0x16, 0xE0, 0xAB, 0x79, 0xEF, 0x41, 0x1C, 0xBC, 0x3C, 0x88, + 0x82, 0x15, 0x7B, 0x79, 0x18, 0xF2, 0x01, 0xEF, 0x1D, 0x0C, 0x10, 0x38, 0xB7, 0x8B, 0x7E, 0xB8, + 0x9E, 0xEA, 0x8C, 0xF7, 0x81, 0xBE, 0xF9, 0x65, 0x01, 0x7E, 0x78, 0xBB, 0x1F, 0xFE, 0x0A, 0xCE, + 0x14, 0x32, 0x71, 0xB8, 0x9F, 0x6C, 0x30, 0x1E, 0xE1, 0x30, 0x19, 0x29, 0x0F, 0x44, 0xB9, 0x52, + 0xCD, 0xC2, 0x67, 0x2E, 0x40, 0x1D, 0xDE, 0x05, 0x2B, 0x8C, 0x9F, 0x2A, 0x54, 0xF5, 0x8D, 0xAB, + 0x15, 0xAD, 0xF6, 0x75, 0x89, 0xAA, 0x24, 0xF4, 0x2C, 0xEC, 0xE9, 0x73, 0x58, 0x0E, 0x0F, 0xE7, + 0xA1, 0x4F, 0xB5, 0x73, 0x08, 0x96, 0xF6, 0x1E, 0xEB, 0x28, 0xAB, 0x85, 0xAA, 0x58, 0xC3, 0xB4, + 0x16, 0xFC, 0x45, 0x37, 0xBA, 0xBC, 0xAA, 0x14, 0xA9, 0xEE, 0xF4, 0x5D, 0x06, 0x6E, 0x24, 0x97, + 0xD7, 0x88, 0x5F, 0xD5, 0x77, 0x44, 0xF2, 0x2D, 0x14, 0xE4, 0xC5, 0x22, 0x3F, 0xE0, 0x63, 0x93, + 0x0F, 0xA2, 0xB1, 0x96, 0x39, 0x60, 0x05, 0xB6, 0x54, 0xDB, 0x22, 0xBD, 0xBB, 0x40, 0xAF, 0xA1, + 0xEF, 0x12, 0xBC, 0xFB, 0x1E, 0x42, 0xAD, 0x24, 0x49, 0x55, 0xB0, 0xBC, 0xED, 0x76, 0xE1, 0x66, + 0xFB, 0xF2, 0x8D, 0x6A, 0x6D, 0xB5, 0x91, 0x21, 0xE4, 0x06, 0x7B, 0xC8, 0xD6, 0xCB, 0x60, 0xB6, + 0x99, 0x2D, 0x43, 0xFE, 0x86, 0xAD, 0x37, 0x2C, 0xE3, 0x18, 0x82, 0xA4, 0x29, 0x8B, 0xF6, 0xBD, + 0x1E, 0x9F, 0xF9, 0x00, 0x73, 0x7C, 0xFA, 0xC9, 0x4B, 0x15, 0x7F, 0x93, 0xE2, 0xF3, 0x31, 0xC4, + 0xD0, 0x89, 0x7A, 0xAA, 0x8E, 0xE7, 0x9B, 0x98, 0x9E, 0xBF, 0x81, 0x51, 0x7F, 0x9A, 0x79, 0x10, + 0xD2, 0x6E, 0x70, 0x14, 0xB0, 0xAB, 0x78, 0xB1, 0xAA, 0xF1, 0x49, 0x85, 0xAE, 0x9B, 0xAD, 0xC0, + 0x1D, 0xDA, 0x40, 0xDD, 0xD1, 0x62, 0x64, 0xA2, 0x85, 0x13, 0x73, 0x0C, 0x1A, 0x6C, 0xB3, 0x13, + 0xA4, 0x0B, 0xE4, 0x1A, 0x5A, 0x22, 0x28, 0xB6, 0x94, 0x42, 0xF6, 0xF7, 0x6A, 0x75, 0xFA, 0xD6, + 0x69, 0x6B, 0xAC, 0x1C, 0x0E, 0xCD, 0xEF, 0xD5, 0xE9, 0x29, 0x79, 0x86, 0x3A, 0x0E, 0xCF, 0x78, + 0x37, 0x62, 0xF1, 0x05, 0x87, 0x1C, 0x78, 0xDC, 0x39, 0x30, 0xCB, 0x81, 0x49, 0xD4, 0x93, 0x76, + 0x7C, 0x32, 0xE1, 0xBF, 0x85, 0xBF, 0x9F, 0xA0, 0xC4, 0x27, 0xEA, 0x6D, 0x93, 0xAA, 0x27, 0x62, + 0x70, 0xE1, 0xB8, 0x52, 0x0A, 0x2D, 0x3C, 0x39, 0x19, 0xA7, 0x8C, 0x6F, 0xD2, 0x58, 0x21, 0x11, + 0xAA, 0x0E, 0xAB, 0x6E, 0x0B, 0x45, 0x82, 0xCD, 0x65, 0x8B, 0x0F, 0x21, 0x18, 0x13, 0x28, 0x53, + 0x8C, 0x57, 0xF3, 0xF0, 0xDC, 0xEA, 0x59, 0x2D, 0x08, 0xAB, 0x2D, 0x13, 0x2E, 0x10, 0x88, 0x5B, + 0xFD, 0x16, 0x06, 0x62, 0xBC, 0x88, 0xC0, 0xD0, 0xB2, 0x7A, 0xAD, 0x3C, 0x5A, 0xB7, 0x06, 0x2D, + 0x69, 0x5F, 0x2D, 0x0C, 0xB0, 0xA3, 0x94, 0x05, 0xE3, 0x96, 0x72, 0x0A, 0x82, 0xEC, 0xB2, 0xDB, + 0xCF, 0xC0, 0xAA, 0x33, 0xA0, 0x00, 0xBD, 0xC3, 0xC2, 0x36, 0x04, 0x0B, 0xF7, 0x80, 0x44, 0xFD, + 0x41, 0xC9, 0x10, 0xB0, 0xED, 0x76, 0x99, 0xAC, 0x3A, 0x43, 0xD3, 0x10, 0x1C, 0xF1, 0x2A, 0x59, + 0xBA, 0x55, 0x96, 0xCE, 0x9D, 0x39, 0x5A, 0xC3, 0xBD, 0x1C, 0xEC, 0xBB, 0xAC, 0xD2, 0x11, 0x2C, + 0x1C, 0x5B, 0x08, 0x35, 0x10, 0x32, 0x0D, 0x0A, 0x86, 0x15, 0x7E, 0xFD, 0x3B, 0x31, 0xEC, 0x7F, + 0x6D, 0x86, 0xEE, 0xD7, 0x60, 0x28, 0x92, 0x2E, 0x64, 0x5B, 0xE6, 0xA1, 0x2D, 0xCB, 0xA9, 0x98, + 0x04, 0xDC, 0xE7, 0x79, 0x68, 0x8B, 0xCE, 0x82, 0x16, 0xD6, 0xCD, 0xDC, 0xD6, 0xF4, 0x6B, 0x9A, + 0xE8, 0x97, 0xDA, 0xE7, 0xD7, 0x35, 0xCE, 0xAF, 0x6C, 0x99, 0x5F, 0x6A, 0x96, 0x5F, 0xD7, 0x26, + 0xBF, 0xAE, 0x41, 0xFE, 0x29, 0xD6, 0x58, 0x42, 0x23, 0x3E, 0x20, 0x6C, 0x22, 0xE3, 0x5D, 0x0D, + 0xD5, 0x72, 0xE0, 0x5F, 0xAB, 0x28, 0x96, 0xB5, 0x5E, 0x0E, 0x34, 0x5B, 0x79, 0x61, 0x69, 0xAE, + 0xF2, 0x62, 0xA0, 0x99, 0x36, 0x7D, 0x1A, 0xCA, 0x0B, 0x53, 0x5E, 0x5C, 0xCD, 0x34, 0xC5, 0xA5, + 0x27, 0x1A, 0xFB, 0x70, 0x31, 0xE8, 0x32, 0xD4, 0xCC, 0x01, 0x7D, 0x0E, 0xA9, 0xC9, 0x82, 0xE1, + 0x96, 0xBC, 0x58, 0x9A, 0xE9, 0xD2, 0xC5, 0xA5, 0xB6, 0x3E, 0x72, 0xED, 0x2B, 0x9F, 0x71, 0x81, + 0x69, 0xF2, 0x11, 0x56, 0x48, 0xA5, 0x8E, 0x96, 0x38, 0xF1, 0xB4, 0x68, 0xA5, 0x7B, 0x17, 0x2A, + 0x32, 0xDB, 0x0F, 0x78, 0x46, 0x64, 0x9D, 0x9B, 0x4A, 0x3C, 0x3A, 0x99, 0x30, 0x0C, 0x43, 0x5A, + 0x35, 0x02, 0xA9, 0x94, 0xE5, 0x6B, 0x2A, 0x44, 0x20, 0xB5, 0x53, 0xF2, 0xF0, 0x93, 0x25, 0xBE, + 0xCB, 0x72, 0x0E, 0x47, 0x94, 0xF8, 0x22, 0x6B, 0x33, 0x8D, 0xE7, 0x4A, 0x6B, 0xB3, 0x09, 0xEB, + 0xF2, 0xE4, 0x45, 0x72, 0xC9, 0xD2, 0x1F, 0xBD, 0x0C, 0x12, 0xDA, 0xCE, 0x59, 0x9B, 0x4F, 0x78, + 0xA3, 0xED, 0xB1, 0x6E, 0x8E, 0xF8, 0x19, 0x7B, 0x6C, 0x8E, 0x8C, 0x92, 0x2B, 0xBE, 0x47, 0xE0, + 0x71, 0x7F, 0x41, 0xB9, 0x36, 0x9D, 0x11, 0x50, 0x42, 0x8C, 0xF9, 0x70, 0x9A, 0x53, 0x21, 0x9E, + 0x7F, 0x63, 0x8E, 0xC3, 0x39, 0x70, 0x53, 0xAB, 0x05, 0x81, 0x73, 0x1A, 0x39, 0x52, 0xD4, 0x13, + 0xD6, 0x15, 0x54, 0x1A, 0x3F, 0xA9, 0x0F, 0xF9, 0xA3, 0xFA, 0xE5, 0x6D, 0xC2, 0xBD, 0x48, 0x11, + 0x6F, 0xDF, 0x10, 0x11, 0xC7, 0x86, 0xE3, 0x34, 0x90, 0x32, 0x06, 0x55, 0x12, 0xC8, 0x01, 0x83, + 0xE3, 0x14, 0xAF, 0x7C, 0x7F, 0xB3, 0x12, 0xAF, 0x7D, 0x28, 0x2A, 0x0D, 0x3D, 0x5B, 0x32, 0xC8, + 0xAC, 0x94, 0x65, 0x18, 0x83, 0xD1, 0xB4, 0x28, 0x21, 0x17, 0xB8, 0xB0, 0x00, 0xAB, 0x9A, 0xB4, + 0x86, 0x70, 0x27, 0xB2, 0xA5, 0x16, 0xCE, 0x90, 0x14, 0xF4, 0x90, 0x15, 0xC0, 0x26, 0x12, 0xB1, + 0x3C, 0x4B, 0x36, 0xFB, 0xBF, 0x53, 0xB5, 0x20, 0xF1, 0x37, 0x4B, 0xD8, 0xC7, 0xEE, 0x05, 0xE3, + 0x4F, 0x23, 0x86, 0xB7, 0x3F, 0x5C, 0x3F, 0x87, 0xFD, 0x93, 0x67, 0xAD, 0x4E, 0x37, 0x8C, 0x63, + 0x96, 0xFE, 0xFC, 0xF6, 0xE5, 0x8B, 0x09, 0xD7, 0x48, 0x9D, 0xB0, 0xD5, 0xDF, 0x54, 0x53, 0x27, + 0xA1, 0xE9, 0xB0, 0x96, 0x4D, 0x41, 0x16, 0xC3, 0x9F, 0xE3, 0xFB, 0x1B, 0xAF, 0xE6, 0x98, 0x53, + 0x69, 0xB5, 0x3E, 0x91, 0xF4, 0x58, 0x9D, 0x31, 0xAD, 0x8E, 0xA7, 0xB9, 0xA7, 0x55, 0x5F, 0x54, + 0x3D, 0x92, 0xFA, 0xD4, 0xB2, 0x36, 0x18, 0xC2, 0xDA, 0x06, 0xA4, 0x31, 0xE6, 0x1D, 0xB2, 0x20, + 0x4C, 0xB0, 0x20, 0x15, 0xAA, 0x78, 0x6C, 0x99, 0x11, 0x81, 0x69, 0x46, 0x98, 0xE4, 0x02, 0x3E, + 0xB4, 0xA6, 0x70, 0x24, 0xEC, 0x76, 0xCB, 0x13, 0x8C, 0xBA, 0x85, 0x35, 0x4C, 0xAA, 0x0B, 0x7C, + 0xF4, 0xA8, 0x0D, 0x56, 0x65, 0x74, 0x34, 0x46, 0x6F, 0x27, 0x65, 0x5D, 0x10, 0x9C, 0xB7, 0x73, + 0x83, 0xAC, 0xDA, 0xF5, 0x8E, 0xC9, 0x77, 0xF1, 0xA4, 0xA5, 0x71, 0xBA, 0x74, 0xB6, 0x1D, 0xCA, + 0x31, 0x51, 0x81, 0xD1, 0xC4, 0x18, 0x47, 0x67, 0x39, 0x3F, 0xA1, 0xA4, 0x71, 0x74, 0x72, 0xD2, + 0x51, 0x75, 0x13, 0x14, 0x2E, 0xE8, 0xDB, 0xB2, 0xFF, 0xB7, 0xE8, 0xF7, 0x2E, 0x56, 0x2F, 0x3A, + 0x20, 0x08, 0x69, 0xF1, 0xED, 0x9B, 0xA9, 0xB4, 0x16, 0x3A, 0x95, 0x01, 0xFE, 0x54, 0x41, 0xA7, + 0x82, 0x45, 0x7B, 0xF0, 0x47, 0x99, 0xBE, 0xE7, 0x25, 0x04, 0x99, 0x9A, 0x05, 0x10, 0xA2, 0x59, + 0x26, 0x02, 0x91, 0x85, 0xF7, 0x7D, 0x71, 0x19, 0x50, 0x9B, 0x89, 0xE0, 0xF1, 0xC2, 0xB4, 0xE4, + 0xA7, 0xA9, 0xE0, 0x30, 0xF3, 0x0E, 0x70, 0x82, 0x2F, 0x2F, 0x29, 0x57, 0xA6, 0x08, 0xC2, 0xD7, + 0x78, 0x6D, 0x29, 0x57, 0x16, 0x5C, 0x00, 0x76, 0xAF, 0x2D, 0x0A, 0x80, 0x0D, 0x0E, 0xE2, 0xAB, + 0x2E, 0x85, 0x37, 0x5B, 0xA7, 0xF9, 0x12, 0x0B, 0x56, 0x3D, 0xC9, 0xC9, 0x90, 0xAC, 0x6C, 0xC1, + 0xCA, 0x34, 0xEE, 0xC0, 0x0B, 0xD6, 0xBC, 0xC3, 0xC7, 0x69, 0xF0, 0x71, 0x1E, 0xC8, 0xC7, 0x6D, + 0xF0, 0x71, 0xEF, 0xC0, 0x27, 0xAF, 0x2D, 0x51, 0x5A, 0x0E, 0xCB, 0x6C, 0x9D, 0xBD, 0x7D, 0x22, + 0x8F, 0x03, 0xEF, 0xE5, 0x79, 0xE0, 0x7D, 0x1E, 0x94, 0xD4, 0xE2, 0x85, 0x9D, 0xD5, 0xD5, 0x58, + 0xC5, 0xE7, 0x44, 0xE2, 0xC1, 0x50, 0x0B, 0x1C, 0x9C, 0x10, 0xB9, 0x62, 0x26, 0x68, 0x67, 0x27, + 0xAD, 0xE2, 0x31, 0x90, 0x78, 0x0A, 0x54, 0x3B, 0xC0, 0x55, 0x4A, 0xDD, 0x2D, 0x9C, 0xB9, 0x41, + 0xAC, 0xA9, 0xF4, 0x26, 0x56, 0x17, 0xFF, 0xC4, 0xBF, 0x7B, 0xF1, 0x19, 0x6C, 0xB1, 0x31, 0xE0, + 0xD1, 0xA3, 0xCA, 0x88, 0xDD, 0xEE, 0x3F, 0xFE, 0x40, 0x5F, 0x31, 0x3B, 0x62, 0xEF, 0xE4, 0x11, + 0x0E, 0xCB, 0xE8, 0x6F, 0x9F, 0x4C, 0x61, 0x8D, 0x62, 0xB5, 0x0D, 0xBB, 0x96, 0x63, 0xC5, 0x88, + 0xDC, 0x7C, 0x8D, 0xEF, 0x5A, 0x55, 0xB9, 0xDF, 0xCB, 0x02, 0xE5, 0x7B, 0xB5, 0x82, 0x15, 0x4F, + 0x20, 0x48, 0x71, 0xD6, 0x26, 0x28, 0xAC, 0xAB, 0x40, 0x6D, 0x75, 0xF0, 0x20, 0x84, 0x9C, 0xAB, + 0xA7, 0x99, 0x9A, 0x54, 0x38, 0x9F, 0x70, 0x7A, 0xFC, 0x40, 0x9F, 0x2A, 0xFD, 0x33, 0x00, 0xFF, + 0x0C, 0x9A, 0xFE, 0x19, 0x48, 0xFF, 0x9C, 0x34, 0xFD, 0x33, 0xF8, 0xAA, 0xFE, 0x59, 0xF1, 0xCE, + 0xA1, 0xC8, 0x01, 0x86, 0x18, 0xCD, 0x21, 0x13, 0x80, 0xA0, 0x2F, 0x3F, 0x7A, 0x18, 0xD7, 0x1D, + 0xF4, 0x46, 0x07, 0xFD, 0xB7, 0x47, 0x4E, 0x6C, 0xD1, 0x50, 0xBC, 0x60, 0x36, 0x80, 0x2E, 0x6D, + 0x13, 0x7D, 0x8F, 0x3E, 0x2D, 0xE1, 0xD1, 0xD0, 0x7F, 0xB7, 0x64, 0xA0, 0x34, 0x4E, 0x15, 0xB7, + 0xA5, 0x7E, 0x58, 0x55, 0x0A, 0x33, 0x2A, 0x52, 0xA7, 0xDD, 0x77, 0x09, 0xAB, 0xB0, 0x5E, 0xC9, + 0x27, 0x2A, 0xDB, 0x15, 0x94, 0xDB, 0x35, 0xCE, 0xF7, 0xAB, 0xD1, 0x57, 0x33, 0x8E, 0x5C, 0x9E, + 0x07, 0xDB, 0xCA, 0xE1, 0xF9, 0x1F, 0x64, 0x2E, 0x07, 0x03, 0x2A, 0x3E, 0xBB, 0xA9, 0x46, 0xD3, + 0xF8, 0xB1, 0x8A, 0x4F, 0x5D, 0x94, 0x9A, 0x73, 0x29, 0x61, 0x06, 0x81, 0x3E, 0xCB, 0x40, 0x6B, + 0x9A, 0xB2, 0x8A, 0xF0, 0xCF, 0x59, 0x15, 0x51, 0xFE, 0x53, 0x42, 0xAE, 0x8E, 0xD4, 0xDC, 0xD3, + 0x5B, 0xA7, 0x2D, 0xB9, 0x32, 0xA5, 0xD5, 0xA8, 0xAA, 0xB4, 0xA6, 0x3F, 0x25, 0x0A, 0x4F, 0x14, + 0x7A, 0x04, 0xAC, 0x84, 0xE5, 0xF3, 0x65, 0x6F, 0x7A, 0x24, 0xDC, 0x97, 0x95, 0xD9, 0x7A, 0xC4, + 0x3F, 0x48, 0x40, 0x05, 0xEB, 0xDA, 0x7A, 0x64, 0xAD, 0xA5, 0x4C, 0xCB, 0xA4, 0x2F, 0x62, 0xB2, + 0x98, 0xC4, 0xF3, 0x30, 0x5D, 0xB6, 0xD5, 0x1F, 0xC5, 0x8D, 0x12, 0x60, 0x17, 0x8E, 0x49, 0xE6, + 0x68, 0x6A, 0x22, 0x3B, 0x02, 0x67, 0xA9, 0xA5, 0x90, 0x34, 0x88, 0xA9, 0x1A, 0xDB, 0xE1, 0x99, + 0xE7, 0xA0, 0xC7, 0xD8, 0xC2, 0x18, 0x30, 0xAF, 0x24, 0xBD, 0x3E, 0xC2, 0x1B, 0xC6, 0xD4, 0xD9, + 0x57, 0x1E, 0x83, 0xC8, 0x9A, 0xD1, 0x2A, 0x85, 0xF8, 0xCD, 0xDB, 0xEA, 0x6B, 0xB1, 0x19, 0xF4, + 0xD0, 0xAD, 0xE4, 0x4D, 0x65, 0x53, 0x48, 0x89, 0x60, 0xE3, 0xE3, 0x4D, 0x14, 0x01, 0xF6, 0x35, + 0xE6, 0xF1, 0x73, 0x86, 0x30, 0x4F, 0x17, 0x20, 0x62, 0x09, 0x39, 0x6C, 0x39, 0x5D, 0x75, 0x28, + 0xE5, 0x0C, 0x38, 0x67, 0x3C, 0x89, 0xD9, 0xA5, 0xF2, 0x7F, 0x2F, 0x5F, 0xFC, 0xCC, 0xF9, 0x4A, + 0x96, 0xC4, 0xB4, 0x70, 0xA2, 0x9E, 0x92, 0x81, 0x3E, 0x16, 0xAF, 0x96, 0x4F, 0x60, 0x4D, 0xE3, + 0x10, 0x13, 0x49, 0x6C, 0x15, 0xC5, 0xDB, 0x13, 0x16, 0xFB, 0x49, 0xC0, 0xDE, 0xBD, 0x79, 0xDE, + 0xE6, 0x1D, 0x8D, 0x3A, 0x45, 0x49, 0xAC, 0xD2, 0x51, 0xCD, 0xDB, 0x0E, 0x6F, 0xAE, 0x7C, 0x74, + 0xD1, 0xE9, 0x92, 0x23, 0x77, 0xCB, 0x72, 0xB1, 0x2C, 0x1D, 0x47, 0xB0, 0xE6, 0xB8, 0x9B, 0xC4, + 0xB0, 0xB8, 0xE0, 0x1A, 0x33, 0x45, 0xE6, 0x2F, 0xF0, 0xAF, 0xB5, 0x26, 0x45, 0x06, 0xD4, 0xB9, + 0x81, 0x84, 0xDB, 0x99, 0x4C, 0xE2, 0x2E, 0x8D, 0xC1, 0x5C, 0x9B, 0x75, 0xA0, 0xC9, 0x32, 0x0C, + 0x6C, 0x14, 0xD9, 0x65, 0xAE, 0xE3, 0xFF, 0x3D, 0x7F, 0xF5, 0x0B, 0xC4, 0xAD, 0x14, 0x32, 0x7C, + 0x1C, 0x9F, 0xAD, 0x92, 0x38, 0x63, 0x6F, 0xD9, 0x15, 0x3F, 0xE2, 0x4E, 0x47, 0x44, 0x94, 0x25, + 0x6D, 0x6D, 0xEF, 0xB1, 0x60, 0xCB, 0x22, 0xD8, 0xC6, 0x46, 0xBD, 0x71, 0x8B, 0xAB, 0x59, 0xB1, + 0xB8, 0xAD, 0xFE, 0xF4, 0xF4, 0xAD, 0xAA, 0x85, 0x1A, 0xA6, 0x76, 0x20, 0x25, 0x6C, 0x4F, 0xBB, + 0xB1, 0x5D, 0xA2, 0xD8, 0x2E, 0x05, 0x3F, 0xEA, 0x4E, 0xF9, 0xA3, 0x80, 0x8E, 0x40, 0x16, 0x3C, + 0x81, 0x18, 0x18, 0x1C, 0x45, 0xE8, 0xE8, 0xDC, 0x1C, 0x24, 0xAE, 0x3F, 0xE9, 0xEC, 0x74, 0x6B, + 0x0F, 0x35, 0x01, 0x19, 0xBA, 0xDD, 0xEE, 0x11, 0x4F, 0xC6, 0x87, 0x96, 0xC7, 0x36, 0x6E, 0x2C, + 0xCE, 0x45, 0x68, 0x63, 0xCF, 0x92, 0x74, 0xF9, 0xC4, 0xE3, 0xDE, 0x98, 0x77, 0xBD, 0xD5, 0x0A, + 0x17, 0x2B, 0xDC, 0xBA, 0x9A, 0xAE, 0x97, 0x01, 0x30, 0x86, 0x00, 0x18, 0x9F, 0xE5, 0xF2, 0x8F, + 0x63, 0x08, 0x7D, 0x32, 0xF3, 0x67, 0xBF, 0xC5, 0xBF, 0x6B, 0x51, 0x35, 0x3F, 0x3E, 0x09, 0x25, + 0x8A, 0x9E, 0xAB, 0x25, 0xF3, 0x48, 0x0B, 0x45, 0x50, 0xD4, 0xCA, 0xF9, 0xCA, 0x07, 0x24, 0xA0, + 0xF5, 0x5D, 0x06, 0x9D, 0xAD, 0x08, 0xBD, 0xBB, 0x1E, 0x31, 0x0E, 0xE4, 0x8E, 0xBD, 0x7E, 0x75, + 0xFE, 0x16, 0x0F, 0x25, 0xC4, 0x47, 0xA5, 0x9D, 0x0B, 0xBA, 0x42, 0x85, 0x5D, 0x88, 0x3F, 0x4F, + 0x3F, 0x01, 0xC7, 0x17, 0x00, 0x6C, 0x0C, 0x80, 0x0A, 0xB5, 0x23, 0x1E, 0x61, 0xA8, 0x5A, 0x99, + 0xAC, 0x93, 0xAD, 0xE6, 0xEB, 0x02, 0x77, 0x5C, 0x6D, 0xA8, 0xFE, 0x99, 0x9F, 0x20, 0x99, 0x78, + 0xDF, 0x3F, 0x38, 0x95, 0x27, 0xBE, 0xFF, 0x81, 0xC3, 0xD7, 0x61, 0xBB, 0x14, 0xEA, 0x17, 0x5B, + 0x76, 0x04, 0x3E, 0x6F, 0xDB, 0x63, 0x05, 0x37, 0xF9, 0x04, 0x4F, 0xBF, 0xCF, 0xF0, 0x75, 0xF8, + 0xB6, 0xD1, 0xC1, 0xE3, 0xDA, 0x76, 0xAB, 0x61, 0x22, 0x05, 0x4B, 0x8F, 0x71, 0x5C, 0xD5, 0xDD, + 0xC8, 0xB1, 0x26, 0x81, 0xF4, 0xAC, 0xC7, 0xED, 0x87, 0xCD, 0xFC, 0x00, 0xBB, 0x2A, 0xBC, 0xED, + 0x6E, 0xBE, 0x20, 0xA7, 0xDB, 0xEB, 0x9D, 0x15, 0x1C, 0x08, 0xEA, 0x38, 0xD0, 0xE9, 0x8C, 0xE8, + 0xEF, 0xBA, 0xDB, 0xEA, 0xF7, 0xB1, 0x22, 0xFE, 0xA2, 0x18, 0x0F, 0xB2, 0x60, 0x2E, 0xC1, 0x37, + 0x2A, 0xB8, 0x6F, 0x20, 0x7C, 0x95, 0x77, 0xB6, 0xA5, 0xB7, 0x56, 0x1F, 0x8E, 0xE1, 0x0E, 0xEF, + 0x44, 0x8B, 0xC6, 0x03, 0x40, 0xE5, 0xB1, 0xDA, 0xB9, 0xDD, 0xB1, 0x2F, 0xBF, 0xD0, 0xAD, 0xCB, + 0xC7, 0x78, 0x0F, 0x53, 0x66, 0x65, 0xFE, 0x07, 0x90, 0x37, 0x93, 0x10, 0xF5, 0xC8, 0x58, 0xF9, + 0xF2, 0x48, 0x3E, 0x8F, 0xFC, 0x63, 0x8D, 0x89, 0x8A, 0x7F, 0xAD, 0x71, 0xDC, 0x4E, 0xE6, 0x97, + 0xC7, 0x11, 0x28, 0x47, 0x94, 0x3A, 0x0A, 0x69, 0xB7, 0x02, 0x0C, 0x9C, 0xC2, 0xEF, 0x09, 0x2C, + 0x02, 0x57, 0x4A, 0xBA, 0x7B, 0xE0, 0xC9, 0x86, 0x8C, 0x02, 0x96, 0xF2, 0x77, 0x80, 0x14, 0xD2, + 0xE8, 0xAD, 0xA0, 0xB2, 0xB3, 0xBB, 0x0F, 0x87, 0x93, 0x3C, 0x54, 0x17, 0x88, 0x72, 0x2F, 0xC3, + 0xBE, 0x2B, 0xA6, 0xEC, 0x08, 0xFC, 0x06, 0xA1, 0x20, 0xE5, 0xD5, 0xF4, 0xF7, 0xD2, 0x0B, 0x79, + 0xF7, 0x78, 0xC8, 0xCB, 0x9F, 0x3D, 0x1F, 0xCD, 0x57, 0xFE, 0x5C, 0xBF, 0x3C, 0xC4, 0x24, 0x7F, + 0x5F, 0x62, 0x75, 0x75, 0x47, 0xA7, 0x2E, 0xF1, 0xF1, 0x4F, 0x82, 0x80, 0x5D, 0xF2, 0x8A, 0x8C, + 0xE3, 0x9D, 0x84, 0xAC, 0x01, 0xC4, 0x08, 0x77, 0xAA, 0x49, 0x87, 0x7C, 0x61, 0x17, 0x70, 0xF8, + 0x77, 0xEA, 0x5F, 0xAB, 0xBD, 0x7F, 0xFC, 0x21, 0x61, 0x5B, 0x42, 0xEC, 0xDC, 0x03, 0xA7, 0x0C, + 0xD4, 0x8E, 0xA6, 0x5A, 0x70, 0x66, 0xCE, 0x47, 0x75, 0xEA, 0x83, 0x7C, 0x2F, 0xF6, 0x41, 0x42, + 0x44, 0xF6, 0x31, 0x65, 0x6B, 0x38, 0xA7, 0x5D, 0x1D, 0x2F, 0xDC, 0x88, 0x00, 0xE3, 0x56, 0xAF, + 0xC1, 0x7A, 0xA9, 0x63, 0x68, 0x7C, 0x92, 0x31, 0x4E, 0x6F, 0xDB, 0x82, 0x86, 0xDB, 0x15, 0x4B, + 0x8F, 0x4F, 0x26, 0xA6, 0x5C, 0xB6, 0x63, 0xEA, 0x87, 0xE3, 0x66, 0xDD, 0x0B, 0x63, 0x10, 0x0D, + 0x12, 0x6C, 0x25, 0x63, 0x10, 0x56, 0x82, 0xEC, 0x4E, 0xC6, 0x59, 0xDA, 0x39, 0xD3, 0x1C, 0xE3, + 0x2C, 0x7E, 0xF4, 0xA8, 0xED, 0x83, 0x8D, 0xA7, 0x85, 0x54, 0x90, 0xB5, 0x47, 0x89, 0x78, 0x6F, + 0x01, 0xB4, 0x8E, 0x06, 0x85, 0xA7, 0x05, 0xCD, 0x64, 0xB6, 0x4C, 0x5B, 0xF7, 0x29, 0x13, 0xE3, + 0x5F, 0xB5, 0xF3, 0xD6, 0x00, 0x59, 0x46, 0x48, 0x09, 0x7D, 0x2F, 0xF0, 0x2D, 0x80, 0xF6, 0x11, + 0x07, 0xBF, 0x4B, 0xAE, 0x7D, 0x98, 0x36, 0x7F, 0xC1, 0x63, 0x27, 0x90, 0xD0, 0x9F, 0xE5, 0x56, + 0x1E, 0x30, 0x34, 0x92, 0xF2, 0x63, 0xF2, 0x1C, 0xE4, 0x49, 0xC1, 0x69, 0x7C, 0x4B, 0x10, 0x6F, + 0xBE, 0x8F, 0x21, 0x37, 0x55, 0x9E, 0xCF, 0xC0, 0x54, 0x6E, 0xA1, 0xAC, 0xBF, 0x30, 0xD1, 0xA0, + 0xC6, 0xB7, 0x07, 0x68, 0xD8, 0xE3, 0x77, 0xE7, 0x4F, 0xDF, 0x54, 0x0F, 0x5F, 0x18, 0x07, 0x40, + 0xBC, 0x98, 0x43, 0x7C, 0x38, 0x51, 0x1F, 0xBD, 0xFE, 0xFE, 0xFC, 0xFC, 0xD7, 0x57, 0x6F, 0x9E, + 0xEC, 0x1F, 0xC2, 0x71, 0xC8, 0xF9, 0xBB, 0x1F, 0x5E, 0x3E, 0x7F, 0x3B, 0xB9, 0xC6, 0xC4, 0x36, + 0xDC, 0x17, 0xB4, 0xC2, 0x5B, 0x0E, 0x61, 0x70, 0x02, 0x0B, 0x2B, 0x27, 0xB0, 0x47, 0x8F, 0x00, + 0xD4, 0xBF, 0x81, 0xA6, 0xDC, 0x59, 0xEB, 0x16, 0xB0, 0x85, 0x38, 0x5A, 0x39, 0x06, 0xC5, 0x14, + 0xF9, 0xC2, 0xFC, 0x18, 0x74, 0x19, 0xC6, 0x41, 0x72, 0xB9, 0x27, 0x56, 0x1C, 0x7E, 0xEE, 0x33, + 0x3E, 0x3B, 0x95, 0xAF, 0x69, 0x9C, 0x9D, 0xCA, 0xB7, 0xBD, 0xE8, 0xBF, 0x0E, 0xFD, 0x7F, 0x17, + 0x2C, 0x35, 0x10, 0x41, 0x54, 0x00, 0x00 }; +#endif //__nofile_h diff --git a/esp3d/notifications_service.cpp b/esp3d/notifications_service.cpp new file mode 100644 index 00000000..f72f1e99 --- /dev/null +++ b/esp3d/notifications_service.cpp @@ -0,0 +1,441 @@ +/* + notifications_service.cpp - notifications service functions class + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + 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 +*/ +//Inspired by following sources +//* Line : +// - https://github.com/TridentTD/TridentTD_LineNotify +// - https://notify-bot.line.me/doc/en/ +//* Pushover: +// - https://github.com/ArduinoHannover/Pushover +// - https://pushover.net/api +//* Email: +// - https://github.com/CosmicBoris/ESP8266SMTP +// - https://www.electronicshub.org/send-an-email-using-esp8266/ + +#include "config.h" +#ifdef NOTIFICATION_FEATURE +#include "notifications_service.h" +#include "wificonf.h" +#if defined( ARDUINO_ARCH_ESP8266) +#define USING_AXTLS +#if defined(USING_AXTLS) +#include "WiFiClientSecureAxTLS.h" +using namespace axTLS; +typedef axTLS::WiFiClientSecure TSecureClient; +#else +#include +typedef WiFiClientSecure TSecureClient; +#endif //USING_AXTLS +#endif //ARDUINO_ARCH_ESP8266 + +#if defined(ARDUINO_ARCH_ESP32) +#include +typedef WiFiClientSecure TSecureClient; +#endif //ARDUINO_ARCH_ESP32 + +#include + +#define PUSHOVERTIMEOUT 5000 +#define PUSHOVERSERVER "api.pushover.net" +#define PUSHOVERPORT 443 + +#define LINETIMEOUT 5000 +#define LINESERVER "notify-api.line.me" +#define LINEPORT 443 + +#define EMAILTIMEOUT 5000 + +NotificationsService notificationsservice; + +bool Wait4Answer(TSecureClient & client, const char * linetrigger, const char * expected_answer, uint32_t timeout) +{ + if(client.connected()) { + String answer; + uint32_t starttimeout = millis(); + while (client.connected() && ((millis() -starttimeout) < timeout)) { + answer = client.readStringUntil('\n'); + //log_esp3d("Answer: %s", answer.c_str()); + if ((answer.indexOf(linetrigger) != -1) || (strlen(linetrigger) == 0)) { + break; + } + CONFIG::wait(10); + } + if (strlen(expected_answer) == 0) { + //log_esp3d("Answer ignored as requested"); + return true; + } + if(answer.indexOf(expected_answer) == -1) { + //log_esp3d("Did not got answer!"); + return false; + } else { + //log_esp3d("Got expected answer"); + return true; + } + } + //log_esp3d("Failed to send message"); + return false; +} + +NotificationsService::NotificationsService() +{ + _started = false; + _notificationType = 0; + _token1 = ""; + _token1 = ""; + _settings = ""; +} +NotificationsService::~NotificationsService() +{ + end(); +} + +bool NotificationsService::started() +{ + return _started; +} + +const char * NotificationsService::getTypeString() +{ + switch(_notificationType) { + case ESP_PUSHOVER_NOTIFICATION: + return "Pushover"; + case ESP_EMAIL_NOTIFICATION: + return "Email"; + case ESP_LINE_NOTIFICATION: + return "Line"; + default: + break; + } + return "None"; +} + +bool NotificationsService::sendMSG(const char * title, const char * message) +{ + if(!_started) { + return false; + } + if (!((strlen(title) == 0) && (strlen(message) == 0))) { + switch(_notificationType) { + case ESP_PUSHOVER_NOTIFICATION: + return sendPushoverMSG(title,message); + break; + case ESP_EMAIL_NOTIFICATION: + return sendEmailMSG(title,message); + break; + case ESP_LINE_NOTIFICATION : + return sendLineMSG(title,message); + break; + default: + break; + } + } + return false; +} +//Messages are currently limited to 1024 4-byte UTF-8 characters +//but we do not do any check +bool NotificationsService::sendPushoverMSG(const char * title, const char * message) +{ + String data; + String postcmd; + bool res; + TSecureClient Notificationclient; +#if defined(ARDUINO_ARCH_ESP8266) && !defined(USING_AXTLS) + Notificationclient.setInsecure(); +#endif //ARDUINO_ARCH_ESP8266 && !USING_AXTLS + if (!Notificationclient.connect(_serveraddress.c_str(), _port)) { + //log_esp3d("Error connecting server %s:%d", _serveraddress.c_str(), _port); + return false; + } + //build data for post + data = "user="; + data += _token1; + data += "&token="; + data += _token2;; + data +="&title="; + data += title; + data += "&message="; + data += message; + data += "&device="; + data += wifi_config.get_hostname(); + //build post query + postcmd = "POST /1/messages.json HTTP/1.1\r\nHost: api.pushover.net\r\nConnection: close\r\nCache-Control: no-cache\r\nUser-Agent: ESP3D\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nContent-Length: "; + postcmd += data.length(); + postcmd +="\r\n\r\n"; + postcmd +=data; + //log_esp3d("Query: %s", postcmd.c_str()); + //send query + Notificationclient.print(postcmd); + res = Wait4Answer(Notificationclient, "{", "\"status\":1", PUSHOVERTIMEOUT); + Notificationclient.stop(); + return res; +} +bool NotificationsService::sendEmailMSG(const char * title, const char * message) +{ + TSecureClient Notificationclient; +#if defined(ARDUINO_ARCH_ESP8266) && !defined(USING_AXTLS) + Notificationclient.setInsecure(); +#endif //ARDUINO_ARCH_ESP8266 && !USING_AXTLS + //log_esp3d("Connect to server"); + if (!Notificationclient.connect(_serveraddress.c_str(), _port)) { + //log_esp3d("Error connecting server %s:%d", _serveraddress.c_str(), _port); + return false; + } + //Check answer of connection + if(!Wait4Answer(Notificationclient, "220", "220", EMAILTIMEOUT)) { + //log_esp3d("Connection failed!"); + return false; + } + //Do HELO + //log_esp3d("HELO"); + Notificationclient.print("HELO friend\r\n"); + if(!Wait4Answer(Notificationclient, "250", "250", EMAILTIMEOUT)) { + //log_esp3d("HELO failed!"); + return false; + } + //log_esp3d("AUTH LOGIN"); + //Request AUthentication + Notificationclient.print("AUTH LOGIN\r\n"); + if(!Wait4Answer(Notificationclient, "334", "334", EMAILTIMEOUT)) { + //log_esp3d("AUTH LOGIN failed!"); + return false; + } + //log_esp3d("Send LOGIN"); + //sent Login + Notificationclient.printf("%s\r\n",_token1.c_str()); + if(!Wait4Answer(Notificationclient, "334", "334", EMAILTIMEOUT)) { + //log_esp3d("Sent login failed!"); + return false; + } + //log_esp3d("Send PASSWORD"); + //Send password + Notificationclient.printf("%s\r\n",_token2.c_str()); + if(!Wait4Answer(Notificationclient, "235", "235", EMAILTIMEOUT)) { + //log_esp3d("Sent password failed!"); + return false; + } + //log_esp3d("MAIL FROM"); + //Send From + Notificationclient.printf("MAIL FROM: <%s>\r\n",_settings.c_str()); + if(!Wait4Answer(Notificationclient, "250", "250", EMAILTIMEOUT)) { + //log_esp3d("MAIL FROM failed!"); + return false; + } + //log_esp3d("RCPT TO"); + //Send To + Notificationclient.printf("RCPT TO: <%s>\r\n",_settings.c_str()); + if(!Wait4Answer(Notificationclient, "250", "250", EMAILTIMEOUT)) { + //log_esp3d("RCPT TO failed!"); + return false; + } + //log_esp3d("DATA"); + //Send Data + Notificationclient.print("DATA\r\n"); + if(!Wait4Answer(Notificationclient, "354", "354", EMAILTIMEOUT)) { + //log_esp3d("Preparing DATA failed!"); + return false; + } + //log_esp3d("Send message"); + //Send message + Notificationclient.printf("From:ESP3D<%s>\r\n",_settings.c_str()); + Notificationclient.printf("To: <%s>\r\n",_settings.c_str()); + Notificationclient.printf("Subject: %s\r\n\r\n",title); + Notificationclient.println(message); + + //log_esp3d("Send final dot"); + //Send Final dot + Notificationclient.print(".\r\n"); + if(!Wait4Answer(Notificationclient, "250", "250", EMAILTIMEOUT)) { + //log_esp3d("Sending final dot failed!"); + return false; + } + //log_esp3d("QUIT"); + //Quit + Notificationclient.print("QUIT\r\n"); + if(!Wait4Answer(Notificationclient, "221", "221", EMAILTIMEOUT)) { + //log_esp3d("QUIT failed!"); + return false; + } + + Notificationclient.stop(); + return true; +} +bool NotificationsService::sendLineMSG(const char * title, const char * message) +{ + String data; + String postcmd; + bool res; + TSecureClient Notificationclient; +#if defined(ARDUINO_ARCH_ESP8266) && !defined(USING_AXTLS) + Notificationclient.setInsecure(); +#endif //ARDUINO_ARCH_ESP8266 && !USING_AXTLS + (void)title; + if (!Notificationclient.connect(_serveraddress.c_str(), _port)) { + //log_esp3d("Error connecting server %s:%d", _serveraddress.c_str(), _port); + return false; + } + //build data for post + data = "message="; + data += message; + //build post query + postcmd = "POST /api/notify HTTP/1.1\r\nHost: notify-api.line.me\r\nConnection: close\r\nCache-Control: no-cache\r\nUser-Agent: ESP3D\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nContent-Type: application/x-www-form-urlencoded\r\n"; + postcmd +="Authorization: Bearer "; + postcmd += _token1 + "\r\n"; + postcmd += "Content-Length: "; + postcmd += data.length(); + postcmd +="\r\n\r\n"; + postcmd +=data; + //log_esp3d("Query: %s", postcmd.c_str()); + //send query + Notificationclient.print(postcmd); + res = Wait4Answer(Notificationclient, "{", "\"status\":200", LINETIMEOUT); + Notificationclient.stop(); + return res; +} +//Email#serveraddress:port +bool NotificationsService::getPortFromSettings() +{ + String tmp ; + char sbuf[MAX_DATA_LENGTH + 1]; + if (CONFIG::read_string (ESP_NOTIFICATION_SETTINGS, sbuf, MAX_NOTIFICATION_SETTINGS_LENGTH) ) { + tmp = sbuf; + } + int pos = tmp.lastIndexOf(':'); + if (pos == -1) { + return false; + } + _port= tmp.substring(pos+1).toInt(); + //log_esp3d("port : %d", _port); + if (_port > 0) { + return true; + } else { + return false; + } +} +//Email#serveraddress:port +bool NotificationsService::getServerAddressFromSettings() +{ + String tmp ; + char sbuf[MAX_DATA_LENGTH + 1]; + if (CONFIG::read_string (ESP_NOTIFICATION_SETTINGS, sbuf, MAX_NOTIFICATION_SETTINGS_LENGTH) ) { + tmp = sbuf; + } + int pos1 = tmp.indexOf('#'); + int pos2 = tmp.lastIndexOf(':'); + if ((pos1 == -1) || (pos2 == -1)) { + return false; + } + + //TODO add a check for valid email ? + _serveraddress = tmp.substring(pos1+1, pos2); + //log_esp3d("server : %s", _serveraddress.c_str()); + return true; +} +//Email#serveraddress:port +bool NotificationsService::getEmailFromSettings() +{ + String tmp ; + char sbuf[MAX_DATA_LENGTH + 1]; + if (CONFIG::read_string (ESP_NOTIFICATION_SETTINGS, sbuf, MAX_NOTIFICATION_SETTINGS_LENGTH) ) { + tmp = sbuf; + } + int pos = tmp.indexOf('#'); + if (pos == -1) { + return false; + } + _settings = tmp.substring(0, pos); + //log_esp3d("email : %s", _settings.c_str()); + //TODO add a check for valid email ? + return true; +} + + +bool NotificationsService::begin() +{ + bool res = true; + end(); + byte bbuf = 0; + char sbuf[MAX_DATA_LENGTH + 1]; + if (CONFIG::read_byte (ESP_NOTIFICATION_TYPE, &bbuf ) ){ + _notificationType =bbuf; + } + switch(_notificationType) { + case 0: //no notification = no error but no start + return true; + case ESP_PUSHOVER_NOTIFICATION: + if (CONFIG::read_string (ESP_NOTIFICATION_TOKEN1, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + _token1 = sbuf; + } + if (CONFIG::read_string (ESP_NOTIFICATION_TOKEN2, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + _token2 = sbuf; + } + _port = PUSHOVERPORT; + _serveraddress = PUSHOVERSERVER; + break; + case ESP_LINE_NOTIFICATION: + if (CONFIG::read_string (ESP_NOTIFICATION_TOKEN1, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + _token1 = sbuf; + } + _port = LINEPORT; + _serveraddress = LINESERVER; + break; + case ESP_EMAIL_NOTIFICATION: + if (CONFIG::read_string (ESP_NOTIFICATION_TOKEN1, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + _token1 = sbuf; + } + if (CONFIG::read_string (ESP_NOTIFICATION_TOKEN2, sbuf, MAX_NOTIFICATION_TOKEN_LENGTH) ) { + _token2 = sbuf; + } + //log_esp3d("%s",Settings_ESP3D::read_string(ESP_NOTIFICATION_TOKEN1)); + //log_esp3d("%s",Settings_ESP3D::read_string(ESP_NOTIFICATION_TOKEN2)); + if(!getEmailFromSettings() || !getPortFromSettings()|| !getServerAddressFromSettings()) { + return false; + } + break; + default: + return false; + break; + } + + if (!res) { + end(); + } + _started = res; + return _started; +} +void NotificationsService::end() +{ + if(!_started) { + return; + } + _started = false; + _notificationType = 0; + _token1 = ""; + _token1 = ""; + _settings = ""; + _serveraddress = ""; + _port = 0; +} + +void NotificationsService::handle() +{ + if (_started) { + } +} + +#endif //NOTIFICATION_FEATURE diff --git a/esp3d/notifications_service.h b/esp3d/notifications_service.h new file mode 100644 index 00000000..5f6c6b98 --- /dev/null +++ b/esp3d/notifications_service.h @@ -0,0 +1,57 @@ +/* + notifications_service.h - notifications service functions class + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + 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 _NOTIFICATIONS_SERVICE_H +#define _NOTIFICATIONS_SERVICE_H + + +class NotificationsService +{ +public: + NotificationsService(); + ~NotificationsService(); + bool begin(); + void end(); + void handle(); + bool sendMSG(const char * title, const char * message); + const char * getTypeString(); + bool started(); +private: + bool _started; + uint8_t _notificationType; + String _token1; + String _token2; + String _settings; + String _serveraddress; + uint16_t _port; + bool sendPushoverMSG(const char * title, const char * message); + bool sendEmailMSG(const char * title, const char * message); + bool sendLineMSG(const char * title, const char * message); + bool getPortFromSettings(); + bool getServerAddressFromSettings(); + bool getEmailFromSettings(); +}; + +extern NotificationsService notificationsservice; + +#endif //_NOTIFICATIONS_SERVICE_H + diff --git a/esp3d/webinterface.cpp b/esp3d/webinterface.cpp index 88369f95..f595b9ce 100644 --- a/esp3d/webinterface.cpp +++ b/esp3d/webinterface.cpp @@ -256,8 +256,6 @@ bool sendLine2Serial (String & line, int32_t linenb, int32_t * newlinenb) return false; } - - //send M29 / M30 command to close file on SD//////////////////////////// void CloseSerialUpload (bool iserror, String & filename , int32_t linenb) { diff --git a/esp3d/wificonf.cpp b/esp3d/wificonf.cpp index a24c6b97..25339160 100644 --- a/esp3d/wificonf.cpp +++ b/esp3d/wificonf.cpp @@ -67,6 +67,10 @@ extern "C" { #include "esp_oled.h" #endif +#ifdef NOTIFICATION_FEATURE +#include "notifications_service.h" +#endif + #if defined (ASYNCWEBSERVER) #include "asyncwebserver.h" #else @@ -644,6 +648,10 @@ bool WIFI_CONFIG::Enable_servers() #endif } #endif +#if defined(NOTIFICATION_FEATURE) + notificationsservice.begin(); +#endif + return true; } @@ -662,6 +670,9 @@ bool WIFI_CONFIG::Disable_servers() if (WiFi.getMode() != WIFI_AP ) { NBNS.end(); } +#endif +#if defined(NOTIFICATION_FEATURE) + notificationsservice.end(); #endif return true; } diff --git a/gpl.txt b/gpl.txt new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/gpl.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +.