diff --git a/.vscode/settings.json b/.vscode/settings.json index 24e61dba..03671897 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,8 @@ "git.ignoreLimitWarning": true, "files.associations": { "*.tcc": "cpp", - "fstream": "cpp" + "fstream": "cpp", + "string": "cpp" }, "cmake.configureOnOpen": false } \ No newline at end of file diff --git a/Features.md b/Features.md index be5e9ac7..b84b7b30 100644 --- a/Features.md +++ b/Features.md @@ -14,7 +14,7 @@ * FTP support (limited to 1 connection at once) * WebDav support * Local FS support: - * Little FS (prefered) + * Little FS (recommended) * Fat (ESP32 only) * SPIFFS (deprecated) * SD support @@ -29,13 +29,15 @@ * Sharing connection using hardware switch * e.g.: Panucatt Wifi Backpack / Azteeg X5 WiFi * MKS fast upload by serial - * NOT SUPPORTED + * NOT SUPPORTED ANYMORE * M28/M29 File transfer protocol + * Serial file transfer using custom protocol (planned) * USB support * planned * Global FS under FTP / Webdav : SD + Local FS in same directory * Buzzer support * Recovery pin support +* Pins control by commands * ESP32 Camera support (only with PSRAM) * Basic oled screen support * I2C SSD1306 128x64 @@ -44,7 +46,7 @@ * SPI ST7789 135x240 * SPI ST7789 240x240 * Time synchronization support (manual / internet server) -* Lua interpreter support +* Lua interpreter support (Work in progress) * Notifications support * WebUI * TFT/OLED @@ -58,11 +60,13 @@ * Analog * BMX280 * Auto script support at start -* Basic Host GCODE stream for macros hosted on local FS +* Basic Host GCODE stream for macros hosted on local FS (Work in Progress to improve it) * Update * ESP3D configuration using ini file on SD * ESP3D update using binary file on SD - - * + * OTA support + * Update by WebUI + + diff --git a/README.md b/README.md index d2f1596f..c4aae61f 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ I did a project board to put all majors tasks/issues in one places : [ESP3D Proj - [Finish web UI Major features (3D printing and GRBL)](https://github.com/luc-github/ESP3D-WEBUI/issues/94#issuecomment-660600551) - Do user documentation: Readme / features list description / wiki/ Features videos etc... +- Complete all planned features - Test current features heavily - Collect some feedback diff --git a/embedded/assets/favicon.ico b/embedded/assets/favicon.ico new file mode 100644 index 00000000..6794fd9f Binary files /dev/null and b/embedded/assets/favicon.ico differ diff --git a/embedded/assets/footer.txt b/embedded/assets/footer.txt new file mode 100644 index 00000000..5548a77d --- /dev/null +++ b/embedded/assets/footer.txt @@ -0,0 +1 @@ +#endif //__favicon_h \ No newline at end of file diff --git a/embedded/assets/header.txt b/embedded/assets/header.txt new file mode 100644 index 00000000..fde9da06 --- /dev/null +++ b/embedded/assets/header.txt @@ -0,0 +1,22 @@ +/* + favicon.h - ESP3D data file + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + This code 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 code 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 code; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __favicon_h +#define __favicon_h diff --git a/embedded/config/buildassets.js b/embedded/config/buildassets.js new file mode 100644 index 00000000..ba223a95 --- /dev/null +++ b/embedded/config/buildassets.js @@ -0,0 +1,95 @@ +let path = require("path"); +const fs = require("fs"); +const { createReadStream, createWriteStream } = require("fs"); +const { createGzip } = require("zlib"); +const chalk = require("chalk"); + +let distPath = path.normalize(__dirname + "/../dist/"); +let srcPath = path.normalize(__dirname + "/../assets/"); +let headerPath = path.normalize( + __dirname + "/../../esp3d/src/modules/http/favicon.h" +); + + + +const convertToC = (filepath) => { +console.log(chalk.yellow("Converting bin to text file")); +//Cleaning files +if (fs.existsSync(distPath + "out.tmp")) fs.rmSync(distPath + "out.tmp"); +if (fs.existsSync(distPath + "favicon.h")) fs.rmSync(distPath + "favicon.h"); + +const data = new Uint8Array( + fs.readFileSync(filepath, { flag: "r" }) +); +console.log("data size is ", data.length); +let out = "#define favicon_size " + data.length + "\n"; +out += "const unsigned char favicon[" + data.length + "] PROGMEM = {\n "; +let nb = 0; +data.forEach((byte, index) => { + out += " 0x" + (byte.toString(16).length == 1 ? "0" : "") + byte.toString(16); + if (index < data.length - 1) out += ","; + if (nb == 15) { + out += "\n "; + nb = 0; + } else { + nb++; + } +}); + +out += "\n};\n"; +fs.writeFileSync(distPath + "out.tmp", out); + +//Check conversion +if (fs.existsSync(distPath + "out.tmp")) { + console.log(chalk.green("[ok]")); +} else { + console.log(chalk.red("[error]Conversion failed")); + return; +} + +//Format header file +console.log(chalk.yellow("Building header")); +fs.writeFileSync( + distPath + "favicon.h", + fs.readFileSync(srcPath + "header.txt") +); +let bin2cfile = fs.readFileSync(distPath + "out.tmp").toString(); +fs.appendFileSync(distPath + "favicon.h", bin2cfile); +fs.appendFileSync( + distPath + "favicon.h", + fs.readFileSync(srcPath + "footer.txt") +); + +//Check format result +if (fs.existsSync(distPath + "favicon.h")) { + console.log(chalk.green("[ok]")); +} else { + console.log(chalk.red("[error]Conversion failed")); + return; +} + +//Move file to src +console.log(chalk.yellow("Overwriting header in sources")); +fs.writeFileSync(headerPath, fs.readFileSync(distPath + "favicon.h")); +if (fs.existsSync(headerPath)) { + console.log(chalk.green("[ok]")); +} else { + console.log(chalk.red("[error]Overwriting failed")); + return; +} + +} + + +// Create a gzip function for reusable purpose +const compressFile = (filePath, targetPath) => { + const stream = createReadStream(filePath); + stream + .pipe(createGzip(targetPath)) + .pipe(createWriteStream(targetPath)) + .on("finish", () =>{console.log(`Successfully compressed at ${targetPath}`); + convertToC (targetPath)} + ); +}; + +compressFile(srcPath + "favicon.ico", distPath + "favicon.ico.gz"); \ No newline at end of file diff --git a/embedded/config/pack_favicon.js b/embedded/config/pack_favicon.js new file mode 100644 index 00000000..ac56755e --- /dev/null +++ b/embedded/config/pack_favicon.js @@ -0,0 +1,15 @@ +const path = require("path"); +const { createReadStream, createWriteStream } = require("fs"); +const { createGzip } = require("zlib"); +const faviconPath = path.normalize(__dirname + "/../assets/favicon.ico"); + +// Create a gzip function for reusable purpose +const compressFile = (filePath) => { + const stream = createReadStream(filePath); + stream + .pipe(createGzip()) + .pipe(createWriteStream(`${filePath}.gz`)) + .on("finish", () =>console.log(`Successfully compressed the file at ${filePath}`) + ); +}; +compressFile(faviconPath); \ No newline at end of file diff --git a/embedded/config/server.js b/embedded/config/server.js index bc1797c5..5e410f25 100644 --- a/embedded/config/server.js +++ b/embedded/config/server.js @@ -15,9 +15,12 @@ let currentID = 0; const app = express(); const fileUpload = require("express-fileupload"); let serverpath = path.normalize(__dirname + "/../server/public/"); +let sdpath = path.normalize(__dirname + "/../server/sd/"); let WebSocketServer = require("ws").Server, - wss = new WebSocketServer({ port: 81 }); + wss = new WebSocketServer({ port: 81,handleProtocols:function(protocol) {console.log( "protocol received from client " + protocol ); + return "webui-v3"; + return null;}}); app.use(fileUpload({ preserveExtension: true, debug: false })); app.listen(port, () => console.log(expresscolor(`[express] Listening on port ${port}!`)) @@ -85,22 +88,30 @@ app.get("/command", function (req, res) { console.log(commandcolor(`[server]/command params: ${req.query.cmd}`)); let url = req.query.cmd; if (url.startsWith("[ESP800]json")) { - res.json({ - FWVersion: "3.0.0.a28", - FWTarget: 40, - SDConnection: "none", - Authentication: "Disabled", - WebCommunication: "Synchronous", - WebSocketIP: "localhost", - WebSocketPort: "81", - Hostname: "esp3d", - WiFiMode: "STA", - WebUpdate: "Enabled", - Filesystem: "SPIFFS", - Time: "none", - Cam_ID: "4", - Cam_name: "ESP32 Cam", - }); + res.json( + { + cmd: "800", + status: "ok", + data:{ + FWVersion: "3.0.0.a28", + FWTarget: 40, + SDConnection: "none", + Authentication: "Disabled", + WebCommunication: "Synchronous", + WebSocketIP: "localhost", + WebSocketPort: "81", + WebSocketSubProtocol: "webui-v3", + Hostname: "esp3d", + WiFiMode: "STA", + WebUpdate: "Enabled", + FlashFileSystem: "LittleFs", + HostPath: "/", + Time: "none", + Cam_ID: "4", + Cam_name: "ESP32 Cam", + } + } + ); return; } if (url.indexOf("ESP111") != -1) { @@ -465,12 +476,12 @@ function fileSizeString(size) { return "X B"; } -function filesList(mypath) { +function filesList(mypath,mainpath) { let res = '{"files":['; let nb = 0; - let total = 1.31 * 1024 * 1024; - let totalused = getTotalSize(serverpath); - let currentpath = path.normalize(serverpath + mypath); + let total = sdpath==mainpath? (4096 * 1024 * 1024):(1.2 * 1024 * 1024); + let totalused = getTotalSize(mainpath); + let currentpath = path.normalize(mainpath + mypath); console.log("[path]" + currentpath); fs.readdirSync(currentpath).forEach((fileelement) => { let fullpath = path.normalize(currentpath + "/" + fileelement); @@ -548,6 +559,55 @@ app.all("/updatefw", function (req, res) { res.send("ok"); }); +app.all("/sdfiles", function (req, res) { + let mypath = req.query.path; + let url = req.originalUrl; + let filepath = path.normalize(sdpath + mypath + "/" + req.query.filename); + if (url.indexOf("action=deletedir") != -1) { + console.log("[server]delete directory " + filepath); + deleteFolderRecursive(filepath); + fs.readdirSync(mypath); + } else if (url.indexOf("action=delete") != -1) { + fs.unlinkSync(filepath); + console.log("[server]delete file " + filepath); + } + if (url.indexOf("action=createdir") != -1) { + fs.mkdirSync(filepath); + console.log("[server]new directory " + filepath); + } + if (typeof mypath == "undefined") { + if (typeof req.body.path == "undefined") { + console.log("[server]path is not defined"); + mypath = "/"; + } else { + mypath = (req.body.path == "/" ? "" : req.body.path) + "/"; + } + } + console.log("[server]path is " + mypath); + if (!req.files || Object.keys(req.files).length === 0) { + return res.send(filesList(mypath,sdpath)); + } + let myFile = req.files.myfiles; + if (typeof myFile.length == "undefined") { + let fullpath = path.normalize(sdpath + mypath + myFile.name); + console.log("[server]one file:" + fullpath); + myFile.mv(fullpath, function (err) { + if (err) return res.status(500).send(err); + res.send(filesList(mypath,sdpath)); + }); + return; + } else { + console.log(myFile.length + " files"); + for (let i = 0; i < myFile.length; i++) { + let fullpath = path.normalize(sdpath + mypath + myFile[i].name); + console.log(fullpath); + myFile[i].mv(fullpath).then(() => { + if (i == myFile.length - 1) res.send(filesList(mypath,sdpath)); + }); + } + } +}); + app.all("/files", function (req, res) { let mypath = req.query.path; let url = req.originalUrl; @@ -574,7 +634,7 @@ app.all("/files", function (req, res) { } console.log("[server]path is " + mypath); if (!req.files || Object.keys(req.files).length === 0) { - return res.send(filesList(mypath)); + return res.send(filesList(mypath,serverpath)); } let myFile = req.files.myfiles; if (typeof myFile.length == "undefined") { @@ -582,7 +642,7 @@ app.all("/files", function (req, res) { console.log("[server]one file:" + fullpath); myFile.mv(fullpath, function (err) { if (err) return res.status(500).send(err); - res.send(filesList(mypath)); + res.send(filesList(mypath, serverpath)); }); return; } else { @@ -591,7 +651,7 @@ app.all("/files", function (req, res) { let fullpath = path.normalize(serverpath + mypath + myFile[i].name); console.log(fullpath); myFile[i].mv(fullpath).then(() => { - if (i == myFile.length - 1) res.send(filesList(mypath)); + if (i == myFile.length - 1) res.send(filesList(mypath, serverpath)); }); } } diff --git a/embedded/package-lock.json b/embedded/package-lock.json index db03a77d..d447676b 100644 --- a/embedded/package-lock.json +++ b/embedded/package-lock.json @@ -1653,6 +1653,64 @@ "node": ">=10.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1688,27 +1746,6 @@ "node": ">= 8" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@types/anymatch": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", @@ -2272,44 +2309,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -2384,9 +2383,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2601,107 +2600,6 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2760,15 +2658,15 @@ "dev": true }, "node_modules/busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, "dependencies": { - "dicer": "0.3.0" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=4.5.0" + "node": ">=10.16.0" } }, "node_modules/bytes": { @@ -2780,48 +2678,6 @@ "node": ">= 0.8" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -2845,18 +2701,6 @@ "tslib": "^2.0.3" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001296", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz", @@ -2946,12 +2790,6 @@ "node": ">=6.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "node_modules/clean-css": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", @@ -2989,18 +2827,6 @@ "webpack": "*" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -3015,15 +2841,6 @@ "node": ">=6" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3309,23 +3126,6 @@ "node": ">=10" } }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", @@ -3440,15 +3240,6 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/css-loader": { "version": "5.2.7", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", @@ -3562,18 +3353,6 @@ } } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", @@ -3591,15 +3370,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -3612,12 +3382,6 @@ "node": ">= 10" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -3678,18 +3442,6 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", - "dev": true, - "dependencies": { - "streamsearch": "0.1.2" - }, - "engines": { - "node": ">=4.5.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3801,24 +3553,6 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -3849,15 +3583,6 @@ "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -3907,15 +3632,6 @@ "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -4090,15 +3806,15 @@ } }, "node_modules/express-fileupload": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.1.tgz", - "integrity": "sha512-fWPNAkBj+Azt9Itmcz/Reqdg3LeBfaXptDEev2JM8bCC0yDptglCnlizhf0YZauyU5X/g6v7v4Xxqhg8tmEfEA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz", + "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==", "dev": true, "dependencies": { - "busboy": "^0.3.1" + "busboy": "^1.6.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" } }, "node_modules/express-ws": { @@ -4372,18 +4088,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -4422,21 +4126,6 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -4471,28 +4160,6 @@ "node": ">=0.10.0" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -4553,15 +4220,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -4760,13 +4418,14 @@ } }, "node_modules/html-webpack-plugin/node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -4774,14 +4433,6 @@ }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } } }, "node_modules/html-webpack-plugin/node_modules/terser/node_modules/commander": { @@ -4790,15 +4441,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/html-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -4818,12 +4460,6 @@ "entities": "^2.0.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -4938,15 +4574,6 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -4966,15 +4593,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -5000,15 +4618,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -5061,18 +4670,6 @@ "node": ">=8" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", @@ -5136,43 +4733,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-installed-globally/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5182,15 +4742,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -5276,12 +4827,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -5294,12 +4839,6 @@ "node": ">=8" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -5353,12 +4892,6 @@ "node": ">=4" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -5386,15 +4919,6 @@ "node": ">=6" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -5404,18 +4928,6 @@ "node": ">=0.10.0" } }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -5472,15 +4984,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -5614,15 +5117,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/mini-css-extract-plugin": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", @@ -5663,9 +5157,9 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "node_modules/mkdirp": { @@ -5743,9 +5237,9 @@ } }, "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "engines": { "node": ">= 6.13.0" @@ -5758,9 +5252,9 @@ "dev": true }, "node_modules/nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -5770,10 +5264,10 @@ "minimatch": "^3.0.4", "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "bin": { "nodemon": "bin/nodemon.js" @@ -5849,15 +5343,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -6002,15 +5487,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6084,21 +5560,6 @@ "node": ">=6" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -6361,15 +5822,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -6405,16 +5857,6 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -6424,18 +5866,6 @@ "node": ">=6" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/qs": { "version": "6.9.6", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", @@ -6501,27 +5931,6 @@ "node": ">= 0.8" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -6626,30 +6035,6 @@ "node": ">=4" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -6757,15 +6142,6 @@ "node": ">=8" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -6909,18 +6285,6 @@ "semver": "bin/semver.js" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/send": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", @@ -7095,6 +6459,27 @@ "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -7195,12 +6580,12 @@ } }, "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10.0.0" } }, "node_modules/string_decoder": { @@ -7239,15 +6624,6 @@ "node": ">=6" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/style-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", @@ -7290,9 +6666,9 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -7419,13 +6795,14 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -7433,23 +6810,6 @@ }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" } }, "node_modules/terser/node_modules/commander": { @@ -7473,15 +6833,6 @@ "node": ">=4" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7530,18 +6881,6 @@ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -7555,15 +6894,6 @@ "node": ">= 0.6" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -7610,18 +6940,6 @@ "node": ">=4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -7631,49 +6949,6 @@ "node": ">= 0.8" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -7683,18 +6958,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -8313,47 +7576,6 @@ "node": ">= 8" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -8366,18 +7588,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", @@ -8399,15 +7609,6 @@ } } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -9559,6 +8760,55 @@ "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", "dev": true }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -9585,21 +8835,6 @@ "fastq": "^1.6.0" } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@types/anymatch": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", @@ -10119,40 +9354,6 @@ "dev": true, "requires": {} }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -10206,9 +9407,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -10391,82 +9592,6 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10512,12 +9637,12 @@ "dev": true }, "busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, "requires": { - "dicer": "0.3.0" + "streamsearch": "^1.1.0" } }, "bytes": { @@ -10526,38 +9651,6 @@ "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", "dev": true }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -10578,12 +9671,6 @@ "tslib": "^2.0.3" } }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, "caniuse-lite": { "version": "1.0.30001296", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz", @@ -10648,12 +9735,6 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "clean-css": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", @@ -10679,12 +9760,6 @@ "del": "^4.1.1" } }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -10696,15 +9771,6 @@ "shallow-clone": "^3.0.0" } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -10930,20 +9996,6 @@ } } }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", @@ -11035,12 +10087,6 @@ "which": "^2.0.1" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, "css-loader": { "version": "5.2.7", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", @@ -11110,15 +10156,6 @@ "ms": "2.1.2" } }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", @@ -11133,12 +10170,6 @@ "regexp.prototype.flags": "^1.2.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -11148,12 +10179,6 @@ "execa": "^5.0.0" } }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -11202,15 +10227,6 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", - "dev": true, - "requires": { - "streamsearch": "0.1.2" - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -11301,21 +10317,6 @@ "tslib": "^2.0.3" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -11340,15 +10341,6 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -11383,12 +10375,6 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -11545,12 +10531,12 @@ } }, "express-fileupload": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.1.tgz", - "integrity": "sha512-fWPNAkBj+Azt9Itmcz/Reqdg3LeBfaXptDEev2JM8bCC0yDptglCnlizhf0YZauyU5X/g6v7v4Xxqhg8tmEfEA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz", + "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==", "dev": true, "requires": { - "busboy": "^0.3.1" + "busboy": "^1.6.0" } }, "express-ws": { @@ -11750,15 +10736,6 @@ "has-symbols": "^1.0.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -11788,15 +10765,6 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -11824,25 +10792,6 @@ } } }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -11885,12 +10834,6 @@ "has-symbols": "^1.0.2" } }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -12045,13 +10988,14 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "dependencies": { @@ -12060,12 +11004,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } } @@ -12083,12 +11021,6 @@ "entities": "^2.0.0" } }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -12172,12 +11104,6 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -12188,12 +11114,6 @@ "resolve-cwd": "^3.0.0" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -12216,12 +11136,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -12259,15 +11173,6 @@ "binary-extensions": "^2.0.0" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-core-module": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", @@ -12307,42 +11212,12 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "dependencies": { - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - } - } - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -12398,12 +11273,6 @@ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -12413,12 +11282,6 @@ "is-docker": "^2.0.0" } }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -12460,12 +11323,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -12487,30 +11344,12 @@ "minimist": "^1.2.5" } }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -12558,12 +11397,6 @@ "tslib": "^2.0.3" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12658,12 +11491,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, "mini-css-extract-plugin": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", @@ -12691,9 +11518,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "mkdirp": { @@ -12756,9 +11583,9 @@ } }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-releases": { @@ -12768,9 +11595,9 @@ "dev": true }, "nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", "dev": true, "requires": { "chokidar": "^3.5.2", @@ -12779,10 +11606,10 @@ "minimatch": "^3.0.4", "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "dependencies": { "debug": { @@ -12832,12 +11659,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -12940,12 +11761,6 @@ "is-wsl": "^2.2.0" } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -12997,18 +11812,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - } - }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -13204,12 +12007,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -13242,31 +12039,12 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, "qs": { "version": "6.9.6", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", @@ -13306,26 +12084,6 @@ "unpipe": "1.0.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - } - } - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -13409,24 +12167,6 @@ "unicode-match-property-value-ecmascript": "^2.0.0" } }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -13512,15 +12252,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -13612,15 +12343,6 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - } - }, "send": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", @@ -13780,6 +12502,23 @@ "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -13865,9 +12604,9 @@ "dev": true }, "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "dev": true }, "string_decoder": { @@ -13902,12 +12641,6 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, "style-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", @@ -13934,9 +12667,9 @@ "dev": true }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -14028,22 +12761,15 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } } } } @@ -14060,12 +12786,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -14102,12 +12822,6 @@ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -14118,15 +12832,6 @@ "mime-types": "~2.1.24" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -14161,54 +12866,12 @@ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -14218,15 +12881,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -14667,40 +13321,6 @@ "isexe": "^2.0.0" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, "wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -14713,18 +13333,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", @@ -14732,12 +13340,6 @@ "dev": true, "requires": {} }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/embedded/package.json b/embedded/package.json index ae52235e..5cf5e60b 100644 --- a/embedded/package.json +++ b/embedded/package.json @@ -7,10 +7,11 @@ "test": "echo \"Error: no test specified\" && exit 1", "front": "webpack serve --config config/webpack.dev.js ", "pack": "webpack --config config/webpack.prod.js", - "convert": "node ./config/buildheader.js", + "convert-assets": "node ./config/buildassets.js", + "convert-page": "node ./config/buildheader.js", "server": "nodemon config/server.js", "dev": "concurrently \"npm run server\" \"npm run front\"", - "build": "npm run pack && npm run convert" + "build": "npm run pack && npm run convert-page && npm run convert-assets" }, "author": "", "license": "ISC", diff --git a/embedded/src/index.js b/embedded/src/index.js index 82c9388f..8d06fea8 100644 --- a/embedded/src/index.js +++ b/embedded/src/index.js @@ -30,7 +30,7 @@ let wsMsg = ""; let logOff = false; let pageId = ""; let currentPath = "/"; -const version = "3.0.0.a4"; +const version = "3.0.0.a5"; let xmlhttpupload; let prgfiletext; let prgfile; @@ -40,6 +40,8 @@ let loginLink; let loginModal; let loginUser = ""; let loginMsg; +let fspath="/files"; +let hostpath="/"; window.onload = function () { consolePanel = document.getElementById("consolePanel"); @@ -332,9 +334,15 @@ function processFWJson(text) { window.open(url); }); consolePanel.classList.remove("hide"); - if (json.FileSystem && json.FileSystem != "none") - fileSystem.classList.remove("hide"); + if ((json.FlashFileSystem && json.FlashFileSystem != "none")||(json.SDConnection && json.SDConnection != "none")){ + fileSystem.classList.remove("hide"); + if (json.FlashFileSystem && json.FlashFileSystem == "none"){ + fspath="/sdfiles"; + } + } + if (json.WebUpdate == "Enabled") firmware.classList.remove("hide"); + hostpath = json.HostPath; if (json.WiFiMode && json.WebSocketIP) { if (isLimitedEnvironment(json.WiFiMode)) { let address = @@ -349,18 +357,18 @@ function processFWJson(text) { } } if (json.Hostname) document.title = json.Hostname; - startSocket(json.WebSocketIP, json.WebSocketPort, json.WebCommunication); + startSocket(json.WebSocketIP, json.WebSocketPort, json.WebCommunication, json.WebSocketSubProtocol); SendFileCommand("list", "all"); } -function startSocket(ip, port, sync) { +function startSocket(ip, port, sync, protocol) { if (websocketStarted) { wsSource.close(); } wsSource = new WebSocket( "ws://" + ip + ":" + port + (sync == "Asynchronous" ? "/ws" : ""), - ["arduino"] + [protocol] ); wsSource.binaryType = "arraybuffer"; wsSource.onopen = function (e) { @@ -372,10 +380,13 @@ function startSocket(ip, port, sync) { //if it is not a log off if (!logOff) setTimeout(() => { - startSocket(ip, port, sync); + startSocket(ip, port, sync, protocol); }, 3000); }; - wsSource.onerror = function (e) {}; + wsSource.onerror = function (e) { + ErrorMSG("Error: websocket error!
" ); + console.log("Error: websocket error!"); + }; wsSource.onmessage = function (e) { let msg = ""; //bin @@ -466,12 +477,12 @@ function InfoMSG(msg) { function getFWData() { let url = new URL("http://" + window.location.host + "/command"); - url.searchParams.append("cmd", "[ESP800]json=YES time=" + getPCTime()); + url.searchParams.append("cmd", "[ESP800]json=YES version="+version+" time=" + getPCTime()); httpGet(url, processFWJson); } function SendFileCommand(action, filename) { - let url = new URL("http://" + window.location.host + "/files"); + let url = new URL("http://" + window.location.host + fspath); url.searchParams.append("action", action); url.searchParams.append("filename", filename); url.searchParams.append("path", currentPath); @@ -578,7 +589,7 @@ function dispatchFileStatus(jsonresponse) { for (let i1 = 0; i1 < json.files.length; i1++) { if (String(json.files[i1].size) != "-1") { if ( - currentPath == "/" && + currentPath == hostpath && (json.files[i1].name == "index.html.gz" || json.files[i1].name == "index.html") ) { @@ -737,7 +748,7 @@ function uploadFiles() { formData.append("myfiles", file, currentpath + file.name); } xmlhttpupload = new XMLHttpRequest(); - xmlhttpupload.open("POST", "/files", true); + xmlhttpupload.open("POST", fspath, true); //progress upload event xmlhttpupload.upload.addEventListener("progress", updateProgress, false); //progress function diff --git a/esp3d/src/core/debug_esp3d.cpp b/esp3d/src/core/debug_esp3d.cpp index 444e6d26..2348c003 100644 --- a/esp3d/src/core/debug_esp3d.cpp +++ b/esp3d/src/core/debug_esp3d.cpp @@ -48,6 +48,6 @@ Telnet_Server telnet_debug; //Websocket #if ESP_DEBUG_FEATURE == DEBUG_OUTPUT_WEBSOCKET -WebSocket_Server websocket_debug; +WebSocket_Server websocket_debug("debug"); #endif // ESP_DEBUG_FEATURE == DEBUG_OUTPUT_WEBSOCKET #endif //ESP_DEBUG_FEATURE diff --git a/esp3d/src/core/espcmd/ESP800.cpp b/esp3d/src/core/espcmd/ESP800.cpp index 7ae7da1e..949642f5 100644 --- a/esp3d/src/core/espcmd/ESP800.cpp +++ b/esp3d/src/core/espcmd/ESP800.cpp @@ -34,6 +34,7 @@ #endif //WIFI_FEATURE || ETH_FEATURE || BLUETOOTH_FEATURE #ifdef HTTP_FEATURE #include "../../modules/http/http_server.h" +#include "../../modules/websocket/websocket_server.h" #endif //HTTP_FEATURE #ifdef TIMESTAMP_FEATURE #include "../../modules/time/time_server.h" @@ -246,6 +247,20 @@ bool Commands::ESP800(const char* cmd_params, level_authenticate_type auth_type, output->printMSGLine(line.c_str()); } line=""; + //WebSocket subprotocol + if (json) { + line+=",\"WebSocketSubProtocol\":\""; + } else { + line+= "Web Socket SubProtocol:"; + } + line+= websocket_terminal_server.getProtocol(); + if (json) { + line +="\""; + output->print (line.c_str()); + } else { + output->printMSGLine(line.c_str()); + } + line=""; //WebSocket Port if (json) { line+=",\"WebSocketPort\":\""; @@ -255,7 +270,7 @@ bool Commands::ESP800(const char* cmd_params, level_authenticate_type auth_type, #if defined (ASYNCWEBSERVER_FEATURE) line+=HTTP_Server::port(); #else - line+=(HTTP_Server::port() +1); + line+=websocket_terminal_server.getPort(); #endif if (json) { line +="\""; @@ -324,12 +339,11 @@ bool Commands::ESP800(const char* cmd_params, level_authenticate_type auth_type, } line=""; #endif //WIFI_FEATURE|| ETH_FEATURE - //FS if (json) { - line+=",\"FileSystem\":\""; + line+=",\"FlashFileSystem\":\""; } else { - line+= "File system:"; + line+= "Flash File System:"; } #if defined(FILESYSTEM_FEATURE) line+=ESP_FileSystem::FilesystemName(); @@ -343,6 +357,21 @@ bool Commands::ESP800(const char* cmd_params, level_authenticate_type auth_type, output->printMSGLine(line.c_str()); } line=""; +// Host path + if (json) { + line+=",\"HostPath\":\""; + } else { + line+= "Host Path:"; + } + + line+= ESP3D_HOST_PATH; + if (json) { + line +="\""; + output->print (line.c_str()); + } else { + output->printMSGLine(line.c_str()); + } + line=""; //time server if (json) { line+=",\"Time\":\""; diff --git a/esp3d/src/include/defines.h b/esp3d/src/include/defines.h index 39be0840..72b6aac5 100644 --- a/esp3d/src/include/defines.h +++ b/esp3d/src/include/defines.h @@ -267,4 +267,7 @@ #define FS_UNKNOWN 254 #define MAX_FS 3 +//Host path +#define ESP3D_HOST_PATH "/" + #endif //_DEFINES_ESP3D_H diff --git a/esp3d/src/include/version.h b/esp3d/src/include/version.h index ac29c037..71407276 100644 --- a/esp3d/src/include/version.h +++ b/esp3d/src/include/version.h @@ -22,7 +22,7 @@ #define _VERSION_ESP3D_H //version and sources location -#define FW_VERSION "3.0.0.a203" +#define FW_VERSION "3.0.0.a204" #define REPOSITORY "https://github.com/luc-github/ESP3D/tree/3.0" #endif //_VERSION_ESP3D_H diff --git a/esp3d/src/modules/http/embedded.h b/esp3d/src/modules/http/embedded.h index 46bc4d8d..d8afc49f 100644 --- a/esp3d/src/modules/http/embedded.h +++ b/esp3d/src/modules/http/embedded.h @@ -20,694 +20,699 @@ #ifndef __embedded_h #define __embedded_h -#define tool_html_gz_size 10982 -const unsigned char tool_html_gz[10982] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xed, 0x7d, 0x8b, 0x76, 0xa3, 0xc8, - 0xb5, 0xe8, 0xaf, 0x20, 0x92, 0x51, 0x43, 0x54, 0xc2, 0xe8, 0xe1, 0x17, 0x32, 0xd2, 0xb5, 0xbb, - 0xed, 0x69, 0x27, 0xdd, 0xd3, 0x8e, 0xed, 0x9e, 0x9e, 0x89, 0xd3, 0xc7, 0x0b, 0x8b, 0x92, 0x44, - 0x1b, 0x81, 0x02, 0xc8, 0xb6, 0x46, 0xd6, 0x07, 0xdd, 0xdf, 0x38, 0x5f, 0x76, 0xf6, 0xae, 0x2a, - 0x50, 0x21, 0x81, 0x2c, 0xf7, 0x4c, 0x72, 0xd7, 0x3a, 0xeb, 0xae, 0x49, 0x64, 0xa8, 0xe7, 0xae, - 0x5d, 0xfb, 0x5d, 0xbb, 0xe8, 0xa3, 0x8a, 0x1b, 0xf6, 0x93, 0xd9, 0x84, 0x2a, 0xa3, 0x64, 0xec, - 0x77, 0x8f, 0xf0, 0x57, 0xf1, 0x9d, 0x60, 0x68, 0xab, 0x34, 0x50, 0xe1, 0x9d, 0x3a, 0x6e, 0xf7, - 0x68, 0x4c, 0x13, 0x47, 0xe9, 0x8f, 0x9c, 0x28, 0xa6, 0x89, 0xad, 0x7e, 0xbe, 0x3e, 0xab, 0x1f, - 0xa8, 0xa2, 0x74, 0x94, 0x24, 0x93, 0x3a, 0xfd, 0xd7, 0xd4, 0x7b, 0xb0, 0xd5, 0x5f, 0xea, 0x9f, - 0x8f, 0xeb, 0x6f, 0xc3, 0xf1, 0xc4, 0x49, 0xbc, 0x3b, 0x9f, 0xaa, 0x4a, 0x3f, 0x0c, 0x12, 0x1a, - 0x40, 0x97, 0xf3, 0x53, 0x9b, 0xba, 0x43, 0x9a, 0x76, 0x0a, 0x9c, 0x31, 0xb5, 0xd5, 0x07, 0x8f, - 0x3e, 0x4e, 0xc2, 0x28, 0x91, 0xda, 0x3d, 0x7a, 0x6e, 0x32, 0xb2, 0x5d, 0xfa, 0xe0, 0xf5, 0x69, - 0x9d, 0xbd, 0x10, 0x2f, 0xf0, 0x12, 0xcf, 0xf1, 0xeb, 0x71, 0xdf, 0xf1, 0xa9, 0xdd, 0xc8, 0x0f, - 0x91, 0x8c, 0xe8, 0x98, 0xd6, 0xfb, 0xa1, 0x1f, 0x46, 0xd2, 0x28, 0x7f, 0xda, 0xdd, 0xdf, 0xdd, - 0x75, 0x0f, 0xf3, 0x4d, 0xc7, 0xb1, 0x33, 0x99, 0xf8, 0x5e, 0x1f, 0x60, 0x0b, 0x83, 0x7a, 0xe0, - 0x3c, 0xdc, 0x4d, 0x93, 0x04, 0x9e, 0xb6, 0xea, 0x8c, 0x5d, 0x69, 0x7d, 0x1c, 0xde, 0x79, 0xf0, - 0xe7, 0x91, 0xde, 0xd5, 0xa1, 0xa0, 0x1e, 0x27, 0x4e, 0x32, 0x8d, 0xeb, 0x77, 0x4e, 0x04, 0x8f, - 0xb3, 0xdc, 0x7a, 0x97, 0x83, 0x24, 0x5e, 0xe2, 0xd3, 0xee, 0xbb, 0xb0, 0x3f, 0x1d, 0x43, 0xcd, - 0xd1, 0x0e, 0x7f, 0x3f, 0x8a, 0xfb, 0x91, 0x37, 0x49, 0x14, 0x97, 0x0e, 0x68, 0x64, 0xab, 0xec, - 0x8f, 0xda, 0xd5, 0x34, 0xdd, 0xee, 0xce, 0x1f, 0x9c, 0x48, 0xa1, 0xf6, 0xfc, 0x70, 0x6f, 0xaf, - 0x69, 0x69, 0x94, 0x24, 0x24, 0x48, 0x4b, 0x23, 0x3b, 0xd0, 0xf6, 0x0f, 0x76, 0xdb, 0x3a, 0x09, - 0xe1, 0x69, 0xaf, 0x01, 0x0f, 0x1e, 0x3e, 0xb4, 0x5a, 0xa6, 0x4e, 0x1c, 0x3b, 0x32, 0xae, 0x61, - 0x23, 0x4f, 0xa3, 0x28, 0x8c, 0x3a, 0xd4, 0xa0, 0x4f, 0x88, 0xdb, 0xd8, 0x1e, 0x4c, 0x83, 0x3e, - 0x2e, 0x59, 0xa3, 0xfa, 0xdc, 0x1b, 0x68, 0x21, 0xfc, 0xd5, 0x23, 0x9a, 0x4c, 0xa3, 0x40, 0xa1, - 0x9d, 0x64, 0x14, 0x85, 0x8f, 0x8a, 0xa3, 0x79, 0x50, 0x5a, 0x53, 0x15, 0x2f, 0x56, 0x82, 0x30, - 0x51, 0x1c, 0x25, 0xed, 0xa4, 0xea, 0x8b, 0x05, 0xd9, 0x33, 0xf7, 0xf7, 0xb7, 0x81, 0x24, 0x32, - 0xae, 0x92, 0xc8, 0x0b, 0x86, 0xdb, 0x82, 0xa2, 0x86, 0x77, 0xdf, 0x68, 0x3f, 0x51, 0x6d, 0x1b, - 0x09, 0x30, 0x1c, 0x28, 0xf4, 0xf9, 0xb9, 0x18, 0x3c, 0xf5, 0xad, 0x13, 0xbc, 0x49, 0x14, 0xa0, - 0x3e, 0x45, 0xad, 0x09, 0x58, 0x9d, 0x18, 0xe0, 0x9c, 0x44, 0x61, 0x12, 0x62, 0x6f, 0x06, 0xe8, - 0xe1, 0xde, 0xbe, 0xb9, 0x11, 0xd0, 0x46, 0xa3, 0xf1, 0x3d, 0x80, 0x6e, 0x85, 0xb3, 0x40, 0x11, - 0xcb, 0x41, 0x48, 0xda, 0x66, 0xe3, 0xd0, 0xa2, 0x00, 0xc3, 0x72, 0x4c, 0x75, 0x1a, 0xc0, 0x36, - 0x7b, 0x01, 0x75, 0xd5, 0x4a, 0xba, 0xe0, 0xe3, 0x28, 0x72, 0x66, 0x27, 0xd3, 0x01, 0xec, 0x7e, - 0xb5, 0x5a, 0xd4, 0xe0, 0x9d, 0x93, 0x38, 0x3f, 0x03, 0x9b, 0x2c, 0x48, 0x73, 0x4f, 0x5e, 0x9a, - 0x3a, 0x8d, 0xa9, 0x12, 0xc3, 0x22, 0x60, 0xbe, 0x0e, 0x5b, 0x27, 0x09, 0x89, 0x07, 0xeb, 0x09, - 0x34, 0x9c, 0x5a, 0x27, 0x31, 0x3c, 0x1d, 0xee, 0x1f, 0xc0, 0x72, 0xfd, 0x0c, 0x03, 0xfd, 0x74, - 0xab, 0xdc, 0x14, 0x15, 0x53, 0x78, 0x68, 0xee, 0x1e, 0xee, 0xeb, 0x64, 0x82, 0x75, 0xed, 0x03, - 0x9d, 0x0c, 0x32, 0x82, 0x1a, 0xc3, 0xd3, 0xc1, 0xc1, 0x01, 0x3c, 0xcd, 0xb0, 0x7d, 0xab, 0x09, - 0x4f, 0x43, 0x78, 0x6a, 0x99, 0xfb, 0xa6, 0x6e, 0x0c, 0xc8, 0x03, 0x0e, 0x7c, 0xb8, 0xbf, 0xa7, - 0x93, 0x11, 0x4e, 0xb6, 0xdb, 0x80, 0xde, 0x8f, 0x58, 0xb6, 0xb7, 0x0f, 0x73, 0xdc, 0xc1, 0xd3, - 0x6e, 0xa3, 0xd1, 0xd4, 0xc9, 0x29, 0x03, 0x05, 0xa7, 0xfb, 0x60, 0xfb, 0xc6, 0x79, 0x90, 0x1c, - 0xb0, 0x65, 0x93, 0x27, 0xfb, 0x43, 0xb5, 0xfa, 0xc1, 0xc8, 0xb6, 0x90, 0x9c, 0x43, 0xf5, 0x67, - 0x0f, 0xea, 0xdf, 0xfa, 0xce, 0x78, 0x42, 0x5d, 0xde, 0xec, 0xde, 0x3e, 0xaf, 0x56, 0xcf, 0xa5, - 0x66, 0x27, 0xd8, 0x6f, 0xa4, 0x7d, 0xd0, 0xc9, 0x95, 0xfd, 0x84, 0x4f, 0x4f, 0x3a, 0xb9, 0xb6, - 0x3f, 0x31, 0xe4, 0x4b, 0xcd, 0x3e, 0xc1, 0x68, 0xd9, 0xde, 0x92, 0x63, 0xfb, 0x4e, 0x53, 0x93, - 0x90, 0xef, 0xfb, 0xb5, 0x33, 0x54, 0x75, 0xf2, 0xcd, 0x3e, 0xd5, 0xd4, 0xeb, 0x5f, 0x2f, 0x4e, - 0xdf, 0xdd, 0x1e, 0x5f, 0x5e, 0x1e, 0xff, 0x7a, 0x7b, 0x7d, 0xfc, 0x23, 0x14, 0x7f, 0x5c, 0x2d, - 0x7e, 0xfb, 0xe9, 0xa7, 0xab, 0xeb, 0xcb, 0xcf, 0x6f, 0xaf, 0x3f, 0x5d, 0x42, 0xf5, 0xad, 0xed, - 0x54, 0xab, 0x95, 0xca, 0x23, 0xec, 0xd7, 0xa7, 0x09, 0x8d, 0x1c, 0xd8, 0x2b, 0x7b, 0xa2, 0xf9, - 0x46, 0x88, 0x2f, 0x3a, 0xb9, 0xb0, 0x2b, 0x0d, 0x72, 0x69, 0xcf, 0xb3, 0x65, 0x5a, 0x0d, 0xc2, - 0xd6, 0x94, 0x7b, 0x91, 0x17, 0x08, 0x65, 0xd0, 0xb8, 0xb1, 0xc7, 0x5f, 0x9a, 0xac, 0xc1, 0xf2, - 0x0d, 0xaa, 0x5a, 0x4d, 0xfe, 0xd2, 0x66, 0x55, 0xcb, 0xb7, 0x33, 0x3f, 0x74, 0x56, 0x5f, 0xf7, - 0xda, 0xfc, 0xf5, 0x60, 0x41, 0xce, 0xec, 0xf9, 0x89, 0x37, 0x84, 0xfe, 0x59, 0x19, 0x81, 0x77, - 0x1c, 0x42, 0x6a, 0xf4, 0x7e, 0x95, 0xd4, 0x2b, 0xee, 0x92, 0xd6, 0x2b, 0x0d, 0x46, 0x5a, 0x09, - 0xac, 0x8f, 0xea, 0x1d, 0x41, 0xff, 0x53, 0xed, 0x92, 0x24, 0xfa, 0xf3, 0xf3, 0x54, 0x3b, 0x83, - 0xbf, 0x8b, 0xce, 0x20, 0x8c, 0xb4, 0x48, 0xf1, 0x02, 0xe5, 0x52, 0xd7, 0x3c, 0x5b, 0x0b, 0x6d, - 0xff, 0x26, 0xfa, 0xaa, 0x57, 0xab, 0xe1, 0x72, 0x2b, 0xf4, 0xde, 0x58, 0xf3, 0xc8, 0x47, 0x12, - 0xea, 0xd6, 0x2d, 0xa0, 0x67, 0xd9, 0xe5, 0xac, 0xbc, 0x4b, 0xb5, 0x9a, 0xf6, 0xe9, 0x00, 0x54, - 0x5a, 0xe5, 0xf6, 0xf9, 0xb9, 0xd2, 0xd7, 0x4e, 0x60, 0xe2, 0x13, 0xdb, 0xb6, 0xcf, 0x04, 0xd0, - 0xb9, 0x0e, 0xda, 0xc9, 0x72, 0x31, 0xfa, 0x9c, 0x73, 0xe9, 0x27, 0x4d, 0x3d, 0x0f, 0xfa, 0x61, - 0x14, 0x01, 0x6d, 0xc0, 0x8c, 0x0f, 0x21, 0x17, 0xff, 0xc0, 0xa3, 0xe4, 0x56, 0xd7, 0x25, 0xd8, - 0x11, 0x84, 0x6a, 0xf5, 0x51, 0xc3, 0xbf, 0xe4, 0x44, 0x9a, 0xf4, 0xea, 0xf9, 0xf9, 0x0a, 0x66, - 0xbc, 0xc6, 0x09, 0xae, 0xec, 0x13, 0x89, 0xc0, 0xca, 0x07, 0x90, 0x1a, 0x5d, 0xb1, 0xa1, 0x6e, - 0x91, 0x4c, 0xef, 0x75, 0x20, 0x95, 0x2b, 0x6c, 0x73, 0x0f, 0xc5, 0x24, 0x06, 0x32, 0x9a, 0x6a, - 0x57, 0xe4, 0x58, 0x1a, 0x06, 0xa8, 0xc7, 0x24, 0x43, 0x2c, 0x24, 0xf3, 0x21, 0x4d, 0x2c, 0x69, - 0x3d, 0x02, 0xfd, 0xae, 0x96, 0x8c, 0xbc, 0x58, 0xef, 0xe1, 0xef, 0xcd, 0xb7, 0xaf, 0xd6, 0x43, - 0xe8, 0xb9, 0x8a, 0xb9, 0x58, 0xe8, 0x24, 0x05, 0x61, 0xcc, 0xd7, 0xf0, 0x8d, 0x44, 0xba, 0x24, - 0xd1, 0xe6, 0x3f, 0x1d, 0x5f, 0x9f, 0xff, 0x7c, 0x2a, 0x48, 0xfa, 0xe4, 0xf3, 0xd9, 0xd9, 0xe9, - 0xe5, 0xed, 0xcf, 0xe7, 0xa7, 0x5f, 0xae, 0xac, 0x5b, 0x52, 0x42, 0xed, 0xd6, 0x47, 0xb2, 0xc2, - 0x1e, 0xd6, 0x45, 0xb5, 0xfa, 0x8d, 0x38, 0xc8, 0x56, 0x82, 0x78, 0x57, 0xc8, 0xe7, 0x7d, 0x81, - 0xa4, 0x84, 0x3d, 0xb8, 0x76, 0x22, 0x58, 0xce, 0x52, 0xbd, 0x20, 0x6a, 0x5c, 0xc5, 0xc1, 0x11, - 0x70, 0x2b, 0xa4, 0x01, 0xdf, 0x86, 0x01, 0x88, 0xb5, 0x69, 0x3f, 0x09, 0xa3, 0xd5, 0xb1, 0xfb, - 0x1a, 0xdb, 0xe5, 0xca, 0xe3, 0xf3, 0xf3, 0x83, 0x76, 0x42, 0x60, 0xa2, 0xf5, 0x99, 0x06, 0x2b, - 0x7a, 0x4c, 0x9a, 0x08, 0x95, 0x73, 0x3a, 0x34, 0x4e, 0xca, 0x31, 0xb3, 0x9c, 0xf9, 0x23, 0x4d, - 0x46, 0xa1, 0x2b, 0x4d, 0x8a, 0xb2, 0x16, 0x90, 0x88, 0x53, 0xc7, 0xec, 0x37, 0x60, 0x1b, 0x85, - 0x2c, 0x11, 0xf2, 0x3d, 0x67, 0x1a, 0xc6, 0x03, 0xf2, 0x0d, 0xbf, 0xe2, 0x2e, 0x7b, 0xd5, 0xea, - 0x54, 0xf3, 0xa4, 0xcd, 0x07, 0x10, 0x93, 0x68, 0x36, 0x77, 0xa9, 0x4f, 0x13, 0xaa, 0x48, 0x35, - 0x37, 0xf4, 0xeb, 0x02, 0x28, 0xb1, 0x3f, 0x82, 0x31, 0xe7, 0xd8, 0x24, 0x5f, 0x67, 0x27, 0xa2, - 0x16, 0x16, 0xbe, 0x58, 0x2c, 0xae, 0xa0, 0x08, 0x88, 0x25, 0x78, 0x7e, 0x9e, 0x01, 0x69, 0x50, - 0x12, 0xf4, 0x12, 0x0b, 0x28, 0xea, 0x09, 0x8a, 0x9f, 0x9f, 0x13, 0x00, 0x71, 0xb1, 0xbe, 0x9a, - 0x2b, 0xb0, 0x4d, 0xbc, 0x7e, 0xe1, 0x9a, 0x38, 0xd8, 0xa0, 0x30, 0x3a, 0xd9, 0xca, 0x1e, 0xa5, - 0xf5, 0x09, 0x7a, 0x46, 0x06, 0xc8, 0x38, 0x73, 0xaa, 0x85, 0x2b, 0x8b, 0x09, 0x97, 0x4b, 0x40, - 0x20, 0xa1, 0xf5, 0x89, 0x80, 0x52, 0x6c, 0x4a, 0x07, 0x1b, 0x8b, 0xfd, 0x99, 0xe1, 0x76, 0xa5, - 0x60, 0x9f, 0x70, 0xb0, 0x75, 0x79, 0x89, 0xd2, 0xbc, 0x95, 0x74, 0x56, 0xb0, 0x05, 0xa4, 0x75, - 0xc3, 0xfc, 0x28, 0x6e, 0x16, 0xc4, 0x8b, 0x51, 0x1f, 0x5a, 0xaf, 0x14, 0x5b, 0x6a, 0xaa, 0x48, - 0xc1, 0xd8, 0xb0, 0x13, 0x94, 0x5e, 0x39, 0x29, 0x06, 0xa3, 0x4a, 0x34, 0xfd, 0x9e, 0x48, 0x2f, - 0x27, 0xd2, 0xcb, 0x45, 0xba, 0x47, 0xd6, 0x15, 0xea, 0xf8, 0x56, 0x73, 0xaf, 0xc0, 0xda, 0x68, - 0xec, 0x9b, 0x4d, 0xb4, 0x36, 0x22, 0x6d, 0xbe, 0x30, 0x52, 0x8d, 0xc3, 0xac, 0x0e, 0x4d, 0x55, - 0x8d, 0x18, 0x2c, 0x50, 0xaa, 0x97, 0x98, 0x1a, 0x02, 0x5d, 0x1e, 0x33, 0x38, 0xc8, 0x01, 0xa9, - 0x37, 0x98, 0xf9, 0xd5, 0x3e, 0xd8, 0x6c, 0xd4, 0xec, 0x1d, 0xa6, 0x86, 0x20, 0x2a, 0x77, 0x66, - 0x03, 0x00, 0x68, 0xdc, 0x06, 0x60, 0x2a, 0x78, 0x55, 0xf3, 0xf9, 0x60, 0xf6, 0x70, 0x7d, 0x09, - 0x36, 0x81, 0x7a, 0x1c, 0x0d, 0x99, 0x6d, 0x1a, 0x03, 0x6e, 0x1c, 0x6d, 0x5d, 0xe4, 0x38, 0x69, - 0xfd, 0x42, 0xd3, 0x65, 0xc8, 0xc3, 0x9e, 0x93, 0xdb, 0x06, 0x86, 0x74, 0x64, 0x99, 0x54, 0x55, - 0x70, 0xd9, 0x04, 0x08, 0xa7, 0x3d, 0xf5, 0x73, 0x66, 0xdb, 0x58, 0xc1, 0xd4, 0xf7, 0x79, 0xe1, - 0x4f, 0xf0, 0xa4, 0x5a, 0x6a, 0xcc, 0x40, 0xcb, 0xcc, 0x40, 0x2d, 0xb0, 0x65, 0x82, 0xe5, 0x0c, - 0x92, 0x72, 0xfa, 0x4d, 0x22, 0x93, 0xdd, 0x42, 0x4b, 0x6c, 0x1f, 0x71, 0x15, 0xeb, 0x7a, 0x2f, - 0xb0, 0xfa, 0x3d, 0x47, 0x4b, 0x74, 0x4b, 0xfd, 0x94, 0xda, 0x95, 0x5a, 0x64, 0x63, 0x09, 0x50, - 0xb0, 0xa7, 0x25, 0x06, 0x38, 0x10, 0x3e, 0x05, 0x6d, 0x24, 0xad, 0xd8, 0x8a, 0xd0, 0x6c, 0x3c, - 0x6c, 0x16, 0x9a, 0x8d, 0xcd, 0xc3, 0x96, 0xbc, 0xde, 0x4a, 0xa4, 0xc9, 0xd8, 0x49, 0x1f, 0x15, - 0x0a, 0x2f, 0x8b, 0x14, 0xbe, 0x25, 0x1f, 0x1b, 0x92, 0xbc, 0xb1, 0x71, 0xcd, 0x44, 0x98, 0x28, - 0x20, 0x09, 0x33, 0x42, 0xfa, 0x04, 0xab, 0xa5, 0x8f, 0x0a, 0x45, 0xd5, 0x20, 0xf5, 0x5d, 0xe8, - 0x40, 0x93, 0x68, 0x7b, 0x15, 0x80, 0xc5, 0xad, 0xba, 0x30, 0x35, 0xc4, 0xd8, 0xc6, 0x1f, 0x36, - 0x60, 0xe7, 0x25, 0x50, 0xa3, 0xde, 0x2a, 0xcb, 0x0b, 0xf8, 0x42, 0x63, 0xc0, 0x4a, 0x3c, 0xad, - 0x01, 0xa5, 0xfa, 0xc2, 0x2a, 0x69, 0x87, 0x78, 0xb6, 0x03, 0x42, 0x11, 0x3b, 0x30, 0xf6, 0x8a, - 0x29, 0x9b, 0xdf, 0x1e, 0xde, 0x65, 0x4e, 0x03, 0xc0, 0x69, 0xe4, 0x80, 0xdf, 0x67, 0x55, 0xb4, - 0x46, 0x15, 0x36, 0x05, 0x10, 0x30, 0xf0, 0x86, 0xd3, 0xb4, 0xac, 0x89, 0x65, 0x8f, 0x91, 0x97, - 0x88, 0xf7, 0x36, 0xbe, 0x3f, 0x38, 0xfe, 0x94, 0x5a, 0xc9, 0x02, 0x27, 0x82, 0x85, 0xbd, 0x7e, - 0x1b, 0x04, 0xc0, 0xfb, 0x95, 0xd4, 0x02, 0xe4, 0x74, 0x06, 0x18, 0x06, 0x83, 0x2c, 0x99, 0x01, - 0x13, 0x92, 0x46, 0x99, 0x32, 0xdd, 0x07, 0xbd, 0x79, 0xd3, 0xf8, 0xca, 0xb0, 0xdd, 0x6a, 0xec, - 0x6f, 0xe7, 0x3a, 0xb8, 0xc2, 0x95, 0x03, 0x46, 0x0b, 0x35, 0x0f, 0xcd, 0x16, 0x90, 0xf9, 0xfd, - 0x88, 0x3a, 0x09, 0x3d, 0xf5, 0x29, 0xd6, 0xbc, 0xc0, 0xde, 0x4e, 0x6f, 0xa5, 0x3d, 0xd4, 0x59, - 0x28, 0xe7, 0xc9, 0x41, 0xa3, 0xd1, 0x2a, 0x00, 0x62, 0xd7, 0x34, 0x77, 0x73, 0xbb, 0xab, 0xa9, - 0xe0, 0xbe, 0x7a, 0x43, 0x07, 0x35, 0x19, 0x41, 0x57, 0x20, 0x3a, 0x1e, 0xc2, 0x38, 0x2a, 0x08, - 0x34, 0x55, 0x5d, 0x90, 0xfd, 0xd6, 0xe1, 0x9a, 0xe7, 0x88, 0xee, 0x41, 0xb6, 0x1e, 0x14, 0x11, - 0x38, 0x17, 0x8a, 0x08, 0xa6, 0x79, 0xfa, 0x34, 0x8e, 0x41, 0x2a, 0x78, 0xc6, 0x3b, 0x1a, 0x84, - 0x20, 0x13, 0xc0, 0x36, 0x89, 0x8d, 0x07, 0x1a, 0xc5, 0x00, 0x79, 0xfc, 0xfc, 0xec, 0x57, 0xab, - 0x7e, 0xfa, 0x0a, 0xce, 0x43, 0xbf, 0x5a, 0xed, 0x1b, 0x0f, 0x07, 0x1d, 0x17, 0xb4, 0x71, 0x88, - 0x3c, 0xe6, 0x1a, 0x31, 0x78, 0xd6, 0x89, 0xa6, 0x1a, 0xaa, 0xae, 0xdf, 0x98, 0x5f, 0xbb, 0x66, - 0xb5, 0x1a, 0xc1, 0xdf, 0xa3, 0x76, 0xaf, 0x61, 0xd5, 0x34, 0x7c, 0xac, 0x45, 0x80, 0x68, 0x5d, - 0x27, 0x95, 0xb0, 0x5a, 0x75, 0x50, 0x8b, 0x23, 0x6b, 0x1a, 0x63, 0xc6, 0xc9, 0x3b, 0xa7, 0xee, - 0x90, 0xfe, 0x73, 0x47, 0xfb, 0xa7, 0x5b, 0xd3, 0x77, 0x74, 0x58, 0x04, 0xb6, 0xed, 0xda, 0xe0, - 0x45, 0x40, 0x43, 0xa9, 0xd9, 0x5b, 0x50, 0xf2, 0x63, 0xa9, 0x21, 0x9b, 0x9e, 0x0f, 0x4c, 0x24, - 0xb1, 0x04, 0x08, 0x00, 0x92, 0x29, 0x25, 0x59, 0x59, 0x9e, 0x54, 0x2a, 0xc0, 0xbc, 0x4b, 0x79, - 0x22, 0x0a, 0x4d, 0xdc, 0x8b, 0xbd, 0xc3, 0xc6, 0x1e, 0x1b, 0x83, 0xeb, 0x92, 0x75, 0x8b, 0x93, - 0x89, 0x13, 0x69, 0x57, 0x12, 0xe3, 0xce, 0x0b, 0xdc, 0x1e, 0xff, 0x83, 0x62, 0x68, 0x9d, 0xde, - 0x12, 0x03, 0xe3, 0x08, 0x33, 0x0d, 0x68, 0x27, 0x95, 0x40, 0x4c, 0xc0, 0xef, 0xb6, 0x36, 0x33, - 0x3a, 0x77, 0xd1, 0xbc, 0x02, 0x20, 0xd0, 0x83, 0xad, 0x56, 0x97, 0x82, 0xe5, 0xd3, 0x63, 0x90, - 0x52, 0xfe, 0x3b, 0xca, 0x63, 0x0c, 0xe0, 0xfc, 0xc4, 0x48, 0xa9, 0x44, 0xc5, 0x50, 0x06, 0x93, - 0xfe, 0xb0, 0xbd, 0x6a, 0x0c, 0xa8, 0x04, 0x23, 0x92, 0xc9, 0x5d, 0xd9, 0x6e, 0x5e, 0x18, 0xd8, - 0x8c, 0xd3, 0x80, 0x56, 0x89, 0x60, 0x33, 0x60, 0xc3, 0x96, 0xbd, 0x0d, 0x99, 0xa9, 0x73, 0x06, - 0xe6, 0xe9, 0x2f, 0xe7, 0x57, 0xd7, 0x57, 0x56, 0x4c, 0x2e, 0x2e, 0x3f, 0x5d, 0x9c, 0x5e, 0x5a, - 0x3e, 0x01, 0x53, 0xf2, 0xec, 0xfc, 0xc7, 0xcf, 0x97, 0xc7, 0x27, 0x1f, 0x4e, 0xad, 0x3e, 0x2c, - 0x14, 0x55, 0xe3, 0x46, 0x9c, 0x92, 0x40, 0xa0, 0x91, 0x44, 0x36, 0x97, 0xd7, 0xb8, 0xfe, 0x6a, - 0x35, 0xe0, 0x48, 0x8d, 0xf2, 0x36, 0x6d, 0xd0, 0x2b, 0xe0, 0x2e, 0x8a, 0x0c, 0x49, 0x73, 0x92, - 0x4d, 0xae, 0x5b, 0xdf, 0x94, 0x48, 0x6c, 0x0a, 0xcd, 0x6d, 0xca, 0x82, 0x20, 0xd7, 0x6d, 0x13, - 0xf5, 0x28, 0x98, 0x07, 0x01, 0xe8, 0xd1, 0xd4, 0x36, 0xef, 0x6c, 0x16, 0x9c, 0x4b, 0xfd, 0x6a, - 0xf8, 0x34, 0x18, 0x26, 0xa3, 0xa3, 0x66, 0xcf, 0x03, 0x9e, 0xa1, 0x5f, 0x75, 0x2b, 0x62, 0x16, - 0x10, 0xfe, 0xa2, 0xde, 0x43, 0x01, 0xb1, 0x5f, 0x24, 0x20, 0x30, 0x54, 0xa4, 0x97, 0x4e, 0x83, - 0xad, 0x02, 0x1b, 0x25, 0x7a, 0xaa, 0x98, 0xb9, 0x06, 0x0e, 0x7a, 0x1c, 0x40, 0x2b, 0x02, 0xcb, - 0x0f, 0x06, 0xc7, 0x95, 0xad, 0x0d, 0x5e, 0x8c, 0x45, 0x6a, 0x7c, 0x74, 0x92, 0x91, 0x6d, 0xe3, - 0x2f, 0xbc, 0x2d, 0xf2, 0xc2, 0x69, 0x35, 0xac, 0x33, 0xf4, 0xc3, 0x3b, 0xc7, 0xbf, 0x06, 0x8f, - 0xa5, 0x5a, 0x5d, 0x3e, 0x23, 0x9f, 0xaf, 0xb7, 0x7d, 0x84, 0x7d, 0x0e, 0xc1, 0xb9, 0xe6, 0x7f, - 0x8b, 0xdb, 0xc4, 0xd4, 0x1f, 0x80, 0x80, 0x82, 0xdf, 0xe2, 0xfa, 0xc0, 0x18, 0x22, 0xc9, 0x0c, - 0xa1, 0xb6, 0x80, 0x07, 0x61, 0x6a, 0x30, 0x64, 0x9e, 0x9f, 0x53, 0xea, 0xd3, 0x54, 0xa9, 0x46, - 0xd5, 0x41, 0x1e, 0x10, 0xe4, 0xb7, 0x0d, 0x96, 0x1d, 0x86, 0x3d, 0xcc, 0x03, 0x6e, 0xd2, 0x01, - 0xbf, 0x8c, 0x9c, 0x58, 0x62, 0x3b, 0x79, 0x1f, 0x04, 0x5f, 0xf2, 0x06, 0x12, 0x30, 0xf2, 0xee, - 0x0b, 0x63, 0x8f, 0xd9, 0xb6, 0xad, 0x5d, 0xb3, 0xb1, 0x22, 0xb7, 0xe6, 0x68, 0x68, 0xee, 0xed, - 0xb5, 0x37, 0xca, 0x07, 0xa6, 0x22, 0x99, 0x7c, 0x07, 0x2d, 0x96, 0xd7, 0x95, 0x60, 0x3f, 0x87, - 0xaf, 0xd2, 0x97, 0x9e, 0xa6, 0xba, 0xde, 0x03, 0x88, 0x09, 0xd5, 0x51, 0x37, 0xe9, 0x4d, 0xc3, - 0x61, 0x6a, 0xb3, 0xb9, 0x7f, 0x70, 0xb0, 0x11, 0x55, 0x59, 0x94, 0x72, 0xb7, 0xbd, 0xb7, 0xcb, - 0xa2, 0x94, 0x5a, 0xc6, 0xf7, 0x99, 0x75, 0xdc, 0x41, 0x1d, 0xea, 0x05, 0xf1, 0x04, 0x00, 0xba, - 0x0a, 0xa7, 0x11, 0x98, 0xc8, 0xcf, 0xcf, 0xab, 0x45, 0x85, 0xba, 0x14, 0x59, 0x5d, 0x96, 0xfe, - 0x2b, 0x7d, 0xd0, 0xb8, 0x33, 0x0f, 0x8b, 0x94, 0x21, 0x57, 0x82, 0xbb, 0x2d, 0x61, 0x27, 0x73, - 0xb6, 0xf6, 0x33, 0xd0, 0xfb, 0xa9, 0xca, 0x77, 0xb3, 0x28, 0x58, 0x3e, 0x58, 0xc6, 0x97, 0xc3, - 0xa2, 0x65, 0x4d, 0x53, 0x44, 0xcb, 0x70, 0xff, 0x30, 0x5a, 0x16, 0x4b, 0x81, 0xa7, 0x21, 0xbc, - 0x7d, 0xa1, 0xce, 0xfd, 0x47, 0x67, 0x82, 0xfe, 0x96, 0xf3, 0xfc, 0x3c, 0x31, 0x30, 0x70, 0x2c, - 0x0c, 0xe6, 0x07, 0x5b, 0xbc, 0xc2, 0x7a, 0xc5, 0x93, 0x8d, 0x16, 0xe1, 0x10, 0xa3, 0x6a, 0xbe, - 0xf6, 0x80, 0x42, 0x1d, 0xc3, 0x6a, 0xf8, 0x08, 0x74, 0x84, 0x71, 0x35, 0x7c, 0x8c, 0xa1, 0xb4, - 0x13, 0xad, 0x30, 0x3a, 0x3a, 0x72, 0xda, 0x03, 0x73, 0xd4, 0x98, 0x3b, 0x8c, 0xe3, 0xcc, 0x34, - 0x61, 0x0d, 0x2b, 0x8e, 0x0f, 0x36, 0x87, 0x3b, 0x53, 0x44, 0x3c, 0xdd, 0xfb, 0x0d, 0x6c, 0xf1, - 0x2c, 0xaa, 0x93, 0x18, 0x03, 0xa7, 0xef, 0xb8, 0xd4, 0xa6, 0xe4, 0x0e, 0x87, 0x80, 0xe1, 0x48, - 0xb2, 0x80, 0x0d, 0x2c, 0xc0, 0xf9, 0x88, 0xcd, 0xf1, 0xfc, 0x8c, 0xa4, 0x59, 0x28, 0xfe, 0x38, - 0x10, 0x8b, 0x05, 0xf5, 0x63, 0xca, 0x16, 0x79, 0x6a, 0x0f, 0x34, 0x95, 0xad, 0x0d, 0x66, 0x1c, - 0xdf, 0x9c, 0x7e, 0xc5, 0x30, 0x47, 0x01, 0xf4, 0x53, 0x78, 0x3a, 0xfd, 0x7d, 0xd0, 0xbb, 0x38, - 0xc4, 0x26, 0xe8, 0xf9, 0x1c, 0x3d, 0x0a, 0x50, 0x58, 0xa5, 0x2b, 0xe0, 0x8d, 0x60, 0x05, 0x4b, - 0x3e, 0x04, 0x8c, 0x5b, 0xb0, 0x9b, 0xf0, 0x1b, 0x12, 0xd8, 0x08, 0xcb, 0x23, 0x34, 0x00, 0xb7, - 0xb5, 0x4f, 0xad, 0x42, 0x0f, 0x0e, 0x14, 0x00, 0xf2, 0x35, 0xc8, 0x56, 0x4a, 0xe6, 0x0b, 0x60, - 0x14, 0xe8, 0x99, 0xd0, 0xe8, 0x6c, 0x25, 0xac, 0x21, 0xda, 0x67, 0x45, 0xa9, 0xb8, 0x46, 0x52, - 0xa9, 0xf4, 0x35, 0x74, 0x51, 0xc1, 0x1d, 0x0a, 0xd1, 0x87, 0x31, 0x50, 0xba, 0xa1, 0x9b, 0x20, - 0xf0, 0x33, 0xe3, 0xa1, 0xad, 0xf4, 0xb0, 0x45, 0x89, 0x68, 0x9f, 0x7a, 0x60, 0xa4, 0x11, 0x45, - 0xad, 0xd1, 0x9a, 0x0a, 0xef, 0xff, 0x9a, 0x7a, 0x91, 0x8c, 0xa6, 0x60, 0xc1, 0x0c, 0x9b, 0x0d, - 0xe6, 0x7c, 0x0a, 0x90, 0x9a, 0xc5, 0xff, 0x97, 0xb1, 0x79, 0xd4, 0xdf, 0x8d, 0x22, 0x03, 0x7d, - 0x2f, 0xef, 0x7b, 0x14, 0x8c, 0xb6, 0x16, 0xe7, 0xef, 0xa1, 0x06, 0xc2, 0xb5, 0x20, 0x7e, 0x50, - 0xf2, 0x35, 0x0e, 0x1b, 0xab, 0x16, 0x5b, 0xa5, 0x01, 0xd2, 0xa5, 0x71, 0xb8, 0x39, 0xa0, 0xcf, - 0x4c, 0xe3, 0xbc, 0xef, 0xcb, 0x43, 0xd2, 0xc8, 0xd3, 0x2d, 0x70, 0x90, 0x64, 0x67, 0x57, 0x02, - 0x32, 0x2e, 0x30, 0x1d, 0xd4, 0x78, 0x36, 0xbe, 0x0b, 0x7d, 0x79, 0xc9, 0xeb, 0xfe, 0x2d, 0xec, - 0x85, 0x7a, 0xc5, 0xdb, 0x65, 0x78, 0x05, 0xdf, 0x52, 0x47, 0x23, 0x49, 0x8e, 0x3e, 0xa3, 0x57, - 0xca, 0x6c, 0xbb, 0x66, 0xbb, 0x48, 0x76, 0xef, 0x83, 0x4c, 0x7f, 0xc1, 0x4d, 0x00, 0xcc, 0x08, - 0x83, 0x80, 0x21, 0xa8, 0x55, 0xa4, 0xf8, 0xd1, 0xd2, 0x97, 0x54, 0x80, 0x2c, 0xf9, 0x2b, 0x85, - 0x46, 0x21, 0x07, 0x3d, 0x5e, 0xd3, 0x0a, 0xfc, 0xcc, 0x89, 0xd7, 0x6a, 0xe9, 0xc2, 0x2a, 0x5c, - 0x3a, 0x6b, 0xc8, 0xec, 0x15, 0x8d, 0x8f, 0x07, 0x2f, 0x20, 0x60, 0x13, 0x27, 0xe8, 0x23, 0x86, - 0x78, 0x07, 0xac, 0xe6, 0x4f, 0x46, 0x3c, 0x72, 0xc6, 0x60, 0xb0, 0xc0, 0xff, 0x8e, 0xda, 0x0d, - 0xee, 0xc5, 0x82, 0x88, 0xdd, 0xee, 0x18, 0x0b, 0x55, 0x09, 0x3f, 0xc6, 0x4a, 0xe5, 0xa5, 0x64, - 0xd4, 0x6b, 0x0e, 0xa0, 0x78, 0x27, 0x00, 0x5a, 0x7f, 0xa0, 0x4a, 0x3f, 0x74, 0xe9, 0x8e, 0x91, - 0xd0, 0x38, 0x01, 0x75, 0xe5, 0x30, 0xef, 0xcd, 0x7c, 0xe1, 0xe4, 0x87, 0x2b, 0x4b, 0x9c, 0x06, - 0xb5, 0x29, 0xa7, 0x94, 0x56, 0x6b, 0xb7, 0x25, 0x4e, 0x4a, 0xf6, 0xd0, 0x93, 0x46, 0xe9, 0xdf, - 0x3e, 0xc4, 0x43, 0x90, 0xbe, 0x7c, 0x2e, 0x04, 0x2a, 0xa0, 0x50, 0x55, 0x82, 0x42, 0x78, 0xc1, - 0xf0, 0xee, 0x80, 0x60, 0xc2, 0x30, 0xc9, 0x9a, 0x37, 0x8e, 0x81, 0x37, 0xa6, 0xf5, 0x41, 0x98, - 0x83, 0xac, 0x8a, 0xc1, 0x00, 0x23, 0x45, 0x3c, 0x07, 0x76, 0xfa, 0xf2, 0x84, 0x0b, 0x23, 0x57, - 0x50, 0xc0, 0x3c, 0x66, 0xd5, 0x03, 0x76, 0x86, 0x97, 0xd4, 0x9d, 0x16, 0xef, 0x95, 0xc0, 0x48, - 0x4b, 0x44, 0x94, 0xcf, 0x9e, 0x32, 0xe9, 0xda, 0xc1, 0x2d, 0xc9, 0xea, 0xc0, 0xb2, 0xe7, 0x0e, - 0xbe, 0xc1, 0x06, 0x03, 0xab, 0x7b, 0x9e, 0xf3, 0xd5, 0x55, 0xf9, 0x8d, 0x0d, 0xdd, 0x0b, 0x72, - 0x86, 0xbf, 0x15, 0xe5, 0x5e, 0x89, 0xe4, 0xfb, 0xab, 0xcb, 0xe7, 0xb4, 0xa7, 0x54, 0x1b, 0x49, - 0x2f, 0x52, 0x2c, 0x00, 0x48, 0x65, 0x91, 0x05, 0xb8, 0x39, 0x8e, 0x16, 0xd6, 0x7a, 0xdc, 0xb2, - 0x08, 0x6d, 0x9e, 0x2e, 0x85, 0x87, 0xb2, 0xce, 0xb9, 0xc8, 0xa4, 0x0a, 0xfb, 0xc3, 0x60, 0x01, - 0xf7, 0x38, 0x16, 0x8f, 0x42, 0x88, 0xf6, 0x35, 0xf5, 0xb8, 0x8f, 0xde, 0x6f, 0x18, 0xf1, 0x90, - 0x71, 0x3c, 0x9d, 0x20, 0xc5, 0x49, 0x62, 0x33, 0x87, 0xf0, 0x1c, 0xde, 0x74, 0x1e, 0x1f, 0xd9, - 0x6d, 0x6c, 0x8e, 0xcf, 0xa5, 0xde, 0x5b, 0x4e, 0x46, 0xa1, 0xfd, 0x18, 0x67, 0xc6, 0x03, 0x52, - 0x1e, 0x46, 0xa1, 0x90, 0xf2, 0x62, 0x90, 0xeb, 0xa7, 0xb7, 0xe0, 0x44, 0x5d, 0x7f, 0x52, 0xd1, - 0xfc, 0xc8, 0x42, 0x75, 0x53, 0xf0, 0xb3, 0x33, 0x6a, 0x90, 0x78, 0xc3, 0xef, 0xb9, 0x2b, 0x31, - 0xa5, 0x02, 0xb1, 0x85, 0x86, 0x52, 0x87, 0x1d, 0x65, 0x26, 0xa4, 0x9f, 0x05, 0xce, 0x93, 0x9b, - 0xfe, 0xd7, 0x0e, 0xf7, 0x0f, 0x12, 0x39, 0x5e, 0xb5, 0x94, 0x6c, 0x01, 0xb0, 0x1d, 0x9e, 0x9c, - 0x64, 0x2c, 0x8f, 0x1b, 0x9a, 0x41, 0x61, 0xe5, 0xaa, 0xdc, 0xde, 0x94, 0x05, 0xf7, 0xd0, 0x97, - 0x00, 0x21, 0x5c, 0x66, 0x16, 0xe6, 0x9c, 0x05, 0xb0, 0x9f, 0xbd, 0x58, 0x02, 0x1d, 0x78, 0x19, - 0xcf, 0x0f, 0x37, 0x9a, 0x94, 0x9c, 0x5b, 0x19, 0x42, 0xcd, 0xfd, 0xfd, 0x02, 0x83, 0x3b, 0xce, - 0x61, 0x03, 0x54, 0xa8, 0x7a, 0x7b, 0xcb, 0x60, 0xbe, 0xbd, 0x85, 0x7d, 0x9c, 0x2f, 0x7a, 0xab, - 0x92, 0x0f, 0x28, 0xaa, 0xd2, 0x40, 0x36, 0x58, 0xb0, 0xb0, 0xb5, 0x46, 0x01, 0xb2, 0x17, 0x78, - 0x5b, 0x5b, 0x3b, 0x70, 0x94, 0x26, 0xd1, 0x99, 0x81, 0xa6, 0x6b, 0x01, 0xb9, 0xf9, 0x8a, 0xe4, - 0x1a, 0xc8, 0x68, 0x62, 0xa1, 0x64, 0x89, 0x42, 0x57, 0x6d, 0x00, 0x76, 0xe8, 0x90, 0x79, 0x92, - 0x48, 0xe2, 0x5a, 0x04, 0x83, 0xf4, 0x28, 0xab, 0xb1, 0x02, 0x23, 0x9b, 0xc7, 0x8e, 0x08, 0xe8, - 0x74, 0x4d, 0x17, 0x9e, 0x26, 0x9a, 0xe3, 0x8d, 0xf6, 0x66, 0x39, 0x88, 0x61, 0x8d, 0x15, 0x62, - 0x64, 0x66, 0x6e, 0xfc, 0xe2, 0x49, 0x78, 0xe6, 0x4a, 0x92, 0x08, 0x09, 0x69, 0x19, 0xb5, 0x45, - 0xa9, 0x04, 0x84, 0x62, 0xd3, 0xa5, 0x3d, 0x0f, 0x92, 0xc8, 0xd1, 0x22, 0x90, 0xda, 0x81, 0x7c, - 0x4c, 0xc3, 0xfa, 0xf1, 0x96, 0x8c, 0x7f, 0x60, 0xb7, 0x37, 0x34, 0x4c, 0x27, 0xa8, 0xbc, 0x66, - 0x02, 0xce, 0xd5, 0x71, 0x9a, 0x30, 0x00, 0x24, 0x0d, 0x16, 0x51, 0x22, 0x4e, 0xe6, 0x95, 0x24, - 0x54, 0x26, 0x91, 0x37, 0xf6, 0x98, 0x12, 0xe1, 0x6c, 0xcd, 0x75, 0x6b, 0xd3, 0xdc, 0x52, 0x45, - 0x31, 0x56, 0x76, 0x32, 0x97, 0x20, 0xe6, 0x46, 0xff, 0x2e, 0xe7, 0x60, 0xae, 0xc0, 0xfa, 0x8c, - 0x97, 0xcd, 0x43, 0xee, 0x3a, 0x60, 0x6c, 0x47, 0x37, 0xe4, 0x48, 0x08, 0xf0, 0x71, 0x1f, 0xa9, - 0x0a, 0xbc, 0x88, 0xbe, 0x21, 0x6c, 0x48, 0xf0, 0x23, 0x84, 0xae, 0x15, 0xeb, 0x4b, 0x03, 0x6a, - 0xfc, 0x15, 0x64, 0x91, 0x56, 0xbc, 0x25, 0x24, 0x20, 0x3e, 0xdf, 0x96, 0x3e, 0x8c, 0x5b, 0xa9, - 0xf8, 0x78, 0x36, 0xed, 0x1b, 0xd3, 0x20, 0x76, 0x06, 0x14, 0x7c, 0x92, 0xac, 0x44, 0x12, 0xbb, - 0xb3, 0x65, 0x69, 0x10, 0xf2, 0x93, 0xb9, 0x1f, 0x01, 0x9c, 0xa1, 0x0d, 0x85, 0x9c, 0x90, 0x00, - 0xe5, 0x3e, 0x0b, 0x03, 0xf5, 0xf8, 0x1f, 0x2b, 0xe9, 0x84, 0x4c, 0x12, 0xa4, 0xb6, 0x8f, 0x86, - 0xdb, 0x2e, 0x20, 0x46, 0x60, 0xf1, 0x50, 0x43, 0x33, 0xc9, 0x3e, 0x36, 0x19, 0xda, 0xea, 0x8d, - 0x5a, 0x5b, 0x56, 0x46, 0x74, 0xe2, 0x3b, 0x50, 0xbd, 0xf3, 0x5f, 0xbc, 0xef, 0x3f, 0x35, 0xed, - 0xe6, 0xbf, 0xf4, 0xaf, 0x7f, 0xd1, 0xff, 0xa9, 0xef, 0x10, 0xf5, 0xcf, 0x0d, 0x55, 0xaf, 0xa9, - 0x5f, 0x41, 0xd2, 0x69, 0x15, 0xd8, 0xe3, 0x34, 0xcc, 0xf4, 0xfc, 0xec, 0xa2, 0x0b, 0x8f, 0x2f, - 0x00, 0xcc, 0x90, 0x99, 0x57, 0x69, 0x25, 0x01, 0xdf, 0x48, 0xeb, 0xdb, 0x13, 0x80, 0x08, 0xa6, - 0x66, 0x6e, 0x1e, 0xb0, 0x78, 0x5f, 0x3c, 0xda, 0x03, 0xe3, 0x5b, 0xe8, 0x05, 0xda, 0xea, 0xa9, - 0x82, 0x32, 0xec, 0x0d, 0x2d, 0x55, 0x05, 0x62, 0x21, 0x38, 0x64, 0xd4, 0xd3, 0xa6, 0xbd, 0xca, - 0xac, 0x5a, 0x45, 0x81, 0x0e, 0x50, 0x03, 0xaa, 0x4c, 0xdd, 0x12, 0x87, 0x5b, 0x58, 0x46, 0xc6, - 0x3d, 0x2e, 0xeb, 0x2d, 0x47, 0x90, 0x86, 0x6e, 0x65, 0x45, 0xb1, 0xc6, 0xb4, 0x8c, 0xae, 0x15, - 0x84, 0xb0, 0xb2, 0xb3, 0x16, 0x95, 0x14, 0xf8, 0xdd, 0x21, 0x3f, 0xbf, 0xc5, 0x23, 0x35, 0xf6, - 0x90, 0x2d, 0xc0, 0xe7, 0xef, 0xcc, 0x66, 0x6a, 0xb7, 0x0f, 0x4a, 0x55, 0xca, 0x36, 0xf9, 0x2a, - 0x3c, 0xbe, 0x93, 0x3a, 0x0a, 0x51, 0xc6, 0x0d, 0x8e, 0xef, 0x2b, 0x63, 0x76, 0x24, 0xa8, 0x84, - 0x01, 0xba, 0x09, 0x99, 0x09, 0x4b, 0x79, 0xf4, 0x61, 0x53, 0xc0, 0xab, 0xd0, 0x06, 0x2a, 0x95, - 0x14, 0x28, 0x46, 0x43, 0x2d, 0x02, 0x4f, 0x72, 0x2e, 0x42, 0xfc, 0x2b, 0xc7, 0x01, 0xa6, 0xa4, - 0xfe, 0xcd, 0x85, 0xbe, 0x3c, 0x0e, 0x8d, 0xf8, 0x01, 0x68, 0xaa, 0xa1, 0x98, 0x0d, 0x6d, 0x16, - 0xf1, 0x67, 0xb3, 0x85, 0x4c, 0x16, 0x66, 0xd9, 0x25, 0xec, 0x84, 0xed, 0x9e, 0xce, 0x62, 0xf5, - 0xa5, 0xf3, 0x35, 0x76, 0x02, 0xa9, 0xe1, 0x1f, 0x3b, 0x14, 0x76, 0x3a, 0xba, 0xf3, 0x1b, 0x65, - 0x00, 0x67, 0x73, 0x98, 0xe3, 0x06, 0xe4, 0x7c, 0x3f, 0x8c, 0x68, 0xfd, 0x5b, 0x7c, 0x0b, 0xe6, - 0x2e, 0x78, 0x58, 0x20, 0xf0, 0xbf, 0x62, 0xe6, 0x52, 0x51, 0x05, 0x3a, 0x7f, 0x12, 0x34, 0x1e, - 0x88, 0xe8, 0xd6, 0x7a, 0x40, 0x02, 0xa5, 0xf0, 0x21, 0xc6, 0xe3, 0xc3, 0x34, 0xb2, 0x50, 0xc6, - 0xf0, 0x4b, 0x42, 0xe2, 0x8b, 0xc0, 0x3f, 0x76, 0xc6, 0xb5, 0x49, 0x2f, 0xb1, 0xd0, 0xdb, 0xd4, - 0x35, 0x35, 0x8d, 0xde, 0xab, 0xa8, 0x82, 0x8c, 0xc9, 0x34, 0x1e, 0x69, 0x73, 0x51, 0x66, 0xa9, - 0x2d, 0xa3, 0x69, 0x1a, 0x4d, 0x95, 0x8c, 0xc1, 0x90, 0xb6, 0xa2, 0x9e, 0x3a, 0x99, 0x46, 0x54, - 0xb5, 0x54, 0x1e, 0x9c, 0x53, 0x61, 0xa7, 0x26, 0xb3, 0xc8, 0x1b, 0x8e, 0x12, 0x4b, 0xfd, 0xef, - 0xff, 0xab, 0x34, 0xcd, 0x66, 0x53, 0x79, 0x47, 0x03, 0x2f, 0x56, 0x2e, 0x60, 0x98, 0x7b, 0x58, - 0xd9, 0x83, 0xa2, 0xfd, 0xe6, 0x87, 0x5e, 0x14, 0xf6, 0xef, 0x8d, 0x68, 0xaa, 0xab, 0xe8, 0xe0, - 0x1e, 0xb6, 0xcc, 0x96, 0x14, 0xdc, 0xc5, 0xd0, 0xa0, 0x01, 0x1e, 0xa9, 0x0f, 0x6a, 0x95, 0x3d, - 0x0f, 0xfc, 0xb0, 0x94, 0x66, 0x39, 0x12, 0x6a, 0x34, 0x25, 0xc7, 0xa8, 0x62, 0x47, 0xcf, 0xcf, - 0x78, 0x74, 0x18, 0xf5, 0x60, 0xeb, 0xa3, 0xae, 0xd9, 0x0b, 0xac, 0x44, 0xd7, 0xd8, 0x51, 0x37, - 0xfa, 0x4e, 0x45, 0xe1, 0x30, 0x98, 0x1f, 0x11, 0xc8, 0x26, 0x1b, 0x7b, 0xc1, 0x66, 0x1a, 0xa0, - 0x30, 0x24, 0xd0, 0x27, 0x5a, 0x93, 0x87, 0xa6, 0xb9, 0xdf, 0x00, 0xeb, 0x6b, 0xb7, 0xbd, 0xdf, - 0x36, 0x0f, 0x0f, 0x1b, 0xba, 0x65, 0x32, 0x0b, 0xc6, 0xdc, 0x6c, 0xd6, 0x21, 0x93, 0xf2, 0x13, - 0xa1, 0x35, 0xef, 0xb2, 0xf4, 0x4c, 0x97, 0xa5, 0x86, 0xed, 0xbe, 0xe0, 0xd3, 0xb6, 0x4c, 0x34, - 0x74, 0x70, 0xe0, 0x4b, 0x27, 0x18, 0x6e, 0xa3, 0x91, 0x19, 0x15, 0xa3, 0xce, 0x0c, 0x7e, 0x48, - 0x04, 0xd3, 0x7b, 0x9a, 0xfa, 0x25, 0x0a, 0x83, 0xa1, 0x12, 0x0e, 0x06, 0x68, 0xf3, 0xca, 0x41, - 0x00, 0x82, 0x33, 0x6c, 0xf6, 0x96, 0x18, 0x2e, 0xb7, 0x00, 0x61, 0xe9, 0x15, 0x73, 0x00, 0x92, - 0x23, 0x73, 0x09, 0xc0, 0xf5, 0x88, 0x66, 0xc1, 0x6d, 0x10, 0x3e, 0x28, 0x82, 0xee, 0xa8, 0xe2, - 0x83, 0xb5, 0xad, 0x24, 0x23, 0x27, 0x50, 0x4c, 0x29, 0x82, 0x83, 0x18, 0xdf, 0x3d, 0x6c, 0x6d, - 0x69, 0xbb, 0x30, 0x93, 0x05, 0xd5, 0x30, 0x06, 0x08, 0xb8, 0x1a, 0xc6, 0xd0, 0xb8, 0x50, 0xc3, - 0x60, 0x03, 0x71, 0x35, 0xcc, 0xf3, 0xcf, 0xdc, 0x9c, 0x33, 0x07, 0xda, 0x17, 0x8f, 0xc3, 0x2f, - 0x52, 0x3b, 0x40, 0x2d, 0x0f, 0x9c, 0x63, 0x0c, 0xc6, 0x63, 0xde, 0xaf, 0x93, 0x4b, 0x6b, 0x11, - 0x56, 0x10, 0x58, 0xea, 0x94, 0x4c, 0xd9, 0xb2, 0x79, 0x96, 0x48, 0x76, 0xde, 0x0d, 0xf6, 0x8a, - 0x96, 0xb0, 0xac, 0x4e, 0x67, 0xea, 0x03, 0xee, 0x09, 0xee, 0x50, 0xc4, 0xa3, 0x6a, 0xa8, 0xe5, - 0xd8, 0x88, 0x41, 0x36, 0x62, 0x20, 0xcc, 0x16, 0xf7, 0x35, 0x66, 0xcb, 0xea, 0x19, 0xbb, 0x98, - 0x13, 0xd4, 0xfc, 0x1d, 0x8d, 0xf0, 0x94, 0x47, 0x13, 0x09, 0x13, 0xe8, 0xd1, 0x16, 0xa1, 0x75, - 0xf7, 0x50, 0xc8, 0x1b, 0x86, 0xc3, 0x8d, 0xbb, 0x8b, 0x41, 0xac, 0x54, 0x9f, 0x66, 0x5b, 0x86, - 0x41, 0x29, 0x10, 0x37, 0x49, 0x4d, 0x55, 0xd1, 0x86, 0xda, 0x3b, 0x5c, 0x37, 0xda, 0xc1, 0x9c, - 0x8e, 0x6e, 0x8a, 0x73, 0x10, 0xbe, 0xda, 0xea, 0x6f, 0xaa, 0x14, 0xb7, 0x55, 0x6f, 0xc4, 0x62, - 0x7f, 0xfb, 0x2a, 0xd9, 0x16, 0xc0, 0xef, 0x04, 0x93, 0x11, 0x4b, 0x95, 0x21, 0x6f, 0xd7, 0x79, - 0xe9, 0x9c, 0x4f, 0x61, 0x61, 0xa6, 0x95, 0x73, 0xbe, 0x34, 0x4d, 0x80, 0x9f, 0x3d, 0x17, 0x86, - 0xb6, 0x52, 0x9f, 0xc3, 0x04, 0xaa, 0x63, 0x72, 0x25, 0x72, 0x02, 0x37, 0x1c, 0x6b, 0x3c, 0x8e, - 0xdd, 0x30, 0xa4, 0x08, 0xf6, 0xc6, 0x00, 0x58, 0x6a, 0x35, 0xd5, 0x34, 0x39, 0x27, 0x42, 0xb5, - 0x30, 0x59, 0x49, 0xbf, 0x55, 0x6b, 0x8e, 0x56, 0xab, 0x85, 0x35, 0x8f, 0xb4, 0xf6, 0xd8, 0x31, - 0x40, 0xcb, 0x2c, 0x3c, 0x7e, 0x68, 0xe5, 0x22, 0x3c, 0x18, 0xda, 0xcf, 0x45, 0x5d, 0xd6, 0xe2, - 0x57, 0xa2, 0xd6, 0x4b, 0xc0, 0xf0, 0x03, 0x8f, 0x05, 0x07, 0xde, 0x6d, 0xbd, 0x7c, 0x90, 0x90, - 0x9f, 0xa3, 0xf0, 0xf4, 0xa0, 0xdd, 0x2c, 0x3b, 0x3e, 0x90, 0x1b, 0x2f, 0x74, 0x22, 0x85, 0x2f, - 0x52, 0x43, 0xa0, 0xdd, 0xcc, 0x3b, 0xfe, 0x2b, 0x59, 0x0f, 0x48, 0x2c, 0x9b, 0xdd, 0x69, 0xa6, - 0xf6, 0xf3, 0xd6, 0x38, 0x37, 0x00, 0x62, 0x81, 0x24, 0x26, 0x05, 0x78, 0xf0, 0xaf, 0x8f, 0xf1, - 0xba, 0xc7, 0xfb, 0x58, 0x78, 0xd2, 0x1c, 0x23, 0xe8, 0x49, 0x57, 0xab, 0xae, 0x01, 0xa6, 0x37, - 0x18, 0xe1, 0xe0, 0x3e, 0x5b, 0xec, 0xf5, 0xd1, 0x03, 0xcb, 0x68, 0x9a, 0x5c, 0xb1, 0x40, 0x2d, - 0x70, 0x68, 0xb9, 0x7d, 0x05, 0x3c, 0xdc, 0x67, 0x21, 0xf0, 0x0a, 0x3b, 0x49, 0x4d, 0xfd, 0x14, - 0x81, 0xf6, 0x3e, 0x1e, 0xdd, 0x09, 0xce, 0x11, 0x3b, 0x6f, 0x80, 0xad, 0xd5, 0x89, 0xd1, 0x8b, - 0x71, 0xa1, 0x5f, 0x0f, 0x5b, 0xd8, 0x2e, 0xfc, 0x58, 0xec, 0x09, 0xec, 0xee, 0x69, 0x6f, 0x8a, - 0x47, 0xc6, 0x13, 0xf8, 0x49, 0x39, 0x1b, 0xab, 0x90, 0x18, 0xda, 0xb9, 0x34, 0xf0, 0xf5, 0xc4, - 0xdf, 0x12, 0x11, 0xd9, 0xdc, 0x33, 0x39, 0x6e, 0x30, 0x02, 0xc9, 0x71, 0x83, 0x9a, 0x47, 0xe4, - 0x03, 0xb3, 0xf8, 0x43, 0x3f, 0x3b, 0x3a, 0x72, 0x73, 0x92, 0x1e, 0xf0, 0x13, 0x49, 0x79, 0xba, - 0x13, 0x7b, 0x0a, 0x00, 0x4a, 0x16, 0xee, 0xc0, 0x9e, 0x54, 0xab, 0x13, 0x74, 0x71, 0xc1, 0xc3, - 0xf0, 0x0c, 0x29, 0x7b, 0x0f, 0x7c, 0x0b, 0xcf, 0x28, 0x4e, 0xac, 0x03, 0xff, 0xa2, 0xd2, 0x2f, - 0x88, 0x39, 0x62, 0x98, 0x7f, 0x2d, 0x27, 0x56, 0x6b, 0x4a, 0x62, 0x66, 0x80, 0x46, 0x24, 0x8f, - 0x84, 0x5a, 0x0d, 0x62, 0x5a, 0x2d, 0x90, 0x36, 0x3a, 0x69, 0x61, 0xf8, 0x98, 0x27, 0x6f, 0x90, - 0x07, 0x7b, 0x08, 0xb8, 0x35, 0x4a, 0x53, 0x1c, 0xab, 0xd5, 0xb2, 0x99, 0xa7, 0xd2, 0x4c, 0x14, - 0x57, 0xa4, 0x35, 0xf0, 0x34, 0x09, 0x1f, 0x54, 0xb0, 0x8f, 0xe0, 0xc5, 0x64, 0xf3, 0x98, 0x60, - 0x6b, 0x35, 0x97, 0x33, 0x76, 0x66, 0x1a, 0x8b, 0x24, 0x49, 0x16, 0x3e, 0x50, 0xc6, 0x98, 0x9b, - 0xf0, 0x22, 0xfb, 0x2c, 0xd6, 0x56, 0x0f, 0x76, 0xbb, 0x8d, 0x5e, 0x56, 0x04, 0xe3, 0x08, 0xaf, - 0x1d, 0x27, 0x09, 0x58, 0x16, 0x13, 0x6a, 0x92, 0xa1, 0x2e, 0xad, 0x1b, 0x87, 0x03, 0x0f, 0x2f, - 0xd1, 0xc5, 0x4e, 0xe3, 0xbb, 0x18, 0x0b, 0xf6, 0x18, 0x55, 0x08, 0xec, 0xa1, 0xc9, 0xbc, 0xea, - 0x5a, 0xd2, 0x8d, 0xf4, 0x4c, 0x8d, 0x70, 0xd5, 0xcf, 0x5b, 0x82, 0xc4, 0xc6, 0xf4, 0xba, 0x4e, - 0xff, 0xc8, 0xeb, 0xe8, 0x2c, 0x6d, 0x34, 0xa9, 0xf5, 0xc1, 0x89, 0xb9, 0xe9, 0xd7, 0x6a, 0xb0, - 0x16, 0x52, 0x19, 0x3e, 0x3f, 0x3f, 0xa0, 0xd8, 0x49, 0x50, 0x5e, 0x67, 0x59, 0x4d, 0x01, 0x2a, - 0x35, 0x96, 0xeb, 0x68, 0x27, 0x37, 0x11, 0xcb, 0x6f, 0xcc, 0xcc, 0xcc, 0x30, 0x03, 0x32, 0xe5, - 0x90, 0x0e, 0xcf, 0x84, 0xc4, 0x96, 0xf6, 0x5c, 0x94, 0xe1, 0xf1, 0x4a, 0x86, 0x5b, 0xa8, 0xd0, - 0x3c, 0x92, 0x12, 0x07, 0xac, 0x4a, 0x5f, 0xbe, 0x2c, 0x02, 0x63, 0x28, 0xa7, 0x20, 0x14, 0x5d, - 0x0d, 0x90, 0xce, 0x8d, 0xc5, 0x90, 0xcb, 0x12, 0x39, 0xd5, 0x10, 0x17, 0xf8, 0xfc, 0x8c, 0x5b, - 0x5b, 0x7e, 0xbe, 0x9b, 0xe9, 0x81, 0xa2, 0x89, 0xc4, 0xc1, 0x73, 0x7a, 0x94, 0xc5, 0xde, 0x30, - 0xc6, 0x42, 0xf8, 0xe5, 0x8c, 0x1c, 0xff, 0x81, 0x94, 0x69, 0xe3, 0xc9, 0x3b, 0x38, 0x8d, 0x18, - 0x43, 0x22, 0xe2, 0x60, 0x91, 0xc4, 0xc4, 0x27, 0x7d, 0xe2, 0x92, 0x29, 0x99, 0x90, 0x01, 0x19, - 0x93, 0x19, 0x19, 0x92, 0x07, 0x32, 0x22, 0x8f, 0xe4, 0x8e, 0x9c, 0x62, 0xa4, 0xe9, 0x03, 0x1e, - 0x80, 0x3d, 0xd9, 0x37, 0x5f, 0xc9, 0x39, 0x3e, 0xdd, 0x63, 0xd9, 0x09, 0xfe, 0x5c, 0xd9, 0xaa, - 0x4a, 0xae, 0xf1, 0xe9, 0x13, 0x3e, 0x1d, 0xdb, 0xea, 0x8e, 0xca, 0x86, 0xff, 0x46, 0x3e, 0x92, - 0x5b, 0x72, 0x41, 0x2e, 0xc9, 0x19, 0x79, 0x4f, 0x3e, 0x83, 0x46, 0x7a, 0x0b, 0x0d, 0x96, 0xdb, - 0xf5, 0x0e, 0xf0, 0x76, 0x66, 0xf4, 0x7d, 0x27, 0x8e, 0x3f, 0x78, 0x71, 0x02, 0x5e, 0xf7, 0x38, - 0x7c, 0xa0, 0x9a, 0x3a, 0xf2, 0x5c, 0xcc, 0xf9, 0xb8, 0x2c, 0xaf, 0x7a, 0x9b, 0x52, 0xa7, 0xd9, - 0x7b, 0x5f, 0xda, 0xca, 0x92, 0xab, 0x1c, 0xd7, 0xcd, 0x7a, 0x87, 0x25, 0xe5, 0x51, 0x49, 0x79, - 0x52, 0x5c, 0xbe, 0xc8, 0x16, 0xf2, 0x25, 0xe7, 0xe5, 0x2c, 0x43, 0x3e, 0x1a, 0x28, 0x0a, 0xc7, - 0xbd, 0x4a, 0x9c, 0x28, 0x01, 0xe7, 0x5b, 0x35, 0xe5, 0x3e, 0x3f, 0xc3, 0xe2, 0x3f, 0x60, 0x70, - 0xd6, 0x88, 0xfb, 0x51, 0xe8, 0xfb, 0xd7, 0xe1, 0xc4, 0x4e, 0x9f, 0xdf, 0x53, 0x74, 0x64, 0xa4, - 0xc6, 0x3f, 0x89, 0x9d, 0x87, 0xdf, 0x27, 0xfb, 0x09, 0xa3, 0x9e, 0x40, 0x0f, 0xe8, 0x07, 0xe0, - 0x1b, 0x8f, 0x64, 0xd4, 0xc1, 0x40, 0xe6, 0xbb, 0x9a, 0x30, 0x24, 0x03, 0xfb, 0xb0, 0x2d, 0x06, - 0x5e, 0xa3, 0x47, 0x4f, 0x02, 0x5f, 0x1d, 0x5a, 0xab, 0xe9, 0x49, 0xcd, 0xc6, 0x34, 0xdc, 0x4e, - 0x9a, 0x14, 0x86, 0x81, 0x1d, 0x91, 0xd5, 0x75, 0x32, 0x3b, 0x87, 0xe5, 0x61, 0x50, 0x35, 0xf4, - 0xe9, 0x5b, 0x7e, 0x31, 0x48, 0xd5, 0x0d, 0x2f, 0x08, 0x68, 0xf4, 0xfe, 0xfa, 0xe3, 0x07, 0x3b, - 0x21, 0x00, 0xf7, 0x62, 0x09, 0xd8, 0x6f, 0x08, 0x12, 0x9b, 0x94, 0x11, 0x74, 0x62, 0xff, 0xf5, - 0xea, 0xd3, 0x4f, 0xb0, 0xe8, 0x28, 0xa6, 0x08, 0xde, 0x4f, 0x1a, 0x7b, 0xe7, 0xda, 0xc6, 0x1b, - 0x60, 0x16, 0x11, 0xcb, 0x2a, 0x54, 0x15, 0x8c, 0xa0, 0xfc, 0x13, 0x73, 0xda, 0x39, 0x61, 0x03, - 0xf6, 0x60, 0x8d, 0xa2, 0x68, 0x39, 0xfc, 0xaf, 0xe9, 0xf0, 0x3c, 0x35, 0x37, 0xc8, 0x0f, 0xbf, - 0xec, 0x2b, 0x30, 0xff, 0x2f, 0x4d, 0x65, 0xca, 0xc0, 0x52, 0xbe, 0xc5, 0xd0, 0xdb, 0x75, 0x12, - 0x07, 0x8c, 0x79, 0xaa, 0x78, 0x69, 0x3a, 0x7d, 0xe5, 0xe8, 0x2e, 0xda, 0xe9, 0x62, 0x10, 0x81, - 0x30, 0xc1, 0x80, 0x78, 0xc5, 0x68, 0x7b, 0x25, 0x30, 0xf8, 0xc5, 0x28, 0x50, 0x8f, 0x81, 0xd1, - 0x1f, 0xbb, 0xec, 0x2f, 0xf6, 0xd7, 0x97, 0x43, 0x73, 0x01, 0x25, 0xfc, 0x51, 0x05, 0xd9, 0x8e, - 0xde, 0x7d, 0x3e, 0x57, 0xa5, 0xa1, 0x98, 0x3b, 0x63, 0xf3, 0x8e, 0x24, 0x30, 0xce, 0xbe, 0xfc, - 0xcc, 0x1b, 0xeb, 0xf3, 0x39, 0xdf, 0x8b, 0x52, 0x94, 0xc3, 0xa8, 0x1f, 0xbc, 0xe0, 0x9e, 0x19, - 0xf6, 0x4b, 0x6c, 0xab, 0x0f, 0x6a, 0x4d, 0x1a, 0x06, 0x84, 0x3c, 0x90, 0xdf, 0xe9, 0x03, 0xf4, - 0x42, 0x5a, 0xa4, 0xd0, 0x0c, 0x36, 0x0b, 0x76, 0xff, 0x3e, 0x1f, 0xb6, 0xe1, 0x73, 0x31, 0x25, - 0x75, 0xf9, 0x01, 0xa8, 0x35, 0x49, 0x26, 0xd6, 0xce, 0x8e, 0x5a, 0xe3, 0x82, 0xc1, 0xf0, 0xc5, - 0x85, 0x02, 0x63, 0x14, 0xc6, 0x60, 0x09, 0xef, 0xf0, 0x18, 0x07, 0x4c, 0x2d, 0xea, 0xc1, 0x2a, - 0x42, 0x67, 0x42, 0xbd, 0xbd, 0xf3, 0x1d, 0x04, 0x09, 0x4d, 0x1c, 0x58, 0x58, 0x29, 0xec, 0x34, - 0x9e, 0x70, 0xd8, 0xff, 0x78, 0xe8, 0x56, 0x60, 0x42, 0x50, 0x72, 0xdc, 0xb8, 0x22, 0x16, 0x00, - 0x57, 0x9e, 0x4f, 0xaf, 0x66, 0x30, 0x3b, 0xda, 0x96, 0x41, 0x18, 0x50, 0x30, 0x71, 0xf2, 0xa5, - 0x51, 0x79, 0x77, 0xf5, 0x34, 0x40, 0x0b, 0xcf, 0x05, 0xc1, 0x1a, 0x18, 0x5f, 0x60, 0x73, 0x27, - 0xb0, 0x91, 0x98, 0x9b, 0xb5, 0x69, 0xc6, 0x2f, 0xde, 0x99, 0xf7, 0x31, 0x74, 0x29, 0x86, 0xfe, - 0xa0, 0xcf, 0x55, 0xd8, 0xbf, 0xa7, 0xc9, 0xf9, 0x85, 0x94, 0xb5, 0x95, 0x72, 0x88, 0x7d, 0x83, - 0xe8, 0x40, 0x45, 0xda, 0x32, 0x86, 0x61, 0x38, 0xf4, 0x31, 0xdd, 0x76, 0xac, 0x12, 0xe4, 0xb7, - 0x00, 0x88, 0xd3, 0x7b, 0xf0, 0x92, 0x59, 0x7f, 0x44, 0xfb, 0xf7, 0x06, 0x14, 0xb2, 0xdb, 0x7b, - 0xa2, 0x81, 0xe1, 0xdc, 0x3b, 0x63, 0x07, 0x6c, 0xe2, 0xfe, 0x28, 0x08, 0xfd, 0x70, 0xe8, 0xd1, - 0x58, 0xd4, 0x3c, 0x3e, 0x3e, 0xb2, 0x54, 0x30, 0xea, 0x4d, 0x46, 0xb0, 0xda, 0x3e, 0xf5, 0x7d, - 0xa9, 0xc6, 0x4b, 0xc2, 0xd0, 0x8f, 0x81, 0xa0, 0x06, 0x61, 0x5a, 0x72, 0x17, 0x86, 0xf7, 0x72, - 0x81, 0xe3, 0x45, 0xa8, 0xcf, 0x8c, 0x69, 0x2c, 0x0a, 0x30, 0xbf, 0xee, 0xde, 0xf5, 0xf0, 0x7a, - 0x17, 0x6e, 0x36, 0x2b, 0x17, 0xf3, 0xe3, 0x6d, 0x48, 0x23, 0x40, 0x13, 0x42, 0x35, 0xc6, 0xf1, - 0x20, 0x09, 0xfa, 0xb1, 0x27, 0x66, 0x1b, 0x7b, 0x20, 0xb8, 0xe2, 0x70, 0x90, 0xb0, 0x77, 0xa6, - 0x79, 0xd5, 0xe3, 0x0b, 0x40, 0x3e, 0x5d, 0x26, 0xb8, 0xe7, 0x45, 0x52, 0x22, 0x8b, 0x24, 0x68, - 0x5e, 0x6f, 0x54, 0x96, 0xec, 0x91, 0x23, 0x02, 0x00, 0xd7, 0xa5, 0x4f, 0x9f, 0xc0, 0x51, 0x47, - 0x23, 0x35, 0x1d, 0xcf, 0x4c, 0x0f, 0x7c, 0x1b, 0x0b, 0x6d, 0xb9, 0x0b, 0x7a, 0x4a, 0x5f, 0x4b, - 0xba, 0xca, 0x6d, 0x4b, 0x4d, 0x3b, 0x00, 0x47, 0x66, 0x95, 0xd4, 0x10, 0x03, 0xe8, 0xda, 0xc0, - 0x7f, 0xb5, 0xa2, 0x3a, 0x60, 0x6c, 0x5b, 0x3d, 0xc7, 0xbb, 0x7c, 0x74, 0x1c, 0x2b, 0xb3, 0x70, - 0x2a, 0xa4, 0x8a, 0xe2, 0xa3, 0x87, 0x4b, 0x5d, 0x85, 0x06, 0x0f, 0x1e, 0x48, 0x07, 0x96, 0x62, - 0x0b, 0x22, 0xa6, 0xab, 0xc0, 0x8e, 0x38, 0xa0, 0x74, 0x91, 0x6c, 0x15, 0x47, 0xb9, 0x03, 0x13, - 0x27, 0xa6, 0x91, 0x32, 0x8d, 0x41, 0x0c, 0x1e, 0x9d, 0x5c, 0x76, 0x59, 0xb6, 0x03, 0x36, 0x04, - 0x37, 0x19, 0x2f, 0x99, 0x60, 0x90, 0x73, 0x40, 0x41, 0x00, 0x45, 0x34, 0x56, 0x1e, 0xc3, 0xe8, - 0x9e, 0x85, 0x62, 0x1f, 0x25, 0x51, 0xe0, 0xc1, 0x1b, 0xa3, 0xc2, 0x9f, 0xf8, 0x1d, 0x52, 0xfa, - 0x94, 0xd4, 0x29, 0xca, 0x3a, 0x75, 0xc1, 0xcc, 0x98, 0x4e, 0x60, 0xbc, 0x07, 0x5c, 0x61, 0xb0, - 0x19, 0x94, 0x4a, 0x86, 0x48, 0x76, 0x73, 0xd3, 0x5e, 0xd6, 0xe9, 0x44, 0x4a, 0x01, 0x0f, 0x50, - 0xf1, 0xeb, 0xf3, 0x93, 0x6a, 0xf5, 0x0e, 0xc6, 0x0e, 0x41, 0xa6, 0xea, 0x9d, 0x3b, 0xc6, 0x99, - 0x19, 0xc6, 0xc0, 0x11, 0x89, 0x39, 0x16, 0x6b, 0x88, 0x1c, 0xaf, 0x06, 0xdb, 0x1a, 0xcf, 0x82, - 0x3e, 0x18, 0x6d, 0x41, 0x38, 0x65, 0xd9, 0xf7, 0x3d, 0x75, 0xe7, 0x31, 0x56, 0x31, 0x4c, 0x4d, - 0x6e, 0x54, 0x27, 0x72, 0xa7, 0x5e, 0x10, 0xaa, 0x5f, 0x75, 0x72, 0x87, 0xf9, 0x8f, 0x4e, 0x34, - 0x43, 0xa3, 0xda, 0x56, 0xd9, 0x75, 0x96, 0x3b, 0x76, 0x6b, 0x50, 0x85, 0x2a, 0xe8, 0x0d, 0xa8, - 0xc9, 0xf9, 0x28, 0x60, 0x4b, 0x98, 0x0b, 0x56, 0xc5, 0x60, 0xb1, 0xe5, 0xfc, 0x12, 0x66, 0x67, - 0x5c, 0x3f, 0x3f, 0x83, 0xfd, 0x7a, 0xed, 0x8d, 0x29, 0x78, 0x3c, 0xdc, 0xb2, 0x49, 0xd7, 0x00, - 0x2e, 0x07, 0x6d, 0xe9, 0xbc, 0x37, 0xc3, 0x4a, 0x6e, 0x64, 0x5e, 0x3e, 0xa6, 0x71, 0xec, 0x0c, - 0xf3, 0x19, 0x59, 0x4c, 0xb5, 0xa0, 0xba, 0x44, 0xdd, 0xca, 0xc4, 0xf6, 0xda, 0xa1, 0x17, 0xbf, - 0xe9, 0x98, 0xb2, 0x70, 0x66, 0xf9, 0x73, 0x93, 0x9f, 0xf7, 0xd1, 0x37, 0x91, 0x76, 0x50, 0x13, - 0x81, 0x01, 0x63, 0x10, 0x85, 0xe3, 0xb7, 0x23, 0x27, 0x7a, 0x0b, 0x74, 0xca, 0x69, 0x99, 0x34, - 0xc0, 0x32, 0x4d, 0x58, 0xbe, 0x64, 0xa3, 0xc5, 0x9f, 0x9e, 0x9f, 0xb5, 0xab, 0x9a, 0x1d, 0x80, - 0xe6, 0xbc, 0xd2, 0xb9, 0x65, 0x85, 0xf0, 0xe9, 0x1d, 0x2c, 0xe4, 0xc9, 0x49, 0x78, 0xa6, 0x84, - 0xb3, 0x32, 0x5d, 0x0f, 0x5e, 0x53, 0x7a, 0xec, 0x62, 0x41, 0x2b, 0x2f, 0xb5, 0x8b, 0xec, 0x26, - 0x1e, 0x7c, 0xf4, 0xa7, 0x11, 0x32, 0xf1, 0xf9, 0x3b, 0xd8, 0x27, 0x0f, 0xfc, 0x01, 0x28, 0xfb, - 0x04, 0x0f, 0x98, 0x7b, 0xac, 0x3a, 0x28, 0x70, 0xa8, 0x54, 0xf5, 0xa9, 0xc2, 0xaa, 0xa0, 0xcd, - 0x35, 0xda, 0x77, 0x19, 0x49, 0x90, 0xbf, 0x6a, 0x2a, 0x53, 0x9b, 0xec, 0x67, 0x8d, 0x0b, 0x84, - 0xf0, 0x52, 0x70, 0x75, 0x8a, 0x13, 0x84, 0xc9, 0x08, 0x08, 0x3d, 0xe5, 0x1e, 0x92, 0x35, 0x0b, - 0xd0, 0xc8, 0xf7, 0x62, 0xd1, 0x9a, 0xba, 0x06, 0x7a, 0xb7, 0x79, 0x2a, 0xcd, 0xbf, 0xd6, 0x54, - 0x4d, 0x6e, 0xaf, 0xab, 0x65, 0x66, 0xd8, 0xab, 0xcd, 0xb9, 0x97, 0x95, 0xf0, 0x6a, 0x47, 0x00, - 0x84, 0x2b, 0x06, 0x9d, 0x9c, 0x95, 0x0c, 0x8a, 0x96, 0x6d, 0xf9, 0xc8, 0x28, 0xb3, 0x83, 0xf3, - 0x60, 0x32, 0x45, 0x6b, 0x8a, 0x85, 0x14, 0x36, 0x36, 0x9f, 0xc0, 0x0c, 0x20, 0x05, 0xdc, 0xf2, - 0x1e, 0x7d, 0x10, 0xe3, 0x1e, 0x16, 0xa1, 0xd6, 0xba, 0xbc, 0xfc, 0x74, 0xb9, 0xdc, 0xe1, 0x6f, - 0x86, 0x73, 0x07, 0x32, 0x0b, 0x36, 0xee, 0x47, 0xcd, 0xbb, 0x69, 0x7e, 0x25, 0x6c, 0xc3, 0x31, - 0x8c, 0xcb, 0x04, 0xe5, 0x52, 0x16, 0x12, 0xe9, 0xed, 0x02, 0x7a, 0xf0, 0xf7, 0xb7, 0xe1, 0x78, - 0x3c, 0x0d, 0xc4, 0x95, 0x73, 0x9d, 0xfc, 0x19, 0x80, 0x87, 0xb5, 0xa2, 0x42, 0xf2, 0x7d, 0xb0, - 0x05, 0x90, 0x04, 0xb7, 0xb7, 0xb3, 0x56, 0xac, 0xbf, 0x40, 0x58, 0x7f, 0xac, 0x16, 0x4c, 0x40, - 0xc9, 0xc2, 0xfd, 0x91, 0x9b, 0xd0, 0x82, 0x21, 0x3f, 0x4f, 0xfc, 0xd0, 0x71, 0x95, 0x81, 0xe3, - 0x21, 0xd6, 0x91, 0x3b, 0x91, 0x51, 0xa4, 0xa3, 0x3e, 0x8c, 0x1c, 0x02, 0x23, 0x00, 0x91, 0xa8, - 0x35, 0xb0, 0x61, 0x74, 0xc0, 0x83, 0xe3, 0x53, 0x58, 0x35, 0xc8, 0xa9, 0x0a, 0xbc, 0x34, 0x6c, - 0xfb, 0x73, 0xaa, 0x0a, 0xfa, 0x4b, 0x31, 0xda, 0xa1, 0x4b, 0xc7, 0xa1, 0x2f, 0x1b, 0x5a, 0x57, - 0xcc, 0xfa, 0xb3, 0x14, 0x26, 0xe8, 0xaa, 0xc1, 0x5d, 0x3c, 0x61, 0x3f, 0x20, 0xa7, 0x8d, 0x78, - 0x7a, 0x17, 0x8b, 0x9c, 0xa2, 0x4c, 0x13, 0xa9, 0xcf, 0x00, 0xbc, 0x25, 0x8f, 0xc0, 0x99, 0x53, - 0x69, 0xc2, 0xbc, 0x00, 0xda, 0x04, 0x5c, 0x66, 0x66, 0x3c, 0xa0, 0x9c, 0x96, 0x5b, 0x49, 0x2b, - 0xfe, 0x17, 0x0a, 0xa0, 0x91, 0x54, 0x49, 0xc9, 0xa8, 0x4c, 0xc4, 0x67, 0x9d, 0xfe, 0xba, 0x4d, - 0x27, 0x0c, 0xbc, 0x82, 0xe0, 0x95, 0xba, 0xfd, 0xf2, 0x3d, 0x56, 0xe1, 0x78, 0xec, 0x04, 0x2e, - 0xb3, 0x48, 0x63, 0xea, 0x44, 0xfd, 0xd1, 0x85, 0x13, 0x39, 0xe3, 0x18, 0xcd, 0x0d, 0x1a, 0xa0, - 0x97, 0x30, 0x76, 0x81, 0x2a, 0x6e, 0x4e, 0xaf, 0x2e, 0x0e, 0x4c, 0xf3, 0x2b, 0x12, 0x82, 0xfd, - 0xeb, 0xe9, 0x95, 0x92, 0x78, 0x08, 0x47, 0xad, 0xd0, 0xe0, 0x7b, 0x07, 0x18, 0x59, 0x46, 0x2e, - 0x80, 0xea, 0xcf, 0x80, 0x1c, 0x7e, 0x85, 0xc1, 0x35, 0xf0, 0x06, 0xea, 0x6a, 0x0d, 0xfc, 0x28, - 0x2c, 0xfd, 0x08, 0x8e, 0xc7, 0x08, 0x8a, 0x1a, 0xa4, 0x99, 0x2b, 0xc7, 0xee, 0x40, 0xd6, 0xf9, - 0xc2, 0xf7, 0xe1, 0x34, 0x8a, 0xd7, 0x4a, 0x3f, 0x7a, 0xc1, 0x34, 0xa1, 0xeb, 0xe5, 0x57, 0x14, - 0x24, 0x8a, 0xcb, 0xcb, 0xf1, 0x6a, 0x18, 0xa1, 0xe0, 0x48, 0x90, 0x5f, 0xa5, 0x6d, 0xf9, 0xb3, - 0x4c, 0x88, 0x5b, 0x63, 0x6b, 0x00, 0x84, 0x8a, 0x67, 0x78, 0x41, 0x31, 0xae, 0x1c, 0x9e, 0x24, - 0x45, 0x28, 0x5a, 0x8c, 0x85, 0x2d, 0x70, 0x00, 0x7e, 0x52, 0x9c, 0x94, 0xb6, 0x99, 0x38, 0xc9, - 0x08, 0xfc, 0x6b, 0x06, 0x74, 0x40, 0xfe, 0x21, 0x01, 0xfd, 0x37, 0x8d, 0x82, 0x86, 0xcc, 0x42, - 0xb7, 0x47, 0xf1, 0xc3, 0x50, 0x79, 0x1a, 0xfb, 0x41, 0x6c, 0xbf, 0x11, 0x90, 0xa3, 0x69, 0xf7, - 0xd8, 0x32, 0xc2, 0x68, 0xb8, 0xd3, 0x34, 0x4d, 0x73, 0x07, 0x5a, 0xbc, 0x51, 0xf8, 0x97, 0x2b, - 0xde, 0x34, 0xdb, 0x6f, 0x94, 0x11, 0x73, 0x39, 0xf9, 0x33, 0x7e, 0xe3, 0xe2, 0x24, 0x7c, 0xb2, - 0xdf, 0x98, 0x8a, 0xa9, 0x34, 0xdb, 0x0a, 0x96, 0x01, 0x7c, 0xbe, 0xfd, 0x06, 0x2d, 0xea, 0x37, - 0x18, 0x4a, 0x08, 0xef, 0xa9, 0xfd, 0x46, 0xad, 0x69, 0xb4, 0xa7, 0x3e, 0x8e, 0xc0, 0x04, 0x02, - 0xed, 0x23, 0x94, 0xcd, 0x5b, 0xf6, 0x69, 0x0a, 0x40, 0x7a, 0xda, 0xae, 0x9e, 0xce, 0x92, 0x15, - 0xf8, 0x1e, 0xc8, 0x74, 0x67, 0x62, 0xbf, 0x89, 0xc2, 0x69, 0xe0, 0xe6, 0x8a, 0xf1, 0x18, 0x3c, - 0x2d, 0xef, 0x1e, 0xe1, 0x82, 0x15, 0xd7, 0x7e, 0xf3, 0xb1, 0xd1, 0x52, 0x9a, 0xef, 0xf7, 0x9c, - 0xa6, 0xd2, 0x54, 0x10, 0x26, 0xb3, 0x0e, 0x4f, 0x0f, 0x0d, 0xa9, 0x00, 0xfe, 0x36, 0x47, 0x8d, - 0xa6, 0x5c, 0x50, 0x6f, 0xfe, 0x7c, 0xf8, 0x1b, 0x0c, 0xb2, 0x83, 0xa3, 0xc0, 0x58, 0xa1, 0x3f, - 0xc3, 0x19, 0x94, 0x09, 0x4c, 0x91, 0x00, 0x62, 0x70, 0x4c, 0x05, 0x7e, 0x0e, 0x95, 0xa6, 0xa9, - 0x1c, 0xb2, 0x86, 0xa2, 0x49, 0x97, 0x2f, 0xec, 0x88, 0x35, 0x7f, 0x6a, 0x40, 0x53, 0x80, 0x7d, - 0x86, 0x7f, 0x1b, 0x6f, 0x94, 0xa7, 0xa6, 0x78, 0xc7, 0xbf, 0xfb, 0xd8, 0x8d, 0x75, 0x59, 0x36, - 0x3e, 0x14, 0x6d, 0xdb, 0xa2, 0xed, 0xae, 0x68, 0xdb, 0xce, 0xda, 0x32, 0x63, 0x09, 0xec, 0x3f, - 0xdc, 0x84, 0xae, 0xc4, 0xa5, 0x7f, 0xff, 0x5f, 0xbe, 0x8b, 0x4d, 0xc0, 0xf7, 0x61, 0xb6, 0x45, - 0x0d, 0xdc, 0xc4, 0xf7, 0x6d, 0xf9, 0x1d, 0xb6, 0x6c, 0x77, 0xf9, 0x8e, 0x5b, 0x38, 0xda, 0xf5, - 0x9b, 0x4a, 0x6b, 0x74, 0x28, 0x97, 0x2a, 0xcd, 0xe5, 0xb6, 0xfe, 0x3f, 0xda, 0xa9, 0x7f, 0x64, - 0x4e, 0x1d, 0x98, 0x67, 0x37, 0x5f, 0x49, 0x84, 0x9f, 0x08, 0x28, 0x0a, 0x80, 0xe4, 0x94, 0xcc, - 0x51, 0x3c, 0x71, 0x82, 0xee, 0x52, 0xd5, 0x24, 0x22, 0xe8, 0x20, 0x34, 0x4e, 0x87, 0xff, 0xc2, - 0x64, 0xd8, 0x8c, 0x37, 0x7e, 0x96, 0x6b, 0xae, 0xc3, 0xc4, 0xf1, 0x15, 0x28, 0xef, 0x53, 0xde, - 0x3d, 0xc1, 0x82, 0x6d, 0x7b, 0x7f, 0x8e, 0xc1, 0x51, 0x91, 0x3a, 0x4f, 0xe1, 0x7d, 0xdb, 0xbe, - 0x9f, 0xfa, 0xfd, 0xe9, 0x84, 0x09, 0x3c, 0x4b, 0xc1, 0x4f, 0xcc, 0x80, 0x89, 0x37, 0xc6, 0x2d, - 0x36, 0xdf, 0x28, 0x63, 0x07, 0x48, 0xac, 0x61, 0xc2, 0xd3, 0x08, 0x68, 0x0f, 0x90, 0x0a, 0x4f, - 0xdc, 0x5e, 0x79, 0x83, 0xb3, 0x84, 0x59, 0x4f, 0xa0, 0x25, 0x40, 0x2b, 0xeb, 0xdc, 0xe5, 0xa3, - 0xae, 0xd6, 0xff, 0x20, 0x00, 0x40, 0x53, 0x8f, 0x09, 0x54, 0x23, 0x46, 0x43, 0x46, 0x2b, 0xcc, - 0x25, 0x28, 0x2c, 0xa4, 0x2c, 0xdf, 0xea, 0x43, 0xf8, 0x48, 0xa3, 0xb7, 0x0e, 0x33, 0x5e, 0x13, - 0x3b, 0x59, 0x29, 0x01, 0xfb, 0xbc, 0x57, 0x6f, 0x58, 0xb4, 0x9b, 0xf4, 0x1a, 0x96, 0xb9, 0x00, - 0xbd, 0xc0, 0x2e, 0x8f, 0x25, 0xec, 0x0f, 0x46, 0x18, 0x98, 0x61, 0x1d, 0x0a, 0xaf, 0x60, 0x83, - 0x8d, 0x86, 0x61, 0x6a, 0x69, 0x7b, 0x8f, 0x89, 0xba, 0x03, 0x0e, 0xef, 0xb1, 0x50, 0x78, 0x30, - 0xf3, 0xb1, 0x01, 0x8a, 0x39, 0x39, 0x4f, 0x6d, 0x86, 0x1d, 0xd4, 0xa5, 0xb6, 0x89, 0x19, 0x0f, - 0xf0, 0x6c, 0x1d, 0x4b, 0x96, 0x85, 0x89, 0x52, 0x5f, 0x84, 0xdd, 0x40, 0xb7, 0x0c, 0x35, 0x15, - 0x34, 0x0f, 0xce, 0x60, 0xb1, 0x58, 0x55, 0x58, 0x03, 0xe2, 0x71, 0xbd, 0x07, 0x85, 0x69, 0x7a, - 0xfb, 0x0d, 0x22, 0x07, 0x2c, 0x55, 0x0a, 0x08, 0x2d, 0x28, 0x7d, 0x4f, 0x1d, 0x77, 0xbd, 0x06, - 0x43, 0xc5, 0x50, 0xfa, 0x9f, 0x91, 0x29, 0xb2, 0x14, 0xf9, 0xdd, 0x12, 0x44, 0x29, 0x12, 0xde, - 0x20, 0xb2, 0x95, 0xc6, 0xae, 0xd2, 0x5e, 0x17, 0xde, 0x4b, 0x79, 0x83, 0x95, 0xa3, 0x7d, 0xa7, - 0x0d, 0xad, 0xb8, 0x4e, 0x68, 0xd7, 0xdb, 0x3f, 0xb7, 0x97, 0x2a, 0x81, 0x71, 0xf5, 0xd1, 0x0e, - 0x20, 0x6a, 0x0d, 0x5b, 0x20, 0x0c, 0xc7, 0x6f, 0x14, 0x0f, 0x46, 0x01, 0x3b, 0xce, 0x8b, 0xde, - 0x74, 0x95, 0xcf, 0x13, 0xc3, 0x10, 0x6d, 0xa5, 0x5f, 0x70, 0xcf, 0x44, 0x9e, 0x0a, 0x57, 0xf1, - 0x96, 0xca, 0xda, 0xab, 0xc4, 0x73, 0xb3, 0xc7, 0x84, 0xa5, 0xab, 0x59, 0x74, 0xa1, 0x2f, 0x56, - 0xfd, 0x44, 0x4e, 0xe5, 0x92, 0xb7, 0xa8, 0xd6, 0x1b, 0x6a, 0x76, 0x92, 0x2c, 0xea, 0xc1, 0x2b, - 0x34, 0x62, 0xef, 0x37, 0xf6, 0x21, 0x89, 0x3f, 0x8e, 0x12, 0xd4, 0xda, 0xdf, 0x35, 0x26, 0xda, - 0x36, 0x2f, 0xff, 0x1d, 0xac, 0x00, 0x83, 0x15, 0xd8, 0x41, 0x82, 0x07, 0x79, 0x25, 0xeb, 0x5c, - 0x3c, 0x04, 0x90, 0xf3, 0x1b, 0x25, 0x1d, 0xe3, 0x1d, 0xf5, 0xc5, 0x30, 0xff, 0x21, 0x0a, 0x8c, - 0xa8, 0xfb, 0xfb, 0x09, 0x2f, 0x5d, 0x0e, 0x75, 0x98, 0x57, 0x2b, 0xfe, 0xd6, 0x93, 0xc8, 0x89, - 0x47, 0xf5, 0xe6, 0x9b, 0x02, 0xba, 0x6c, 0x29, 0x7b, 0xca, 0x2e, 0xfc, 0xbf, 0xd9, 0x50, 0xf6, - 0x4a, 0xa8, 0xb2, 0x71, 0xa8, 0xec, 0x3d, 0x34, 0xda, 0x2b, 0x7a, 0x70, 0x7f, 0x45, 0x0f, 0xee, - 0x8d, 0x5b, 0x8a, 0xf9, 0x73, 0x7b, 0x45, 0x1b, 0xb6, 0xf3, 0x7a, 0xf0, 0xa1, 0xb9, 0x24, 0xe6, - 0xa5, 0x0a, 0x34, 0x57, 0x54, 0xa0, 0xb9, 0x41, 0x05, 0xa2, 0xee, 0xcb, 0x35, 0x6e, 0xaf, 0x37, - 0x96, 0xd9, 0xa4, 0x84, 0xe8, 0x33, 0x92, 0xe7, 0xe4, 0x92, 0x92, 0xfc, 0x0a, 0xc1, 0x2c, 0xf4, - 0xa2, 0x8e, 0x2e, 0x90, 0x46, 0xda, 0x97, 0x93, 0x49, 0x69, 0xf7, 0xf5, 0x40, 0x4b, 0x21, 0x03, - 0x55, 0x36, 0x30, 0x10, 0x97, 0xd1, 0xcf, 0xcf, 0x2a, 0x73, 0xe5, 0x0c, 0xfc, 0x74, 0x9c, 0x31, - 0xfc, 0x0d, 0x0f, 0xc2, 0xf3, 0x93, 0x55, 0xab, 0x52, 0x8b, 0xf5, 0xea, 0xe7, 0x67, 0x2d, 0xc2, - 0xec, 0xcb, 0x72, 0xd1, 0xac, 0x7c, 0x07, 0x47, 0xfe, 0xed, 0x25, 0x8e, 0x64, 0xec, 0x84, 0xd1, - 0xec, 0xef, 0xe3, 0x49, 0x84, 0xe0, 0x1a, 0x7c, 0xea, 0x75, 0x08, 0x10, 0x3d, 0x2b, 0xc3, 0x61, - 0x51, 0x29, 0x34, 0x4b, 0xe6, 0x46, 0x68, 0xfe, 0x3f, 0x77, 0xff, 0x2f, 0xe2, 0xee, 0x32, 0x1e, - 0xc7, 0x7d, 0xe7, 0x8c, 0x2a, 0x08, 0x70, 0x7b, 0x2e, 0xc7, 0xfa, 0x8c, 0xcd, 0x97, 0x04, 0xb3, - 0x81, 0xcf, 0x4b, 0xcd, 0x2e, 0x4e, 0xc6, 0x71, 0xfe, 0x54, 0x32, 0x5c, 0x91, 0x0b, 0x81, 0x2c, - 0x11, 0xe2, 0x47, 0x8f, 0x65, 0xe9, 0xe2, 0xf0, 0x1c, 0x20, 0x7d, 0xde, 0x07, 0x53, 0x50, 0xa8, - 0x67, 0xab, 0x6c, 0x2a, 0xd6, 0xc1, 0x73, 0xb7, 0x3c, 0xd5, 0x3a, 0xb6, 0x59, 0x7b, 0xbe, 0xa2, - 0x9c, 0x29, 0x77, 0xbc, 0x1e, 0x44, 0x83, 0x05, 0xde, 0x45, 0xd4, 0xb9, 0xef, 0x30, 0x38, 0x18, - 0x62, 0xff, 0x20, 0x30, 0xa4, 0x28, 0xf5, 0xcb, 0x61, 0x8b, 0xe3, 0x9a, 0x8a, 0x91, 0xfd, 0x25, - 0xdc, 0xf9, 0xe3, 0xb6, 0x24, 0x77, 0x04, 0xb8, 0x0a, 0x31, 0xee, 0xe7, 0x1f, 0x04, 0x34, 0x3b, - 0x80, 0x8c, 0xc6, 0x9a, 0xfa, 0x96, 0x3f, 0x28, 0x2c, 0xa5, 0x5d, 0x1c, 0xb2, 0xe2, 0x5c, 0x2c, - 0x2e, 0x27, 0x81, 0x59, 0xad, 0x02, 0x46, 0x79, 0xde, 0x3b, 0xd0, 0xa9, 0x54, 0xb1, 0x02, 0xe7, - 0x1f, 0xb9, 0xbf, 0x35, 0x1b, 0x75, 0x87, 0x6d, 0x1f, 0xb3, 0x83, 0x22, 0xb0, 0xe5, 0x6b, 0xdf, - 0xbd, 0xe1, 0x42, 0xe9, 0xfd, 0x27, 0xb0, 0x07, 0x53, 0x51, 0xbc, 0x1c, 0x35, 0xdb, 0x80, 0x42, - 0xa6, 0xbc, 0x57, 0xb0, 0xb8, 0x58, 0x3b, 0x5b, 0x67, 0xa1, 0xd7, 0x57, 0x1c, 0xb0, 0x2f, 0x06, - 0x5e, 0x00, 0x8b, 0x9f, 0xcd, 0xa3, 0xde, 0x16, 0x27, 0xc7, 0xa5, 0x39, 0x1c, 0xaf, 0xea, 0x2b, - 0x27, 0x67, 0x2c, 0x9d, 0x75, 0x16, 0xe2, 0xcb, 0x85, 0xf4, 0x7e, 0xf9, 0xf8, 0xe1, 0x3d, 0x70, - 0xc6, 0x25, 0xfd, 0xd7, 0x94, 0xc6, 0x49, 0x27, 0x30, 0xc2, 0x80, 0xdd, 0xd4, 0x66, 0xd7, 0xbd, - 0xfb, 0x23, 0x4c, 0x2a, 0x93, 0x73, 0x7b, 0xda, 0x78, 0x1e, 0xcc, 0x1a, 0xa0, 0xef, 0x8e, 0xe7, - 0x6b, 0xa0, 0xc8, 0xb0, 0x8c, 0xbb, 0xef, 0x3d, 0x0d, 0xd0, 0x82, 0x69, 0x22, 0x1a, 0xb6, 0x8a, - 0x27, 0x40, 0x0a, 0xf4, 0x9a, 0x3e, 0x25, 0xba, 0x6e, 0xb5, 0xcd, 0x86, 0xd4, 0xee, 0x9d, 0xa6, - 0x5b, 0x9a, 0x4c, 0x29, 0x69, 0x8d, 0x4e, 0x96, 0x88, 0xbd, 0x0b, 0x9d, 0xc8, 0x55, 0xdc, 0x90, - 0xa6, 0x9f, 0xe8, 0x8c, 0xc1, 0x75, 0x05, 0xcf, 0x7d, 0xc2, 0xb2, 0x15, 0xfd, 0x19, 0xee, 0x63, - 0xda, 0x0d, 0x73, 0x0f, 0x03, 0xce, 0xac, 0xea, 0x8f, 0xa7, 0xd7, 0x2a, 0xa1, 0x04, 0x6d, 0x12, - 0x0c, 0x1f, 0x06, 0xae, 0xa6, 0x2f, 0x52, 0x6e, 0x0e, 0x30, 0x9a, 0x9e, 0xfb, 0xd0, 0xa0, 0xfd, - 0x52, 0xf2, 0xc7, 0x85, 0x13, 0x00, 0x89, 0xea, 0x24, 0xb2, 0x37, 0x8a, 0x62, 0x7e, 0xaa, 0x8e, - 0x87, 0x30, 0x9b, 0xda, 0x45, 0xe3, 0x47, 0xa0, 0x12, 0x15, 0x93, 0xfc, 0x5e, 0x9a, 0x17, 0x0d, - 0x24, 0x96, 0x0b, 0xec, 0xbc, 0xd8, 0xf4, 0x24, 0x74, 0x67, 0x2a, 0x66, 0x09, 0x6e, 0x01, 0x61, - 0x36, 0xac, 0xbf, 0x4d, 0x6b, 0x31, 0x72, 0x7f, 0x73, 0x5b, 0xf1, 0xe1, 0xdc, 0xb3, 0x30, 0x4c, - 0xd8, 0xd0, 0xee, 0xcb, 0x28, 0xc8, 0xc0, 0x98, 0xbe, 0xdc, 0x56, 0x00, 0x41, 0xed, 0xad, 0xf3, - 0x74, 0xc8, 0x60, 0x33, 0xc0, 0x83, 0x47, 0x15, 0xbf, 0x03, 0xb1, 0xb1, 0x0d, 0x66, 0x9d, 0x8e, - 0xca, 0x9b, 0x7c, 0xbc, 0xc2, 0xcf, 0x8d, 0x3e, 0x6e, 0x6c, 0xf0, 0x81, 0x1f, 0x8a, 0xb3, 0xcf, - 0x92, 0x96, 0x87, 0x4f, 0xa2, 0x21, 0xb3, 0x7c, 0x81, 0x4f, 0xd8, 0x07, 0x4a, 0x5f, 0x6a, 0xb8, - 0xe9, 0xdc, 0xae, 0x3f, 0x76, 0x4f, 0x92, 0xe0, 0x75, 0xf9, 0x27, 0xe5, 0x83, 0x4d, 0xe3, 0x24, - 0x1c, 0xbf, 0x1d, 0xbb, 0xd7, 0x08, 0x19, 0x3b, 0x7a, 0xb2, 0xd3, 0xcb, 0x7f, 0x06, 0xb8, 0x15, - 0x63, 0x4d, 0x4f, 0xaf, 0xb8, 0x8b, 0x8f, 0x06, 0xbe, 0x4a, 0xe7, 0xca, 0x07, 0x2b, 0xc9, 0x86, - 0x83, 0x95, 0xfc, 0x8c, 0x2c, 0xe4, 0x9f, 0x90, 0xdf, 0x30, 0xa3, 0x8a, 0x87, 0x11, 0x53, 0xeb, - 0x15, 0x1a, 0xa3, 0xdd, 0x9e, 0x6f, 0xce, 0x22, 0x96, 0x18, 0x49, 0xc3, 0x74, 0xaa, 0x74, 0x28, - 0x5b, 0x55, 0x31, 0x7d, 0x66, 0xbb, 0x33, 0xca, 0x75, 0x4c, 0xde, 0xd3, 0x19, 0xac, 0x26, 0x58, - 0x49, 0x1f, 0x6d, 0xb4, 0x30, 0x2d, 0xdc, 0x80, 0xca, 0xb7, 0x2c, 0x07, 0x66, 0xeb, 0x23, 0xcd, - 0x01, 0x34, 0x8c, 0x35, 0x7d, 0x23, 0x44, 0xab, 0x7d, 0xfe, 0x70, 0xa0, 0xd8, 0x92, 0xf9, 0x27, - 0xb5, 0x99, 0x1e, 0x01, 0x5a, 0x79, 0x01, 0xa4, 0x3c, 0x75, 0x14, 0x43, 0x34, 0x9d, 0x7c, 0x2f, - 0x3c, 0x19, 0x21, 0x4b, 0xa0, 0x78, 0xdb, 0x51, 0xf5, 0xa9, 0x5d, 0x39, 0x25, 0x8e, 0xc1, 0xbe, - 0xe9, 0x6d, 0xb8, 0x5e, 0x3c, 0xf1, 0x9d, 0x99, 0x7d, 0xda, 0x53, 0xef, 0x80, 0xfc, 0xee, 0xc1, - 0x60, 0x61, 0xb9, 0x50, 0x38, 0xde, 0x7b, 0x7b, 0x33, 0x3a, 0x3e, 0xc6, 0xf8, 0xb5, 0xc5, 0xcb, - 0x17, 0x5a, 0x71, 0xd5, 0x4b, 0xce, 0x5e, 0x68, 0x36, 0x71, 0x86, 0x3c, 0x93, 0x73, 0xab, 0x35, - 0x94, 0xe7, 0x82, 0x6e, 0xdc, 0x93, 0x65, 0x9a, 0x40, 0xb6, 0x95, 0x5b, 0x4d, 0xf7, 0x47, 0x9d, - 0xd6, 0xbf, 0x9e, 0x8a, 0xf2, 0x3d, 0x5e, 0x8d, 0x1b, 0xc9, 0xcc, 0xe9, 0xbc, 0x20, 0xcd, 0xd6, - 0x97, 0x22, 0x44, 0x44, 0xe7, 0xad, 0x4d, 0x85, 0xe4, 0x7a, 0x5d, 0x1a, 0x82, 0xe8, 0x4f, 0x5e, - 0x71, 0x38, 0xca, 0x80, 0x28, 0x3f, 0x1c, 0xfd, 0x7c, 0x75, 0x7a, 0xb9, 0xe9, 0x68, 0xf4, 0xe2, - 0xf8, 0xea, 0xea, 0xcb, 0xa7, 0xcb, 0x77, 0x9b, 0x8e, 0x46, 0xaf, 0x3e, 0x9f, 0x7c, 0x3c, 0x07, - 0x03, 0x48, 0x9d, 0xb1, 0x63, 0x58, 0x5c, 0x58, 0x54, 0x64, 0xea, 0x45, 0x2f, 0x9b, 0x7a, 0xd1, - 0x9a, 0xa9, 0x57, 0x81, 0x32, 0x61, 0xc2, 0x31, 0x83, 0x2e, 0x2a, 0x35, 0xe8, 0xa2, 0xef, 0x33, - 0xe8, 0xb2, 0x6e, 0xba, 0xf5, 0x8b, 0x86, 0x46, 0x5d, 0x24, 0x1b, 0x75, 0x01, 0x33, 0xea, 0x22, - 0x61, 0xd4, 0xbd, 0x3e, 0x6b, 0x04, 0x49, 0x71, 0x58, 0xbe, 0xcb, 0x11, 0x1d, 0x80, 0xd5, 0x3a, - 0x02, 0x36, 0x1d, 0x6e, 0x47, 0x8a, 0xeb, 0xce, 0x0d, 0x99, 0x95, 0x0f, 0x3f, 0xc5, 0x54, 0x8e, - 0xc9, 0xd9, 0x17, 0x18, 0x7f, 0xb6, 0xdd, 0xf8, 0x65, 0xc9, 0x13, 0xc0, 0x83, 0x03, 0x99, 0xbd, - 0xc6, 0x2f, 0x4c, 0xea, 0x9e, 0x09, 0x7b, 0x66, 0x2c, 0x0d, 0xf2, 0x37, 0x0d, 0x91, 0x39, 0xde, - 0x12, 0x12, 0x79, 0xba, 0x41, 0x51, 0x1f, 0x46, 0x40, 0xf9, 0x4e, 0x60, 0x31, 0x0c, 0xc4, 0xb7, - 0x36, 0xd8, 0xbd, 0x9b, 0x35, 0xff, 0xec, 0x4c, 0x18, 0x78, 0x0a, 0xcf, 0x2f, 0x55, 0x7a, 0x6a, - 0x76, 0xab, 0x2e, 0x77, 0x04, 0xc4, 0xd2, 0x78, 0x44, 0x7a, 0x71, 0x3a, 0x24, 0xcb, 0x05, 0xab, - 0xac, 0x59, 0x33, 0x03, 0x1e, 0x41, 0xc9, 0xac, 0x95, 0x75, 0x03, 0x85, 0xb3, 0xeb, 0x59, 0x18, - 0x8d, 0xf1, 0xab, 0xc2, 0x9d, 0xcf, 0x76, 0x13, 0xb6, 0xa3, 0x38, 0x95, 0x29, 0x8f, 0xff, 0xd2, - 0xd4, 0xd7, 0xac, 0xd9, 0x36, 0x4d, 0x38, 0xf0, 0x26, 0x29, 0xdd, 0x5b, 0x9e, 0xf1, 0xe3, 0x05, - 0x43, 0xc5, 0x30, 0x0c, 0xf3, 0x07, 0x0c, 0x3f, 0xad, 0xa6, 0x3d, 0x88, 0x84, 0xb7, 0xe3, 0x8e, - 0x67, 0x40, 0x79, 0xfc, 0xc5, 0x4b, 0x46, 0xec, 0x50, 0x0d, 0xaf, 0x45, 0xd7, 0x6c, 0x76, 0xbc, - 0x96, 0x86, 0x81, 0x12, 0xdb, 0xec, 0x24, 0x47, 0x29, 0x1e, 0x3a, 0x49, 0xad, 0xc6, 0x31, 0x15, - 0xb1, 0x4f, 0x0a, 0x82, 0xb3, 0xe2, 0x01, 0xcf, 0xf1, 0x78, 0xe9, 0x95, 0xda, 0xc9, 0xa6, 0x0a, - 0x91, 0xcb, 0x30, 0x50, 0x2c, 0xcd, 0x3e, 0x9e, 0x71, 0xb3, 0x98, 0x44, 0x24, 0xed, 0xa4, 0x2f, - 0xbe, 0x15, 0xc8, 0x16, 0xf2, 0x4d, 0x30, 0xed, 0xc5, 0xa7, 0x2b, 0x94, 0x44, 0x3b, 0x7c, 0xa1, - 0x60, 0x74, 0x33, 0xfe, 0xfd, 0x66, 0x70, 0xa2, 0x2c, 0xa0, 0x22, 0x90, 0x04, 0x43, 0x60, 0xc1, - 0x78, 0xc5, 0x6c, 0x60, 0x39, 0x89, 0x7c, 0x05, 0xf8, 0xef, 0x93, 0x4c, 0xc5, 0x27, 0x72, 0xf8, - 0xfa, 0x90, 0x46, 0xc0, 0x97, 0x70, 0x77, 0x28, 0x3f, 0x05, 0xfe, 0x4b, 0xc3, 0x34, 0x3b, 0xab, - 0xf8, 0x4e, 0xb6, 0xc4, 0x37, 0x3f, 0x4b, 0x3e, 0xf3, 0x9e, 0xa8, 0xab, 0x99, 0x60, 0x3d, 0xfe, - 0xa0, 0xf2, 0x6c, 0xa6, 0x1c, 0x39, 0x86, 0xe1, 0x24, 0x46, 0x6e, 0x27, 0x95, 0x06, 0xae, 0x86, - 0x3b, 0x95, 0x80, 0x22, 0x59, 0x7c, 0xce, 0x5e, 0x47, 0x2e, 0x32, 0xd5, 0x2d, 0x09, 0x9c, 0x30, - 0xef, 0xda, 0xfe, 0x96, 0xb9, 0xd7, 0x65, 0x04, 0xb9, 0x4d, 0x12, 0x60, 0xf2, 0x6f, 0x4f, 0x0e, - 0x7c, 0xa9, 0xe3, 0x0b, 0x81, 0x0a, 0x72, 0x61, 0xb7, 0xcd, 0x2c, 0xc7, 0xf2, 0x12, 0x08, 0xc9, - 0x89, 0x12, 0x4c, 0x17, 0x35, 0x8c, 0x34, 0x8b, 0xf8, 0xd1, 0xf1, 0x12, 0xa5, 0x6d, 0xa2, 0x28, - 0x8b, 0x69, 0x72, 0x0e, 0xde, 0x5e, 0x04, 0xb8, 0xca, 0xdd, 0x0e, 0xbb, 0xa8, 0xd7, 0xb7, 0x18, - 0x43, 0xad, 0x5d, 0xd4, 0x54, 0x1c, 0x06, 0xf0, 0x7b, 0x51, 0xad, 0x66, 0x7a, 0x3a, 0xa2, 0xb8, - 0x97, 0x28, 0xe6, 0x48, 0x83, 0xb6, 0xd2, 0xb8, 0xc5, 0xd3, 0xd8, 0x47, 0xcd, 0x2e, 0x2b, 0xbb, - 0x1f, 0x85, 0x56, 0x53, 0x49, 0xba, 0x3b, 0xa0, 0xac, 0xbe, 0x71, 0xcd, 0x14, 0x60, 0x42, 0xd5, - 0x02, 0x25, 0xe5, 0x64, 0x4b, 0x49, 0x99, 0x23, 0x2f, 0xce, 0x1d, 0x48, 0x28, 0x9c, 0x10, 0x72, - 0x9f, 0x3d, 0xe5, 0x52, 0x6e, 0xf2, 0xa2, 0x94, 0x4b, 0x56, 0xa5, 0x5c, 0x03, 0x44, 0x7d, 0x31, - 0xda, 0x1f, 0x4a, 0xca, 0x87, 0x25, 0xe5, 0x1f, 0xcb, 0x49, 0xfb, 0x76, 0x53, 0x55, 0x2a, 0xf9, - 0x3e, 0x6e, 0x94, 0x76, 0x49, 0xb1, 0xb4, 0x0b, 0x40, 0xda, 0x05, 0x6b, 0xd2, 0x2e, 0x58, 0x91, - 0x76, 0x11, 0x48, 0xbb, 0x68, 0x29, 0xed, 0xa2, 0x54, 0xda, 0x85, 0x36, 0x5e, 0x61, 0xc3, 0x9b, - 0x95, 0xb5, 0x70, 0x29, 0xed, 0xb2, 0xa9, 0x3c, 0x60, 0x1a, 0x2e, 0xed, 0x92, 0x75, 0x69, 0x17, - 0x92, 0xb4, 0xd3, 0x96, 0xd2, 0x4e, 0xf4, 0xfb, 0x4f, 0x89, 0xba, 0xdb, 0x4c, 0xc4, 0x7d, 0xfc, - 0xf7, 0x8b, 0xb5, 0x71, 0xf9, 0x06, 0x3f, 0x94, 0x57, 0x0d, 0xb7, 0xa3, 0x98, 0x32, 0x22, 0xcb, - 0xa9, 0xe4, 0x52, 0xe1, 0xf8, 0x0f, 0xed, 0x5b, 0x3e, 0xe8, 0xf8, 0x5d, 0xbc, 0x9b, 0x30, 0xde, - 0xdd, 0xe4, 0xb2, 0x8c, 0xc3, 0xc0, 0x4b, 0xc2, 0xe8, 0x96, 0xb2, 0x2b, 0x32, 0xb7, 0xce, 0x34, - 0x09, 0xf9, 0x5d, 0xb5, 0xdf, 0xed, 0x6d, 0x6d, 0x1a, 0x99, 0xdd, 0x86, 0xa1, 0x6e, 0x4f, 0x63, - 0x97, 0x0f, 0x7f, 0x06, 0xdb, 0xd8, 0xfa, 0x80, 0x1f, 0x59, 0x04, 0x48, 0x57, 0x7d, 0x5d, 0xee, - 0xe1, 0x92, 0x78, 0x3b, 0x68, 0xce, 0xed, 0xca, 0x39, 0x39, 0xef, 0x69, 0xfe, 0xea, 0x28, 0xdc, - 0x5f, 0x26, 0xbe, 0xb8, 0x89, 0x07, 0xc2, 0x36, 0xc4, 0x7f, 0x82, 0x01, 0x67, 0xf6, 0x0b, 0x67, - 0x64, 0x58, 0xdb, 0x6e, 0xd2, 0x7b, 0xbb, 0x72, 0x4f, 0xee, 0x7b, 0xda, 0xb4, 0x64, 0xd2, 0x69, - 0xc1, 0xa4, 0xd3, 0xd2, 0x49, 0x8b, 0x6b, 0xc8, 0xc3, 0x86, 0xd0, 0x16, 0xfb, 0x80, 0x3b, 0x86, - 0xfb, 0x91, 0x6e, 0x97, 0x5c, 0xf3, 0x77, 0x66, 0x13, 0x3f, 0xbc, 0x26, 0x7c, 0x06, 0x7c, 0x3c, - 0x9e, 0x24, 0x1a, 0x9e, 0xd9, 0xf3, 0xf3, 0x05, 0x85, 0x27, 0xaf, 0xa2, 0x79, 0xca, 0xbf, 0x93, - 0xc9, 0xbe, 0xb8, 0x9c, 0x8b, 0x97, 0xe1, 0x17, 0xd6, 0xff, 0x2c, 0x43, 0x41, 0xb2, 0xf0, 0x16, - 0xae, 0xe7, 0x97, 0x4d, 0xbe, 0xcd, 0xd9, 0x97, 0xd7, 0x5c, 0x31, 0x93, 0x4f, 0xb1, 0x98, 0x77, - 0x8a, 0x77, 0x58, 0x86, 0x20, 0x41, 0xa7, 0x77, 0x78, 0x3f, 0x69, 0xc7, 0x9f, 0xf6, 0xeb, 0xfc, - 0x75, 0xe7, 0xf4, 0xea, 0xa2, 0xf5, 0x6e, 0x27, 0x89, 0x28, 0xdd, 0x69, 0x19, 0xa6, 0x9a, 0x3b, - 0xf2, 0x2a, 0x07, 0xe7, 0xb3, 0xf7, 0xef, 0x04, 0xa7, 0xfe, 0xe5, 0xf4, 0xe4, 0xf3, 0xf9, 0xab, - 0x81, 0x1a, 0xf9, 0x93, 0x7f, 0x2b, 0x92, 0x1e, 0xbd, 0x7b, 0x2f, 0x0f, 0x0b, 0x68, 0x7b, 0x14, - 0x1b, 0x9a, 0x7e, 0xb4, 0xc3, 0x3f, 0x31, 0xd7, 0x3d, 0x62, 0x34, 0xc9, 0xfe, 0x09, 0x1b, 0x9e, - 0x8c, 0xbe, 0xd3, 0x07, 0x61, 0xdf, 0xfd, 0xcb, 0x7c, 0x10, 0x06, 0x49, 0x7d, 0xe0, 0x8c, 0x3d, - 0x7f, 0x66, 0xc5, 0xe0, 0x03, 0xd7, 0x63, 0x1a, 0x79, 0x83, 0x0e, 0xfb, 0x87, 0xec, 0x2c, 0xf1, - 0x2f, 0xcf, 0x75, 0xee, 0x9c, 0xfe, 0xfd, 0x90, 0x9d, 0xce, 0xd7, 0x45, 0x05, 0xa5, 0x03, 0x73, - 0xd0, 0xea, 0xe0, 0x3f, 0x5f, 0x77, 0xef, 0x25, 0x75, 0xfc, 0x67, 0x03, 0xa0, 0xa7, 0x0f, 0x34, - 0x67, 0x21, 0xb9, 0x77, 0xea, 0xe3, 0xf0, 0xb7, 0xa2, 0xd2, 0x78, 0xbd, 0x70, 0xb5, 0x60, 0x71, - 0x17, 0xba, 0xb3, 0xf9, 0xd8, 0x0b, 0x78, 0x06, 0x81, 0xd5, 0xda, 0x33, 0x27, 0x4f, 0x8b, 0x51, - 0x34, 0x07, 0xb7, 0xcb, 0xc5, 0x3c, 0x80, 0x70, 0x62, 0x35, 0x26, 0x4f, 0x0a, 0xa8, 0x0a, 0xcf, - 0x55, 0x04, 0x88, 0x0b, 0xbc, 0x7b, 0x9b, 0x00, 0x93, 0x9e, 0x38, 0xd1, 0x5c, 0x70, 0x9e, 0x35, - 0xf0, 0xe9, 0x53, 0x07, 0x7f, 0xea, 0x8f, 0x91, 0x33, 0xb1, 0xf0, 0xa7, 0x33, 0x81, 0x3d, 0x00, - 0x35, 0x64, 0x35, 0x60, 0xd0, 0xf4, 0xa5, 0xee, 0xd3, 0x41, 0x62, 0x35, 0x76, 0xa1, 0x64, 0x7d, - 0xa5, 0x83, 0xc1, 0xa0, 0x33, 0x76, 0xa2, 0x21, 0xc0, 0x73, 0x17, 0x26, 0x49, 0x38, 0xb6, 0xf6, - 0x00, 0x1c, 0xbc, 0x8b, 0x3a, 0x4f, 0x91, 0xb4, 0xbb, 0xbb, 0xf0, 0x9d, 0x3b, 0xea, 0x67, 0x13, - 0x33, 0xb9, 0xd1, 0xe1, 0xe0, 0xa3, 0xdc, 0xcc, 0x66, 0x6d, 0x01, 0xdc, 0x8d, 0x26, 0xcc, 0xf3, - 0x12, 0x7e, 0x71, 0xd6, 0xfe, 0x34, 0x8a, 0xe1, 0x99, 0x25, 0x39, 0xd0, 0x68, 0x31, 0x89, 0xe8, - 0x3c, 0x07, 0xf0, 0xae, 0xb4, 0x02, 0xfe, 0x85, 0xa5, 0x5d, 0x84, 0x6c, 0x1c, 0xba, 0x8e, 0x3f, - 0x9f, 0x84, 0xb1, 0xc7, 0x0e, 0xf9, 0x07, 0xa8, 0x66, 0x3b, 0xbf, 0xd5, 0x59, 0xd6, 0x0c, 0x2c, - 0xdb, 0x44, 0x7f, 0x44, 0xf4, 0x62, 0xa8, 0x34, 0x11, 0x13, 0x6c, 0x40, 0xf0, 0xcd, 0xa0, 0xc0, - 0x14, 0x80, 0x43, 0xc5, 0x0f, 0x1d, 0x9e, 0x04, 0xc2, 0x9f, 0x41, 0x51, 0x46, 0x03, 0x3f, 0x7c, - 0xe4, 0x4b, 0x5a, 0x87, 0x19, 0x47, 0x5e, 0x2b, 0x8d, 0x86, 0x77, 0x8e, 0x66, 0x12, 0xfc, 0xcf, - 0x68, 0xeb, 0x02, 0xba, 0xba, 0x38, 0xa2, 0x91, 0xb6, 0x94, 0x2d, 0xa9, 0x1e, 0x81, 0x8d, 0x30, - 0x8d, 0xf9, 0xe6, 0x48, 0x75, 0x6c, 0x75, 0x45, 0x95, 0x7c, 0x47, 0x4a, 0xfb, 0x8a, 0xea, 0x82, - 0xee, 0x6b, 0xc0, 0xa7, 0x3b, 0xc1, 0x3a, 0xae, 0xd3, 0x57, 0x27, 0xc3, 0x27, 0xd8, 0xe4, 0xec, - 0xc3, 0xb1, 0x82, 0x28, 0xf2, 0xfb, 0x6b, 0x42, 0xe9, 0x93, 0xa0, 0xdb, 0xf6, 0xae, 0x99, 0x6d, - 0x47, 0x7d, 0xc4, 0x0e, 0x98, 0xe6, 0x19, 0xf5, 0xed, 0x21, 0x21, 0xec, 0x2d, 0x09, 0x01, 0xf7, - 0xfb, 0x05, 0xa0, 0x7e, 0x2f, 0x96, 0x0a, 0x16, 0x25, 0x76, 0xb7, 0x69, 0xec, 0x82, 0x1d, 0xd4, - 0xc1, 0xbc, 0x93, 0x7a, 0xbe, 0x88, 0x49, 0x07, 0xb4, 0x45, 0xad, 0x06, 0x2b, 0x48, 0x97, 0xc3, - 0x58, 0x54, 0x66, 0x25, 0xbe, 0x98, 0x42, 0x3a, 0x4e, 0xfb, 0x0c, 0xd8, 0x79, 0x5c, 0x01, 0x0a, - 0x96, 0x53, 0xc2, 0x8c, 0xc5, 0xac, 0xb0, 0x89, 0xf5, 0x7f, 0x2f, 0x2d, 0xac, 0x4b, 0x0b, 0x7e, - 0x38, 0xcf, 0x36, 0x3b, 0x7c, 0xac, 0x47, 0x14, 0xaf, 0x96, 0xd3, 0x85, 0x87, 0xe1, 0xbb, 0x72, - 0x16, 0x4f, 0x39, 0x85, 0x23, 0x2e, 0x5d, 0xe5, 0x5e, 0xca, 0xf0, 0x32, 0x72, 0x1b, 0x46, 0xbb, - 0x79, 0xb0, 0xbb, 0xdf, 0x68, 0xb7, 0x52, 0xe0, 0x04, 0x3c, 0xed, 0x2d, 0x25, 0x43, 0x38, 0x4d, - 0x70, 0x3c, 0xcb, 0x14, 0x40, 0x95, 0x51, 0xed, 0x82, 0xc7, 0xb2, 0x5f, 0x04, 0xba, 0x69, 0xb4, - 0x5f, 0x03, 0x34, 0x7e, 0x4f, 0xca, 0xeb, 0xc3, 0x96, 0x3a, 0xbe, 0x37, 0x0c, 0xac, 0xb1, 0xe7, - 0xba, 0x3e, 0x5d, 0x11, 0x57, 0x05, 0x9c, 0x84, 0xf2, 0x81, 0x5d, 0x67, 0xa8, 0xf3, 0x6c, 0xf7, - 0x20, 0x64, 0x12, 0xb9, 0x14, 0x05, 0x9b, 0x78, 0x62, 0x61, 0x59, 0x4c, 0xc5, 0xa4, 0x7e, 0x0b, - 0xfe, 0xc3, 0xa9, 0xf3, 0x4d, 0x8d, 0x85, 0xa2, 0xca, 0xda, 0x33, 0xbb, 0xfd, 0x55, 0x3d, 0x8a, - 0x67, 0x18, 0x34, 0xf0, 0xbf, 0x05, 0x7e, 0xd1, 0x06, 0x24, 0x5d, 0x44, 0xd2, 0xe6, 0x73, 0xa1, - 0x33, 0xb8, 0x88, 0x5d, 0x52, 0x79, 0x23, 0x2a, 0x26, 0x72, 0x36, 0x4c, 0xa9, 0xf8, 0x59, 0x18, - 0x5c, 0xc1, 0xfc, 0x91, 0xfb, 0x95, 0x12, 0x85, 0x17, 0xb0, 0x6e, 0x6b, 0xb4, 0xb1, 0x15, 0x21, - 0x0a, 0x95, 0xc0, 0x15, 0xac, 0x13, 0xcc, 0x1e, 0x47, 0x34, 0xa2, 0xb2, 0x32, 0xee, 0x0a, 0x12, - 0x14, 0xe8, 0xe0, 0x7a, 0x0a, 0x55, 0xed, 0x82, 0xdd, 0x38, 0x98, 0x17, 0x8b, 0x0c, 0xde, 0xc9, - 0xe2, 0x77, 0x61, 0x0b, 0xda, 0x98, 0x77, 0xe6, 0xc1, 0xe1, 0xe1, 0x62, 0xea, 0x6f, 0xd4, 0xf5, - 0x18, 0x0d, 0xe7, 0xff, 0x9a, 0x6e, 0x9d, 0x7d, 0x60, 0x98, 0x99, 0x1b, 0x42, 0x6c, 0xb7, 0x96, - 0xca, 0x13, 0x9f, 0x99, 0x76, 0x15, 0x55, 0x5c, 0x9e, 0xe1, 0x9e, 0xa1, 0x11, 0x22, 0xd0, 0xd9, - 0xda, 0x65, 0x05, 0x20, 0xdd, 0x73, 0x05, 0xa5, 0xfa, 0x22, 0xc3, 0xcc, 0x8c, 0x63, 0xb3, 0x04, - 0x53, 0xbe, 0x97, 0x09, 0xc4, 0x43, 0x9c, 0xb5, 0xcd, 0x26, 0x61, 0x60, 0x98, 0x0a, 0xa7, 0x95, - 0xe5, 0x0c, 0xe0, 0x74, 0x82, 0x07, 0x0c, 0xf2, 0x94, 0x06, 0x53, 0xc6, 0x42, 0xd1, 0x9c, 0xad, - 0x18, 0x70, 0xf3, 0x68, 0x35, 0x3a, 0x82, 0xf3, 0xea, 0x14, 0x4d, 0xcc, 0x98, 0xdb, 0x52, 0xc6, - 0x04, 0xf3, 0x45, 0xd6, 0x57, 0x96, 0x67, 0xba, 0x06, 0xd3, 0x54, 0xf2, 0x1d, 0xc5, 0x79, 0x9e, - 0x1d, 0x8c, 0xe5, 0xa5, 0x47, 0x51, 0x13, 0x51, 0x57, 0x2e, 0xad, 0xb3, 0xb3, 0xa4, 0x79, 0x89, - 0x21, 0x93, 0xf6, 0xe8, 0xb0, 0x0e, 0x9c, 0x0a, 0xfb, 0x94, 0x59, 0x35, 0x46, 0x7a, 0x87, 0x77, - 0x5e, 0x0e, 0x7e, 0xaa, 0x3d, 0xbf, 0x5f, 0x0f, 0x96, 0x69, 0x56, 0x09, 0xc8, 0x94, 0xb5, 0xd6, - 0x34, 0xa1, 0xcc, 0x69, 0x4d, 0xc4, 0x1f, 0xda, 0x5d, 0x2b, 0xb6, 0x99, 0x11, 0x84, 0xbf, 0x1f, - 0xc8, 0x8d, 0xe6, 0x2d, 0x4c, 0x20, 0x14, 0xe8, 0xef, 0x35, 0x7d, 0x36, 0xdb, 0x04, 0x29, 0xca, - 0xff, 0xc8, 0xc9, 0x8a, 0x74, 0x76, 0xb1, 0x9d, 0xbd, 0xe4, 0xb7, 0x2d, 0xf7, 0x21, 0xe3, 0x15, - 0x33, 0x93, 0x67, 0xe8, 0x64, 0x20, 0x5b, 0xdc, 0x85, 0x2b, 0xba, 0x3d, 0xad, 0x90, 0x24, 0x44, - 0xfe, 0x35, 0xbf, 0x76, 0xbc, 0x93, 0x55, 0x42, 0xd1, 0x69, 0xc3, 0xcc, 0x53, 0x11, 0x30, 0xee, - 0x9a, 0xa5, 0x2e, 0x44, 0xca, 0x70, 0x5c, 0xfe, 0x95, 0xd9, 0x30, 0xdc, 0x11, 0x29, 0xdc, 0xfd, - 0x55, 0x0b, 0x32, 0x65, 0xe5, 0x85, 0x81, 0xb1, 0xa8, 0x4c, 0x0e, 0x72, 0xb6, 0x49, 0x73, 0xc1, - 0x89, 0x91, 0xe6, 0xa8, 0xf3, 0x27, 0x34, 0xe5, 0xf8, 0x13, 0x0a, 0xc4, 0x6c, 0x30, 0xc0, 0xa4, - 0xb2, 0xbb, 0x26, 0x15, 0xb2, 0xd2, 0x62, 0x14, 0xc8, 0x89, 0xeb, 0x25, 0x8c, 0x9f, 0x43, 0xff, - 0xb7, 0x69, 0x9c, 0x78, 0x83, 0x59, 0x6a, 0xfb, 0x5b, 0x4c, 0x82, 0xd5, 0xef, 0x68, 0xf2, 0x48, - 0x69, 0x80, 0x9c, 0x38, 0x1d, 0x07, 0xf5, 0xa1, 0x33, 0x11, 0xd2, 0x48, 0xce, 0xcc, 0xff, 0x37, - 0x0e, 0x3f, 0x7f, 0xc5, 0x20, 0xdb, 0xa9, 0x57, 0x2e, 0xd8, 0x5e, 0x30, 0x59, 0x0b, 0xd7, 0x93, - 0x6e, 0xc7, 0x01, 0x00, 0x18, 0x3f, 0x0c, 0xe7, 0x1b, 0x10, 0x8f, 0x9b, 0x6b, 0x8d, 0x50, 0xa9, - 0xcc, 0x57, 0xed, 0xae, 0x17, 0x64, 0x5d, 0x4a, 0x52, 0x29, 0x61, 0xf0, 0x51, 0x88, 0xef, 0x09, - 0x6d, 0x8b, 0x4f, 0xdf, 0x35, 0x30, 0xae, 0xa0, 0x40, 0xbe, 0x67, 0xf3, 0xbc, 0xa4, 0xcc, 0x57, - 0xd6, 0xd5, 0x45, 0x0c, 0x7c, 0xe7, 0xda, 0xc6, 0xf5, 0x46, 0x6a, 0x70, 0x70, 0x8e, 0x42, 0xd9, - 0x91, 0xb7, 0x40, 0xd0, 0x99, 0xe1, 0x56, 0x46, 0xb7, 0x18, 0xd5, 0x62, 0x64, 0xb6, 0x22, 0x97, - 0xf6, 0xc3, 0x88, 0x1d, 0xc9, 0xac, 0xab, 0x35, 0x7c, 0xac, 0x78, 0x63, 0xfc, 0x1c, 0x8d, 0x13, - 0x24, 0xd2, 0x2a, 0x04, 0x3a, 0x57, 0x0b, 0x70, 0x3a, 0x92, 0xb3, 0x6f, 0x4a, 0x00, 0x10, 0x68, - 0xf9, 0xd3, 0xc7, 0xab, 0x1f, 0xe7, 0xeb, 0x78, 0xfd, 0x53, 0x69, 0x78, 0x76, 0x2e, 0xc9, 0xc4, - 0x15, 0x35, 0xf5, 0x7f, 0xc6, 0xd4, 0xf5, 0x1c, 0x05, 0xda, 0x51, 0xfc, 0xfe, 0x4d, 0xe0, 0x2a, - 0xda, 0xd2, 0x5f, 0xdd, 0xc3, 0x40, 0x80, 0x3e, 0x97, 0xad, 0x8b, 0x9c, 0x50, 0x59, 0x1c, 0xed, - 0x30, 0x5b, 0xaa, 0x7b, 0xb4, 0x83, 0xb2, 0xa8, 0x7b, 0x84, 0xd2, 0x8f, 0xdd, 0x40, 0xe9, 0x1e, - 0x4d, 0x7d, 0xbc, 0xdd, 0x80, 0xf7, 0x4e, 0xd2, 0x88, 0x60, 0x37, 0x3d, 0x4d, 0xc7, 0xfb, 0x0c, - 0x59, 0xa5, 0x88, 0xcf, 0x75, 0xd9, 0x59, 0xd9, 0x00, 0xe6, 0xc8, 0xd5, 0xa6, 0x81, 0xb2, 0xee, - 0x7b, 0xea, 0x4f, 0x72, 0x35, 0xe9, 0x59, 0x9d, 0xc8, 0xae, 0xe3, 0xe1, 0xf7, 0x2e, 0x0b, 0x7f, - 0x65, 0xed, 0x44, 0xd5, 0x12, 0x7c, 0xb5, 0x9b, 0x1b, 0x63, 0x99, 0x1f, 0x95, 0x1f, 0xe5, 0x03, - 0x96, 0xe7, 0x5a, 0xa6, 0x47, 0x8a, 0x4a, 0x6a, 0x9b, 0xd8, 0xcb, 0x2f, 0x8d, 0x88, 0x31, 0x77, - 0x70, 0xc5, 0xfc, 0x5a, 0xc6, 0x28, 0xea, 0x1e, 0xf1, 0x4d, 0xe1, 0xd7, 0x71, 0x70, 0x04, 0x29, - 0xdb, 0x52, 0xbe, 0xf2, 0x23, 0xaa, 0xb2, 0xb2, 0x9d, 0xd5, 0x7e, 0xb9, 0x24, 0xdf, 0x14, 0x4c, - 0xa6, 0x6b, 0x14, 0x0e, 0xec, 0x6a, 0x4b, 0x91, 0xb8, 0x9a, 0x6b, 0x2a, 0x54, 0x85, 0xda, 0xbd, - 0xa6, 0xd1, 0x18, 0x93, 0xbd, 0x57, 0x20, 0x90, 0xd3, 0x74, 0xf3, 0x1d, 0x71, 0x47, 0x95, 0xcc, - 0xd2, 0x50, 0xe5, 0xeb, 0x45, 0xea, 0xd2, 0xa4, 0x87, 0x72, 0xe6, 0x76, 0xa6, 0x35, 0x83, 0x30, - 0x1a, 0xbf, 0xe5, 0xb5, 0x2a, 0x28, 0x4d, 0xea, 0xfb, 0xec, 0x78, 0x00, 0x2a, 0x1c, 0x3f, 0xa6, - 0xaa, 0x82, 0xa4, 0x29, 0xd2, 0xd0, 0x6d, 0x35, 0x1c, 0x0c, 0xd2, 0x92, 0xf1, 0x04, 0xf3, 0x4c, - 0x45, 0x51, 0x7a, 0x8e, 0xc2, 0x21, 0x94, 0xb3, 0xf9, 0xba, 0xca, 0x11, 0x67, 0x97, 0x74, 0xbe, - 0xbb, 0x24, 0x10, 0xcd, 0x78, 0x5a, 0x5e, 0xf7, 0x8a, 0x06, 0xee, 0xd1, 0x8e, 0xe0, 0xe6, 0x17, - 0x60, 0xe6, 0x11, 0x50, 0x06, 0x20, 0x18, 0x08, 0x7c, 0x9c, 0xf2, 0x93, 0x0e, 0x45, 0x1c, 0x74, - 0x88, 0x1e, 0xb8, 0x9d, 0xca, 0x11, 0x73, 0xc5, 0x14, 0x58, 0xf5, 0xa6, 0x9e, 0xdd, 0xe3, 0xec, - 0x19, 0x28, 0x06, 0x7b, 0xe4, 0x2f, 0xf3, 0x4c, 0x30, 0x3b, 0x7f, 0xb9, 0x19, 0x69, 0xae, 0x30, - 0x5e, 0x2c, 0x8a, 0x68, 0x77, 0xed, 0xb2, 0x18, 0x36, 0x95, 0xf2, 0xba, 0x37, 0x92, 0xc6, 0x5a, - 0x76, 0x75, 0x31, 0x75, 0x2c, 0x3f, 0xbe, 0x56, 0x3a, 0xcf, 0x1f, 0x46, 0x22, 0x0c, 0x42, 0x81, - 0x7b, 0x96, 0x35, 0x9c, 0xdf, 0x6f, 0x7e, 0x46, 0xa9, 0x8c, 0xa7, 0x7e, 0xe2, 0x01, 0x51, 0x00, - 0x5e, 0xc5, 0xd3, 0x86, 0xcd, 0x4f, 0xd3, 0xa3, 0xba, 0x97, 0xfc, 0x21, 0x23, 0x80, 0x72, 0x72, - 0xc9, 0x0e, 0x38, 0x14, 0xfe, 0x61, 0x23, 0xf5, 0x2d, 0x2b, 0x59, 0x5e, 0xc6, 0x50, 0xbb, 0xb5, - 0x97, 0x87, 0x91, 0x73, 0x98, 0xd2, 0x81, 0xa6, 0xe2, 0xbb, 0x38, 0xac, 0x50, 0x1a, 0x44, 0xc6, - 0x0e, 0x27, 0x1b, 0x8e, 0x09, 0x1c, 0x47, 0xce, 0xb4, 0xee, 0x9a, 0x3f, 0x64, 0x74, 0xc1, 0xe3, - 0x07, 0x19, 0xd6, 0x79, 0x5c, 0x61, 0xbd, 0x9f, 0xca, 0x6e, 0xf8, 0xab, 0x0d, 0xd3, 0xcc, 0x90, - 0xb9, 0x6b, 0x72, 0xfa, 0xe1, 0x23, 0x14, 0x91, 0x8f, 0xb0, 0x6b, 0xf2, 0x7b, 0xaa, 0x16, 0xb6, - 0xb9, 0x2b, 0xdf, 0xfb, 0x94, 0x82, 0xd6, 0x56, 0x27, 0x00, 0xc4, 0x93, 0xf2, 0xee, 0x4e, 0xc1, - 0xf4, 0xec, 0x82, 0x58, 0x39, 0x71, 0xe7, 0x13, 0xf7, 0xf3, 0x73, 0x67, 0xf4, 0xb6, 0x76, 0x23, - 0x6e, 0x6d, 0x20, 0x71, 0xab, 0xe1, 0x05, 0x1e, 0xc9, 0x25, 0xfe, 0x97, 0x71, 0x88, 0x48, 0x08, - 0xe3, 0x59, 0x2e, 0x25, 0x13, 0xfd, 0x27, 0x98, 0xc4, 0xe9, 0xf7, 0xe9, 0x04, 0xa4, 0x27, 0x7e, - 0xba, 0x6d, 0xc9, 0x32, 0x83, 0x47, 0xf5, 0x05, 0x32, 0xc5, 0xfc, 0x3e, 0x10, 0x8f, 0x78, 0xb6, - 0xa2, 0x20, 0xc5, 0x6e, 0x4b, 0x98, 0xcb, 0xb4, 0x9e, 0xd7, 0x92, 0x26, 0xef, 0xb9, 0x35, 0x71, - 0xca, 0xbf, 0x77, 0x92, 0x22, 0x5c, 0x66, 0x29, 0x67, 0x7a, 0x1d, 0x83, 0xc8, 0xf2, 0x36, 0xca, - 0xe5, 0xa9, 0xc1, 0x5e, 0x54, 0x95, 0xee, 0xe6, 0xb9, 0x0b, 0x0d, 0xbc, 0x81, 0xf8, 0x82, 0xd6, - 0xda, 0xfd, 0x59, 0x75, 0x19, 0xd9, 0xde, 0xb0, 0x61, 0x6b, 0x14, 0xdf, 0xfd, 0x1c, 0x83, 0x83, - 0x2b, 0x46, 0xe3, 0xdb, 0x99, 0xc1, 0xcf, 0x13, 0x3e, 0xbf, 0x57, 0x25, 0xca, 0xf6, 0xc5, 0xf6, - 0xe0, 0x5c, 0x88, 0x64, 0xd3, 0x3c, 0x48, 0x9c, 0xa8, 0xd2, 0x44, 0xd4, 0x94, 0x4d, 0xe5, 0xb4, - 0xd4, 0xdf, 0x0b, 0x65, 0x9e, 0x37, 0xb2, 0x8c, 0x75, 0x99, 0xb6, 0x95, 0xd5, 0x70, 0x11, 0xda, - 0x81, 0x40, 0x1d, 0xe0, 0x17, 0xe1, 0x19, 0xa0, 0x12, 0x46, 0x4a, 0x0a, 0x53, 0xd9, 0xee, 0x64, - 0x0c, 0x25, 0x88, 0x9e, 0xaf, 0x4b, 0x64, 0x6c, 0x4b, 0x2c, 0xa0, 0x80, 0x07, 0xc0, 0x57, 0xb9, - 0x96, 0x84, 0xde, 0x7d, 0x97, 0x95, 0xac, 0xcb, 0xfa, 0x97, 0xc7, 0x93, 0x53, 0xc4, 0x53, 0xd3, - 0x31, 0xe5, 0xa9, 0x02, 0xd1, 0xc4, 0x6d, 0xe4, 0x1d, 0xbc, 0xac, 0xde, 0xfd, 0x1f, 0x58, 0x9f, - 0xbf, 0x61, 0x1f, 0x8d, 0x00, 0x00 +#define tool_html_gz_size 11064 +const unsigned char tool_html_gz[11064] PROGMEM = { + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xed, 0x7d, 0x8b, 0x76, 0x9b, 0x48, + 0xb6, 0xe8, 0xaf, 0x20, 0x66, 0x5a, 0x81, 0x51, 0x09, 0xa3, 0x87, 0x5f, 0xc8, 0x48, 0xd7, 0x4e, + 0xec, 0x8e, 0x67, 0x92, 0x8e, 0xc7, 0x76, 0x3a, 0xd3, 0x27, 0x93, 0x93, 0x85, 0x45, 0x49, 0x22, + 0x46, 0xa0, 0x01, 0xe4, 0x47, 0x64, 0x7d, 0xd0, 0xfd, 0x8d, 0xfb, 0x65, 0x77, 0xef, 0xaa, 0x02, + 0x0a, 0x09, 0x64, 0x39, 0xdd, 0x33, 0x77, 0xad, 0xb3, 0xee, 0xea, 0x19, 0x19, 0xea, 0xb9, 0x6b, + 0xd7, 0x7e, 0xd7, 0x2e, 0x72, 0x54, 0x73, 0xc3, 0x61, 0xf2, 0x38, 0xa3, 0xca, 0x24, 0x99, 0xfa, + 0xfd, 0x23, 0xfc, 0x55, 0x7c, 0x27, 0x18, 0xdb, 0x2a, 0x0d, 0x54, 0x78, 0xa7, 0x8e, 0xdb, 0x3f, + 0x9a, 0xd2, 0xc4, 0x51, 0x86, 0x13, 0x27, 0x8a, 0x69, 0x62, 0xab, 0x1f, 0xaf, 0xcf, 0x9a, 0x07, + 0xaa, 0x28, 0x9d, 0x24, 0xc9, 0xac, 0x49, 0xff, 0x35, 0xf7, 0xee, 0x6c, 0xf5, 0x1f, 0xcd, 0x8f, + 0xc7, 0xcd, 0xd7, 0xe1, 0x74, 0xe6, 0x24, 0xde, 0x8d, 0x4f, 0x55, 0x65, 0x18, 0x06, 0x09, 0x0d, + 0xa0, 0xcb, 0xf9, 0xa9, 0x4d, 0xdd, 0x31, 0x4d, 0x3b, 0x05, 0xce, 0x94, 0xda, 0xea, 0x9d, 0x47, + 0xef, 0x67, 0x61, 0x94, 0x48, 0xed, 0xee, 0x3d, 0x37, 0x99, 0xd8, 0x2e, 0xbd, 0xf3, 0x86, 0xb4, + 0xc9, 0x5e, 0x88, 0x17, 0x78, 0x89, 0xe7, 0xf8, 0xcd, 0x78, 0xe8, 0xf8, 0xd4, 0x6e, 0x15, 0x87, + 0x48, 0x26, 0x74, 0x4a, 0x9b, 0xc3, 0xd0, 0x0f, 0x23, 0x69, 0x94, 0x3f, 0xed, 0xee, 0xef, 0xee, + 0xba, 0x87, 0xc5, 0xa6, 0xd3, 0xd8, 0x99, 0xcd, 0x7c, 0x6f, 0x08, 0xb0, 0x85, 0x41, 0x33, 0x70, + 0xee, 0x6e, 0xe6, 0x49, 0x02, 0x4f, 0x5b, 0x75, 0xc6, 0xae, 0xb4, 0x39, 0x0d, 0x6f, 0x3c, 0xf8, + 0x73, 0x4f, 0x6f, 0x9a, 0x50, 0xd0, 0x8c, 0x13, 0x27, 0x99, 0xc7, 0xcd, 0x1b, 0x27, 0x82, 0xc7, + 0xc7, 0xc2, 0x7a, 0xf3, 0x41, 0x12, 0x2f, 0xf1, 0x69, 0xff, 0x4d, 0x38, 0x9c, 0x4f, 0xa1, 0xe6, + 0x68, 0x87, 0xbf, 0x1f, 0xc5, 0xc3, 0xc8, 0x9b, 0x25, 0x8a, 0x4b, 0x47, 0x34, 0xb2, 0x55, 0xf6, + 0x47, 0xed, 0x6b, 0x9a, 0x6e, 0xf7, 0x17, 0x77, 0x4e, 0xa4, 0x50, 0x7b, 0x71, 0xb8, 0xb7, 0xd7, + 0xb6, 0x34, 0x4a, 0x12, 0x12, 0xa4, 0xa5, 0x91, 0x1d, 0x68, 0xfb, 0x07, 0xbb, 0x5d, 0x9d, 0x84, + 0xf0, 0xb4, 0xd7, 0x82, 0x07, 0x0f, 0x1f, 0x3a, 0x1d, 0x53, 0x27, 0x8e, 0x1d, 0x19, 0xd7, 0xb0, + 0x91, 0xa7, 0x51, 0x14, 0x46, 0x3d, 0x6a, 0xd0, 0x07, 0xc4, 0x6d, 0x6c, 0x8f, 0xe6, 0xc1, 0x10, + 0x97, 0xac, 0x51, 0x7d, 0xe1, 0x8d, 0xb4, 0x10, 0xfe, 0xea, 0x11, 0x4d, 0xe6, 0x51, 0xa0, 0xd0, + 0x5e, 0x32, 0x89, 0xc2, 0x7b, 0xc5, 0xd1, 0x3c, 0x28, 0x6d, 0xa8, 0x8a, 0x17, 0x2b, 0x41, 0x98, + 0x28, 0x8e, 0x92, 0x76, 0x52, 0xf5, 0xe5, 0x92, 0xec, 0x99, 0xfb, 0xfb, 0xdb, 0x40, 0x12, 0x19, + 0x57, 0x49, 0xe4, 0x05, 0xe3, 0x6d, 0x41, 0x51, 0xc3, 0x9b, 0x6f, 0x74, 0x98, 0xa8, 0xb6, 0x8d, + 0x04, 0x18, 0x8e, 0x14, 0xfa, 0xf4, 0x54, 0x0e, 0x9e, 0xfa, 0xda, 0x09, 0x5e, 0x25, 0x0a, 0x50, + 0x9f, 0xa2, 0x36, 0x04, 0xac, 0x4e, 0x0c, 0x70, 0xce, 0xa2, 0x30, 0x09, 0xb1, 0x37, 0x03, 0xf4, + 0x70, 0x6f, 0xdf, 0xdc, 0x08, 0x68, 0xab, 0xd5, 0xfa, 0x11, 0x40, 0xb7, 0xc2, 0x59, 0xa0, 0x88, + 0xe5, 0x20, 0x24, 0x5d, 0xb3, 0x75, 0x68, 0x51, 0x80, 0x21, 0x1f, 0x53, 0x9d, 0x07, 0xb0, 0xcd, + 0x5e, 0x40, 0x5d, 0xb5, 0x96, 0x2e, 0xf8, 0x38, 0x8a, 0x9c, 0xc7, 0x93, 0xf9, 0x08, 0x76, 0xbf, + 0x5e, 0x2f, 0x6b, 0xf0, 0xc6, 0x49, 0x9c, 0x5f, 0x81, 0x4d, 0x96, 0xa4, 0xbd, 0x27, 0x2f, 0x4d, + 0x9d, 0xc7, 0x54, 0x89, 0x61, 0x11, 0x30, 0x5f, 0x8f, 0xad, 0x93, 0x84, 0xc4, 0x83, 0xf5, 0x04, + 0x1a, 0x4e, 0xad, 0x93, 0x18, 0x9e, 0x0e, 0xf7, 0x0f, 0x60, 0xb9, 0x7e, 0x86, 0x81, 0x61, 0xba, + 0x55, 0x6e, 0x8a, 0x8a, 0x39, 0x3c, 0xb4, 0x77, 0x0f, 0xf7, 0x75, 0x32, 0xc3, 0xba, 0xee, 0x81, + 0x4e, 0x46, 0x19, 0x41, 0x4d, 0xe1, 0xe9, 0xe0, 0xe0, 0x00, 0x9e, 0x1e, 0xb1, 0x7d, 0xa7, 0x0d, + 0x4f, 0x63, 0x78, 0xea, 0x98, 0xfb, 0xa6, 0x6e, 0x8c, 0xc8, 0x04, 0x07, 0x3e, 0xdc, 0xdf, 0xd3, + 0xc9, 0x1d, 0x4e, 0xb6, 0xdb, 0x82, 0xde, 0xf7, 0x58, 0xb6, 0xb7, 0x0f, 0x73, 0xdc, 0xc0, 0xd3, + 0x6e, 0xab, 0xd5, 0xd6, 0xc9, 0x29, 0x03, 0x05, 0xa7, 0x7b, 0x67, 0xfb, 0xc6, 0x79, 0x90, 0x1c, + 0xb0, 0x65, 0x93, 0x07, 0xfb, 0x5d, 0xbd, 0xfe, 0xce, 0xc8, 0xb6, 0x90, 0x9c, 0x43, 0xf5, 0x47, + 0x0f, 0xea, 0x5f, 0xfb, 0xce, 0x74, 0x46, 0x5d, 0xde, 0xec, 0xd6, 0x3e, 0xaf, 0xd7, 0xcf, 0xa5, + 0x66, 0x57, 0xd8, 0xef, 0x4e, 0x7b, 0xa7, 0x93, 0x13, 0xfb, 0x01, 0x9f, 0x1e, 0x74, 0x72, 0x6d, + 0x7f, 0x60, 0xc8, 0x97, 0x9a, 0x7d, 0x80, 0xd1, 0xb2, 0xbd, 0x25, 0xc7, 0xf6, 0x8d, 0xa6, 0x26, + 0x21, 0xdf, 0xf7, 0x6b, 0x67, 0xac, 0xea, 0xe4, 0x9b, 0x7d, 0xaa, 0xa9, 0xd7, 0xbf, 0x5d, 0x9c, + 0xbe, 0xf9, 0x7a, 0x7c, 0x79, 0x79, 0xfc, 0xdb, 0xd7, 0xeb, 0xe3, 0x9f, 0xa1, 0xf8, 0xfd, 0x6a, + 0xf1, 0xeb, 0x0f, 0xbf, 0x5c, 0x5d, 0x5f, 0x7e, 0x7c, 0x7d, 0xfd, 0xe1, 0x12, 0xaa, 0x2f, 0x6c, + 0xa7, 0x5e, 0xaf, 0xd5, 0xee, 0x61, 0xbf, 0x3e, 0xcc, 0x68, 0xe4, 0xc0, 0x5e, 0xd9, 0x33, 0xcd, + 0x37, 0x42, 0x7c, 0xd1, 0xc9, 0x57, 0xbb, 0xd6, 0x22, 0x97, 0xf6, 0x22, 0x5b, 0xa6, 0xd5, 0x22, + 0x6c, 0x4d, 0x85, 0x17, 0x79, 0x81, 0x50, 0x06, 0x8d, 0x5b, 0x7b, 0xfc, 0xa5, 0xcd, 0x1a, 0xe4, + 0x6f, 0x50, 0xd5, 0x69, 0xf3, 0x97, 0x2e, 0xab, 0xca, 0xdf, 0xce, 0xfc, 0xd0, 0x59, 0x7d, 0xdd, + 0xeb, 0xf2, 0xd7, 0x83, 0x25, 0x39, 0xb3, 0x17, 0x27, 0xde, 0x18, 0xfa, 0x67, 0x65, 0x04, 0xde, + 0x71, 0x08, 0xa9, 0xd1, 0xdb, 0x55, 0x52, 0xaf, 0xb9, 0x39, 0xad, 0xd7, 0x5a, 0x8c, 0xb4, 0x12, + 0x58, 0x1f, 0xd5, 0x7b, 0x82, 0xfe, 0xe7, 0xda, 0x25, 0x49, 0xf4, 0xa7, 0xa7, 0xb9, 0x76, 0x06, + 0x7f, 0x97, 0xbd, 0x51, 0x18, 0x69, 0x91, 0xe2, 0x05, 0xca, 0xa5, 0xae, 0x79, 0xb6, 0x16, 0xda, + 0xfe, 0xe7, 0xe8, 0x8b, 0x5e, 0xaf, 0x87, 0xf9, 0x56, 0xe8, 0x83, 0xa9, 0xe6, 0x91, 0xf7, 0x24, + 0xd4, 0xad, 0x0b, 0x40, 0x4f, 0xde, 0xe5, 0xac, 0xba, 0x4b, 0xbd, 0x9e, 0xf6, 0xe9, 0x01, 0x54, + 0x5a, 0xed, 0xe2, 0xe9, 0xa9, 0x36, 0xd4, 0xae, 0x60, 0xe2, 0x2b, 0xdb, 0xb6, 0xcf, 0x04, 0xd0, + 0x85, 0x0e, 0xda, 0x55, 0xbe, 0x18, 0x7d, 0xc1, 0xb9, 0xf4, 0x83, 0xa6, 0x9e, 0x07, 0xc3, 0x30, + 0x8a, 0x80, 0x36, 0x60, 0xc6, 0xbb, 0x90, 0x8b, 0x7f, 0xe0, 0x51, 0x72, 0xa1, 0xeb, 0x12, 0xec, + 0x08, 0x42, 0xbd, 0x7e, 0xaf, 0xe1, 0x5f, 0x72, 0x25, 0x4d, 0x7a, 0xf2, 0xf4, 0x74, 0x02, 0x33, + 0x5e, 0xe3, 0x04, 0x27, 0xf6, 0x95, 0x44, 0x60, 0xd5, 0x03, 0x48, 0x8d, 0x4e, 0xd8, 0x50, 0x17, + 0x48, 0xa6, 0xb7, 0x3a, 0x90, 0xca, 0x09, 0xb6, 0xb9, 0x85, 0x62, 0x12, 0x03, 0x19, 0xcd, 0xb5, + 0x13, 0x72, 0x2c, 0x0d, 0x03, 0xd4, 0x63, 0x92, 0x31, 0x16, 0x92, 0xc5, 0x98, 0x26, 0x96, 0xb4, + 0x1e, 0x81, 0x7e, 0x57, 0x4b, 0x26, 0x5e, 0xac, 0x0f, 0xf0, 0xf7, 0xf3, 0xb7, 0x2f, 0xd6, 0x5d, + 0xe8, 0xb9, 0x8a, 0xb9, 0x5c, 0xea, 0x24, 0x05, 0x61, 0xca, 0xd7, 0xf0, 0x8d, 0x44, 0xba, 0x24, + 0xd1, 0x16, 0xbf, 0x1c, 0x5f, 0x9f, 0xff, 0x7a, 0x2a, 0x48, 0xfa, 0xe4, 0xe3, 0xd9, 0xd9, 0xe9, + 0xe5, 0xd7, 0x5f, 0xcf, 0x4f, 0x3f, 0x5d, 0x59, 0x17, 0xa4, 0x82, 0xda, 0xad, 0xf7, 0x64, 0x85, + 0x3d, 0xac, 0xaf, 0xf5, 0xfa, 0x37, 0xe2, 0x20, 0x5b, 0x09, 0xe2, 0x5d, 0x21, 0x9f, 0xb7, 0x25, + 0x92, 0x12, 0xf6, 0xe0, 0xda, 0x89, 0x60, 0x39, 0xb9, 0x7a, 0x41, 0xd4, 0xb8, 0x8a, 0x83, 0x23, + 0xe0, 0x56, 0x48, 0x03, 0xbe, 0x0e, 0x03, 0x10, 0x6b, 0xf3, 0x61, 0x12, 0x46, 0xab, 0x63, 0x0f, + 0x35, 0xb6, 0xcb, 0xb5, 0xfb, 0xa7, 0xa7, 0x89, 0x76, 0x45, 0x60, 0xa2, 0xf5, 0x99, 0x46, 0x2b, + 0x7a, 0x4c, 0x9a, 0x08, 0x95, 0x73, 0x3a, 0x34, 0x4e, 0xca, 0x31, 0x93, 0xcf, 0xfc, 0x9e, 0x26, + 0x93, 0xd0, 0x95, 0x26, 0x45, 0x59, 0x0b, 0x48, 0xc4, 0xa9, 0x63, 0xf6, 0x1b, 0xb0, 0x8d, 0x42, + 0x96, 0x08, 0xf9, 0x9e, 0x33, 0x0d, 0xe3, 0x01, 0xf9, 0x86, 0x5f, 0x70, 0x97, 0xbd, 0x7a, 0x7d, + 0xae, 0x79, 0xd2, 0xe6, 0x03, 0x88, 0x49, 0xf4, 0xb8, 0x70, 0xa9, 0x4f, 0x13, 0xaa, 0x48, 0x35, + 0x9f, 0xe9, 0x97, 0x25, 0x50, 0xe2, 0x70, 0x02, 0x63, 0x2e, 0xb0, 0x49, 0xb1, 0xce, 0x4e, 0x44, + 0x2d, 0x2c, 0x7c, 0xb9, 0x5c, 0x9e, 0x40, 0x11, 0x10, 0x4b, 0xf0, 0xf4, 0xf4, 0x08, 0xa4, 0x41, + 0x49, 0x30, 0x48, 0x2c, 0xa0, 0xa8, 0x07, 0x28, 0x7e, 0x7a, 0x4a, 0x00, 0xc4, 0xe5, 0xfa, 0x6a, + 0xae, 0xc0, 0x36, 0xf1, 0x86, 0xa5, 0x6b, 0xe2, 0x60, 0x83, 0xc2, 0xe8, 0x65, 0x2b, 0xbb, 0x97, + 0xd6, 0x27, 0xe8, 0x19, 0x19, 0x20, 0xe3, 0xcc, 0xb9, 0x16, 0xae, 0x2c, 0x26, 0xcc, 0x97, 0x80, + 0x40, 0x42, 0xeb, 0x2b, 0x01, 0xa5, 0xd8, 0x94, 0x1e, 0x36, 0x16, 0xfb, 0xf3, 0x88, 0xdb, 0x95, + 0x82, 0x7d, 0xc5, 0xc1, 0xd6, 0xe5, 0x25, 0x4a, 0xf3, 0xd6, 0xd2, 0x59, 0xc1, 0x16, 0x90, 0xd6, + 0x0d, 0xf3, 0xa3, 0xb8, 0x59, 0x12, 0x2f, 0x46, 0x7d, 0x68, 0xbd, 0x50, 0x6c, 0xa9, 0xa9, 0x22, + 0x05, 0x63, 0xc3, 0x4e, 0x50, 0x7a, 0x15, 0xa4, 0x18, 0x8c, 0x2a, 0xd1, 0xf4, 0x5b, 0x22, 0xbd, + 0x5c, 0x49, 0x2f, 0x17, 0xe9, 0x1e, 0x59, 0x27, 0xa8, 0xe3, 0x3b, 0xed, 0xbd, 0x12, 0x6b, 0xa3, + 0xb5, 0x6f, 0xb6, 0xd1, 0xda, 0x88, 0xb4, 0xc5, 0xd2, 0x48, 0x35, 0x0e, 0xb3, 0x3a, 0x34, 0x55, + 0x35, 0x62, 0xb0, 0x40, 0xa9, 0x5e, 0x61, 0x6a, 0x08, 0x74, 0x79, 0xcc, 0xe0, 0x20, 0x07, 0xa4, + 0xd9, 0x62, 0xe6, 0x57, 0xf7, 0x60, 0xb3, 0x51, 0xb3, 0x77, 0x98, 0x1a, 0x82, 0xa8, 0xdc, 0x99, + 0x0d, 0x00, 0xa0, 0x71, 0x1b, 0x80, 0xa9, 0xe0, 0x55, 0xcd, 0xe7, 0x83, 0xd9, 0xc3, 0xf5, 0x25, + 0xd8, 0x04, 0xea, 0x71, 0x34, 0x66, 0xb6, 0x69, 0x0c, 0xb8, 0x71, 0xb4, 0x75, 0x91, 0xe3, 0xa4, + 0xf5, 0x4b, 0x4d, 0x97, 0x21, 0x0f, 0x07, 0x4e, 0x61, 0x1b, 0x18, 0xd2, 0x91, 0x65, 0x52, 0x55, + 0xc1, 0x65, 0x13, 0x20, 0x9c, 0x0e, 0xd4, 0x8f, 0x99, 0x6d, 0x63, 0x05, 0x73, 0xdf, 0xe7, 0x85, + 0xbf, 0xc0, 0x93, 0x6a, 0xa9, 0x31, 0x03, 0x2d, 0x33, 0x03, 0xb5, 0xc0, 0x96, 0x09, 0x96, 0x33, + 0x48, 0xca, 0xe9, 0x9f, 0x13, 0x99, 0xec, 0x96, 0x5a, 0x62, 0xfb, 0x88, 0xab, 0x58, 0xd7, 0x07, + 0x81, 0x35, 0x1c, 0x38, 0x5a, 0xa2, 0x5b, 0xea, 0x87, 0xd4, 0xae, 0xd4, 0x22, 0x1b, 0x4b, 0x80, + 0x82, 0x3d, 0x2d, 0x31, 0xc0, 0x81, 0xf0, 0x29, 0x68, 0x23, 0x69, 0xc5, 0x56, 0x84, 0x66, 0xe3, + 0x61, 0xbb, 0xd4, 0x6c, 0x6c, 0x1f, 0x76, 0xe4, 0xf5, 0xd6, 0x22, 0x4d, 0xc6, 0x4e, 0xfa, 0xa8, + 0x50, 0x78, 0x59, 0xa6, 0xf0, 0xe5, 0x7c, 0x6c, 0x48, 0xf2, 0xc6, 0xc6, 0x35, 0x13, 0x61, 0xa2, + 0x80, 0x24, 0xcc, 0x08, 0xe9, 0x03, 0xac, 0x96, 0xde, 0x2b, 0x14, 0x55, 0x83, 0xd4, 0x77, 0xa9, + 0x03, 0x4d, 0xa2, 0xed, 0x55, 0x02, 0x16, 0xb7, 0xea, 0xc2, 0xd4, 0x10, 0x63, 0x1b, 0x7f, 0xd8, + 0x82, 0x9d, 0x97, 0x40, 0x8d, 0x06, 0xab, 0x2c, 0x2f, 0xe0, 0x0b, 0x8d, 0x11, 0x2b, 0xf1, 0xb4, + 0x16, 0x94, 0xea, 0x4b, 0xab, 0xa2, 0x1d, 0xe2, 0xd9, 0x0e, 0x08, 0x45, 0xec, 0xc0, 0xd8, 0x2b, + 0xa6, 0x6c, 0x71, 0x7b, 0x78, 0x97, 0x05, 0x0d, 0x00, 0xa7, 0x91, 0x03, 0x7e, 0x9f, 0x55, 0xd3, + 0x5a, 0x75, 0xd8, 0x14, 0x40, 0xc0, 0xc8, 0x1b, 0xcf, 0xd3, 0xb2, 0x36, 0x96, 0xdd, 0x47, 0x5e, + 0x22, 0xde, 0xbb, 0xf8, 0x7e, 0xe7, 0xf8, 0x73, 0x6a, 0x25, 0x4b, 0x9c, 0x08, 0x16, 0xf6, 0xf2, + 0x6d, 0x10, 0x00, 0xef, 0xd7, 0x52, 0x0b, 0x90, 0xd3, 0x19, 0x60, 0x18, 0x0c, 0xb2, 0xe4, 0x11, + 0x98, 0x90, 0xb4, 0xaa, 0x94, 0xe9, 0x3e, 0xe8, 0xcd, 0xcf, 0xad, 0x2f, 0x0c, 0xdb, 0x9d, 0xd6, + 0xfe, 0x76, 0xae, 0x83, 0x2b, 0x5c, 0x39, 0x60, 0xb4, 0x50, 0xf3, 0xd0, 0x6c, 0x01, 0x99, 0x3f, + 0x8c, 0xa8, 0x93, 0xd0, 0x53, 0x9f, 0x62, 0xcd, 0x33, 0xec, 0xed, 0x0c, 0x56, 0xda, 0x43, 0x9d, + 0x85, 0x72, 0x9e, 0x1c, 0xb4, 0x5a, 0x9d, 0x12, 0x20, 0x76, 0x4d, 0x73, 0xb7, 0xb0, 0xbb, 0x9a, + 0x0a, 0xee, 0xab, 0x37, 0x76, 0x50, 0x93, 0x11, 0x74, 0x05, 0xa2, 0xe3, 0x31, 0x8c, 0xa3, 0x82, + 0x40, 0x53, 0xd5, 0x25, 0xd9, 0xef, 0x1c, 0xae, 0x79, 0x8e, 0xe8, 0x1e, 0x64, 0xeb, 0x41, 0x11, + 0x81, 0x73, 0xa1, 0x88, 0x60, 0x9a, 0x67, 0x48, 0xe3, 0x18, 0xa4, 0x82, 0x67, 0xbc, 0xa1, 0x41, + 0x08, 0x32, 0x01, 0x6c, 0x93, 0xd8, 0xb8, 0xa3, 0x51, 0x0c, 0x90, 0xc7, 0x4f, 0x4f, 0x7e, 0xbd, + 0xee, 0xa7, 0xaf, 0xe0, 0x3c, 0x0c, 0xeb, 0xf5, 0xa1, 0x71, 0x77, 0xd0, 0x73, 0x41, 0x1b, 0x87, + 0xc8, 0x63, 0xae, 0x11, 0x83, 0x67, 0x9d, 0x68, 0xaa, 0xa1, 0xea, 0xfa, 0x67, 0xf3, 0x4b, 0xdf, + 0xac, 0xd7, 0x23, 0xf8, 0x7b, 0xd4, 0x1d, 0xb4, 0xac, 0x86, 0x86, 0x8f, 0x8d, 0x08, 0x10, 0xad, + 0xeb, 0xa4, 0x16, 0xd6, 0xeb, 0x0e, 0x6a, 0x71, 0x64, 0x4d, 0x63, 0xca, 0x38, 0x79, 0xe7, 0xd4, + 0x1d, 0xd3, 0x7f, 0xee, 0x68, 0xff, 0x74, 0x1b, 0xfa, 0x8e, 0x0e, 0x8b, 0xc0, 0xb6, 0x7d, 0x1b, + 0xbc, 0x08, 0x68, 0x28, 0x35, 0x7b, 0x0d, 0x4a, 0x7e, 0x2a, 0x35, 0x64, 0xd3, 0xf3, 0x81, 0x89, + 0x24, 0x96, 0x00, 0x01, 0x40, 0x32, 0x95, 0x24, 0x2b, 0xcb, 0x93, 0x5a, 0x0d, 0x98, 0x37, 0x97, + 0x27, 0xa2, 0xd0, 0xc4, 0xbd, 0xd8, 0x3b, 0x6c, 0xed, 0xb1, 0x31, 0xb8, 0x2e, 0x59, 0xb7, 0x38, + 0x99, 0x38, 0x91, 0x76, 0x25, 0x31, 0x6e, 0xbc, 0xc0, 0x1d, 0xf0, 0x3f, 0x28, 0x86, 0xd6, 0xe9, + 0x2d, 0x31, 0x30, 0x8e, 0xf0, 0xa8, 0x01, 0xed, 0xa4, 0x12, 0x88, 0x09, 0xf8, 0xdd, 0xce, 0x66, + 0x46, 0xe7, 0x2e, 0x9a, 0x57, 0x02, 0x04, 0x7a, 0xb0, 0xf5, 0x7a, 0x2e, 0x58, 0x3e, 0xdc, 0x07, + 0x29, 0xe5, 0xbf, 0xa1, 0x3c, 0xc6, 0x00, 0xce, 0x4f, 0x8c, 0x94, 0x4a, 0x54, 0x0c, 0x65, 0x30, + 0xe9, 0x0f, 0xdb, 0xab, 0xc6, 0x80, 0x4a, 0x30, 0x22, 0x99, 0xdc, 0x95, 0xed, 0xe6, 0xa5, 0x81, + 0xcd, 0x38, 0x0d, 0x68, 0xb5, 0x08, 0x36, 0x03, 0x36, 0x2c, 0xef, 0x6d, 0xc8, 0x4c, 0x5d, 0x30, + 0x30, 0x4f, 0xff, 0x71, 0x7e, 0x75, 0x7d, 0x65, 0xc5, 0xe4, 0xe2, 0xf2, 0xc3, 0xc5, 0xe9, 0xa5, + 0xe5, 0x13, 0x30, 0x25, 0xcf, 0xce, 0x7f, 0xfe, 0x78, 0x79, 0x7c, 0xf2, 0xee, 0xd4, 0x1a, 0xc2, + 0x42, 0x51, 0x35, 0x6e, 0xc4, 0x29, 0x09, 0x04, 0x1a, 0x49, 0x64, 0x73, 0x79, 0x8d, 0xeb, 0xaf, + 0xd7, 0x03, 0x8e, 0xd4, 0xa8, 0x68, 0xd3, 0x06, 0x83, 0x12, 0xee, 0xa2, 0xc8, 0x90, 0xb4, 0x20, + 0xd9, 0xe4, 0xba, 0xf5, 0x4d, 0x89, 0xc4, 0xa6, 0xd0, 0xc2, 0xa6, 0x2c, 0x09, 0x72, 0xdd, 0x36, + 0x51, 0x8f, 0x92, 0x79, 0x10, 0x80, 0x01, 0x4d, 0x6d, 0xf3, 0xde, 0x66, 0xc1, 0x99, 0xeb, 0x57, + 0xc3, 0xa7, 0xc1, 0x38, 0x99, 0x1c, 0xb5, 0x07, 0x1e, 0xf0, 0x0c, 0xfd, 0xa2, 0x5b, 0x11, 0xb3, + 0x80, 0xf0, 0x17, 0xf5, 0x1e, 0x0a, 0x88, 0xfd, 0x32, 0x01, 0x81, 0xa1, 0x22, 0xbd, 0x72, 0x1a, + 0x6c, 0x15, 0xd8, 0x28, 0xd1, 0x53, 0xc5, 0xcc, 0x35, 0x70, 0x30, 0xe0, 0x00, 0x5a, 0x11, 0x58, + 0x7e, 0x30, 0x38, 0xae, 0x6c, 0x6d, 0xf0, 0x72, 0x2c, 0x52, 0xe3, 0xbd, 0x93, 0x4c, 0x6c, 0x1b, + 0x7f, 0xe1, 0x6d, 0x59, 0x14, 0x4e, 0xab, 0x61, 0x9d, 0xb1, 0x1f, 0xde, 0x38, 0xfe, 0x35, 0x78, + 0x2c, 0xf5, 0x7a, 0xfe, 0x8c, 0x7c, 0xbe, 0xde, 0xf6, 0x1e, 0xf6, 0x39, 0x04, 0xe7, 0x9a, 0xff, + 0x2d, 0x6f, 0x13, 0x53, 0x7f, 0x04, 0x02, 0x0a, 0x7e, 0xcb, 0xeb, 0x03, 0x63, 0x8c, 0x24, 0x33, + 0x86, 0xda, 0x12, 0x1e, 0x84, 0xa9, 0xc1, 0x90, 0x79, 0x7a, 0x4a, 0xa9, 0x4f, 0x53, 0xa5, 0x1a, + 0x55, 0x07, 0x79, 0x40, 0x90, 0xdf, 0x36, 0x58, 0x76, 0x18, 0xf6, 0x30, 0x0f, 0xb8, 0x49, 0x07, + 0xfc, 0x32, 0x71, 0x62, 0x89, 0xed, 0xe4, 0x7d, 0x10, 0x7c, 0xc9, 0x1b, 0x48, 0xc0, 0xc8, 0xbb, + 0x2f, 0x8c, 0x3d, 0x66, 0xdb, 0x76, 0x76, 0xcd, 0xd6, 0x8a, 0xdc, 0x5a, 0xa0, 0xa1, 0xb9, 0xb7, + 0xd7, 0xdd, 0x28, 0x1f, 0x98, 0x8a, 0x64, 0xf2, 0x1d, 0xb4, 0x58, 0x51, 0x57, 0x82, 0xfd, 0x1c, + 0xbe, 0x48, 0x5f, 0x7a, 0x9a, 0xea, 0x7a, 0x77, 0x20, 0x26, 0x54, 0x47, 0xdd, 0xa4, 0x37, 0x0d, + 0x87, 0xa9, 0xcd, 0xf6, 0xfe, 0xc1, 0xc1, 0x46, 0x54, 0x65, 0x51, 0xca, 0xdd, 0xee, 0xde, 0x2e, + 0x8b, 0x52, 0x6a, 0x19, 0xdf, 0x67, 0xd6, 0x71, 0x0f, 0x75, 0xa8, 0x17, 0xc4, 0x33, 0x00, 0xe8, + 0x2a, 0x9c, 0x47, 0x60, 0x22, 0x3f, 0x3d, 0xad, 0x16, 0x95, 0xea, 0x52, 0x64, 0x75, 0x59, 0xfa, + 0xaf, 0xf4, 0x41, 0xe3, 0xce, 0x3c, 0x2c, 0x53, 0x86, 0x5c, 0x09, 0xee, 0x76, 0x84, 0x9d, 0xcc, + 0xd9, 0xda, 0xcf, 0x40, 0x1f, 0xa6, 0x2a, 0xdf, 0xcd, 0xa2, 0x60, 0xc5, 0x60, 0x19, 0x5f, 0x0e, + 0x8b, 0x96, 0xb5, 0x4d, 0x11, 0x2d, 0xc3, 0xfd, 0xc3, 0x68, 0x59, 0x2c, 0x05, 0x9e, 0xc6, 0xf0, + 0xf6, 0x89, 0x3a, 0xb7, 0xef, 0x9d, 0x19, 0xfa, 0x5b, 0xce, 0xd3, 0xd3, 0xcc, 0xc0, 0xc0, 0xb1, + 0x30, 0x98, 0x27, 0xb6, 0x78, 0x85, 0xf5, 0x8a, 0x27, 0x1b, 0x2d, 0xc2, 0x31, 0x46, 0xd5, 0x7c, + 0x6d, 0x82, 0x42, 0x1d, 0xc3, 0x6a, 0xf8, 0x08, 0x74, 0x84, 0x71, 0x35, 0x7c, 0x8c, 0xa1, 0xb4, + 0x17, 0xad, 0x30, 0x3a, 0x3a, 0x72, 0xda, 0x84, 0x39, 0x6a, 0xcc, 0x1d, 0xc6, 0x71, 0x1e, 0x35, + 0x61, 0x0d, 0x2b, 0x8e, 0x0f, 0x36, 0x87, 0xfb, 0xa8, 0x88, 0x78, 0xba, 0xf7, 0x1d, 0x6c, 0xf1, + 0x2c, 0xaa, 0x93, 0x18, 0x23, 0x67, 0xe8, 0xb8, 0xd4, 0xa6, 0xe4, 0x06, 0x87, 0x80, 0xe1, 0x48, + 0xb2, 0x84, 0x0d, 0x2c, 0xc1, 0xf9, 0x1d, 0x9b, 0xe3, 0xe9, 0x09, 0x49, 0xb3, 0x54, 0xfc, 0x71, + 0x20, 0x96, 0x4b, 0xea, 0xc7, 0x94, 0x2d, 0xf2, 0xd4, 0x1e, 0x69, 0x2a, 0x5b, 0x1b, 0xcc, 0x38, + 0xfd, 0x7c, 0xfa, 0x05, 0xc3, 0x1c, 0x25, 0xd0, 0xcf, 0xe1, 0xe9, 0xf4, 0xf7, 0x41, 0xef, 0xe2, + 0x10, 0x9b, 0xa0, 0xe7, 0x73, 0x0c, 0x28, 0x40, 0x61, 0x55, 0xae, 0x80, 0x37, 0x82, 0x15, 0xe4, + 0x7c, 0x08, 0x18, 0xb7, 0x60, 0x37, 0xe1, 0x37, 0x24, 0xb0, 0x11, 0x96, 0x47, 0x68, 0x00, 0x6e, + 0xeb, 0x90, 0x5a, 0xa5, 0x1e, 0x1c, 0x28, 0x00, 0xe4, 0x6b, 0x90, 0xad, 0x94, 0x2c, 0x96, 0xc0, + 0x28, 0xd0, 0x33, 0xa1, 0xd1, 0xd9, 0x4a, 0x58, 0x43, 0xb4, 0xcf, 0x8a, 0x52, 0x71, 0x8d, 0xa4, + 0x52, 0x1b, 0x6a, 0xe8, 0xa2, 0x82, 0x3b, 0x14, 0xa2, 0x0f, 0x63, 0xa0, 0x74, 0x43, 0x37, 0x41, + 0xe0, 0xe7, 0x91, 0x87, 0xb6, 0xd2, 0xc3, 0x16, 0x25, 0xa2, 0x43, 0xea, 0x81, 0x91, 0x46, 0x14, + 0xb5, 0x41, 0x1b, 0x2a, 0xbc, 0xff, 0x6b, 0xee, 0x45, 0x32, 0x9a, 0x82, 0x25, 0x33, 0x6c, 0x36, + 0x98, 0xf3, 0x29, 0x40, 0x6a, 0x16, 0xff, 0xcf, 0x63, 0xf3, 0xa8, 0xbf, 0x5b, 0x65, 0x06, 0xfa, + 0x5e, 0xd1, 0xf7, 0x28, 0x19, 0x6d, 0x2d, 0xce, 0x3f, 0x40, 0x0d, 0x84, 0x6b, 0x41, 0xfc, 0xa0, + 0xe4, 0x6b, 0x1d, 0xb6, 0x56, 0x2d, 0xb6, 0x5a, 0x0b, 0xa4, 0x4b, 0xeb, 0x70, 0x73, 0x40, 0x9f, + 0x99, 0xc6, 0x45, 0xdf, 0x97, 0x87, 0xa4, 0x91, 0xa7, 0x3b, 0xe0, 0x20, 0xc9, 0xce, 0xae, 0x04, + 0x64, 0x5c, 0x62, 0x3a, 0xa8, 0xf1, 0xe3, 0xf4, 0x26, 0xf4, 0xe5, 0x25, 0xaf, 0xfb, 0xb7, 0xb0, + 0x17, 0xea, 0x15, 0x6f, 0x97, 0xe1, 0x15, 0x7c, 0x4b, 0x1d, 0x8d, 0x24, 0x39, 0xfa, 0x8c, 0x5e, + 0x29, 0xb3, 0xed, 0xda, 0xdd, 0x32, 0xd9, 0xbd, 0x0f, 0x32, 0xfd, 0x19, 0x37, 0x01, 0x30, 0x23, + 0x0c, 0x02, 0x86, 0xa0, 0x4e, 0x99, 0xe2, 0x47, 0x4b, 0x5f, 0x52, 0x01, 0xb2, 0xe4, 0xaf, 0x95, + 0x1a, 0x85, 0x1c, 0xf4, 0x78, 0x4d, 0x2b, 0xf0, 0x33, 0x27, 0x5e, 0xab, 0xa5, 0x0b, 0xab, 0x71, + 0xe9, 0xac, 0x21, 0xb3, 0xd7, 0x34, 0x3e, 0x1e, 0xbc, 0x80, 0x80, 0x4d, 0x9c, 0x60, 0x88, 0x18, + 0xe2, 0x1d, 0xb0, 0x9a, 0x3f, 0x19, 0xf1, 0xc4, 0x99, 0x82, 0xc1, 0x02, 0xff, 0x3b, 0xea, 0xb6, + 0xb8, 0x17, 0x0b, 0x22, 0x76, 0xbb, 0x63, 0x2c, 0x54, 0x25, 0xfc, 0x18, 0x2b, 0x95, 0x97, 0x92, + 0x51, 0xaf, 0x39, 0x80, 0xe2, 0x9d, 0x00, 0x68, 0xfd, 0x8e, 0x2a, 0xc3, 0xd0, 0xa5, 0x3b, 0x46, + 0x42, 0xe3, 0x04, 0xd4, 0x95, 0xc3, 0xbc, 0x37, 0xf3, 0x99, 0x93, 0x1f, 0xae, 0x2c, 0x71, 0x1a, + 0xd4, 0xa6, 0x9c, 0x52, 0x3a, 0x9d, 0xdd, 0x8e, 0x38, 0x29, 0xd9, 0x43, 0x4f, 0x1a, 0xa5, 0x7f, + 0xf7, 0x10, 0x0f, 0x41, 0x86, 0xf2, 0xb9, 0x10, 0xa8, 0x80, 0x52, 0x55, 0x09, 0x0a, 0xe1, 0x19, + 0xc3, 0xbb, 0x07, 0x82, 0x09, 0xc3, 0x24, 0x6b, 0xde, 0x38, 0x06, 0xde, 0x98, 0xd6, 0x07, 0x61, + 0x0e, 0xb2, 0x2a, 0x06, 0x03, 0x8c, 0x94, 0xf1, 0x1c, 0xd8, 0xe9, 0xf9, 0x09, 0x17, 0x46, 0xae, + 0xa0, 0x80, 0x79, 0xcc, 0xaa, 0x07, 0xec, 0x0c, 0x2f, 0xa9, 0x3b, 0x2d, 0xde, 0x6b, 0x81, 0x91, + 0x96, 0x88, 0x28, 0x9f, 0x3d, 0x67, 0xd2, 0xb5, 0x87, 0x5b, 0x92, 0xd5, 0x81, 0x65, 0xcf, 0x1d, + 0x7c, 0x83, 0x0d, 0x06, 0x56, 0xf7, 0xa2, 0xe0, 0xab, 0xab, 0xf2, 0x1b, 0x1b, 0x7a, 0x10, 0x14, + 0x0c, 0x7f, 0x2b, 0x2a, 0xbc, 0x12, 0xc9, 0xf7, 0x57, 0xf3, 0xe7, 0xb4, 0xa7, 0x54, 0x1b, 0x49, + 0x2f, 0x52, 0x2c, 0x00, 0x48, 0x65, 0x99, 0x05, 0xb8, 0x39, 0x8e, 0x96, 0xd6, 0x7a, 0xdc, 0xb2, + 0x0c, 0x6d, 0x9e, 0x2e, 0x85, 0x87, 0xb2, 0xce, 0x85, 0xc8, 0xa4, 0x0a, 0xfb, 0xc3, 0x60, 0x01, + 0xf7, 0x38, 0x16, 0x8f, 0x42, 0x88, 0x0e, 0x35, 0xf5, 0x78, 0x88, 0xde, 0x6f, 0x18, 0xf1, 0x90, + 0x71, 0x3c, 0x9f, 0x21, 0xc5, 0x49, 0x62, 0xb3, 0x80, 0xf0, 0x02, 0xde, 0x74, 0x1e, 0x1f, 0xd9, + 0x6d, 0x6d, 0x8e, 0xcf, 0xa5, 0xde, 0x5b, 0x41, 0x46, 0xa1, 0xfd, 0x18, 0x67, 0xc6, 0x03, 0x52, + 0x1e, 0x46, 0xa1, 0x90, 0xf2, 0x62, 0x90, 0xeb, 0xa7, 0x5f, 0xc1, 0x89, 0xba, 0xfe, 0xa0, 0xa2, + 0xf9, 0x91, 0x85, 0xea, 0xe6, 0xe0, 0x67, 0x67, 0xd4, 0x20, 0xf1, 0x86, 0x3f, 0x70, 0x57, 0x62, + 0x4a, 0x25, 0x62, 0x0b, 0x0d, 0xa5, 0x1e, 0x3b, 0xca, 0x4c, 0xc8, 0x30, 0x0b, 0x9c, 0x27, 0x9f, + 0x87, 0x5f, 0x7a, 0xdc, 0x3f, 0x48, 0xe4, 0x78, 0x55, 0x2e, 0xd9, 0x02, 0x60, 0x3b, 0x3c, 0x39, + 0xc9, 0x58, 0x1e, 0x37, 0x34, 0x83, 0xc2, 0x2a, 0x54, 0xb9, 0x83, 0x39, 0x0b, 0xee, 0xa1, 0x2f, + 0x01, 0x42, 0xb8, 0xca, 0x2c, 0x2c, 0x38, 0x0b, 0x60, 0x3f, 0x7b, 0xb1, 0x04, 0x3a, 0xf0, 0x32, + 0x9e, 0x1f, 0x6e, 0x34, 0x29, 0x39, 0xb7, 0x32, 0x84, 0x9a, 0xfb, 0xfb, 0x25, 0x06, 0x77, 0x5c, + 0xc0, 0x06, 0xa8, 0x50, 0xf5, 0xeb, 0x57, 0x06, 0xf3, 0xd7, 0xaf, 0xb0, 0x8f, 0x8b, 0xe5, 0x60, + 0x55, 0xf2, 0x01, 0x45, 0xd5, 0x5a, 0xc8, 0x06, 0x4b, 0x16, 0xb6, 0xd6, 0x28, 0x40, 0xf6, 0x0c, + 0x6f, 0x6b, 0x6b, 0x07, 0x8e, 0xd2, 0x24, 0x3a, 0x33, 0xd0, 0x74, 0x2d, 0x20, 0x9f, 0xbf, 0x20, + 0xb9, 0x06, 0x32, 0x9a, 0x58, 0x28, 0x59, 0xa2, 0xd0, 0x55, 0x1b, 0x80, 0x1d, 0x3a, 0x64, 0x9e, + 0x24, 0x92, 0xb8, 0x16, 0xc1, 0x20, 0x03, 0xca, 0x6a, 0xac, 0xc0, 0xc8, 0xe6, 0xb1, 0x23, 0x02, + 0x3a, 0x5d, 0xd3, 0x85, 0xa7, 0x89, 0xe6, 0x78, 0xab, 0xbb, 0x59, 0x0e, 0x62, 0x58, 0x63, 0x85, + 0x18, 0x99, 0x99, 0x1b, 0x3f, 0x7b, 0x12, 0x9e, 0xb9, 0x92, 0x24, 0x42, 0x42, 0xca, 0xa3, 0xb6, + 0x28, 0x95, 0x80, 0x50, 0x6c, 0x9a, 0xdb, 0xf3, 0x20, 0x89, 0x1c, 0x2d, 0x02, 0xa9, 0x1d, 0xc8, + 0xc7, 0x34, 0xac, 0x1f, 0x6f, 0xc9, 0xf8, 0x07, 0x76, 0x7b, 0x43, 0xc3, 0x74, 0x82, 0xda, 0x4b, + 0x26, 0xe0, 0x5c, 0x1d, 0xa7, 0x09, 0x03, 0x40, 0xd2, 0x60, 0x11, 0x25, 0xe2, 0x64, 0x5e, 0x49, + 0x42, 0x65, 0x16, 0x79, 0x53, 0x8f, 0x29, 0x11, 0xce, 0xd6, 0x5c, 0xb7, 0xb6, 0xcd, 0x2d, 0x55, + 0x14, 0x63, 0x65, 0x27, 0x73, 0x09, 0x62, 0x6e, 0xf4, 0xef, 0x72, 0x0e, 0xe6, 0x0a, 0x6c, 0xc8, + 0x78, 0xd9, 0x3c, 0xe4, 0xae, 0x03, 0xc6, 0x76, 0x74, 0x43, 0x8e, 0x84, 0x00, 0x1f, 0x0f, 0x91, + 0xaa, 0xc0, 0x8b, 0x18, 0x1a, 0xc2, 0x86, 0x04, 0x3f, 0x42, 0xe8, 0x5a, 0xb1, 0xbe, 0x34, 0xa0, + 0xc6, 0x5f, 0x41, 0x16, 0x69, 0xe5, 0x5b, 0x42, 0x02, 0xe2, 0xf3, 0x6d, 0x19, 0xc2, 0xb8, 0xb5, + 0x9a, 0x8f, 0x67, 0xd3, 0xbe, 0x31, 0x0f, 0x62, 0x67, 0x44, 0xc1, 0x27, 0xc9, 0x4a, 0x24, 0xb1, + 0xfb, 0x98, 0x97, 0x06, 0x21, 0x3f, 0x99, 0xfb, 0x19, 0xc0, 0x19, 0xdb, 0x50, 0xc8, 0x09, 0x09, + 0x50, 0xee, 0xb3, 0x30, 0xd0, 0x80, 0xff, 0xb1, 0x92, 0x5e, 0xc8, 0x24, 0x41, 0x6a, 0xfb, 0x68, + 0xb8, 0xed, 0x02, 0x62, 0x04, 0x16, 0x0f, 0x35, 0x34, 0x93, 0xec, 0x63, 0x93, 0xb1, 0xad, 0x7e, + 0x56, 0x1b, 0x79, 0x65, 0x44, 0x67, 0xbe, 0x03, 0xd5, 0x3b, 0xff, 0xcd, 0xfb, 0xfe, 0x53, 0xd3, + 0x3e, 0xff, 0xb7, 0xfe, 0xe5, 0x2f, 0xfa, 0x3f, 0xf5, 0x1d, 0xa2, 0xfe, 0xb9, 0xa5, 0xea, 0x0d, + 0xf5, 0x0b, 0x48, 0x3a, 0xad, 0x06, 0x7b, 0x9c, 0x86, 0x99, 0x9e, 0x9e, 0x5c, 0x74, 0xe1, 0xf1, + 0x05, 0x80, 0x19, 0x33, 0xf3, 0x2a, 0xad, 0x24, 0xe0, 0x1b, 0x69, 0x43, 0x7b, 0x06, 0x10, 0xc1, + 0xd4, 0xcc, 0xcd, 0x03, 0x16, 0x1f, 0x8a, 0x47, 0x7b, 0x64, 0x7c, 0x0b, 0xbd, 0x40, 0x5b, 0x3d, + 0x55, 0x50, 0xc6, 0x83, 0xb1, 0xa5, 0xaa, 0x40, 0x2c, 0x04, 0x87, 0x8c, 0x06, 0xda, 0x7c, 0x50, + 0x7b, 0xac, 0xd7, 0x51, 0xa0, 0x03, 0xd4, 0x80, 0x2a, 0x53, 0xb7, 0xc4, 0xe1, 0x16, 0x96, 0x91, + 0xe9, 0x80, 0xcb, 0x7a, 0xcb, 0x11, 0xa4, 0xa1, 0x5b, 0x59, 0x51, 0xac, 0x31, 0x2d, 0xa3, 0x6b, + 0x25, 0x21, 0xac, 0xec, 0xac, 0x45, 0x25, 0x25, 0x7e, 0x77, 0xc8, 0xcf, 0x6f, 0xf1, 0x48, 0x8d, + 0x3d, 0x64, 0x0b, 0xf0, 0xf9, 0x3b, 0xb3, 0x99, 0xba, 0xdd, 0x83, 0x4a, 0x95, 0xb2, 0x4d, 0xbe, + 0x0a, 0x8f, 0xef, 0xa4, 0x8e, 0x42, 0x94, 0x71, 0x83, 0xe3, 0xfb, 0xca, 0x94, 0x1d, 0x09, 0x2a, + 0x61, 0x80, 0x6e, 0x42, 0x66, 0xc2, 0x52, 0x1e, 0x7d, 0xd8, 0x14, 0xf0, 0x2a, 0xb5, 0x81, 0x2a, + 0x25, 0x05, 0x8a, 0xd1, 0x50, 0x8b, 0xc0, 0x93, 0x5c, 0x88, 0x10, 0xff, 0xca, 0x71, 0x80, 0x29, + 0xa9, 0x7f, 0x73, 0xa9, 0xe7, 0xc7, 0xa1, 0x11, 0x3f, 0x00, 0x4d, 0x35, 0x14, 0xb3, 0xa1, 0xcd, + 0x32, 0xfe, 0x6c, 0x77, 0x90, 0xc9, 0xc2, 0x2c, 0xbb, 0x84, 0x9d, 0xb0, 0xdd, 0xd2, 0xc7, 0x58, + 0x7d, 0xee, 0x7c, 0x8d, 0x9d, 0x40, 0x6a, 0xf8, 0xc7, 0x0e, 0x85, 0x9d, 0x8e, 0xee, 0xfc, 0x46, + 0x19, 0xc0, 0xd9, 0x1c, 0xe6, 0xf8, 0x0c, 0x72, 0x7e, 0x18, 0x46, 0xb4, 0xf9, 0x2d, 0xfe, 0x0a, + 0xe6, 0x2e, 0x78, 0x58, 0x20, 0xf0, 0xbf, 0x60, 0xe6, 0x52, 0x59, 0x05, 0x3a, 0x7f, 0x12, 0x34, + 0x1e, 0x88, 0xe8, 0xce, 0x7a, 0x40, 0x02, 0xa5, 0xf0, 0x21, 0xc6, 0xe3, 0xc3, 0x34, 0xb2, 0x50, + 0xc5, 0xf0, 0x39, 0x21, 0xf1, 0x45, 0xe0, 0x1f, 0x3b, 0xe3, 0xda, 0x64, 0x90, 0x58, 0xe8, 0x6d, + 0xea, 0x9a, 0x9a, 0x46, 0xef, 0x55, 0x54, 0x41, 0xc6, 0x6c, 0x1e, 0x4f, 0xb4, 0x85, 0x28, 0xb3, + 0xd4, 0x8e, 0xd1, 0x36, 0x8d, 0xb6, 0x4a, 0xa6, 0x60, 0x48, 0x5b, 0xd1, 0x40, 0x9d, 0xcd, 0x23, + 0xaa, 0x5a, 0x2a, 0x0f, 0xce, 0xa9, 0xb0, 0x53, 0xb3, 0xc7, 0xc8, 0x1b, 0x4f, 0x12, 0x4b, 0xfd, + 0x3f, 0xff, 0x5b, 0x69, 0x9b, 0xed, 0xb6, 0xf2, 0x86, 0x06, 0x5e, 0xac, 0x5c, 0xc0, 0x30, 0xb7, + 0xb0, 0xb2, 0x3b, 0x45, 0xfb, 0xee, 0x87, 0x5e, 0x14, 0x0e, 0x6f, 0x8d, 0x68, 0xae, 0xab, 0xe8, + 0xe0, 0x1e, 0x76, 0xcc, 0x8e, 0x14, 0xdc, 0xc5, 0xd0, 0xa0, 0x01, 0x1e, 0xa9, 0x0f, 0x6a, 0x95, + 0x3d, 0x8f, 0xfc, 0xb0, 0x92, 0x66, 0x39, 0x12, 0x1a, 0x34, 0x25, 0xc7, 0xa8, 0x66, 0x47, 0x4f, + 0x4f, 0x78, 0x74, 0x18, 0x0d, 0x60, 0xeb, 0xa3, 0xbe, 0x39, 0x08, 0xac, 0x44, 0xd7, 0xd8, 0x51, + 0x37, 0xfa, 0x4e, 0x65, 0xe1, 0x30, 0x98, 0x1f, 0x11, 0xc8, 0x26, 0x9b, 0x7a, 0xc1, 0x66, 0x1a, + 0xa0, 0x30, 0x24, 0xd0, 0x27, 0x5a, 0x93, 0x87, 0xa6, 0xb9, 0xdf, 0x02, 0xeb, 0x6b, 0xb7, 0xbb, + 0xdf, 0x35, 0x0f, 0x0f, 0x5b, 0xba, 0x65, 0x32, 0x0b, 0xc6, 0xdc, 0x6c, 0xd6, 0x21, 0x93, 0xf2, + 0x13, 0xa1, 0x35, 0xef, 0xb2, 0xf2, 0x4c, 0x97, 0xa5, 0x86, 0xed, 0x3e, 0xe3, 0xd3, 0x76, 0x4c, + 0x34, 0x74, 0x70, 0xe0, 0x4b, 0x27, 0x18, 0x6f, 0xa3, 0x91, 0x19, 0x15, 0xa3, 0xce, 0x0c, 0x7e, + 0x4a, 0x04, 0xd3, 0x7b, 0x9a, 0xfa, 0x29, 0x0a, 0x83, 0xb1, 0x12, 0x8e, 0x46, 0x68, 0xf3, 0xca, + 0x41, 0x00, 0x82, 0x33, 0x6c, 0xf6, 0x96, 0x18, 0x2e, 0xb7, 0x00, 0x21, 0xf7, 0x8a, 0x39, 0x00, + 0xc9, 0x91, 0x99, 0x03, 0x70, 0x3d, 0xa1, 0x59, 0x70, 0x1b, 0x84, 0x0f, 0x8a, 0xa0, 0x1b, 0xaa, + 0xf8, 0x60, 0x6d, 0x2b, 0xc9, 0xc4, 0x09, 0x14, 0x53, 0x8a, 0xe0, 0x20, 0xc6, 0x77, 0x0f, 0x3b, + 0x5b, 0xda, 0x2e, 0xcc, 0x64, 0x41, 0x35, 0x8c, 0x01, 0x02, 0xae, 0x86, 0x31, 0x34, 0x2e, 0xd4, + 0x30, 0xd8, 0x40, 0x5c, 0x0d, 0xf3, 0xfc, 0x33, 0xb7, 0xe0, 0xcc, 0x81, 0xf6, 0xc5, 0xe3, 0xf0, + 0x8b, 0xd4, 0x0e, 0x50, 0xab, 0x03, 0xe7, 0x18, 0x83, 0xf1, 0x98, 0xf7, 0xeb, 0x14, 0xd2, 0x5a, + 0x84, 0x15, 0x04, 0x96, 0x3a, 0x25, 0x73, 0xb6, 0x6c, 0x9e, 0x25, 0x92, 0x9d, 0x77, 0x83, 0xbd, + 0xa2, 0x25, 0x2c, 0xab, 0xd3, 0x99, 0xfb, 0x80, 0x7b, 0x82, 0x3b, 0x14, 0xf1, 0xa8, 0x1a, 0x6a, + 0x39, 0x36, 0x62, 0x90, 0x8d, 0x18, 0x08, 0xb3, 0xc5, 0x7d, 0x89, 0xd9, 0xb2, 0x7a, 0xc6, 0x2e, + 0xe6, 0x04, 0x35, 0x7f, 0x43, 0x23, 0x3c, 0xe5, 0xd1, 0x44, 0xc2, 0x04, 0x7a, 0xb4, 0x65, 0x68, + 0xdd, 0x3d, 0x14, 0xf2, 0x86, 0xe1, 0x70, 0xe3, 0xee, 0x62, 0x10, 0x2b, 0xd5, 0xa7, 0xd9, 0x96, + 0x61, 0x50, 0x0a, 0xc4, 0x4d, 0xd2, 0x50, 0x55, 0xb4, 0xa1, 0xf6, 0x0e, 0xd7, 0x8d, 0x76, 0x30, + 0xa7, 0xa3, 0xcf, 0xe5, 0x39, 0x08, 0x5f, 0x6c, 0xf5, 0xbb, 0x2a, 0xc5, 0x6d, 0xd5, 0xcf, 0x62, + 0xb1, 0xdf, 0xbf, 0x48, 0xb6, 0x05, 0xf0, 0x3b, 0xc1, 0x64, 0xc4, 0x4a, 0x65, 0xc8, 0xdb, 0xf5, + 0x9e, 0x3b, 0xe7, 0x53, 0x58, 0x98, 0x69, 0xe5, 0x9c, 0x2f, 0x4d, 0x13, 0xe0, 0x67, 0xcf, 0xa5, + 0xa1, 0xad, 0xd4, 0xe7, 0x30, 0x81, 0xea, 0x98, 0x5c, 0x89, 0x9c, 0xc0, 0x0d, 0xa7, 0x1a, 0x8f, + 0x63, 0xb7, 0x0c, 0x29, 0x82, 0xbd, 0x31, 0x00, 0x96, 0x5a, 0x4d, 0x0d, 0x4d, 0xce, 0x89, 0x50, + 0x2d, 0x4c, 0x56, 0xd2, 0xbf, 0xaa, 0x0d, 0x47, 0x6b, 0x34, 0xc2, 0x86, 0x47, 0x3a, 0x7b, 0xec, + 0x18, 0xa0, 0x63, 0x96, 0x1e, 0x3f, 0x74, 0x0a, 0x11, 0x1e, 0x0c, 0xed, 0x17, 0xa2, 0x2e, 0x6b, + 0xf1, 0x2b, 0x51, 0xeb, 0x25, 0x60, 0xf8, 0x81, 0xc7, 0x82, 0x03, 0xef, 0x76, 0x9e, 0x3f, 0x48, + 0x28, 0xce, 0x51, 0x7a, 0x7a, 0xd0, 0x6d, 0x57, 0x1d, 0x1f, 0xc8, 0x8d, 0x97, 0x3a, 0x91, 0xc2, + 0x17, 0xa9, 0x21, 0xd0, 0x6d, 0x17, 0x1d, 0xff, 0x95, 0xac, 0x07, 0x24, 0x96, 0xcd, 0xee, 0x34, + 0x53, 0xfb, 0x45, 0x6b, 0x9c, 0x1b, 0x00, 0xb1, 0x40, 0x12, 0x93, 0x02, 0x3c, 0xf8, 0x37, 0xc4, + 0x78, 0xdd, 0xfd, 0x6d, 0x2c, 0x3c, 0x69, 0x8e, 0x11, 0xf4, 0xa4, 0xeb, 0x75, 0xd7, 0x00, 0xd3, + 0x1b, 0x8c, 0x70, 0x70, 0x9f, 0x2d, 0xf6, 0x7a, 0xef, 0x81, 0x65, 0x34, 0x4f, 0xae, 0x58, 0xa0, + 0x16, 0x38, 0xb4, 0xda, 0xbe, 0x02, 0x1e, 0x1e, 0xb2, 0x10, 0x78, 0x8d, 0x9d, 0xa4, 0xa6, 0x7e, + 0x8a, 0x40, 0xfb, 0x10, 0x8f, 0xee, 0x04, 0xe7, 0x88, 0x9d, 0x37, 0xc0, 0xd6, 0xea, 0xc5, 0xe8, + 0xc5, 0xb8, 0xd0, 0x6f, 0x80, 0x2d, 0x6c, 0x17, 0x7e, 0x2c, 0xf6, 0x04, 0x76, 0xf7, 0x7c, 0x30, + 0xc7, 0x23, 0xe3, 0x19, 0xfc, 0xa4, 0x9c, 0x8d, 0x55, 0x48, 0x0c, 0xdd, 0x42, 0x1a, 0xf8, 0x7a, + 0xe2, 0x6f, 0x85, 0x88, 0x6c, 0xef, 0x99, 0x1c, 0x37, 0x18, 0x81, 0xe4, 0xb8, 0x41, 0xcd, 0x23, + 0xf2, 0x81, 0x59, 0xfc, 0x61, 0x98, 0x1d, 0x1d, 0xb9, 0x05, 0x49, 0x0f, 0xf8, 0x89, 0xa4, 0x3c, + 0xdd, 0x99, 0x3d, 0x07, 0x00, 0x25, 0x0b, 0x77, 0x64, 0xcf, 0xea, 0xf5, 0x19, 0xba, 0xb8, 0xe0, + 0x61, 0x78, 0x86, 0x94, 0xbd, 0x07, 0xbe, 0x85, 0x67, 0x94, 0x27, 0xd6, 0x81, 0x7f, 0x51, 0x1b, + 0x96, 0xc4, 0x1c, 0x31, 0xcc, 0xbf, 0x96, 0x13, 0xab, 0xb5, 0x25, 0x31, 0x33, 0x42, 0x23, 0x92, + 0x47, 0x42, 0xad, 0x16, 0x31, 0xad, 0x0e, 0x48, 0x1b, 0x9d, 0x74, 0x30, 0x7c, 0xcc, 0x93, 0x37, + 0xc8, 0xc4, 0x1e, 0x03, 0x6e, 0x8d, 0xca, 0x14, 0xc7, 0x7a, 0xbd, 0x6a, 0xe6, 0xb9, 0x34, 0x13, + 0xc5, 0x15, 0x69, 0x2d, 0x3c, 0x4d, 0xc2, 0x07, 0x15, 0xec, 0x23, 0x78, 0x31, 0xd9, 0x3c, 0x26, + 0xd8, 0x5a, 0xed, 0x7c, 0xc6, 0xde, 0xa3, 0xc6, 0x22, 0x49, 0x92, 0x85, 0x0f, 0x94, 0x31, 0xe5, + 0x26, 0xbc, 0xc8, 0x3e, 0x8b, 0xb5, 0xd5, 0x83, 0xdd, 0x7e, 0x6b, 0x90, 0x15, 0xc1, 0x38, 0xc2, + 0x6b, 0xc7, 0x49, 0x02, 0x96, 0xc5, 0x84, 0x9a, 0x64, 0xac, 0x4b, 0xeb, 0xc6, 0xe1, 0xc0, 0xc3, + 0x4b, 0x74, 0xb1, 0xd3, 0xf8, 0x2e, 0xc6, 0x82, 0x3d, 0x46, 0x15, 0x02, 0x7b, 0x68, 0x32, 0xaf, + 0xba, 0x91, 0xf4, 0x23, 0x3d, 0x53, 0x23, 0x5c, 0xf5, 0xf3, 0x96, 0x20, 0xb1, 0x31, 0xbd, 0xae, + 0x37, 0x3c, 0xf2, 0x7a, 0x3a, 0x4b, 0x1b, 0x4d, 0x1a, 0x43, 0x70, 0x62, 0x3e, 0x0f, 0x1b, 0x0d, + 0x58, 0x0b, 0xa9, 0x8d, 0x9f, 0x9e, 0x58, 0x88, 0x39, 0x41, 0x79, 0x9d, 0x65, 0x35, 0x05, 0xa8, + 0xd4, 0x58, 0xae, 0xa3, 0x9d, 0x7c, 0x8e, 0x58, 0x7e, 0x63, 0x66, 0x66, 0x86, 0x19, 0x90, 0x29, + 0x87, 0xf4, 0x78, 0x26, 0x24, 0xb6, 0xb4, 0x17, 0xa2, 0x0c, 0x8f, 0x57, 0x32, 0xdc, 0x42, 0x85, + 0xe6, 0x91, 0x94, 0x38, 0x60, 0x55, 0x7a, 0xfe, 0xb2, 0x0c, 0x8c, 0xb1, 0x9c, 0x82, 0x50, 0x76, + 0x35, 0x40, 0x3a, 0x37, 0x16, 0x43, 0xe6, 0x25, 0x72, 0xaa, 0x21, 0x2e, 0xf0, 0xe9, 0x09, 0xb7, + 0xb6, 0xfa, 0x7c, 0x37, 0xd3, 0x03, 0x65, 0x13, 0x89, 0x83, 0xe7, 0xf4, 0x28, 0x8b, 0xbd, 0x61, + 0x8c, 0x85, 0xf0, 0xcb, 0x19, 0x05, 0xfe, 0x03, 0x29, 0xd3, 0xc5, 0x93, 0x77, 0x70, 0x1a, 0x31, + 0x86, 0x44, 0xc4, 0xc1, 0x22, 0x89, 0x89, 0x4f, 0x86, 0xc4, 0x25, 0x73, 0x32, 0x23, 0x23, 0x32, + 0x25, 0x8f, 0x64, 0x4c, 0x26, 0xe4, 0x8e, 0xdc, 0x93, 0x1b, 0x72, 0x8a, 0x91, 0xa6, 0x77, 0x78, + 0x00, 0xf6, 0x60, 0x7f, 0xfe, 0x42, 0xce, 0xf1, 0xe9, 0x16, 0xcb, 0xae, 0xf0, 0xe7, 0xc4, 0x56, + 0x55, 0x72, 0x8d, 0x4f, 0x1f, 0xf0, 0xe9, 0xd8, 0x56, 0x77, 0x54, 0x36, 0xfc, 0x37, 0xf2, 0x9e, + 0x5c, 0x90, 0xaf, 0xe4, 0x92, 0x9c, 0x91, 0xb7, 0xe4, 0x35, 0x68, 0xa4, 0x8f, 0xd8, 0xe0, 0x0d, + 0x34, 0x18, 0x79, 0x60, 0x52, 0xa9, 0xe4, 0x13, 0x6b, 0x9b, 0xed, 0xdf, 0xaf, 0x80, 0xc8, 0x33, + 0x63, 0xe8, 0x3b, 0x71, 0xfc, 0xce, 0x8b, 0x13, 0x70, 0xc3, 0xa7, 0xe1, 0x1d, 0xd5, 0xd4, 0x89, + 0xe7, 0x62, 0x12, 0xc8, 0x65, 0x75, 0xd5, 0xc7, 0x94, 0x5c, 0xcd, 0xc1, 0xdb, 0xca, 0x56, 0x96, + 0x5c, 0xe5, 0xb8, 0x6e, 0xd6, 0x3b, 0xac, 0x28, 0x8f, 0x2a, 0xca, 0x93, 0xf2, 0xf2, 0x65, 0xb6, + 0x90, 0x5f, 0x0a, 0x6e, 0x4f, 0x1e, 0x03, 0xd2, 0x40, 0x73, 0x38, 0xee, 0x55, 0xe2, 0x44, 0x09, + 0x78, 0xe3, 0xaa, 0x29, 0xf7, 0xf9, 0x0e, 0x8b, 0x7f, 0x87, 0xd1, 0x5a, 0x23, 0x1e, 0x46, 0xa1, + 0xef, 0x5f, 0x87, 0x33, 0x3b, 0x7d, 0x7e, 0x4b, 0xd1, 0xb3, 0x91, 0x1a, 0xff, 0x26, 0x48, 0x01, + 0x7e, 0x1f, 0xec, 0x07, 0x0c, 0x83, 0x02, 0x81, 0xa0, 0x63, 0x80, 0x6f, 0x3c, 0xb4, 0xd1, 0x04, + 0x8b, 0x99, 0x6f, 0x33, 0x88, 0x74, 0x95, 0xf1, 0x13, 0xdb, 0x73, 0x60, 0x3e, 0x7a, 0xf4, 0x20, + 0xf0, 0xd5, 0xa3, 0x8d, 0x86, 0x9e, 0x34, 0x6c, 0xcc, 0xcb, 0xed, 0xa5, 0x59, 0x62, 0x18, 0xe9, + 0x11, 0x69, 0x5e, 0x27, 0x8f, 0xe7, 0xb0, 0x3c, 0x8c, 0xb2, 0x86, 0x3e, 0x7d, 0xcd, 0x6f, 0x0a, + 0xa9, 0xba, 0xe1, 0x05, 0x01, 0x8d, 0xde, 0x5e, 0xbf, 0x7f, 0x67, 0x27, 0x04, 0xe0, 0x5e, 0xe6, + 0x80, 0xfd, 0x8c, 0x20, 0xb1, 0x49, 0x19, 0x85, 0x27, 0xf6, 0x5f, 0xaf, 0x3e, 0xfc, 0x02, 0x8b, + 0x8e, 0x62, 0x8a, 0xe0, 0xfd, 0xa6, 0xb1, 0x77, 0xae, 0x7e, 0xbc, 0x11, 0xa6, 0x15, 0xb1, 0x34, + 0x43, 0x55, 0xc1, 0x90, 0xca, 0x3f, 0x31, 0xc9, 0x9d, 0x53, 0x3a, 0x60, 0x0f, 0xd6, 0x28, 0x8a, + 0xf2, 0xe1, 0xff, 0x95, 0x0e, 0xcf, 0x73, 0x75, 0x83, 0xe2, 0xf0, 0x79, 0x5f, 0x81, 0xf9, 0x7f, + 0x68, 0x2a, 0xd3, 0x0e, 0x96, 0xf2, 0x2d, 0x86, 0xde, 0xae, 0x93, 0x38, 0x60, 0xdd, 0x53, 0xc5, + 0x4b, 0xf3, 0xeb, 0x6b, 0x47, 0x37, 0xd1, 0x4e, 0x1f, 0xa3, 0x0a, 0x84, 0x49, 0x0a, 0xc4, 0x2b, + 0x86, 0xdf, 0x6b, 0x81, 0xc1, 0x6f, 0x4a, 0x81, 0xbe, 0x0c, 0x8c, 0xe1, 0xd4, 0x65, 0x7f, 0xb1, + 0xbf, 0x9e, 0x0f, 0xcd, 0x25, 0x96, 0x70, 0x50, 0x15, 0xe4, 0x43, 0x7a, 0xf3, 0xf1, 0x5c, 0x95, + 0x86, 0x62, 0xfe, 0x8d, 0xcd, 0x3b, 0x92, 0xc0, 0x38, 0xfb, 0xf4, 0x2b, 0x6f, 0xac, 0x2f, 0x16, + 0x7c, 0x2f, 0x2a, 0x51, 0x0e, 0xa3, 0xbe, 0xf3, 0x82, 0x5b, 0x66, 0xe9, 0xe7, 0xd8, 0x56, 0xef, + 0xd4, 0x86, 0x34, 0x0c, 0x48, 0x7d, 0x20, 0xbf, 0xd3, 0x3b, 0xe8, 0x85, 0xb4, 0x48, 0xa1, 0x19, + 0x6c, 0x16, 0xec, 0xfe, 0x6d, 0x31, 0x8e, 0xc3, 0xe7, 0x62, 0x5a, 0xeb, 0xf2, 0x1d, 0x50, 0x6b, + 0x92, 0xcc, 0xac, 0x9d, 0x1d, 0xb5, 0xc1, 0x25, 0x85, 0xe1, 0x8b, 0x1b, 0x06, 0xc6, 0x24, 0x8c, + 0xc1, 0x34, 0xde, 0xe1, 0x41, 0x0f, 0x98, 0x5a, 0xd4, 0x83, 0x99, 0x84, 0xde, 0x85, 0xfa, 0xf5, + 0xc6, 0x77, 0x10, 0x24, 0xb4, 0x79, 0x60, 0x61, 0x95, 0xb0, 0xd3, 0x78, 0xc6, 0x61, 0xff, 0xe3, + 0xa1, 0x5b, 0x81, 0x09, 0x41, 0x29, 0x70, 0xe3, 0x8a, 0x58, 0xd0, 0x00, 0x59, 0x50, 0x37, 0x39, + 0x03, 0x71, 0x73, 0xf5, 0x08, 0x30, 0xa0, 0xc9, 0x19, 0x84, 0x01, 0x05, 0xcb, 0x67, 0xad, 0x0a, + 0x44, 0xb0, 0x71, 0xf5, 0x06, 0x88, 0x3c, 0xa0, 0x0c, 0x34, 0xb9, 0xa9, 0x5c, 0xce, 0x32, 0xfc, + 0xaa, 0xe7, 0xac, 0x9c, 0xd2, 0xb6, 0x4b, 0xaa, 0x34, 0x94, 0x86, 0xb1, 0xcb, 0xe5, 0x21, 0x2c, + 0x46, 0x3d, 0x0d, 0xd0, 0xca, 0x74, 0x59, 0xeb, 0x4f, 0x40, 0x4f, 0x33, 0xa0, 0x1d, 0xcc, 0x0f, + 0xab, 0x9e, 0xf0, 0x13, 0xb4, 0x7c, 0x0b, 0xb8, 0xb9, 0x00, 0x63, 0x1f, 0x66, 0xff, 0xe4, 0x9d, + 0x79, 0xef, 0x43, 0x97, 0x62, 0x2c, 0x12, 0x06, 0xb8, 0x0a, 0x87, 0xb7, 0x34, 0x39, 0xbf, 0x90, + 0xd2, 0xc8, 0x52, 0x0e, 0xb5, 0x3f, 0xe3, 0x76, 0xa0, 0x66, 0xef, 0x18, 0xe3, 0x30, 0x1c, 0xfb, + 0x98, 0xff, 0x3b, 0x55, 0x09, 0xf2, 0x3b, 0x5b, 0xeb, 0x9d, 0x97, 0x3c, 0x0e, 0x27, 0x74, 0x78, + 0x6b, 0x40, 0x21, 0xbb, 0x4e, 0x28, 0x1a, 0x18, 0xce, 0xad, 0x33, 0x75, 0xc0, 0x48, 0x1f, 0x4e, + 0x82, 0xd0, 0x0f, 0xc7, 0x1e, 0x8d, 0x45, 0xcd, 0xfd, 0xfd, 0x3d, 0xcb, 0x4d, 0xa3, 0xde, 0x6c, + 0x02, 0x8b, 0x1e, 0x52, 0xdf, 0x97, 0x6a, 0xbc, 0x24, 0x0c, 0xfd, 0x18, 0x08, 0x7a, 0x14, 0xa6, + 0x25, 0x37, 0x61, 0x78, 0x2b, 0x17, 0x38, 0x5e, 0x84, 0x0a, 0xd6, 0x98, 0xc7, 0xa2, 0x00, 0x13, + 0xfe, 0x6e, 0x5d, 0x0f, 0xef, 0x9b, 0x21, 0xb1, 0xb1, 0x72, 0x31, 0x3f, 0x5e, 0xcf, 0x34, 0x02, + 0xb4, 0x69, 0x54, 0x63, 0x1a, 0x8f, 0x92, 0x60, 0x18, 0x7b, 0x62, 0xb6, 0xa9, 0x07, 0x82, 0x33, + 0x0e, 0x47, 0x09, 0x7b, 0x67, 0xa6, 0x80, 0x7a, 0x7c, 0x01, 0x7b, 0x49, 0xf3, 0x8c, 0xfb, 0xa2, + 0x48, 0x4c, 0x64, 0x91, 0x08, 0xcd, 0x9b, 0xad, 0x5a, 0xce, 0x9e, 0x05, 0x22, 0x04, 0x70, 0x5d, + 0xfa, 0xf0, 0x61, 0xa4, 0x25, 0x68, 0x35, 0xa7, 0xe3, 0x99, 0xe9, 0x09, 0x74, 0x6b, 0xa9, 0xe5, + 0xbb, 0xa0, 0xa7, 0xf4, 0x9d, 0xd3, 0x75, 0x61, 0x5b, 0x1a, 0xda, 0x01, 0x78, 0x56, 0xab, 0xa4, + 0x8e, 0x18, 0x40, 0x5f, 0x0b, 0xfe, 0x6b, 0x94, 0xd5, 0x81, 0x60, 0xb1, 0xd5, 0x73, 0xbc, 0x5c, + 0x48, 0xa7, 0xb1, 0xf2, 0x18, 0xce, 0x85, 0x54, 0x53, 0x7c, 0x74, 0xb9, 0xa9, 0xab, 0xd0, 0xe0, + 0xce, 0x03, 0xe9, 0xc4, 0x72, 0x7e, 0x41, 0xc4, 0xf5, 0x15, 0xd8, 0x11, 0x07, 0xac, 0x00, 0x64, + 0x1b, 0xc5, 0x51, 0x6e, 0xc0, 0xe6, 0x8a, 0x69, 0xa4, 0xcc, 0x63, 0x10, 0xc3, 0x47, 0x27, 0x97, + 0x7d, 0x96, 0x7e, 0x81, 0x0d, 0xc1, 0x6f, 0xc7, 0x5b, 0x2f, 0x18, 0x75, 0x1d, 0x51, 0x10, 0x80, + 0x11, 0x8d, 0x95, 0xfb, 0x30, 0xba, 0x65, 0xb1, 0xe1, 0x7b, 0x49, 0x14, 0x79, 0xf0, 0xc6, 0x48, + 0xf2, 0x17, 0x7e, 0xa9, 0x95, 0x3e, 0x24, 0x4d, 0x8a, 0xb2, 0x56, 0x5d, 0x32, 0xbb, 0xaa, 0xc7, + 0x89, 0x12, 0xa3, 0xdf, 0x40, 0xe5, 0x19, 0x22, 0xd9, 0x55, 0x52, 0x3b, 0xaf, 0xd3, 0x89, 0x94, + 0x93, 0x1e, 0x70, 0x4b, 0x44, 0x5f, 0x80, 0xf5, 0x7b, 0x03, 0xa3, 0x87, 0x20, 0xd5, 0xf5, 0xde, + 0x0d, 0x93, 0x0d, 0x19, 0xce, 0xc0, 0x37, 0x8a, 0x39, 0x1e, 0x1b, 0x88, 0x1e, 0xaf, 0x01, 0x1b, + 0x1b, 0x3f, 0x06, 0x43, 0xb0, 0x23, 0x83, 0x70, 0xce, 0x2e, 0x04, 0x0c, 0xd4, 0x9d, 0xfb, 0x58, + 0xc5, 0xc8, 0x39, 0xf9, 0x1c, 0x7f, 0xd1, 0xc9, 0x0d, 0xa6, 0x62, 0x3a, 0xd1, 0x23, 0xda, 0xf7, + 0xb6, 0xca, 0x6e, 0xd6, 0xdc, 0xb0, 0x0b, 0x8c, 0x2a, 0x54, 0x41, 0x2f, 0x40, 0x4a, 0xc1, 0x5d, + 0x02, 0xb3, 0xc6, 0x5c, 0xb2, 0x2a, 0x06, 0x83, 0x2d, 0xa7, 0xba, 0x30, 0x93, 0xe7, 0xfa, 0xe9, + 0x09, 0x4c, 0xe9, 0x6b, 0x6f, 0x4a, 0xc1, 0xf9, 0xe2, 0x46, 0x56, 0x0e, 0x3d, 0xf8, 0x3f, 0xb4, + 0xa3, 0xf3, 0xfe, 0x0c, 0x23, 0x85, 0xb1, 0x73, 0x95, 0x04, 0xda, 0x22, 0x66, 0x2b, 0x52, 0x58, + 0x2b, 0xa1, 0x8a, 0x58, 0x0a, 0x3a, 0x6a, 0x5b, 0xd8, 0xf1, 0x71, 0x65, 0x5b, 0x55, 0x8c, 0x3f, + 0xa5, 0x71, 0xec, 0x8c, 0x8b, 0x69, 0x66, 0x4c, 0x3d, 0xa2, 0xca, 0x47, 0xfb, 0x80, 0xa9, 0x9e, + 0xb5, 0x93, 0x3c, 0x7e, 0x7d, 0x33, 0x15, 0x03, 0x99, 0x3b, 0xc3, 0xfd, 0x18, 0xde, 0x47, 0xdf, + 0xc4, 0x1e, 0x41, 0x43, 0x44, 0x3b, 0x8c, 0x51, 0x14, 0x4e, 0x5f, 0x4f, 0x9c, 0xe8, 0x35, 0xd0, + 0x3a, 0xe7, 0x07, 0xd2, 0x02, 0x73, 0x3b, 0x61, 0x49, 0xa0, 0xad, 0x0e, 0x7f, 0x7a, 0x7a, 0xd2, + 0x4e, 0x1a, 0x76, 0x00, 0xda, 0xff, 0x44, 0xe7, 0xe6, 0x22, 0xc2, 0xa7, 0xf7, 0xb0, 0x90, 0x67, + 0x5c, 0xe1, 0x41, 0x19, 0xce, 0xca, 0xec, 0x15, 0x70, 0x05, 0xd3, 0xb3, 0x24, 0x0b, 0x5a, 0x79, + 0xa9, 0x6d, 0x67, 0xb7, 0xf1, 0x34, 0x67, 0x38, 0x8f, 0x50, 0x10, 0x9c, 0xbf, 0x81, 0x9d, 0xf6, + 0xc0, 0xc9, 0x81, 0xb2, 0x0f, 0xf0, 0x80, 0x09, 0xd5, 0xaa, 0x83, 0x42, 0x8b, 0x4a, 0x55, 0x1f, + 0x6a, 0xac, 0x0a, 0xda, 0x5c, 0xa3, 0xd1, 0x9a, 0x11, 0x15, 0xf9, 0xb3, 0xa6, 0x32, 0x7c, 0xb3, + 0x9f, 0x35, 0x4e, 0x12, 0x02, 0x50, 0xc1, 0xd5, 0x29, 0x4e, 0x10, 0x26, 0x13, 0x60, 0x96, 0x94, + 0x03, 0x49, 0xd6, 0x2c, 0x40, 0xcf, 0xc5, 0x8b, 0x45, 0x6b, 0xea, 0x1a, 0xe8, 0xb2, 0x17, 0x29, + 0xbd, 0xf8, 0xda, 0x50, 0x35, 0xb9, 0xbd, 0xae, 0x56, 0x99, 0x92, 0x2f, 0x36, 0x49, 0x9f, 0x37, + 0x24, 0x56, 0x3b, 0x02, 0x20, 0x5c, 0xd3, 0xe8, 0xe4, 0xac, 0x62, 0x50, 0x66, 0xae, 0x57, 0x8e, + 0x8c, 0x72, 0x3f, 0x38, 0x0f, 0x66, 0x73, 0xb4, 0x08, 0x59, 0x9c, 0x64, 0x63, 0xf3, 0x19, 0xcc, + 0x00, 0x92, 0xc4, 0xad, 0xee, 0x31, 0x04, 0x55, 0xe0, 0x61, 0x11, 0xaa, 0xc1, 0xcb, 0xcb, 0x0f, + 0x97, 0xf9, 0x0e, 0x7f, 0x33, 0x9c, 0x1b, 0x90, 0x7b, 0xb0, 0x71, 0x7f, 0xd5, 0xbc, 0xcf, 0xed, + 0x2f, 0x84, 0x6d, 0x38, 0xc6, 0xa6, 0x99, 0xb0, 0xcd, 0xe5, 0x29, 0x91, 0xde, 0x2e, 0xa0, 0x07, + 0x7f, 0x7f, 0x1d, 0x4e, 0xa7, 0xf3, 0x40, 0xdc, 0xa3, 0x97, 0x9b, 0x5c, 0xcd, 0x6f, 0xd8, 0xa9, + 0xfb, 0x30, 0xf4, 0x75, 0xf2, 0x77, 0x58, 0x13, 0xa0, 0x00, 0x75, 0x9d, 0xef, 0x03, 0x87, 0x21, + 0x65, 0x6e, 0x6f, 0x42, 0xae, 0x18, 0xb6, 0x81, 0x30, 0x6c, 0x59, 0x2d, 0x58, 0xb7, 0x92, 0xf1, + 0xfe, 0x57, 0xee, 0x1d, 0x08, 0x3e, 0xfd, 0x38, 0xf3, 0x43, 0xc7, 0x55, 0x46, 0x8e, 0x87, 0x9b, + 0x81, 0x4c, 0x8b, 0xfc, 0x23, 0x1d, 0x6b, 0x62, 0x94, 0x14, 0xf8, 0x03, 0x68, 0x47, 0x6d, 0x80, + 0x79, 0xa6, 0x03, 0x7a, 0x1c, 0x9f, 0x02, 0x32, 0x40, 0x00, 0x82, 0x20, 0x20, 0x2d, 0xdb, 0x7e, + 0x9d, 0x6a, 0x99, 0x61, 0x2e, 0xa1, 0x7b, 0x34, 0xf7, 0x89, 0x86, 0xb2, 0x0d, 0x79, 0xc5, 0x0c, + 0x5b, 0x4b, 0x61, 0x12, 0xb4, 0x1e, 0xdc, 0xc4, 0x33, 0xf6, 0x03, 0x2a, 0xc0, 0x88, 0xe7, 0x37, + 0xb1, 0xc8, 0x9f, 0xca, 0x94, 0x9c, 0xfa, 0x04, 0xc0, 0x5b, 0xf2, 0x08, 0x9c, 0x67, 0x95, 0x36, + 0xcc, 0x0b, 0xa0, 0xcd, 0xa2, 0xf1, 0x9c, 0x19, 0x29, 0xa8, 0x02, 0xe4, 0x56, 0xd2, 0x8a, 0xff, + 0xc1, 0xe2, 0xb2, 0x52, 0x25, 0x25, 0x77, 0x55, 0xda, 0x23, 0xeb, 0xf4, 0xe7, 0x6d, 0x3a, 0x61, + 0x90, 0x19, 0x24, 0xbb, 0xd4, 0xed, 0x6f, 0x3f, 0x62, 0xf0, 0x4e, 0xa7, 0x4e, 0xe0, 0x32, 0x63, + 0x3b, 0xa6, 0x4e, 0x34, 0x9c, 0x5c, 0x38, 0x91, 0x33, 0x8d, 0xd1, 0x92, 0xa1, 0x01, 0x3a, 0x40, + 0x53, 0x17, 0xa8, 0xe2, 0xf3, 0xe9, 0xd5, 0xc5, 0x81, 0x69, 0x7e, 0x41, 0x42, 0xb0, 0x7f, 0x3b, + 0xbd, 0x4a, 0x4d, 0x7f, 0xbb, 0x63, 0x98, 0xf0, 0x9f, 0xb3, 0xab, 0x24, 0x1e, 0x02, 0xd6, 0x28, + 0x35, 0x6e, 0xdf, 0x00, 0x8a, 0xf2, 0xb0, 0x0d, 0x70, 0xc7, 0x19, 0xd0, 0xc7, 0x6f, 0x30, 0x9b, + 0x06, 0x9e, 0x4f, 0x53, 0x6d, 0x80, 0xcf, 0x88, 0xa5, 0xef, 0xc1, 0xc9, 0x9a, 0x40, 0x51, 0x8b, + 0xb4, 0x0b, 0xe5, 0xd8, 0x1d, 0xc8, 0xbf, 0x58, 0xf8, 0x36, 0x9c, 0x47, 0xf1, 0x5a, 0xe9, 0x7b, + 0x2f, 0x98, 0x27, 0x74, 0xbd, 0xfc, 0x8a, 0x82, 0xe4, 0x71, 0x79, 0x39, 0xde, 0x8b, 0x23, 0x01, + 0x38, 0x4d, 0xe4, 0x5f, 0xd2, 0x3e, 0xfd, 0x5d, 0xa6, 0xcc, 0x2d, 0xd1, 0xf7, 0x46, 0x07, 0x55, + 0x5f, 0x8a, 0x35, 0x87, 0xa7, 0x86, 0x11, 0x8a, 0x46, 0x71, 0x69, 0x0b, 0x34, 0x7b, 0xf9, 0xf9, + 0x78, 0x52, 0xd9, 0x66, 0x06, 0x66, 0xad, 0x4a, 0x8e, 0x19, 0xb4, 0x01, 0x49, 0xa8, 0x04, 0xee, + 0x7f, 0x69, 0x14, 0xb4, 0x71, 0x16, 0xb1, 0x3e, 0x8a, 0xef, 0xc6, 0xca, 0xc3, 0xd4, 0x0f, 0x62, + 0xfb, 0x95, 0x80, 0x19, 0x0d, 0xc8, 0xfb, 0x8e, 0x11, 0x46, 0xe3, 0x9d, 0xb6, 0x69, 0x9a, 0x3b, + 0xd0, 0xe2, 0x95, 0xc2, 0x3f, 0xd8, 0xf1, 0xaa, 0xdd, 0x7d, 0xa5, 0x4c, 0x98, 0x63, 0xcd, 0x9f, + 0xf1, 0xd3, 0x1e, 0x27, 0xe1, 0x83, 0xfd, 0xca, 0x54, 0x4c, 0xa5, 0xdd, 0x55, 0xb0, 0x0c, 0x00, + 0xf4, 0xed, 0x57, 0x68, 0xbe, 0xbf, 0xc2, 0x08, 0x4a, 0x78, 0x4b, 0xed, 0x57, 0x6a, 0x43, 0xa3, + 0x03, 0xf5, 0x7e, 0x02, 0x86, 0x16, 0xe8, 0x27, 0xa1, 0x8e, 0x5e, 0xb3, 0x2f, 0x72, 0x00, 0xba, + 0xd3, 0x76, 0xcd, 0x74, 0x96, 0xac, 0xc0, 0xf7, 0x40, 0xea, 0x3b, 0x33, 0xfb, 0x55, 0x14, 0xce, + 0x03, 0xb7, 0x50, 0x8c, 0xa7, 0xff, 0x69, 0x79, 0xff, 0x08, 0x57, 0xac, 0xb8, 0xf6, 0xab, 0xf7, + 0xad, 0x8e, 0xd2, 0x7e, 0xbb, 0xe7, 0xb4, 0x95, 0xb6, 0x82, 0x30, 0x99, 0x4d, 0x78, 0xba, 0x6b, + 0x49, 0x05, 0xf0, 0xb7, 0x3d, 0x69, 0xb5, 0xe5, 0x82, 0x66, 0xfb, 0xd7, 0xc3, 0xef, 0x30, 0xc8, + 0x0e, 0x8e, 0x02, 0x63, 0x85, 0xfe, 0x23, 0xce, 0xa0, 0xcc, 0x60, 0x8a, 0x04, 0x10, 0x83, 0x63, + 0x2a, 0xf0, 0x73, 0xa8, 0xb4, 0x4d, 0xe5, 0x90, 0x35, 0x14, 0x4d, 0xfa, 0x7c, 0x61, 0x47, 0xac, + 0xf9, 0x43, 0x0b, 0x9a, 0x02, 0xec, 0x8f, 0xf8, 0xb7, 0xf5, 0x4a, 0x79, 0x68, 0x8b, 0x77, 0xfc, + 0xbb, 0x8f, 0xdd, 0x58, 0x97, 0xbc, 0xf1, 0xa1, 0x68, 0xdb, 0x15, 0x6d, 0x77, 0x45, 0xdb, 0x6e, + 0xd6, 0x96, 0x19, 0x64, 0x60, 0x65, 0xe2, 0x26, 0xf4, 0x25, 0x86, 0xa5, 0xf4, 0x7f, 0xf8, 0x36, + 0xb6, 0x01, 0xe1, 0x87, 0xd9, 0x1e, 0xb5, 0x70, 0x17, 0xdf, 0x76, 0xe5, 0x77, 0xd8, 0xb3, 0xdd, + 0xfc, 0x1d, 0xf7, 0x70, 0xb2, 0xeb, 0xb7, 0x95, 0xce, 0xe4, 0x50, 0x2e, 0x55, 0xda, 0xf9, 0xbe, + 0xfe, 0x3f, 0xda, 0xaa, 0x84, 0x66, 0xce, 0x23, 0x98, 0x70, 0x9f, 0xbf, 0x90, 0x08, 0xbf, 0x8d, + 0x50, 0x16, 0xe8, 0x29, 0x68, 0x9c, 0xa3, 0x78, 0xe6, 0x04, 0xfd, 0x5c, 0xef, 0x24, 0x22, 0xb8, + 0x22, 0xd4, 0x4f, 0x8f, 0xff, 0xc2, 0x6c, 0xd8, 0x8c, 0x37, 0x7e, 0x92, 0x6b, 0xae, 0xc3, 0xc4, + 0xf1, 0x15, 0x28, 0x1f, 0x52, 0xde, 0x3d, 0xc1, 0x82, 0x6d, 0x7b, 0x7f, 0x8c, 0xc1, 0x21, 0x92, + 0x3a, 0xcf, 0xe1, 0x7d, 0xdb, 0xbe, 0x1f, 0x86, 0xc3, 0xf9, 0x8c, 0x09, 0x3b, 0x4b, 0xc1, 0x6f, + 0xeb, 0x80, 0x19, 0x38, 0xc5, 0x3d, 0x36, 0x5f, 0x29, 0x53, 0x07, 0x68, 0xac, 0x65, 0xc2, 0xd3, + 0x04, 0x88, 0x0f, 0xb0, 0x0a, 0x4f, 0xdc, 0xa6, 0x79, 0x85, 0xb3, 0x84, 0x59, 0x4f, 0x20, 0x26, + 0xc0, 0x2b, 0xeb, 0xdc, 0xe7, 0xa3, 0xae, 0xd6, 0xff, 0x24, 0x00, 0x40, 0x73, 0x90, 0x45, 0x02, + 0x8c, 0x18, 0x8d, 0x1d, 0xad, 0x34, 0x89, 0xa2, 0xb4, 0x90, 0xb2, 0x44, 0xb3, 0x77, 0xe1, 0x3d, + 0x8d, 0x5e, 0x3b, 0xcc, 0xc0, 0x4d, 0xec, 0x64, 0xa5, 0x04, 0x6c, 0xf8, 0x41, 0xb3, 0x65, 0xd1, + 0x7e, 0x32, 0x68, 0x59, 0xe6, 0x12, 0x74, 0x02, 0xbb, 0x35, 0x97, 0xb0, 0x3f, 0x18, 0x49, 0x61, + 0xc6, 0x77, 0x28, 0x3c, 0x87, 0x0d, 0x76, 0x1c, 0xc6, 0xe7, 0xa5, 0xed, 0x3d, 0x26, 0xea, 0x0e, + 0x38, 0xd6, 0xc7, 0x42, 0xd9, 0xc1, 0xcc, 0xc7, 0x06, 0x68, 0xe9, 0xe4, 0x3c, 0x35, 0x20, 0x76, + 0x50, 0xb1, 0xda, 0x26, 0xa6, 0x7a, 0xc0, 0xb3, 0x75, 0x2c, 0x99, 0x19, 0x26, 0x0a, 0xfe, 0x82, + 0xc3, 0x03, 0x5a, 0x07, 0x67, 0xb0, 0x58, 0x4c, 0x2e, 0x6c, 0x00, 0xf1, 0xb8, 0xde, 0x9d, 0xc2, + 0xd4, 0xbe, 0xfd, 0x0a, 0x91, 0x03, 0xd6, 0x2c, 0x05, 0x84, 0x96, 0x94, 0xbe, 0xa5, 0x8e, 0xbb, + 0x5e, 0x83, 0x31, 0x72, 0x28, 0xfd, 0xcf, 0x08, 0x15, 0x59, 0x8c, 0xfc, 0x6e, 0x11, 0xa2, 0x94, + 0x89, 0x6f, 0x10, 0xda, 0x4a, 0x6b, 0x57, 0xe9, 0xae, 0x8b, 0xef, 0x5c, 0xe0, 0x60, 0xe5, 0x64, + 0xdf, 0xe9, 0x42, 0x2b, 0xae, 0x15, 0xba, 0xcd, 0xee, 0xaf, 0xdd, 0x5c, 0x29, 0x30, 0xb6, 0x3e, + 0xda, 0x01, 0x44, 0xad, 0x61, 0x0b, 0xa4, 0xe1, 0xf4, 0x95, 0xe2, 0xc1, 0x28, 0x60, 0xd4, 0x79, + 0xd1, 0xab, 0xbe, 0xf2, 0x71, 0x66, 0x18, 0xa2, 0xad, 0xf4, 0x0b, 0x2e, 0x9c, 0x48, 0xd0, 0xe1, + 0x5a, 0xde, 0x52, 0x59, 0x7b, 0x95, 0x78, 0x6e, 0xf6, 0x98, 0xb0, 0x3c, 0x3d, 0x8b, 0x2e, 0xf5, + 0xe5, 0xaa, 0x2f, 0xc9, 0xa9, 0x5c, 0xf2, 0x28, 0xd5, 0x66, 0x4b, 0xcd, 0x8e, 0xd0, 0x45, 0x3d, + 0x78, 0x8e, 0x46, 0xec, 0x7d, 0x67, 0x5f, 0xd0, 0xf8, 0xe3, 0x28, 0x01, 0x08, 0x8b, 0x6a, 0x4c, + 0xb8, 0x6d, 0x5e, 0xff, 0x1b, 0x58, 0x02, 0x46, 0x45, 0xb0, 0x87, 0x04, 0x10, 0x32, 0x4b, 0xd6, + 0xb9, 0x7c, 0x08, 0xa0, 0xe7, 0x57, 0x4a, 0x3a, 0xc6, 0x1b, 0xea, 0x8b, 0x61, 0xfe, 0x43, 0x24, + 0x18, 0x51, 0xf7, 0xf7, 0x53, 0x5e, 0xba, 0x1c, 0xea, 0x30, 0xd7, 0x57, 0xfc, 0x6d, 0x26, 0x91, + 0x13, 0x4f, 0x9a, 0xed, 0x57, 0x25, 0x84, 0xd9, 0x51, 0xf6, 0x94, 0x5d, 0xf8, 0x7f, 0xbb, 0xa5, + 0xec, 0x55, 0x90, 0x65, 0xeb, 0x50, 0xd9, 0xbb, 0x6b, 0x75, 0x57, 0x34, 0xe1, 0xfe, 0x8a, 0x26, + 0xdc, 0x9b, 0x76, 0x14, 0xf3, 0xd7, 0xee, 0x8a, 0x3e, 0xec, 0x16, 0x35, 0xe1, 0x5d, 0x3b, 0xa7, + 0xe6, 0x5c, 0x09, 0x9a, 0x2b, 0x4a, 0xd0, 0xdc, 0xa0, 0x04, 0x51, 0xfb, 0x15, 0x1a, 0x77, 0xd7, + 0x1b, 0xcb, 0x7c, 0x52, 0x41, 0xf5, 0x19, 0xcd, 0x73, 0x72, 0x49, 0x69, 0x7e, 0x85, 0x60, 0x96, + 0x7a, 0x59, 0x47, 0x17, 0x48, 0x23, 0xed, 0xcb, 0xc9, 0xa4, 0xb2, 0xfb, 0x7a, 0x34, 0xa6, 0x94, + 0x83, 0x6a, 0x1b, 0x38, 0xe8, 0xb8, 0x66, 0x7f, 0x7a, 0x7a, 0x52, 0x99, 0x5b, 0x67, 0xe0, 0x27, + 0xf3, 0x8c, 0xf1, 0x77, 0x4c, 0x00, 0x28, 0x4e, 0x55, 0xaf, 0x4b, 0x2d, 0xd6, 0xab, 0x9f, 0x9e, + 0xb4, 0x08, 0xb3, 0x4e, 0xab, 0x25, 0xb3, 0xf2, 0x03, 0x0c, 0xf9, 0x5f, 0xcf, 0xf1, 0x23, 0x63, + 0x26, 0x0c, 0x9b, 0xff, 0x18, 0x47, 0x22, 0x04, 0xd7, 0xe0, 0x5f, 0xaf, 0x43, 0x80, 0xc8, 0x59, + 0x19, 0x0e, 0x8b, 0x2a, 0xa1, 0xc9, 0x59, 0x1b, 0xa1, 0xf9, 0xff, 0xbc, 0xfd, 0x3f, 0x88, 0xb7, + 0xab, 0x38, 0x1c, 0xf7, 0x9d, 0xb3, 0xa9, 0x20, 0xc0, 0xed, 0x79, 0x1c, 0xeb, 0x33, 0x26, 0xcf, + 0x09, 0x66, 0x03, 0x97, 0x57, 0x5a, 0x5d, 0x9c, 0x8c, 0xe3, 0xe2, 0xe1, 0x6b, 0xb8, 0x22, 0x15, + 0x02, 0x59, 0x1e, 0xc4, 0xf7, 0x1e, 0xcb, 0x4e, 0xc6, 0xe1, 0x39, 0x40, 0xfa, 0x62, 0x08, 0x96, + 0xa0, 0xd0, 0xce, 0x56, 0xd5, 0x54, 0xac, 0x83, 0xe7, 0x6e, 0x79, 0x78, 0x77, 0x6c, 0xb3, 0xf6, + 0x7c, 0x45, 0x05, 0x4b, 0xee, 0x78, 0x3d, 0xa0, 0x06, 0x0b, 0xbc, 0x89, 0xa8, 0x73, 0xdb, 0x63, + 0x70, 0x30, 0xc4, 0xfe, 0x41, 0x60, 0x48, 0x81, 0xec, 0xe7, 0x23, 0x16, 0xc7, 0x0d, 0x15, 0x8f, + 0x0f, 0x72, 0xb8, 0x8b, 0xa7, 0x8a, 0x49, 0xe1, 0xa4, 0x73, 0x15, 0x62, 0xdc, 0xcf, 0x3f, 0x08, + 0x68, 0x76, 0xce, 0x1a, 0x4d, 0x35, 0xf5, 0x35, 0x7f, 0x50, 0x58, 0x2a, 0xbf, 0x38, 0x4b, 0xc6, + 0xb9, 0x58, 0x8c, 0x4e, 0x02, 0xb3, 0x5e, 0x07, 0x8c, 0xf2, 0x7c, 0x7f, 0xa0, 0x53, 0xa9, 0x62, + 0x05, 0xce, 0x3f, 0x72, 0x7f, 0x1b, 0x36, 0x1a, 0xf0, 0xb6, 0x7d, 0xcc, 0xce, 0xa3, 0xc0, 0x94, + 0x6f, 0xfc, 0xf0, 0x86, 0x0b, 0x95, 0xf7, 0x9f, 0xc0, 0x1e, 0x4c, 0x45, 0xf1, 0x52, 0xd8, 0xe3, + 0x06, 0x14, 0x32, 0xd5, 0xbd, 0x82, 0xc5, 0xe5, 0x5a, 0x0a, 0x01, 0x0b, 0xc3, 0xbe, 0x20, 0x8f, + 0x60, 0x39, 0xf2, 0x02, 0x58, 0xfc, 0xe3, 0x22, 0x1a, 0x6c, 0x71, 0x40, 0x5e, 0x99, 0xaa, 0xf2, + 0xa2, 0xbe, 0x72, 0x0e, 0x4a, 0xee, 0xac, 0xb3, 0xe8, 0x5e, 0x21, 0x9a, 0xf7, 0x8f, 0xf7, 0xef, + 0xde, 0x02, 0x67, 0x5c, 0xd2, 0x7f, 0xcd, 0x69, 0x9c, 0xf4, 0x02, 0x23, 0x0c, 0xd8, 0x0d, 0x75, + 0x76, 0xcd, 0x7d, 0x38, 0xc1, 0x64, 0x3a, 0x39, 0xa7, 0xa9, 0x8b, 0x67, 0xd0, 0xac, 0x01, 0xba, + 0xee, 0x78, 0x8c, 0x07, 0x8a, 0x0c, 0xcb, 0xb8, 0xf7, 0x3e, 0xd0, 0x00, 0x2d, 0x98, 0x0d, 0xa3, + 0x61, 0xab, 0x78, 0x06, 0xa4, 0x40, 0xaf, 0xe9, 0x43, 0xa2, 0xeb, 0x56, 0xd7, 0x6c, 0x49, 0xed, + 0x7e, 0xd5, 0x74, 0x4b, 0x93, 0x29, 0x25, 0xad, 0xd1, 0x49, 0x8e, 0xd8, 0x9b, 0xd0, 0x89, 0x5c, + 0xc5, 0x0d, 0x69, 0xfa, 0x69, 0xd2, 0x18, 0x3c, 0x57, 0x70, 0xdc, 0x67, 0x2c, 0x4b, 0xd3, 0x7f, + 0xc4, 0x7d, 0x4c, 0xbb, 0x61, 0xce, 0x65, 0xc0, 0x99, 0x55, 0xfd, 0xf9, 0xf4, 0x5a, 0x25, 0x94, + 0xa0, 0x4d, 0x82, 0x01, 0xc4, 0xc0, 0xd5, 0xf4, 0x65, 0xca, 0xcd, 0x01, 0x46, 0xd6, 0x0b, 0x1f, + 0x58, 0xb4, 0x9f, 0xcb, 0x71, 0xb9, 0x70, 0x02, 0x20, 0x51, 0x9d, 0x44, 0xf6, 0x46, 0x51, 0xcc, + 0x8f, 0xef, 0xf1, 0x9c, 0x66, 0x53, 0xbb, 0x68, 0x7a, 0x0f, 0x54, 0xa2, 0x62, 0x72, 0xe3, 0x73, + 0xf3, 0xa2, 0x81, 0xc4, 0x72, 0xa0, 0x9d, 0x67, 0x9b, 0x9e, 0x84, 0xee, 0xa3, 0x8a, 0xd9, 0x91, + 0x5b, 0x40, 0x98, 0x0d, 0xeb, 0x6f, 0xd3, 0x5a, 0x8c, 0x3c, 0xdc, 0xdc, 0x56, 0x7c, 0x30, 0xf8, + 0x2c, 0x0c, 0x13, 0x36, 0xb4, 0xfb, 0x3c, 0x0a, 0x32, 0x30, 0xe6, 0xcf, 0xb7, 0x15, 0x40, 0x50, + 0x7b, 0xeb, 0x74, 0x24, 0x32, 0xda, 0x0c, 0xf0, 0xe8, 0x5e, 0xc5, 0xef, 0x5f, 0x6c, 0x6c, 0x83, + 0xd9, 0xb6, 0x77, 0xd5, 0x4d, 0xde, 0x5f, 0xe1, 0x67, 0x56, 0xef, 0x37, 0x36, 0x78, 0xc7, 0xcf, + 0xde, 0xd9, 0xe7, 0x58, 0xab, 0xa3, 0x27, 0xd1, 0x98, 0x59, 0xbe, 0xc0, 0x27, 0xec, 0xc3, 0xac, + 0xcf, 0x35, 0xdc, 0x74, 0xb4, 0x37, 0x9c, 0xba, 0x27, 0x49, 0xf0, 0xb2, 0x34, 0x9b, 0xea, 0xc1, + 0xe6, 0x71, 0x12, 0x4e, 0x5f, 0x4f, 0xdd, 0x6b, 0x84, 0x8c, 0x1d, 0x43, 0xd9, 0xe9, 0xa5, 0x47, + 0x03, 0x9c, 0x8a, 0xa9, 0xa6, 0xa7, 0x57, 0xfb, 0xc5, 0xc7, 0x12, 0x5f, 0xa4, 0x73, 0xe5, 0x43, + 0x96, 0x64, 0xc3, 0x21, 0x4b, 0x71, 0x46, 0x16, 0xf4, 0x4f, 0xc8, 0xcf, 0x98, 0x38, 0xc6, 0xa3, + 0x88, 0xa9, 0xf5, 0x0a, 0x8d, 0x99, 0x2b, 0x5f, 0x68, 0xce, 0x22, 0x96, 0x18, 0x48, 0xc3, 0xac, + 0xb1, 0x74, 0x28, 0x5b, 0x55, 0x31, 0x4b, 0x68, 0xbb, 0x63, 0xcc, 0x75, 0x4c, 0xde, 0xd2, 0x47, + 0x58, 0x4d, 0xb0, 0x92, 0x36, 0xdb, 0xea, 0x60, 0x3a, 0xbc, 0x01, 0x95, 0xaf, 0x59, 0xaa, 0xcd, + 0xd6, 0xa7, 0x9e, 0x23, 0x68, 0x18, 0x6b, 0xfa, 0x46, 0x88, 0x56, 0xfb, 0xfc, 0xe1, 0x40, 0xb1, + 0x25, 0xf3, 0x4f, 0x89, 0x33, 0x3d, 0x02, 0xb4, 0xf2, 0x0c, 0x48, 0x45, 0xea, 0x28, 0x87, 0x68, + 0x3e, 0xfb, 0x51, 0x78, 0x32, 0x42, 0x96, 0x40, 0xf1, 0xb6, 0xa3, 0xea, 0x53, 0xbb, 0x76, 0x4a, + 0x1c, 0x83, 0x7d, 0xcb, 0xdc, 0x70, 0xbd, 0x78, 0xe6, 0x3b, 0x8f, 0xf6, 0xe9, 0x40, 0xbd, 0x01, + 0xf2, 0xbb, 0x05, 0x83, 0x85, 0x65, 0x5e, 0xe1, 0x78, 0x6f, 0xed, 0xcd, 0xe8, 0x78, 0x1f, 0xe3, + 0x57, 0x26, 0x2f, 0x9f, 0x69, 0xc5, 0x55, 0x2f, 0x39, 0x7b, 0xa6, 0xd9, 0xcc, 0x19, 0xf3, 0x84, + 0xd5, 0xad, 0xd6, 0x50, 0x9d, 0xf2, 0xba, 0x71, 0x4f, 0xf2, 0x4c, 0x82, 0x6c, 0x2b, 0xb7, 0x9a, + 0xee, 0x8f, 0x3a, 0xd0, 0x7f, 0x39, 0x15, 0x15, 0x7b, 0xbc, 0x18, 0x37, 0x92, 0x99, 0xd3, 0x7b, + 0x46, 0x9a, 0xad, 0x2f, 0x45, 0x88, 0x88, 0xde, 0x47, 0x9b, 0x0a, 0xc9, 0xf5, 0xb2, 0x4c, 0x05, + 0xd1, 0x9f, 0x04, 0xdb, 0x4b, 0x3c, 0x06, 0x84, 0x5a, 0x79, 0x3c, 0xfa, 0xf1, 0xea, 0xf4, 0x72, + 0xd3, 0xe1, 0xe8, 0xc5, 0xf1, 0xd5, 0xd5, 0xa7, 0x0f, 0x97, 0x6f, 0x36, 0x1d, 0x8e, 0x5e, 0x7d, + 0x3c, 0x79, 0x7f, 0x0e, 0x06, 0x90, 0xfa, 0x88, 0x1a, 0x8c, 0x2d, 0x2c, 0x2a, 0x33, 0xf5, 0xa2, + 0xe7, 0x4d, 0xbd, 0x68, 0xcd, 0xd4, 0xab, 0x41, 0x99, 0x30, 0xe1, 0x98, 0x41, 0x17, 0x55, 0x1a, + 0x74, 0xd1, 0x8f, 0x19, 0x74, 0x59, 0x37, 0xdd, 0xfa, 0x9b, 0x86, 0x46, 0x5d, 0x24, 0x1b, 0x75, + 0x01, 0x33, 0xea, 0x22, 0x61, 0xd4, 0xbd, 0x3c, 0xb1, 0x04, 0x49, 0x71, 0x5c, 0xbd, 0xcb, 0x11, + 0x1d, 0x81, 0xd5, 0x3a, 0x01, 0x36, 0x1d, 0x6f, 0x47, 0x8a, 0xeb, 0xce, 0x0d, 0x79, 0xac, 0x1e, + 0x7e, 0x8e, 0x69, 0x1d, 0xb3, 0xb3, 0x4f, 0x30, 0xfe, 0xe3, 0x76, 0xe3, 0x57, 0x25, 0x52, 0x00, + 0x0f, 0x8e, 0x64, 0xf6, 0x9a, 0x3e, 0x33, 0xa9, 0x7b, 0x26, 0xec, 0x99, 0xa9, 0x34, 0xc8, 0x7f, + 0x69, 0x88, 0xcc, 0xe9, 0x96, 0x90, 0xc8, 0xd3, 0x8d, 0xca, 0xfa, 0x30, 0x02, 0x2a, 0x76, 0x02, + 0x8b, 0x61, 0x24, 0xbe, 0x31, 0xc2, 0xee, 0x1b, 0xad, 0xf9, 0x67, 0x67, 0xc2, 0xc0, 0x53, 0x78, + 0x4e, 0xab, 0x32, 0x50, 0xb3, 0xdb, 0x84, 0x85, 0x13, 0x20, 0x96, 0xe9, 0x23, 0xb2, 0xa8, 0xd3, + 0x21, 0x59, 0xba, 0x58, 0x6d, 0xcd, 0x9a, 0x19, 0xf1, 0x08, 0x4a, 0x66, 0xad, 0xac, 0x1b, 0x28, + 0x9c, 0x5d, 0xcf, 0xc2, 0x68, 0x8a, 0x5f, 0x53, 0xee, 0xbd, 0xb6, 0xdb, 0xb0, 0x1d, 0xe5, 0xd9, + 0x4e, 0x45, 0xfc, 0x57, 0xa6, 0xdb, 0x66, 0xcd, 0xb6, 0x69, 0xc2, 0x81, 0x37, 0x49, 0xe5, 0xde, + 0xf2, 0xec, 0x1f, 0x2f, 0x18, 0x2b, 0x86, 0x61, 0x98, 0x3f, 0x61, 0xf8, 0x69, 0x35, 0xf1, 0x41, + 0xe4, 0xc4, 0x1d, 0xf7, 0x3c, 0x03, 0xca, 0xe3, 0x4f, 0x5e, 0x32, 0x61, 0x67, 0x6a, 0x78, 0x1d, + 0xbc, 0x61, 0xb3, 0xd3, 0xb5, 0x34, 0x0c, 0x94, 0xd8, 0x66, 0x2f, 0x39, 0x4a, 0xf1, 0xd0, 0x4b, + 0x1a, 0x0d, 0x8e, 0xa9, 0x88, 0x7d, 0x4a, 0x11, 0x9c, 0x15, 0x0f, 0x78, 0x8e, 0xc7, 0x4b, 0xaf, + 0xd4, 0x5e, 0x36, 0x55, 0x88, 0x5c, 0x86, 0x61, 0x62, 0x69, 0xf6, 0xe9, 0xa3, 0xb8, 0xa3, 0x11, + 0x91, 0xb4, 0x93, 0xbe, 0xfc, 0x56, 0x22, 0x5b, 0xc8, 0x37, 0xc1, 0xb4, 0x17, 0x1f, 0xae, 0x50, + 0x12, 0xed, 0xf0, 0x85, 0x82, 0xd1, 0xcd, 0xf8, 0xf7, 0x9b, 0xc1, 0x89, 0xb2, 0x84, 0x8a, 0x40, + 0x12, 0x8c, 0x81, 0x05, 0xe3, 0x15, 0xb3, 0x81, 0xa5, 0x2d, 0xf2, 0x15, 0xe0, 0xbf, 0xcb, 0x32, + 0x17, 0x9f, 0x06, 0xe2, 0xeb, 0x43, 0x1a, 0x01, 0x5f, 0xc2, 0xdd, 0xa1, 0xfc, 0x10, 0xf8, 0x2f, + 0x2d, 0xd3, 0xec, 0xad, 0xe2, 0x3b, 0xd9, 0x12, 0xdf, 0xfc, 0x28, 0xf9, 0xcc, 0x7b, 0xa0, 0xae, + 0x66, 0x82, 0xf5, 0xf8, 0x93, 0xca, 0x33, 0x9b, 0x0a, 0xe4, 0x18, 0x86, 0xb3, 0x18, 0xb9, 0x9d, + 0xd4, 0x5a, 0xb8, 0x1a, 0xee, 0x54, 0x02, 0x8a, 0x64, 0xf1, 0xf9, 0xf8, 0x32, 0x72, 0x91, 0xa9, + 0x2e, 0x27, 0x70, 0xc2, 0xbc, 0x6b, 0xfb, 0x5b, 0xe6, 0x5e, 0x57, 0x11, 0xe4, 0x36, 0x79, 0x82, + 0xc9, 0xbf, 0x3d, 0x7f, 0xf0, 0xb9, 0x8e, 0xcf, 0x04, 0x2a, 0xc8, 0x57, 0xbb, 0x6b, 0x66, 0x69, + 0x98, 0x97, 0x40, 0x48, 0x4e, 0x94, 0x60, 0x46, 0xa9, 0x61, 0xa4, 0xc9, 0xca, 0xf7, 0x8e, 0x97, + 0x28, 0x5d, 0x13, 0x45, 0x59, 0x4c, 0x93, 0x73, 0xf0, 0xf6, 0x22, 0xc0, 0x55, 0xe1, 0x56, 0xdc, + 0xd7, 0x66, 0x73, 0x8b, 0x31, 0xd4, 0xc6, 0xd7, 0x86, 0x8a, 0xc3, 0x00, 0x7e, 0xbf, 0xd6, 0xeb, + 0x99, 0x9e, 0x8e, 0x28, 0xee, 0x25, 0x8a, 0x39, 0xd2, 0xa2, 0x9d, 0x34, 0x6e, 0xf1, 0x30, 0xf5, + 0x51, 0xb3, 0xcb, 0xca, 0xee, 0xaf, 0x42, 0xab, 0xa9, 0x24, 0xdd, 0x1d, 0x50, 0x56, 0xdf, 0xb8, + 0x66, 0x0a, 0x30, 0x97, 0x6a, 0x89, 0x92, 0x72, 0xb6, 0xa5, 0xa4, 0x2c, 0x90, 0x17, 0xe7, 0x0e, + 0x24, 0x14, 0x4e, 0x08, 0x85, 0xcf, 0xbd, 0x72, 0x29, 0x37, 0x7b, 0x56, 0xca, 0x25, 0xab, 0x52, + 0xae, 0x05, 0xa2, 0xbe, 0x1c, 0xed, 0x93, 0x8a, 0xf2, 0x71, 0x45, 0xf9, 0xfb, 0x6a, 0xd2, 0xbe, + 0xd8, 0x54, 0x95, 0x4a, 0xbe, 0xf7, 0x1b, 0xa5, 0x5d, 0x52, 0x2e, 0xed, 0x02, 0x90, 0x76, 0xc1, + 0x9a, 0xb4, 0x0b, 0x56, 0xa4, 0x5d, 0x04, 0xd2, 0x2e, 0xca, 0xa5, 0x5d, 0x94, 0x4a, 0xbb, 0xd0, + 0xc6, 0xab, 0x7b, 0x78, 0xa3, 0xb4, 0x11, 0xe6, 0xd2, 0x2e, 0x9b, 0xca, 0x03, 0xa6, 0xe1, 0xd2, + 0x2e, 0x59, 0x97, 0x76, 0x21, 0x49, 0x3b, 0x6d, 0x25, 0xed, 0xde, 0xfc, 0xc7, 0x64, 0xdc, 0x45, + 0x26, 0xdb, 0xde, 0xff, 0xfb, 0xe5, 0xd9, 0xb4, 0x7a, 0x67, 0x27, 0xd5, 0x55, 0xe3, 0xed, 0x48, + 0xa5, 0x8a, 0xba, 0x0a, 0xba, 0xb8, 0x52, 0x2a, 0x26, 0x54, 0xfb, 0x56, 0x0c, 0x37, 0xfe, 0x10, + 0xd7, 0x26, 0x8c, 0x6b, 0x37, 0x39, 0x2b, 0xd3, 0x30, 0xf0, 0x92, 0x30, 0xfa, 0x4a, 0xd9, 0x85, + 0x9c, 0xaf, 0xce, 0x3c, 0x09, 0xf9, 0x65, 0xbc, 0xdf, 0xed, 0x67, 0x6d, 0x1a, 0x99, 0x5d, 0xb7, + 0xa1, 0xee, 0x40, 0x63, 0xd7, 0x2d, 0xbf, 0x83, 0x55, 0x6c, 0xbd, 0xc3, 0xcf, 0x4a, 0x02, 0xa4, + 0xab, 0x5e, 0x2e, 0xf7, 0x6d, 0x49, 0xbc, 0x1d, 0x34, 0xe7, 0x76, 0xed, 0x9c, 0x9c, 0x0f, 0x34, + 0x7f, 0x75, 0x14, 0xee, 0x29, 0x13, 0x5f, 0x5c, 0x35, 0x04, 0x31, 0x1b, 0xe2, 0x3f, 0x3a, 0x81, + 0x33, 0xfb, 0xa5, 0x33, 0x32, 0xac, 0x6d, 0x37, 0xe9, 0xad, 0x5d, 0xbb, 0x25, 0xb7, 0x03, 0x6d, + 0x5e, 0x31, 0xe9, 0xbc, 0x64, 0xd2, 0x79, 0xe5, 0xa4, 0xe5, 0x35, 0x64, 0xb2, 0x21, 0xa8, 0xc5, + 0x3e, 0x59, 0x8f, 0x81, 0x7e, 0x24, 0x5c, 0x29, 0x93, 0x98, 0x32, 0x73, 0x78, 0xf2, 0x92, 0xc8, + 0x19, 0x70, 0xf2, 0x74, 0x96, 0x68, 0x78, 0x58, 0xcf, 0x8f, 0x16, 0x14, 0x9e, 0xb9, 0x8a, 0x96, + 0x29, 0xff, 0x34, 0x28, 0xfb, 0xc8, 0x74, 0x21, 0x54, 0x86, 0x1f, 0x95, 0xff, 0xbb, 0x0c, 0x06, + 0xc9, 0x22, 0x5b, 0xb8, 0xa0, 0xbf, 0x6d, 0x72, 0x6b, 0xce, 0x3e, 0xbd, 0xe4, 0x12, 0x9d, 0x7c, + 0x80, 0xc5, 0x1c, 0x53, 0xbc, 0x23, 0x33, 0x06, 0xe1, 0x39, 0xbf, 0xc1, 0x1b, 0x50, 0x3b, 0xfe, + 0x7c, 0xd8, 0xe4, 0xaf, 0x3b, 0xa7, 0x57, 0x17, 0x9d, 0x37, 0x3b, 0x49, 0x44, 0xe9, 0x4e, 0xc7, + 0x30, 0xd5, 0xc2, 0x69, 0x57, 0x35, 0x38, 0x1f, 0xbd, 0x7f, 0x27, 0x38, 0xcd, 0x4f, 0xa7, 0x27, + 0x1f, 0xcf, 0x5f, 0x0c, 0xd4, 0xc4, 0x9f, 0xfd, 0x5b, 0x91, 0x74, 0xef, 0xdd, 0x7a, 0x45, 0x58, + 0x40, 0xd1, 0xa3, 0xdc, 0xd0, 0xf4, 0xa3, 0x1d, 0xfe, 0x55, 0xbd, 0xfe, 0x11, 0x23, 0x4a, 0xf6, + 0xaf, 0xf6, 0xf0, 0x9c, 0xf4, 0x9d, 0x21, 0x88, 0xfb, 0xfe, 0x5f, 0x16, 0xa3, 0x30, 0x48, 0x9a, + 0x23, 0x67, 0xea, 0xf9, 0x8f, 0x56, 0x0c, 0xee, 0x6f, 0x33, 0xa6, 0x91, 0x37, 0xea, 0xb1, 0x7f, + 0xbb, 0xcf, 0x12, 0xff, 0xd8, 0x5e, 0xef, 0xc6, 0x19, 0xde, 0x8e, 0xd9, 0xc1, 0x7c, 0x53, 0x54, + 0x50, 0x3a, 0x32, 0x47, 0x9d, 0x1e, 0xfe, 0x8b, 0x7d, 0xb7, 0x5e, 0xd2, 0xc4, 0x7f, 0x29, 0x01, + 0x7a, 0xfa, 0x40, 0x73, 0x16, 0xd2, 0x7b, 0xaf, 0x39, 0x0d, 0xbf, 0x97, 0x95, 0xc6, 0xeb, 0x85, + 0xab, 0x05, 0xcb, 0x9b, 0xd0, 0x7d, 0x5c, 0x4c, 0xbd, 0x80, 0x27, 0x0f, 0x58, 0x9d, 0x3d, 0x73, + 0xf6, 0xb0, 0x9c, 0x44, 0x0b, 0xf0, 0xb8, 0x5c, 0x4c, 0x01, 0x08, 0x67, 0x56, 0x6b, 0xf6, 0xa0, + 0x80, 0xb2, 0xf0, 0x5c, 0x45, 0x80, 0xb8, 0xc4, 0xdb, 0xc5, 0x09, 0x70, 0xe9, 0x89, 0x13, 0x2d, + 0x04, 0xeb, 0x59, 0x23, 0x9f, 0x3e, 0xf4, 0xf0, 0xa7, 0x79, 0x1f, 0x39, 0x33, 0x0b, 0x7f, 0x7a, + 0x33, 0xd8, 0x03, 0x50, 0x44, 0x56, 0x0b, 0x06, 0x4d, 0x5f, 0x9a, 0x3e, 0x1d, 0x25, 0x56, 0x6b, + 0x17, 0x4a, 0xd6, 0x57, 0x3a, 0x1a, 0x8d, 0x7a, 0x53, 0x27, 0x1a, 0x03, 0x3c, 0x37, 0x61, 0x92, + 0x84, 0x53, 0x6b, 0x0f, 0xc0, 0xc1, 0xdb, 0xb6, 0x8b, 0x14, 0x49, 0xbb, 0xbb, 0x4b, 0xdf, 0xb9, + 0xa1, 0x7e, 0x36, 0x31, 0x13, 0x1c, 0x3d, 0x0e, 0x3e, 0x0a, 0xce, 0x6c, 0xd6, 0x0e, 0xc0, 0xdd, + 0x6a, 0xc3, 0x3c, 0xcf, 0xe1, 0x17, 0x67, 0x1d, 0xce, 0xa3, 0x18, 0x9e, 0x59, 0x7e, 0x03, 0x8d, + 0x96, 0xb3, 0x88, 0x2e, 0x0a, 0x00, 0xef, 0x4a, 0x2b, 0xe0, 0x1f, 0x95, 0xda, 0x45, 0xc8, 0xa6, + 0xa1, 0xeb, 0xf8, 0x8b, 0x59, 0x18, 0x7b, 0xec, 0x7c, 0x7f, 0x84, 0x8a, 0xb6, 0xf7, 0xbd, 0xc9, + 0x12, 0x66, 0x60, 0xd9, 0x26, 0xba, 0x22, 0xa2, 0x17, 0x43, 0xa5, 0x89, 0x98, 0x60, 0x03, 0x82, + 0x5b, 0x06, 0x05, 0xa6, 0x00, 0x1c, 0x2a, 0x7e, 0xea, 0xf1, 0xfc, 0x0f, 0xfe, 0x0c, 0xaa, 0x32, + 0x1a, 0xf9, 0xe1, 0x3d, 0x5f, 0xd2, 0x3a, 0xcc, 0x38, 0xf2, 0x5a, 0x69, 0x34, 0xbe, 0x71, 0x34, + 0x93, 0xe0, 0x7f, 0x46, 0x57, 0x17, 0xd0, 0x35, 0xc5, 0xe9, 0x8c, 0xb4, 0xa5, 0x6c, 0x49, 0xcd, + 0x08, 0xac, 0x84, 0x79, 0xcc, 0x37, 0x47, 0xaa, 0x63, 0xab, 0x2b, 0xab, 0xe4, 0x3b, 0x52, 0xd9, + 0x57, 0x54, 0x97, 0x74, 0x5f, 0x03, 0x3e, 0xdd, 0x09, 0xd6, 0x71, 0x9d, 0xbe, 0x7a, 0x19, 0x3e, + 0xc1, 0x1c, 0x67, 0xdf, 0xca, 0x15, 0x44, 0x51, 0xdc, 0x5f, 0x13, 0x4a, 0x1f, 0x04, 0xdd, 0x76, + 0x77, 0xcd, 0x6c, 0x3b, 0x9a, 0x13, 0x76, 0xb6, 0xb4, 0xc8, 0xa8, 0x6f, 0x0f, 0x09, 0x61, 0x2f, + 0x27, 0x04, 0xdc, 0xef, 0x67, 0x80, 0xfa, 0xbd, 0x58, 0x2a, 0x59, 0x94, 0xd8, 0xdd, 0xb6, 0xb1, + 0x0b, 0x96, 0x50, 0x0f, 0x53, 0x4e, 0x9a, 0xc5, 0x22, 0x26, 0x1d, 0xd0, 0x0c, 0xb5, 0x5a, 0xac, + 0x20, 0x5d, 0x0e, 0x63, 0x51, 0x99, 0x95, 0xf8, 0x62, 0x4a, 0xe9, 0x38, 0xed, 0x33, 0x62, 0x47, + 0x71, 0x25, 0x28, 0xc8, 0xa7, 0x84, 0x19, 0xcb, 0x59, 0x61, 0x13, 0xeb, 0xff, 0x5e, 0x5a, 0x58, + 0x97, 0x16, 0xfc, 0x5c, 0x9e, 0x6d, 0x76, 0x78, 0xdf, 0x8c, 0x28, 0xde, 0xa0, 0xa1, 0x4b, 0x0f, + 0x23, 0x77, 0xd5, 0x2c, 0x9e, 0x72, 0x0a, 0x47, 0x5c, 0xba, 0xca, 0xbd, 0x94, 0xe1, 0x65, 0xe4, + 0xb6, 0x8c, 0x6e, 0xfb, 0x60, 0x77, 0xbf, 0xd5, 0xed, 0xa4, 0xc0, 0x09, 0x78, 0xba, 0x5b, 0x4a, + 0x86, 0x70, 0x9e, 0xe0, 0x78, 0x96, 0x29, 0x80, 0xaa, 0xa2, 0xda, 0x25, 0x0f, 0x63, 0x3f, 0x0b, + 0x74, 0xdb, 0xe8, 0xbe, 0x04, 0x68, 0xfc, 0x84, 0x96, 0x37, 0x84, 0x2d, 0x75, 0x7c, 0x6f, 0x1c, + 0x58, 0x53, 0xcf, 0x75, 0x7d, 0xba, 0x22, 0xae, 0x4a, 0x38, 0x09, 0xe5, 0x03, 0xbb, 0xc9, 0xd0, + 0xe4, 0x79, 0xee, 0x41, 0xc8, 0x24, 0x72, 0x25, 0x0a, 0x36, 0xf1, 0xc4, 0xd2, 0xb2, 0x98, 0x8a, + 0x49, 0x3d, 0x17, 0xfc, 0xb7, 0x62, 0x17, 0x9b, 0x1a, 0x0b, 0x45, 0x95, 0xb5, 0x67, 0x96, 0xfb, + 0x8b, 0x7a, 0x94, 0xcf, 0x30, 0x6a, 0xe1, 0x7f, 0x4b, 0xfc, 0x88, 0x0f, 0x48, 0xba, 0x88, 0xa4, + 0xcd, 0x17, 0x42, 0x67, 0x70, 0x11, 0x9b, 0x53, 0x79, 0x2b, 0x2a, 0x27, 0x72, 0x36, 0x4c, 0xa5, + 0xf8, 0x59, 0x1a, 0x5c, 0xc1, 0xfc, 0x91, 0xfb, 0x95, 0x12, 0x85, 0x17, 0xb0, 0x6e, 0x6b, 0xb4, + 0xb1, 0x15, 0x21, 0x0a, 0x95, 0xc0, 0x15, 0xac, 0x13, 0x3c, 0xde, 0x4f, 0x68, 0x44, 0x65, 0x65, + 0xdc, 0x17, 0x24, 0x28, 0xd0, 0xc1, 0xf5, 0x14, 0xaa, 0xda, 0x25, 0xbb, 0x6b, 0xb0, 0x28, 0x17, + 0x19, 0xbc, 0x93, 0xc5, 0x6f, 0xca, 0x96, 0xb4, 0x31, 0x6f, 0xcc, 0x83, 0xc3, 0xc3, 0xe5, 0xdc, + 0xdf, 0xa8, 0xeb, 0x31, 0x10, 0xce, 0xff, 0x01, 0xe1, 0x26, 0xfb, 0xa6, 0x32, 0x33, 0x37, 0x84, + 0xd8, 0xee, 0xe4, 0xca, 0x13, 0x9f, 0x99, 0x76, 0x15, 0x55, 0x5c, 0x9e, 0xe1, 0x9e, 0xa1, 0x11, + 0x22, 0xd0, 0xd9, 0xd9, 0x65, 0x05, 0x20, 0xdd, 0x0b, 0x05, 0x95, 0xfa, 0x22, 0xc3, 0xcc, 0x23, + 0xc7, 0x66, 0x05, 0xa6, 0x7c, 0x2f, 0x13, 0x88, 0x87, 0x38, 0x6b, 0x97, 0x4d, 0xc2, 0xc0, 0x30, + 0x15, 0x4e, 0x2b, 0xf9, 0x0c, 0xe0, 0x76, 0x82, 0x0f, 0x0c, 0xf2, 0x94, 0x06, 0x73, 0xc6, 0x42, + 0xd1, 0x82, 0xad, 0x18, 0x70, 0x73, 0x6f, 0xb5, 0x7a, 0x82, 0xf3, 0x9a, 0x14, 0x4d, 0xcc, 0x98, + 0xdb, 0x52, 0xc6, 0x0c, 0x53, 0x45, 0xd6, 0x57, 0x56, 0x64, 0xba, 0x16, 0xd3, 0x54, 0xf2, 0x55, + 0xc5, 0x45, 0x91, 0x1d, 0x8c, 0xfc, 0xee, 0xa3, 0xa8, 0x89, 0xa8, 0x2b, 0x97, 0x36, 0xd9, 0x31, + 0xd2, 0xa2, 0xc2, 0x90, 0x49, 0x7b, 0xf4, 0x58, 0x07, 0x4e, 0x85, 0x43, 0xca, 0xac, 0x1a, 0x23, + 0xbd, 0xe1, 0xbb, 0xa8, 0x06, 0x3f, 0xd5, 0x9e, 0x3f, 0xae, 0x07, 0xab, 0x34, 0xab, 0x04, 0x64, + 0xca, 0x5a, 0x6b, 0x9a, 0x50, 0xe6, 0xb4, 0x36, 0xe2, 0x0f, 0xed, 0xae, 0x15, 0xdb, 0xcc, 0x08, + 0xc2, 0xdf, 0x0f, 0xe4, 0x46, 0xf3, 0x16, 0x26, 0x10, 0x0a, 0xf4, 0xf7, 0x9a, 0x3e, 0x9b, 0x6d, + 0x82, 0x14, 0xe5, 0x7f, 0xe4, 0x64, 0x65, 0x3a, 0xbb, 0xdc, 0xce, 0xce, 0xf9, 0x6d, 0xcb, 0x7d, + 0xc8, 0x78, 0xc5, 0xcc, 0xe4, 0x19, 0x3a, 0x19, 0xc8, 0x16, 0x37, 0xe1, 0x8a, 0x6e, 0x4f, 0x2b, + 0x24, 0x09, 0x51, 0x7c, 0x2d, 0xae, 0x1d, 0x6f, 0x63, 0x55, 0x50, 0x74, 0xda, 0x30, 0xf3, 0x54, + 0x04, 0x8c, 0xbb, 0x66, 0xa5, 0x0b, 0x91, 0x32, 0x1c, 0x97, 0x7f, 0x55, 0x36, 0x0c, 0x77, 0x44, + 0x4a, 0x77, 0x7f, 0xd5, 0x82, 0x4c, 0x59, 0x79, 0x69, 0x60, 0x34, 0x2a, 0x93, 0x83, 0x9c, 0x6d, + 0xd2, 0x34, 0x70, 0x62, 0xa4, 0xe9, 0xe9, 0xfc, 0x09, 0x4d, 0x39, 0xfe, 0x84, 0x02, 0x31, 0x1b, + 0x0c, 0x30, 0xa9, 0xec, 0xae, 0x49, 0x85, 0xac, 0xb4, 0x1c, 0x05, 0x72, 0xce, 0x7a, 0x05, 0xe3, + 0x17, 0xd0, 0xff, 0x6d, 0x1e, 0x27, 0xde, 0xe8, 0x31, 0xb5, 0xfd, 0x2d, 0x26, 0xc1, 0x9a, 0x37, + 0x34, 0xb9, 0xa7, 0x34, 0x40, 0x4e, 0x9c, 0x4f, 0x83, 0xe6, 0xd8, 0x99, 0x09, 0x69, 0x24, 0x27, + 0xe5, 0xff, 0x1b, 0x87, 0x5f, 0xbc, 0x60, 0x90, 0xed, 0xd4, 0x2b, 0x17, 0x6c, 0xcf, 0x98, 0xac, + 0xa5, 0xeb, 0x49, 0xb7, 0xe3, 0x00, 0x00, 0x8c, 0xef, 0xc6, 0x8b, 0x0d, 0x88, 0xc7, 0xcd, 0xb5, + 0x26, 0xa8, 0x54, 0x16, 0xab, 0x76, 0xd7, 0x33, 0xb2, 0x2e, 0x25, 0xa9, 0x94, 0x30, 0xf8, 0x28, + 0xc4, 0xf7, 0x84, 0xb6, 0xc5, 0xa7, 0x1f, 0x1a, 0x18, 0x57, 0x50, 0x22, 0xdf, 0xb3, 0x79, 0x9e, + 0x53, 0xe6, 0x2b, 0xeb, 0xea, 0x23, 0x06, 0x7e, 0x70, 0x6d, 0xd3, 0x66, 0x2b, 0x35, 0x38, 0x38, + 0x47, 0xa1, 0xec, 0x28, 0x5a, 0x20, 0xe8, 0xcc, 0x70, 0x2b, 0xa3, 0x5f, 0x8e, 0x6a, 0x31, 0x32, + 0x5b, 0x91, 0x4b, 0x87, 0x61, 0xc4, 0x4e, 0x63, 0xd6, 0xd5, 0x1a, 0x3e, 0xd6, 0xbc, 0x29, 0x7e, + 0xf0, 0xc6, 0x09, 0x12, 0x69, 0x15, 0x02, 0x9d, 0xab, 0x05, 0x38, 0x1d, 0x29, 0xd8, 0x37, 0x15, + 0x00, 0x08, 0xb4, 0xfc, 0xe9, 0xfd, 0xd5, 0xcf, 0x8b, 0x75, 0xbc, 0xfe, 0xa9, 0x32, 0x3e, 0xbb, + 0x90, 0x64, 0xe2, 0x8a, 0x9a, 0xfa, 0x5f, 0x53, 0xea, 0x7a, 0x8e, 0x02, 0xed, 0x28, 0x7e, 0x61, + 0x27, 0x70, 0x15, 0x2d, 0xf7, 0x57, 0xf7, 0x30, 0x10, 0xa0, 0x2f, 0x64, 0xeb, 0xa2, 0x20, 0x54, + 0x96, 0x47, 0x3b, 0xcc, 0x96, 0xea, 0x1f, 0xed, 0xa0, 0x2c, 0xea, 0x1f, 0xa1, 0xf4, 0x63, 0x97, + 0x4f, 0xfa, 0x47, 0x73, 0x1f, 0x2f, 0x36, 0xe0, 0x95, 0x93, 0x34, 0x22, 0xd8, 0x4f, 0x0f, 0xd2, + 0xf1, 0x2a, 0x43, 0x56, 0x29, 0xe2, 0x73, 0x7d, 0x76, 0x4c, 0x36, 0x82, 0x39, 0x0a, 0xb5, 0x69, + 0xa0, 0xac, 0xff, 0x96, 0xfa, 0xb3, 0x42, 0x4d, 0x7a, 0x4c, 0x27, 0x12, 0xeb, 0x78, 0x00, 0xbe, + 0xcf, 0xc2, 0x5f, 0x59, 0x3b, 0x51, 0x95, 0x83, 0xaf, 0xf6, 0x0b, 0x63, 0xe4, 0xa9, 0x51, 0xc5, + 0x51, 0xde, 0x61, 0x79, 0xa1, 0x65, 0x7a, 0x9a, 0xa8, 0xa4, 0xb6, 0x89, 0x9d, 0x7f, 0x87, 0x44, + 0x8c, 0xb9, 0x83, 0x2b, 0xe6, 0x37, 0x32, 0x26, 0x51, 0xff, 0x88, 0x6f, 0x0a, 0xbf, 0x89, 0x83, + 0x23, 0x48, 0x89, 0x96, 0xf2, 0x6d, 0x1f, 0x51, 0x95, 0x95, 0xed, 0xac, 0xf6, 0x2b, 0xe4, 0xf7, + 0xa6, 0x60, 0x32, 0x5d, 0xa3, 0x70, 0x60, 0x57, 0x5b, 0x8a, 0x9c, 0xd5, 0x42, 0x53, 0xa1, 0x2a, + 0xd4, 0xfe, 0x35, 0x8d, 0xa6, 0x98, 0xe7, 0xbd, 0x02, 0x81, 0x9c, 0xa1, 0x5b, 0xec, 0x88, 0x3b, + 0xaa, 0x64, 0x96, 0x86, 0x2a, 0xdf, 0x2c, 0x52, 0x73, 0x93, 0x1e, 0xca, 0x99, 0xdb, 0x99, 0xd6, + 0x8c, 0xc2, 0x68, 0xfa, 0x9a, 0xd7, 0xaa, 0xa0, 0x34, 0xa9, 0xef, 0xb3, 0xf3, 0x01, 0xa8, 0x70, + 0xfc, 0x98, 0xaa, 0x0a, 0x92, 0xa6, 0xc8, 0x40, 0xb7, 0xd5, 0x70, 0x34, 0x4a, 0x4b, 0xa6, 0x33, + 0x4c, 0x31, 0x15, 0x45, 0xe9, 0x49, 0x0a, 0x87, 0x50, 0x4e, 0xe4, 0xeb, 0x2b, 0x47, 0x9c, 0x5d, + 0xd2, 0xf9, 0x6e, 0x92, 0x40, 0x34, 0xe3, 0x19, 0x79, 0xfd, 0x2b, 0x1a, 0xb8, 0x47, 0x3b, 0x82, + 0x9b, 0x9f, 0x81, 0x99, 0x47, 0x40, 0x19, 0x80, 0x60, 0x20, 0xf0, 0x71, 0xaa, 0x8f, 0x3a, 0x14, + 0x71, 0xd2, 0x21, 0x7a, 0xe0, 0x76, 0x2a, 0x47, 0xcc, 0x15, 0x53, 0x60, 0xd5, 0x9b, 0x7a, 0xf6, + 0x8f, 0xb3, 0x67, 0xa0, 0x18, 0xec, 0x51, 0xbc, 0xc7, 0x33, 0xc3, 0xc4, 0xfc, 0x7c, 0x33, 0xd2, + 0x34, 0x61, 0xbc, 0x53, 0x14, 0xd1, 0xfe, 0xda, 0x3d, 0x31, 0x6c, 0x2a, 0xa5, 0x74, 0x6f, 0x24, + 0x8d, 0xb5, 0xc4, 0xea, 0x72, 0xea, 0xc8, 0x3f, 0xf0, 0x56, 0x39, 0xcf, 0x1f, 0x46, 0x22, 0x0c, + 0x42, 0x81, 0x7b, 0x96, 0x30, 0x5c, 0xdc, 0x6f, 0x7e, 0xac, 0xa9, 0x4c, 0xe7, 0x7e, 0xe2, 0x01, + 0x51, 0x00, 0x5e, 0xc5, 0xd3, 0x86, 0xcd, 0x4f, 0x33, 0xa3, 0xfa, 0x97, 0xfc, 0x21, 0x23, 0x80, + 0x6a, 0x72, 0xc9, 0x0e, 0x38, 0x14, 0xfe, 0xd9, 0x23, 0xf5, 0x35, 0x2b, 0xc9, 0xef, 0x61, 0xa8, + 0xfd, 0xc6, 0xf3, 0xc3, 0xc8, 0xe9, 0x4b, 0xe9, 0x40, 0x73, 0xf1, 0x79, 0x1c, 0x56, 0x28, 0x0d, + 0x22, 0x63, 0x87, 0x93, 0x0d, 0xc7, 0x04, 0x8e, 0x23, 0x27, 0x59, 0xf7, 0xcd, 0x9f, 0x32, 0xba, + 0xe0, 0xf1, 0x83, 0x0c, 0xeb, 0x3c, 0xae, 0xb0, 0xde, 0x4f, 0x65, 0x77, 0xfb, 0xd5, 0x96, 0x69, + 0x66, 0xc8, 0xdc, 0x35, 0x39, 0xfd, 0xf0, 0x11, 0xca, 0xc8, 0x47, 0xd8, 0x35, 0xc5, 0x3d, 0x55, + 0x4b, 0xdb, 0xdc, 0x54, 0xef, 0x7d, 0x4a, 0x41, 0x6b, 0xab, 0x13, 0x00, 0xe2, 0x21, 0x79, 0x7f, + 0xa7, 0x64, 0x7a, 0x76, 0x37, 0xac, 0x9a, 0xb8, 0x8b, 0x39, 0xfb, 0xc5, 0xb9, 0x33, 0x7a, 0x5b, + 0xbb, 0x0c, 0xb7, 0x36, 0x90, 0xb8, 0xd0, 0xf0, 0x0c, 0x8f, 0x14, 0x72, 0xfe, 0xab, 0x38, 0x44, + 0xe4, 0x82, 0xf1, 0x04, 0x97, 0x8a, 0x89, 0xfe, 0x13, 0x4c, 0xe2, 0x0c, 0x87, 0x74, 0x06, 0xd2, + 0x13, 0x3f, 0x11, 0x97, 0xb3, 0xcc, 0xe8, 0x5e, 0x7d, 0x86, 0x4c, 0x31, 0xb5, 0x0f, 0xc4, 0x23, + 0x9e, 0xad, 0x28, 0x48, 0xb1, 0xdb, 0x12, 0x66, 0x9e, 0xd1, 0xf3, 0x52, 0xd2, 0xe4, 0x3d, 0xb7, + 0x26, 0x4e, 0xf9, 0xf7, 0x46, 0x52, 0x84, 0x79, 0x82, 0x72, 0xa6, 0xd7, 0x31, 0x88, 0x2c, 0x6f, + 0xa3, 0x5c, 0x9e, 0x1a, 0xec, 0x65, 0x55, 0xe9, 0x6e, 0x9e, 0xbb, 0xd0, 0xc0, 0x1b, 0x89, 0xef, + 0x6b, 0xad, 0x5d, 0x9d, 0x55, 0xf3, 0xc8, 0xf6, 0x86, 0x0d, 0x5b, 0xa3, 0xf8, 0xfe, 0xc7, 0x18, + 0x1c, 0x5c, 0x31, 0x1a, 0xdf, 0xce, 0x0c, 0x7e, 0x9e, 0xeb, 0xf9, 0xa3, 0x2a, 0x51, 0xb6, 0x2f, + 0xb6, 0x07, 0xe7, 0x42, 0xe4, 0x99, 0x16, 0x41, 0xe2, 0x44, 0x95, 0xe6, 0xa0, 0xa6, 0x6c, 0x2a, + 0x67, 0xa4, 0xfe, 0x5e, 0x28, 0x8b, 0xbc, 0x91, 0x25, 0xab, 0xcb, 0xb4, 0xad, 0xac, 0x86, 0x8b, + 0xd0, 0x0e, 0x04, 0xea, 0x00, 0xbf, 0x08, 0xcf, 0x00, 0x95, 0x30, 0x52, 0x52, 0x98, 0xaa, 0x76, + 0x27, 0x63, 0x28, 0x41, 0xf4, 0x7c, 0x5d, 0x22, 0x59, 0x5b, 0x62, 0x01, 0x05, 0x3c, 0x00, 0xbe, + 0xca, 0xb5, 0xfc, 0xf3, 0xfe, 0x9b, 0xac, 0x64, 0x5d, 0xd6, 0x3f, 0x3f, 0x9e, 0x9c, 0x1d, 0x9e, + 0x9a, 0x8e, 0x29, 0x4f, 0x95, 0x88, 0x26, 0x6e, 0x23, 0xef, 0xe0, 0x3d, 0xf5, 0xfe, 0xff, 0x05, + 0x55, 0x46, 0x20, 0x1b, 0x12, 0x8e, 0x00, 0x00 }; #endif //__embedded_h \ No newline at end of file diff --git a/esp3d/src/modules/http/favicon.h b/esp3d/src/modules/http/favicon.h new file mode 100644 index 00000000..b6231b34 --- /dev/null +++ b/esp3d/src/modules/http/favicon.h @@ -0,0 +1,48 @@ +/* + favicon.h - ESP3D data file + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + This code 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 code 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 code; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __favicon_h +#define __favicon_h +#define favicon_size 345 +const unsigned char favicon[345] PROGMEM = { + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xb5, 0x94, 0x31, 0x4b, 0xc3, 0x50, + 0x14, 0x85, 0x4f, 0x63, 0xc1, 0x5a, 0x0b, 0x06, 0x91, 0x4e, 0x52, 0x3a, 0x44, 0x10, 0x27, 0x31, + 0x45, 0xdc, 0x74, 0xea, 0xef, 0x90, 0x4c, 0x22, 0x0e, 0x22, 0xba, 0x0b, 0x4e, 0xc5, 0xb9, 0x3f, + 0xc0, 0x5f, 0xd0, 0x31, 0xab, 0x8e, 0x0e, 0x4e, 0x52, 0xba, 0x0a, 0x0e, 0xe2, 0x26, 0x48, 0x87, + 0x52, 0xa5, 0x9e, 0x4b, 0x4f, 0xf0, 0x52, 0x13, 0xa8, 0x82, 0xaf, 0x7c, 0xcd, 0xcb, 0xb9, 0xe7, + 0xde, 0x77, 0xfb, 0x5e, 0x52, 0xa0, 0xc4, 0x4f, 0x18, 0x82, 0xdf, 0x4d, 0x1c, 0x95, 0x81, 0x3a, + 0x80, 0x4d, 0x42, 0x89, 0xca, 0x54, 0xff, 0xaf, 0xf1, 0x7e, 0xb1, 0x3c, 0x31, 0xf2, 0xe6, 0xf3, + 0xfa, 0x6c, 0x78, 0x5f, 0x76, 0x8d, 0xe3, 0xf8, 0xc0, 0xc8, 0x8b, 0xf9, 0x3a, 0x45, 0x75, 0x55, + 0x63, 0x4c, 0x56, 0xf3, 0x7a, 0xf3, 0xda, 0x6c, 0xcf, 0xca, 0xbd, 0x91, 0x16, 0xfc, 0x66, 0x7d, + 0xe6, 0x3d, 0x3b, 0x3d, 0xe0, 0x7d, 0x52, 0xd4, 0xe7, 0xec, 0xa0, 0x77, 0x97, 0x8c, 0x88, 0xd5, + 0x79, 0x15, 0x13, 0x69, 0x7b, 0x45, 0xe7, 0xc0, 0x58, 0x44, 0xba, 0xa4, 0x41, 0x5a, 0x24, 0x25, + 0x43, 0x91, 0x4a, 0x6b, 0xc8, 0x13, 0xe5, 0xe4, 0x27, 0x6e, 0xcd, 0x43, 0x4a, 0x15, 0x17, 0xae, + 0x98, 0xe6, 0x7a, 0x49, 0x5c, 0x5e, 0x95, 0xb4, 0x39, 0x2d, 0xf3, 0xda, 0x21, 0x9f, 0xf2, 0xd8, + 0xba, 0x0f, 0x62, 0x28, 0xcd, 0x62, 0x1d, 0x79, 0xdb, 0xca, 0x3d, 0x57, 0xac, 0x47, 0x42, 0xb2, + 0x63, 0xfb, 0xee, 0xd6, 0xca, 0x7a, 0x32, 0x6d, 0x5b, 0x9e, 0x9e, 0x74, 0xcb, 0x5d, 0x27, 0x7d, + 0xdd, 0xbf, 0x90, 0x53, 0xb2, 0xa6, 0xde, 0x6a, 0x86, 0xe6, 0x75, 0x72, 0xe6, 0xea, 0x3e, 0x5a, + 0xae, 0xf3, 0x75, 0xf5, 0xac, 0x64, 0x7d, 0xf6, 0xb5, 0x6f, 0xa9, 0xe6, 0xd9, 0xef, 0x1a, 0xcb, + 0x5b, 0x2b, 0x38, 0x83, 0x6b, 0x32, 0x70, 0xfe, 0xac, 0xde, 0x40, 0xb1, 0x1f, 0x7b, 0x5f, 0x70, + 0x9e, 0xb6, 0x37, 0x4d, 0x51, 0x9d, 0x27, 0xe7, 0x2f, 0xc3, 0xde, 0xbc, 0x8d, 0x7b, 0xa0, 0x75, + 0x0c, 0x44, 0x5c, 0xe5, 0x64, 0x8b, 0xff, 0x19, 0x4b, 0xc0, 0xdb, 0x0a, 0x70, 0xbb, 0x00, 0xdc, + 0x5d, 0x7d, 0x7b, 0x03, 0xbe, 0x89, 0x97, 0x25, 0xe0, 0x69, 0x11, 0xf8, 0xd8, 0x9f, 0xe6, 0x7e, + 0x01, 0xbf, 0xe1, 0x18, 0x97, 0x7e, 0x04, 0x00, 0x00 +}; +#endif //__favicon_h \ No newline at end of file diff --git a/esp3d/src/modules/http/handles/handle-filenotfound.cpp b/esp3d/src/modules/http/handles/handle-filenotfound.cpp index b3cbfb97..4d690515 100644 --- a/esp3d/src/modules/http/handles/handle-filenotfound.cpp +++ b/esp3d/src/modules/http/handles/handle-filenotfound.cpp @@ -31,6 +31,7 @@ #if defined(SD_DEVICE) #include "../../filesystem/esp_sd.h" #endif //SD_DEVICE +#include "../favicon.h" #if defined(ESP3DLIB_ENV) && COMMUNICATION_PROTOCOL == SOCKET_SERIAL #include "../../serial2socket/serial2socket.h" @@ -60,6 +61,11 @@ void HTTP_Server:: handle_not_found() } return; } + if (path=="favicon.ico" || path=="/favicon.ico") { + _webserver->sendHeader("Content-Encoding", "gzip"); + _webserver->send_P(200,"image/x-icon",(const char *)favicon,favicon_size); + return; + } #endif //#if defined (FILESYSTEM_FEATURE) #if defined (SD_DEVICE) diff --git a/esp3d/src/modules/http/handles/handle-root.cpp b/esp3d/src/modules/http/handles/handle-root.cpp index 7fd87139..09e89412 100644 --- a/esp3d/src/modules/http/handles/handle-root.cpp +++ b/esp3d/src/modules/http/handles/handle-root.cpp @@ -32,7 +32,15 @@ //Root of Webserver///////////////////////////////////////////////////// void HTTP_Server::handle_root() { - String path = "/index.html"; + String path = ESP3D_HOST_PATH; + //Some sanity check + if (path[0]!='/') { + path ="/" + path; + } + if (path[path.length()-1]!='/') { + path = path + "/"; + } + path += "index.html"; String contentType = getContentType(path.c_str()); String pathWithGz = path + ".gz"; //if have a index.html or gzip version this is default root page diff --git a/esp3d/src/modules/http/handles/upload-SD-files.cpp b/esp3d/src/modules/http/handles/upload-SD-files.cpp index c7d3c701..00a6ab35 100644 --- a/esp3d/src/modules/http/handles/upload-SD-files.cpp +++ b/esp3d/src/modules/http/handles/upload-SD-files.cpp @@ -99,6 +99,35 @@ void HTTP_Server::SDFileupload () if (ESP_SD::exists (filename.c_str()) ) { ESP_SD::remove (filename.c_str()); } + String path = _webserver->arg ("path"); + if (path[0] != '/') { + path = "/" + path; + } + if (path[path.length()-1] != '/') { + path = path + "/"; + } + if (_webserver->hasArg("createPath") && path.length() > 1) { + if (_webserver->arg("createPath")== "true") { + int pos = path.indexOf('/',1); + while (pos != -1) { + String currentPath = path.substring(0, pos); + if (!ESP_SD::exists (currentPath.c_str()) ) { + if ( !ESP_SD::mkdir (currentPath.c_str()) ) { + pushError(ESP_ERROR_FILE_CREATION, "Failed to create path", 500); + _upload_status=UPLOAD_STATUS_FAILED; + break; + } + } + if (pos+1 >= path.length()-1) { + pos=-1; + break; + } else { + pos = path.indexOf('/',pos+1); + } + + } + } + } if (fsUploadFile.isOpen() ) { fsUploadFile.close(); } diff --git a/esp3d/src/modules/http/handles/upload-files.cpp b/esp3d/src/modules/http/handles/upload-files.cpp index 6e573ce8..7a147503 100644 --- a/esp3d/src/modules/http/handles/upload-files.cpp +++ b/esp3d/src/modules/http/handles/upload-files.cpp @@ -85,6 +85,35 @@ void HTTP_Server::FSFileupload () if (ESP_FileSystem::exists (filename.c_str()) ) { ESP_FileSystem::remove (filename.c_str()); } + String path = _webserver->arg ("path"); + if (path[0] != '/') { + path = "/" + path; + } + if (path[path.length()-1] != '/') { + path = path + "/"; + } + if (_webserver->hasArg("createPath") && path.length() > 1) { + if (_webserver->arg("createPath")== "true") { + int pos = path.indexOf('/',1); + while (pos != -1) { + String currentPath = path.substring(0, pos); + if (!ESP_FileSystem::exists (currentPath.c_str()) ) { + if ( !ESP_FileSystem::mkdir (currentPath.c_str()) ) { + pushError(ESP_ERROR_FILE_CREATION, "Failed to create path", 500); + _upload_status=UPLOAD_STATUS_FAILED; + break; + } + } + if (pos+1 >= path.length()-1) { + pos=-1; + break; + } else { + pos = path.indexOf('/',pos+1); + } + + } + } + } if (fsUploadFile.isOpen() ) { fsUploadFile.close(); } diff --git a/esp3d/src/modules/websocket/websocket_server.cpp b/esp3d/src/modules/websocket/websocket_server.cpp index c055e97e..b8a866e8 100644 --- a/esp3d/src/modules/websocket/websocket_server.cpp +++ b/esp3d/src/modules/websocket/websocket_server.cpp @@ -30,10 +30,9 @@ #include "../../core/esp3doutput.h" #include "../../core/commands.h" #include "../authentication/authentication_service.h" - -WebSocket_Server websocket_terminal_server; +WebSocket_Server websocket_terminal_server("webui-v3"); #if defined(WS_DATA_FEATURE) -WebSocket_Server websocket_data_server; +WebSocket_Server websocket_data_server(); #endif //WS_DATA_FEATURE void WebSocket_Server::pushMSG (const char * data) { @@ -79,7 +78,7 @@ void handle_Websocket_Server_Event(uint8_t num, uint8_t type, uint8_t * payload, log_esp3d("[%u] Disconnected! port %d", num,websocket_data_server.port()); break; case WStype_CONNECTED: { - log_esp3d("[%u] Connected! port %d", num,websocket_data_server.port()); + log_esp3d("[%u] Connected! port %d, %s", num,websocket_data_server.port(), payload); } break; case WStype_TEXT: @@ -108,6 +107,7 @@ void handle_Websocket_Terminal_Event(uint8_t num, uint8_t type, uint8_t * payloa log_esp3d("[%u] Socket Disconnected port %d!", num,websocket_terminal_server.port()); break; case WStype_CONNECTED: { + log_esp3d("[%u] Connected! port %d, %s", num,websocket_terminal_server.port(), (const char *)payload); msg = "currentID:" + String(num); // send message to client websocket_terminal_server.set_currentID(num); @@ -152,22 +152,22 @@ int WebSocket_Server::availableForWrite() { return TXBUFFERSIZE -_TXbufferSize; } -WebSocket_Server::WebSocket_Server() +WebSocket_Server::WebSocket_Server(const char * protocol ) { _websocket_server = nullptr; _started = false; _port = 0; _current_id = 0; - _isdebug = false; _RXbuffer = nullptr; _RXbufferSize = 0; + _protocol = protocol; } WebSocket_Server::~WebSocket_Server() { end(); } -bool WebSocket_Server::begin(uint16_t port, bool debug) +bool WebSocket_Server::begin(uint16_t port) { end(); if(port == 0) { @@ -178,8 +178,7 @@ bool WebSocket_Server::begin(uint16_t port, bool debug) return true; } } - _isdebug = debug; - _websocket_server = new WebSocketsServer(_port); + _websocket_server = new WebSocketsServer(_port,"",_protocol.c_str()); if (_websocket_server) { _websocket_server->begin(); #if defined (HTTP_FEATURE) //terminal websocket for HTTP @@ -188,7 +187,7 @@ bool WebSocket_Server::begin(uint16_t port, bool debug) } #endif //HTTP_FEATURE #if defined (WS_DATA_FEATURE) //terminal websocket for HTTP - if((port != 0) && !_isdebug) { + if((port != 0) && _protocol!="debug") { _websocket_server->onEvent(handle_Websocket_Server_Event); _RXbuffer= (uint8_t *)malloc(RXBUFFERSIZE +1); if (!_RXbuffer) { @@ -207,7 +206,6 @@ void WebSocket_Server::end() { _current_id = 0; _TXbufferSize = 0; - _isdebug = false; if(_RXbuffer) { free(_RXbuffer); _RXbuffer = nullptr; @@ -263,9 +261,6 @@ size_t WebSocket_Server::write(const uint8_t *buffer, size_t size) _TXbuffer[_TXbufferSize] = buffer[i]; _TXbufferSize++; } - //if(!_isdebug) { - // log_esp3d("[SOCKET]buffer size %d",_TXbufferSize); - //} return size; } return 0; @@ -352,9 +347,7 @@ void WebSocket_Server::flushTXbuffer(void) { if (_started) { if ((_TXbufferSize > 0) && (_websocket_server->connectedClients() > 0 )) { - //if(!_isdebug) { - // log_esp3d("[SOCKET]flush data, buffer size %d",_TXbufferSize); - //} + if (_websocket_server) { _websocket_server->broadcastBIN(_TXbuffer,_TXbufferSize); log_esp3d("WS Broadcast bin port %d: %d bytes", port(), _TXbufferSize); diff --git a/esp3d/src/modules/websocket/websocket_server.h b/esp3d/src/modules/websocket/websocket_server.h index 2604df68..ddfd1660 100644 --- a/esp3d/src/modules/websocket/websocket_server.h +++ b/esp3d/src/modules/websocket/websocket_server.h @@ -30,7 +30,7 @@ class WebSocketsServer; class WebSocket_Server: public Print { public: - WebSocket_Server(); + WebSocket_Server(const char* protocol="arduino"); ~WebSocket_Server(); size_t write(uint8_t c); size_t write(const uint8_t *buffer, size_t size); @@ -55,7 +55,7 @@ public: { return write((uint8_t) n); } - bool begin(uint16_t port=0, bool debug=false); + bool begin(uint16_t port=0); uint16_t port() { return _port; @@ -77,14 +77,21 @@ public: return _started; } void push2RXbuffer(uint8_t * sbuf, size_t len); + const char * getProtocol() + { + return _protocol.c_str(); + } + uint16_t getPort() + { + return _port; + } private: bool _started; uint16_t _port; - bool _isdebug; - bool _isdata; uint32_t _lastTXflush; uint32_t _lastRXflush; WebSocketsServer * _websocket_server; + String _protocol; uint8_t _TXbuffer[TXBUFFERSIZE]; uint16_t _TXbufferSize; uint8_t _current_id; diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp b/libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp index fc94d3f0..132e0576 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp +++ b/libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp @@ -42,7 +42,7 @@ extern "C" { #include #if ESP_IDF_VERSION_MAJOR >= 4 -#include +#include #else #include #endif @@ -62,7 +62,8 @@ extern "C" { * @param reason ptr to the disconnect reason message * @param reasonLen length of the disconnect reason message */ -void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * reason, size_t reasonLen) { +void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * reason, size_t reasonLen) +{ DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] clientDisconnect code: %u\n", client->num, code); if(client->status == WSC_CONNECTED && code) { if(reason) { @@ -86,7 +87,8 @@ void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * rea * @param maskkey uint8_t[4] key used for payload * @param fin bool can be used to send data in more then one frame (set fin on the last frame) */ -uint8_t WebSockets::createHeader(uint8_t * headerPtr, WSopcode_t opcode, size_t length, bool mask, uint8_t maskKey[4], bool fin) { +uint8_t WebSockets::createHeader(uint8_t * headerPtr, WSopcode_t opcode, size_t length, bool mask, uint8_t maskKey[4], bool fin) +{ uint8_t headerSize; // calculate header Size if(length < 126) { @@ -170,7 +172,8 @@ uint8_t WebSockets::createHeader(uint8_t * headerPtr, WSopcode_t opcode, size_t * @param fin bool can be used to send data in more then one frame (set fin on the last frame) * @return true if ok */ -bool WebSockets::sendFrameHeader(WSclient_t * client, WSopcode_t opcode, size_t length, bool fin) { +bool WebSockets::sendFrameHeader(WSclient_t * client, WSopcode_t opcode, size_t length, bool fin) +{ uint8_t maskKey[4] = { 0x00, 0x00, 0x00, 0x00 }; uint8_t buffer[WEBSOCKETS_MAX_HEADER_SIZE] = { 0 }; @@ -193,7 +196,8 @@ bool WebSockets::sendFrameHeader(WSclient_t * client, WSopcode_t opcode, size_t * @param headerToPayload bool set true if the payload has reserved 14 Byte at the beginning to dynamically add the Header (payload neet to be in RAM!) * @return true if ok */ -bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool fin, bool headerToPayload) { +bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool fin, bool headerToPayload) +{ if(client->tcp && !client->tcp->connected()) { DEBUG_WEBSOCKETS("[WS][%d][sendFrame] not Connected!?\n", client->num); return false; @@ -320,7 +324,8 @@ bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * pay * callen when HTTP header is done * @param client WSclient_t * ptr to the client struct */ -void WebSockets::headerDone(WSclient_t * client) { +void WebSockets::headerDone(WSclient_t * client) +{ client->status = WSC_CONNECTED; client->cWsRXsize = 0; DEBUG_WEBSOCKETS("[WS][%d][headerDone] Header Handling Done.\n", client->num); @@ -334,7 +339,8 @@ void WebSockets::headerDone(WSclient_t * client) { * handle the WebSocket stream * @param client WSclient_t * ptr to the client struct */ -void WebSockets::handleWebsocket(WSclient_t * client) { +void WebSockets::handleWebsocket(WSclient_t * client) +{ if(client->cWsRXsize == 0) { handleWebsocketCb(client); } @@ -345,7 +351,8 @@ void WebSockets::handleWebsocket(WSclient_t * client) { * @param client * @param size */ -bool WebSockets::handleWebsocketWaitFor(WSclient_t * client, size_t size) { +bool WebSockets::handleWebsocketWaitFor(WSclient_t * client, size_t size) +{ if(!client->tcp || !client->tcp->connected()) { return false; } @@ -372,11 +379,12 @@ bool WebSockets::handleWebsocketWaitFor(WSclient_t * client, size_t size) { server->clientDisconnect(client, 1002); } }, - this, size, std::placeholders::_1, std::placeholders::_2)); + this, size, std::placeholders::_1, std::placeholders::_2)); return false; } -void WebSockets::handleWebsocketCb(WSclient_t * client) { +void WebSockets::handleWebsocketCb(WSclient_t * client) +{ if(!client->tcp || !client->tcp->connected()) { return; } @@ -461,7 +469,8 @@ void WebSockets::handleWebsocketCb(WSclient_t * client) { } } -void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t * payload) { +void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t * payload) +{ WSMessageHeader_t * header = &client->cWsHeaderDecode; if(ok) { if(header->payloadLen > 0) { @@ -476,43 +485,44 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t } switch(header->opCode) { - case WSop_text: - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] text: %s\n", client->num, payload); - // no break here! - case WSop_binary: - case WSop_continuation: - messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); - break; - case WSop_ping: - // send pong back - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] ping received (%s)\n", client->num, payload ? (const char *)payload : ""); - sendFrame(client, WSop_pong, payload, header->payloadLen); - messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); - break; - case WSop_pong: - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get pong (%s)\n", client->num, payload ? (const char *)payload : ""); - client->pongReceived = true; - messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); - break; - case WSop_close: { + case WSop_text: + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] text: %s\n", client->num, payload); + // no break here! + case WSop_binary: + case WSop_continuation: + messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); + break; + case WSop_ping: + // send pong back + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] ping received (%s)\n", client->num, payload ? (const char *)payload : ""); + sendFrame(client, WSop_pong, payload, header->payloadLen); + messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); + break; + case WSop_pong: + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get pong (%s)\n", client->num, payload ? (const char *)payload : ""); + client->pongReceived = true; + messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); + break; + case WSop_close: { #ifndef NODEBUG_WEBSOCKETS - uint16_t reasonCode = 1000; - if(header->payloadLen >= 2) { - reasonCode = payload[0] << 8 | payload[1]; - } + uint16_t reasonCode = 1000; + if(header->payloadLen >= 2) { + reasonCode = payload[0] << 8 | payload[1]; + } #endif - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get ask for close. Code: %d\n", client->num, reasonCode); - if(header->payloadLen > 2) { - DEBUG_WEBSOCKETS(" (%s)\n", (payload + 2)); - } else { - DEBUG_WEBSOCKETS("\n"); - } - clientDisconnect(client, 1000); - } break; - default: - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] got unknown opcode: %d\n", client->num, header->opCode); - clientDisconnect(client, 1002); - break; + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get ask for close. Code: %d\n", client->num, reasonCode); + if(header->payloadLen > 2) { + DEBUG_WEBSOCKETS(" (%s)\n", (payload + 2)); + } else { + DEBUG_WEBSOCKETS("\n"); + } + clientDisconnect(client, 1000); + } + break; + default: + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] got unknown opcode: %d\n", client->num, header->opCode); + clientDisconnect(client, 1002); + break; } if(payload) { @@ -538,7 +548,8 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t * @param clientKey String * @return String Accept Key */ -String WebSockets::acceptKey(String & clientKey) { +String WebSockets::acceptKey(String & clientKey) +{ uint8_t sha1HashBin[20] = { 0 }; #ifdef ESP8266 sha1(clientKey + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", &sha1HashBin[0]); @@ -565,7 +576,8 @@ String WebSockets::acceptKey(String & clientKey) { * @param length size_t * @return base64 encoded String */ -String WebSockets::base64_encode(uint8_t * data, size_t length) { +String WebSockets::base64_encode(uint8_t * data, size_t length) +{ size_t size = ((length * 1.6f) + 1); char * buffer = (char *)malloc(size); if(buffer) { @@ -588,7 +600,8 @@ String WebSockets::base64_encode(uint8_t * data, size_t length) { * @param n size_t byte count * @return true if ok */ -bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWaitCb cb) { +bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWaitCb cb) +{ #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) if(!client->tcp || !client->tcp->connected()) { return false; @@ -599,7 +612,7 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait cb(client, ok); } }, - client, std::placeholders::_1, cb)); + client, std::placeholders::_1, cb)); #else unsigned long t = millis(); @@ -663,11 +676,14 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait * @param n size_t byte count * @return bytes send */ -size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) { - if(out == NULL) +size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) +{ + if(out == NULL) { return 0; - if(client == NULL) + } + if(client == NULL) { return 0; + } unsigned long t = millis(); size_t len = 0; size_t total = 0; @@ -706,11 +722,14 @@ size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) { return total; } -size_t WebSockets::write(WSclient_t * client, const char * out) { - if(client == NULL) +size_t WebSockets::write(WSclient_t * client, const char * out) +{ + if(client == NULL) { return 0; - if(out == NULL) + } + if(out == NULL) { return 0; + } return write(client, (uint8_t *)out, strlen(out)); } @@ -721,9 +740,11 @@ size_t WebSockets::write(WSclient_t * client, const char * out) { * @param pongTimeout uint32_t millis after which pong should timout if not received * @param disconnectTimeoutCount uint8_t how many timeouts before disconnect, 0=> do not disconnect */ -void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { - if(client == NULL) +void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) +{ + if(client == NULL) { return; + } client->pingInterval = pingInterval; client->pongTimeout = pongTimeout; client->disconnectTimeoutCount = disconnectTimeoutCount; @@ -734,7 +755,8 @@ void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uin * handle ping/pong heartbeat timeout process * @param client WSclient_t * */ -void WebSockets::handleHBTimeout(WSclient_t * client) { +void WebSockets::handleHBTimeout(WSclient_t * client) +{ if(client->pingInterval) { // if heartbeat is enabled uint32_t pi = millis() - client->lastPing; diff --git a/platformio.ini b/platformio.ini index 8cad919e..42800159 100644 --- a/platformio.ini +++ b/platformio.ini @@ -17,7 +17,7 @@ data_dir = esp3d/data default_envs = esp32dev [env:esp32dev] -platform = espressif32@5.0.0 +platform = espressif32@5.1.0 board = esp32dev framework = arduino monitor_speed = 115200 @@ -38,7 +38,7 @@ upload_speed = 460800 extra_scripts = pre:platformIO/extra_script.py [env:esp32cam] -platform = espressif32@4.4.0 +platform = espressif32@5.1.0 board = esp32dev framework = arduino monitor_speed = 115200 @@ -62,7 +62,7 @@ extra_scripts = pre:platformIO/extra_script.py ;TTGO_T_Display with ST7789 [env:esp32-TTGO_T_Display] -platform = espressif32@4.4.0 +platform = espressif32@5.1.0 board = esp32dev framework = arduino monitor_speed = 115200 @@ -109,7 +109,7 @@ extra_scripts = pre:platformIO/extra_script.py ;TTGO_T_Display with ST7789 [env:esp32-ST7789] -platform = espressif32@4.4.0 +platform = espressif32@5.1.0 board = esp32dev framework = arduino monitor_speed = 115200 @@ -155,7 +155,7 @@ upload_speed = 460800 extra_scripts = pre:platformIO/extra_script.py [env:esp32-s2] -platform = espressif32@4.4.0 +platform = espressif32@5.1.0 board = esp32-s2-saola-1 framework = arduino monitor_speed = 115200 @@ -179,7 +179,7 @@ lib_ignore = ;https://github.com/Bodmer/TFT_eSPI/issues/1246 [env:esp32-s3] -platform = espressif32@4.4.0 +platform = espressif32@5.1.0 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 @@ -200,7 +200,7 @@ board_build.partitions = min_spiffs.csv upload_speed = 460800 [env:esp32-c3] -platform = espressif32@4.4.0 +platform = espressif32@5.1.0 board = esp32-c3-devkitm-1 board_build.mcu = esp32c3 board_build.variant = esp32c3