diff --git a/.gitignore b/.gitignore index e69de29..d5f19d8 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +package-lock.json diff --git a/build/browser/bz.js b/build/browser/bz.js index 453a7df..81e91bb 100644 --- a/build/browser/bz.js +++ b/build/browser/bz.js @@ -4,7 +4,7 @@ "use strict"; var bz = window.bz = require("./index"); - +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy9iei5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMiLCJmaWxlIjoiL1VzZXJzL2psYXN0ZXIvc3JjL21vemlsbGEvYnouanMvc3JjL2J6LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhpcyBmaWxlIGlzIHRoZSBlbnRyeXBvaW50IGZvciBidWlsZGluZyBhIGJyb3dzZXIgZmlsZSB3aXRoIGJyb3dzZXJpZnlcblxudmFyIGJ6ID0gd2luZG93LmJ6ID0gcmVxdWlyZShcIi4vaW5kZXhcIik7Il19 },{"./index":2}],2:[function(require,module,exports){ 'use strict'; @@ -212,7 +212,7 @@ var BugzillaClient = (function () { }, { key: 'createAttachment', value: function createAttachment(id, attachment, callback) { - this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'ids', attachment); + this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'attachments', attachment); } }, { key: 'getAttachment', @@ -451,7 +451,7 @@ exports.BugzillaClient = BugzillaClient; function createClient(options) { return new BugzillaClient(options); } - +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxJQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDOzs7OztBQUt2RCxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7Ozs7O0FBS3ZCLElBQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7O0FBRXhELFNBQVMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUU7QUFDbEMsTUFBSSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUU7QUFDNUIsWUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQUUsR0FBRyxTQUFTLENBQUM7R0FDaEI7O0FBRUQsU0FBTyxVQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDN0IsUUFBSSxHQUFHLEVBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRTlCLFFBQUksUUFBUSxFQUFFOztBQUVaLFVBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtBQUNwQixVQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUMvQjtBQUNELGNBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDOUIsTUFDSTtBQUNILFlBQU0scUNBQXFDLENBQUM7S0FDN0M7R0FDRixDQUFDO0NBQ0g7Ozs7Ozs7Ozs7OztBQVlELFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTs7QUFFN0IsU0FBTyxZQUFXOzs7O0FBSWhCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7OztBQUU1QyxZQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFD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QUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FDdEMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvQixDQUFDLENBQUM7T0FDSjtBQUNELGFBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN0Qjs7O1NBaFpRLGNBQWM7SUFpWnhCLENBQUE7Ozs7QUFFTSxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDcEMsU0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUNwQyIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBYTUxIdHRwUmVxdWVzdCA9IHJlcXVpcmUoJy4veGhyJykuWE1MSHR0cFJlcXVlc3Q7XG5cbi8qKlxuQ29uc3RhbnQgZm9yIHRoZSBsb2dpbiBlbnRyeXBvaW50LlxuKi9cbmNvbnN0IExPR0lOID0gJy9sb2dpbic7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbmNvbnN0IFRJTUVPVVRfRVJST1JTID0gWydFVElNRURPVVQnLCAnRVNPQ0tFVFRJTUVET1VUJ107XG5cbmZ1bmN0aW9uIGV4dHJhY3RGaWVsZChpZCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gaWQ7XG4gICAgaWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oZXJyLCByZXNwb25zZSkge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAvLyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSB0aGUgZmlyc3QgaWQgd2hlbiB0aGUgY2FsbGVyIGRvZXMgbm90IHByb3ZpZGUgb25lLlxuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWQgPSBPYmplY3Qua2V5cyhyZXNwb25zZSlbMF07XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZVtpZF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IFwiRXJyb3I6LCBubyByZXNwb25zZSBpbiBleHRyYWN0RmllbGRcIjtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuRnVuY3Rpb24gZGVjb3JhdG9yIHdoaWNoIHdpbGwgYXR0ZW1wdCB0byBsb2dpbiB0byBidWd6aWxsYVxud2l0aCB0aGUgY3VycmVudCBjcmVkZW50aWFscyBwcmlvciB0byBtYWtpbmcgdGhlIGFjdHVhbCBhcGkgY2FsbC5cblxuICAgIEJ1Z3ppbGxhLnByb3RvdHlwZS5tZXRob2QgPSBsb2dpbihmdW5jdGlvbihwYXJhbSwgcGFyYW0pIHtcbiAgICB9KTtcblxuQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIHRvIGRlY29yYXRlLlxuQHJldHVybiB7RnVuY3Rpb259IGRlY29yYXRlZCBtZXRob2QuXG4qL1xuZnVuY3Rpb24gbG9naW5SZXF1aXJlZChtZXRob2QpIHtcbiAgLy8gd2UgYXNzdW1lIHRoaXMgaXMgYSB2YWxpZCBidWdpbGxhIGluc3RhbmNlLlxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgLy8gcmVtZW1iZXIgfHRoaXN8IGlzIGEgYnVnemlsbGEgaW5zdGFuY2VcblxuICAgIC8vIGFyZ3MgZm9yIHRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLFxuICAgICAgICAvLyB3ZSBuZWVkIHRoZSBjYWxsYmFjayBzbyB3ZSBjYW4gcGFzcyBsb2dpbiByZWxhdGVkIGVycm9ycy5cbiAgICAgICAgY2FsbGJhY2sgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICB0aGlzLmxvZ2luKGZ1bmN0aW9uKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIHdlIGFyZSBub3cgbG9nZ2VkIGluIHNvIHRoZSBtZXRob2QgY2FuIHJ1biFcbiAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9O1xufVxuXG5leHBvcnQgdmFyIEJ1Z3ppbGxhQ2xpZW50ID0gY2xhc3Mge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlVcmwgPSBvcHRpb25zLnVybCB8fCAnaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0Lyc7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuICAvKipcbiAgQXV0aGVudGljYXRpb24gZGV0YWlscyBmb3IgZ2l2ZW4gdXNlci5cblxuICBFeGFtcGxlOlxuXG4gICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cblxuICBAdHlwZSB7T2JqZWN0fVxuICAqL1xuXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG5cbiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgcHVibGljbHkgYnV0IGlzIGRlc2lnbmVkIGZvciBpbnRlcm5hbCBjb25zdW1wdGlvbiBmb3JcbiAgZWFzZSBvZiB1c2UuXG5cbiAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgW0Vycm9yIGVyciwgU3RyaW5nIHRva2VuXS5cbiAgKi9cbiAgbG9naW4gKGNhbGxiYWNrKSB7XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVzZXJuYW1lIHx8ICF0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkJyk7XG4gICAgfVxuXG4gICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgIGxvZ2luOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmRcbiAgICB9O1xuXG4gICAgdmFyIGhhbmRsZUxvZ2luID0gZnVuY3Rpb24gaGFuZGxlTG9naW4oZXJyLCByZXNwb25zZSkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICBpZiAocmVzcG9uc2UucmVzdWx0KSB7XG4gICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZS5yZXN1bHRcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvbG9naW4nLCAnR0VUJywgaGFuZGxlTG9naW4sIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gIH1cblxuICBnZXRCdWcgKGlkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICdidWdzJyxcbiAgICAgIG51bGwsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICB9XG5cbiAgc2VhcmNoQnVncyAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICB9XG5cbiAgdXBkYXRlQnVnIChpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBidWcpO1xuICB9XG5cbiAgY3JlYXRlQnVnIChidWcsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnJywgJ1BPU1QnLCBjYWxsYmFjaywgJ2lkJywgYnVnKTtcbiAgfVxuXG4gIGJ1Z0NvbW1lbnRzIChpZCwgY2FsbGJhY2spIHtcbiAgICB2YXIgX2NhbGxiYWNrID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKGUpIHRocm93IGU7XG4gICAgICB2YXIgX2J1Z19jb21tZW50cyA9IHJbaWRdO1xuICAgICAgaWYgKHR5cGVvZiBfYnVnX2NvbW1lbnRzWydjb21tZW50cyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBidWd6aWxsYSA1IDooXG4gICAgICAgIF9idWdfY29tbWVudHMgPSBfYnVnX2NvbW1lbnRzLmNvbW1lbnRzO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sobnVsbCwgX2J1Z19jb21tZW50cyk7XG4gICAgfVxuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9jb21tZW50JyxcbiAgICAgICdHRVQnLFxuICAgICAgX2NhbGxiYWNrLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIGFkZENvbW1lbnQgKGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvY29tbWVudCcsXG4gICAgICAnUE9TVCcsXG4gICAgICBjYWxsYmFjayxcbiAgICAgIG51bGwsXG4gICAgICBjb21tZW50XG4gICAgKTtcbiAgfVxuXG4gIGJ1Z0hpc3RvcnkgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvaGlzdG9yeScsXG4gICAgICAnR0VUJyxcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbGwgYXR0YWNobWVudHMgZm9yIGEgZ2l2ZW4gYnVnICNcbiAgICogaHR0cDovL3d3dy5idWd6aWxsYS5vcmcvZG9jcy90aXAvZW4vaHRtbC9hcGkvQnVnemlsbGEvV2ViU2VydmljZS9CdWcuaHRtbCNhdHRhY2htZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gaWQgb2YgYnVnLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbRXJyb3IsIEFycmF5PEF0dGFjaG1lbnQ+XS5cbiAgICovXG4gIGJ1Z0F0dGFjaG1lbnRzIChpZCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSxcbiAgICAgICdidWdzJ1xuICAgICk7XG4gIH1cblxuICBjcmVhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLFxuICAgICAgJ1BPU1QnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICdhdHRhY2htZW50cycsXG4gICAgICBhdHRhY2htZW50XG4gICAgKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnQgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2F0dGFjaG1lbnRzJ1xuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvYXR0YWNobWVudC8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ29rJywgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2hVc2VycyAobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvdXNlcicsICdHRVQnLCBjYWxsYmFjaywgJ3VzZXJzJywgbnVsbCwge21hdGNoOiBtYXRjaH0pO1xuICB9XG5cbiAgZ2V0VXNlciAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy91c2VyLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICd1c2VycydcbiAgICApO1xuICB9XG5cbiAgZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzIChpZCwgY2FsbGJhY2spIHtcbiAgICAvLyBCTU8tIHNwZWNpZmljIGV4dGVuc2lvbiB0byBnZXQgc3VnZ2VzdGVkIHJldmlld2VycyBmb3IgYSBnaXZlbiBidWdcbiAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvcmV2aWV3L3N1Z2dlc3Rpb25zLycgKyBpZCwgJ0dFVCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qXG4gICAgWFhYIHRoaXMgY2FsbCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgdG8gcGVvcGxlIHNjcmlwdGluZyBhZ2FpbnN0IHByb2QgYnVnemlsbHFcbiAgICBUSEVSRSBJUyBOTyBFUVVJVkFMRU5UIFJFU1QgQ0FMTCBJTiBUSVAsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aXAsIGhlbmNlXG4gICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAqL1xuICBnZXRDb25maWd1cmF0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRoaXMuQVBJUmVxdWVzdCgnL2NvbmZpZ3VyYXRpb24nLCAnR0VUJywgY2FsbGJhY2ssIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKG51bGwsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEuc2VuZCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMgKHByb2R1Y3QpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGlmKCBwcm9kdWN0ID09PSBcInNlbGVjdGFibGVcIiB8fCBwcm9kdWN0ID09PSBcImVudGVyYWJsZVwiIHx8IHByb2R1Y3QgPT09IFwiYWNjZXNzaWJsZVwiICkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAgICcvcHJvZHVjdD90eXBlPScgKyBwcm9kdWN0LFxuICAgICAgICAgICdHRVQnLFxuICAgICAgICAgIGZ1bmN0aW9uKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcbiAgICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICAgJ0dFVCcsXG4gICAgICAgICAgZnVuY3Rpb24oZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9kdWN0IChwcm9kdWN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICdHRVQnLFxuICAgICAgICBmdW5jdGlvbihlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgQVBJUmVxdWVzdCAocGF0aCwgbWV0aG9kLCBjYWxsYmFjaywgZmllbGQsIGJvZHksIHBhcmFtcykge1xuICAgIGlmIChcbiAgICAgIC8vIGlmIHdlIGFyZSBkb2luZyB0aGUgbG9naW5cbiAgICAgIHBhdGggPT09IExPR0lOIHx8XG4gICAgICAvLyBpZiB3ZSBhcmUgYWxyZWFkeSBhdXRoZWRcbiAgICAgIHRoaXMuX2F1dGggfHxcbiAgICAgIC8vIG9yIHdlIGFyZSBtaXNzaW5nIGF1dGggZGF0YVxuICAgICAgIXRoaXMucGFzc3dvcmQgfHwgIXRoaXMudXNlcm5hbWVcbiAgICApIHtcbiAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGxldCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgdGhpcy5sb2dpbihmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9XG5cbiAgX0FQSVJlcXVlc3QgKHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgaWYodGhpcy5hcGlfa2V5KSB7IHBhcmFtcy5hcGlfa2V5ID0gdGhpcy5hcGlfa2V5OyB9XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgcGFyYW1zLnRva2VuID0gdGhpcy5fYXV0aC50b2tlbjtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgcGFyYW1zLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdXJsICs9IFwiP1wiICsgdGhpcy51cmxFbmNvZGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICBsZXQgdGhhdCA9IHRoaXM7XG5cbiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICBpZiAobWV0aG9kLnRvVXBwZXJDYXNlKCkgIT09IFwiR0VUXCIpIHtcbiAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjaywgZmllbGQpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cblxuICBoYW5kbGVSZXNwb25zZSAoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgLy8gZGV0ZWN0IHRpbWVvdXQgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAmJiBUSU1FT1VUX0VSUk9SUy5pbmRleE9mKGVyci5jb2RlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIGdlbmVyaWMgZXJyb3JzXG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAvLyBhbnl0aGluZyBpbiAyMDAgc3RhdHVzIHJhbmdlIGlzIGEgc3VjY2Vzc1xuICAgIHZhciByZXF1ZXN0U3VjY2Vzc2Z1bCA9IHJlc3BvbnNlLnN0YXR1cyA+IDE5OSAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDA7XG5cbiAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICB2YXIgcGFyc2VkQm9keTtcblxuICAgIHRyeSB7XG4gICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFhYWDogbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBiZXR0ZXIgaW4gdGhlIHJlcXVlc3Qgc3VjY2VzcyBjYXNlP1xuICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBuZXcgRXJyb3IoJ3Jlc3BvbnNlIHdhcyBub3QgdmFsaWQganNvbjogJyArIHJlc3BvbnNlLnJlc3BvbnNlVGV4dClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcGFyc2VkQm9keSA9IHBhcnNlZEJvZHlbJ3Jlc3VsdCddO1xuICAgIH1cblxuICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgIC8vIFhYWDogdGhpcyBzZWVtcyBsaWtlIGEgYnVnIGluIHRoZSBhcGkuXG4gICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKFxuICAgICAgICAnSFRUUCBzdGF0dXMgJyArIHJlc3BvbnNlLnN0YXR1cyArICdcXG4nICtcbiAgICAgICAgLy8gbm90ZSBpbnRlbnRpb25hbCB1c2Ugb2YgIT0gaW5zdGVhZCBvZiAhPT1cbiAgICAgICAgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhudWxsLCAoZmllbGQpID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgfVxuXG4gIHVybEVuY29kZSAocGFyYW1zKSB7XG4gICAgdmFyIHVybCA9IFtdO1xuICAgIGZvcih2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zW3BhcmFtXTtcbiAgICAgIGlmKCF2YWx1ZXMuZm9yRWFjaClcbiAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgIHVybC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbSkgKyBcIj1cIiArXG4gICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuam9pbihcIiZcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgQnVnemlsbGFDbGllbnQob3B0aW9ucyk7XG59XG4iXX0= },{"./xhr":3}],3:[function(require,module,exports){ 'use strict'; @@ -474,6 +474,6 @@ if (typeof window === 'undefined') { } else { throw "No window, WAT."; } - +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy94aHIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7OztBQUVqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTs7QUFFakMsTUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3RCLE1BQUk7QUFDRixZQU5PLGNBQWMsR0FNckIsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLENBQUM7R0FDeEQsQ0FBQyxPQUFNLENBQUMsRUFBRTtBQUNULFlBUk8sY0FBYyxHQVFyQixjQUFjLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDO0dBQzNEO0NBQ0YsTUFDSSxJQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLE1BQU0sQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFO0FBQ3JGLFVBWlMsY0FBYyxHQVl2QixjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUN4QyxNQUNJO0FBQ0gsUUFBTSxpQkFBaUIsQ0FBQTtDQUN4QiIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMveGhyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBYTUxIdHRwUmVxdWVzdCA9IG51bGw7XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAvLyB3ZSdyZSBub3QgaW4gYSBicm93c2VyP1xuICBsZXQgX2xvYWRlciA9IHJlcXVpcmU7XG4gIHRyeSB7XG4gICAgWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoKGUpIHtcbiAgICBYTUxIdHRwUmVxdWVzdCA9IF9sb2FkZXIoXCJ4bWxodHRwcmVxdWVzdFwiKS5YTUxIdHRwUmVxdWVzdDtcbiAgfVxufVxuZWxzZSBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn1cbmVsc2Uge1xuICB0aHJvdyBcIk5vIHdpbmRvdywgV0FULlwiXG59XG4iXX0= },{}]},{},[1]) -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvYXVta2FyYS93b3Jrc3BhY2UvYnouanMvc3JjL2J6LmpzIiwiL1VzZXJzL2F1bWthcmEvd29ya3NwYWNlL2J6LmpzL3NyYy9pbmRleC5qcyIsIi9Vc2Vycy9hdW1rYXJhL3dvcmtzcGFjZS9iei5qcy9zcmMveGhyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQ0VBLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNGeEMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQzs7Ozs7QUFLdkQsSUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDOzs7OztBQUt2QixJQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDOztBQUV4RCxTQUFTLFlBQVksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO0FBQ2xDLE1BQUksT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO0FBQzVCLFlBQVEsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFFLEdBQUcsU0FBUyxDQUFDO0dBQ2hCOztBQUVELFNBQU8sVUFBUyxHQUFHLEVBQUUsUUFBUSxFQUFFO0FBQzdCLFFBQUksR0FBRyxFQUFFLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUU5QixRQUFJLFFBQVEsRUFBRTs7QUFFWixVQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7QUFDcEIsVUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDL0I7QUFDRCxjQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzlCLE1BQ0k7QUFDSCxZ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QUFpQixDQUFBO0NBQ3hCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIHRoaXMgZmlsZSBpcyB0aGUgZW50cnlwb2ludCBmb3IgYnVpbGRpbmcgYSBicm93c2VyIGZpbGUgd2l0aCBicm93c2VyaWZ5XG5cbnZhciBieiA9IHdpbmRvdy5ieiA9IHJlcXVpcmUoXCIuL2luZGV4XCIpOyIsImNvbnN0IFhNTEh0dHBSZXF1ZXN0ID0gcmVxdWlyZSgnLi94aHInKS5YTUxIdHRwUmVxdWVzdDtcblxuLyoqXG5Db25zdGFudCBmb3IgdGhlIGxvZ2luIGVudHJ5cG9pbnQuXG4qL1xuY29uc3QgTE9HSU4gPSAnL2xvZ2luJztcblxuLyoqXG5FcnJvcnMgcmVsYXRlZCB0byB0aGUgc29ja2V0IHRpbWVvdXQuXG4qL1xuY29uc3QgVElNRU9VVF9FUlJPUlMgPSBbJ0VUSU1FRE9VVCcsICdFU09DS0VUVElNRURPVVQnXTtcblxuZnVuY3Rpb24gZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGlkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBpZDtcbiAgICBpZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihlcnIsIHJlc3BvbnNlKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gdXNlIHRoZSBmaXJzdCBpZCB3aGVuIHRoZSBjYWxsZXIgZG9lcyBub3QgcHJvdmlkZSBvbmUuXG4gICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZCA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKVswXTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlW2lkXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgXCJFcnJvcjosIG5vIHJlc3BvbnNlIGluIGV4dHJhY3RGaWVsZFwiO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG5GdW5jdGlvbiBkZWNvcmF0b3Igd2hpY2ggd2lsbCBhdHRlbXB0IHRvIGxvZ2luIHRvIGJ1Z3ppbGxhXG53aXRoIHRoZSBjdXJyZW50IGNyZWRlbnRpYWxzIHByaW9yIHRvIG1ha2luZyB0aGUgYWN0dWFsIGFwaSBjYWxsLlxuXG4gICAgQnVnemlsbGEucHJvdG90eXBlLm1ldGhvZCA9IGxvZ2luKGZ1bmN0aW9uKHBhcmFtLCBwYXJhbSkge1xuICAgIH0pO1xuXG5AcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgdG8gZGVjb3JhdGUuXG5AcmV0dXJuIHtGdW5jdGlvbn0gZGVjb3JhdGVkIG1ldGhvZC5cbiovXG5mdW5jdGlvbiBsb2dpblJlcXVpcmVkKG1ldGhvZCkge1xuICAvLyB3ZSBhc3N1bWUgdGhpcyBpcyBhIHZhbGlkIGJ1Z2lsbGEgaW5zdGFuY2UuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAvLyByZW1lbWJlciB8dGhpc3wgaXMgYSBidWd6aWxsYSBpbnN0YW5jZVxuXG4gICAgLy8gYXJncyBmb3IgdGhlIGRlY29yYXRlZCBtZXRob2RcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksXG4gICAgICAgIC8vIHdlIG5lZWQgdGhlIGNhbGxiYWNrIHNvIHdlIGNhbiBwYXNzIGxvZ2luIHJlbGF0ZWQgZXJyb3JzLlxuICAgICAgICBjYWxsYmFjayA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcblxuICAgIHRoaXMubG9naW4oZnVuY3Rpb24oZXJyKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgICAgLy8gd2UgYXJlIG5vdyBsb2dnZWQgaW4gc28gdGhlIG1ldGhvZCBjYW4gcnVuIVxuICAgICAgbWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgQnVnemlsbGFDbGllbnQgPSBjbGFzcyB7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy51c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XG4gICAgdGhpcy5wYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQ7XG4gICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0IHx8IDA7XG4gICAgdGhpcy5hcGlfa2V5ID0gb3B0aW9ucy5hcGlfa2V5IHx8IG51bGw7XG5cbiAgICBpZiAob3B0aW9ucy50ZXN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMudGVzdCBpcyBkZXByZWNhdGVkIHBsZWFzZSBzcGVjaWZ5IHRoZSB1cmwgZGlyZWN0bHknKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaVVybCA9IG9wdGlvbnMudXJsIHx8ICdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Jlc3QvJztcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuYXBpVXJsLnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcblxuICAgIHRoaXMuX2F1dGggPSBudWxsO1xuICB9XG4gIC8qKlxuICBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBnaXZlbiB1c2VyLlxuXG4gIEV4YW1wbGU6XG5cbiAgICAgIHsgaWQ6IDEyMjIsIHRva2VuOiAneHh4eCcgfVxuXG4gIEB0eXBlIHtPYmplY3R9XG4gICovXG5cblxuICAvKipcbiAgSW4gdGhlIFJFU1QgQVBJIHdlIGZpcnN0IGxvZ2luIHRvIGFjcXVpcmUgYSB0b2tlbiB3aGljaCBpcyB0aGVuIHVzZWQgdG8gbWFrZVxuICByZXF1ZXN0cy4gU2VlOiBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9CdWd6aWxsYS9XZWJTZXJ2aWNlL1NlcnZlci9SRVNULnBtI0w1NTZcblxuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cblxuICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBbRXJyb3IgZXJyLCBTdHJpbmcgdG9rZW5dLlxuICAqL1xuICBsb2dpbiAoY2FsbGJhY2spIHtcblxuICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCB0aGlzLl9hdXRoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXNlcm5hbWUgfHwgIXRoaXMucGFzc3dvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBvciBpbnZhbGlkIC51c2VybmFtZSBvciAucGFzc3dvcmQnKTtcbiAgICB9XG5cbiAgICB2YXIgcGFyYW1zID0ge1xuICAgICAgbG9naW46IHRoaXMudXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZFxuICAgIH07XG5cbiAgICB2YXIgaGFuZGxlTG9naW4gPSBmdW5jdGlvbiBoYW5kbGVMb2dpbihlcnIsIHJlc3BvbnNlKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fYXV0aCA9IHJlc3BvbnNlLnJlc3VsdFxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlKTtcbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9sb2dpbicsICdHRVQnLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgfVxuXG4gIGdldEJ1ZyAoaWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgcGFyYW1zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2J1Z3MnLFxuICAgICAgbnVsbCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gIH1cblxuICBzZWFyY2hCdWdzIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnJywgJ0dFVCcsIGNhbGxiYWNrLCAnYnVncycsIG51bGwsIHBhcmFtcyk7XG4gIH1cblxuICB1cGRhdGVCdWcgKGlkLCBidWcsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCwgJ1BVVCcsIGNhbGxiYWNrLCAnYnVncycsIGJ1Zyk7XG4gIH1cblxuICBjcmVhdGVCdWcgKGJ1ZywgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcnLCAnUE9TVCcsIGNhbGxiYWNrLCAnaWQnLCBidWcpO1xuICB9XG5cbiAgYnVnQ29tbWVudHMgKGlkLCBjYWxsYmFjaykge1xuICAgIHZhciBfY2FsbGJhY2sgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgICBpZiAoZSkgdGhyb3cgZTtcbiAgICAgIHZhciBfYnVnX2NvbW1lbnRzID0gcltpZF07XG4gICAgICBpZiAodHlwZW9mIF9idWdfY29tbWVudHNbJ2NvbW1lbnRzJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8vIGJ1Z3ppbGxhIDUgOihcbiAgICAgICAgX2J1Z19jb21tZW50cyA9IF9idWdfY29tbWVudHMuY29tbWVudHM7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCBfYnVnX2NvbW1lbnRzKTtcbiAgICB9XG5cbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2NvbW1lbnQnLFxuICAgICAgJ0dFVCcsXG4gICAgICBfY2FsbGJhY2ssXG4gICAgICAnYnVncydcbiAgICApO1xuICB9XG5cbiAgYWRkQ29tbWVudCAoaWQsIGNvbW1lbnQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9jb21tZW50JyxcbiAgICAgICdQT1NUJyxcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgbnVsbCxcbiAgICAgIGNvbW1lbnRcbiAgICApO1xuICB9XG5cbiAgYnVnSGlzdG9yeSAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9oaXN0b3J5JyxcbiAgICAgICdHRVQnLFxuICAgICAgY2FsbGJhY2ssXG4gICAgICAnYnVncydcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFsbCBhdHRhY2htZW50cyBmb3IgYSBnaXZlbiBidWcgI1xuICAgKiBodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9kb2NzL3RpcC9lbi9odG1sL2FwaS9CdWd6aWxsYS9XZWJTZXJ2aWNlL0J1Zy5odG1sI2F0dGFjaG1lbnRzXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBpZCBvZiBidWcuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtFcnJvciwgQXJyYXk8QXR0YWNobWVudD5dLlxuICAgKi9cbiAgYnVnQXR0YWNobWVudHMgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvYXR0YWNobWVudCcsXG4gICAgICAnR0VUJyxcbiAgICAgIGV4dHJhY3RGaWVsZChpZCwgY2FsbGJhY2spLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUF0dGFjaG1lbnQgKGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvYXR0YWNobWVudCcsXG4gICAgICAnUE9TVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2lkcycsXG4gICAgICBhdHRhY2htZW50XG4gICAgKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnQgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2F0dGFjaG1lbnRzJ1xuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvYXR0YWNobWVudC8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ29rJywgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2hVc2VycyAobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvdXNlcicsICdHRVQnLCBjYWxsYmFjaywgJ3VzZXJzJywgbnVsbCwge21hdGNoOiBtYXRjaH0pO1xuICB9XG5cbiAgZ2V0VXNlciAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy91c2VyLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICd1c2VycydcbiAgICApO1xuICB9XG5cbiAgZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzIChpZCwgY2FsbGJhY2spIHtcbiAgICAvLyBCTU8tIHNwZWNpZmljIGV4dGVuc2lvbiB0byBnZXQgc3VnZ2VzdGVkIHJldmlld2VycyBmb3IgYSBnaXZlbiBidWdcbiAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvcmV2aWV3L3N1Z2dlc3Rpb25zLycgKyBpZCwgJ0dFVCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qXG4gICAgWFhYIHRoaXMgY2FsbCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgdG8gcGVvcGxlIHNjcmlwdGluZyBhZ2FpbnN0IHByb2QgYnVnemlsbHFcbiAgICBUSEVSRSBJUyBOTyBFUVVJVkFMRU5UIFJFU1QgQ0FMTCBJTiBUSVAsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aXAsIGhlbmNlXG4gICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAqL1xuICBnZXRDb25maWd1cmF0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRoaXMuQVBJUmVxdWVzdCgnL2NvbmZpZ3VyYXRpb24nLCAnR0VUJywgY2FsbGJhY2ssIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKG51bGwsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEuc2VuZCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMgKHByb2R1Y3QpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGlmKCBwcm9kdWN0ID09PSBcInNlbGVjdGFibGVcIiB8fCBwcm9kdWN0ID09PSBcImVudGVyYWJsZVwiIHx8IHByb2R1Y3QgPT09IFwiYWNjZXNzaWJsZVwiICkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAgICcvcHJvZHVjdD90eXBlPScgKyBwcm9kdWN0LFxuICAgICAgICAgICdHRVQnLFxuICAgICAgICAgIGZ1bmN0aW9uKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcbiAgICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICAgJ0dFVCcsXG4gICAgICAgICAgZnVuY3Rpb24oZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9kdWN0IChwcm9kdWN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICdHRVQnLFxuICAgICAgICBmdW5jdGlvbihlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgQVBJUmVxdWVzdCAocGF0aCwgbWV0aG9kLCBjYWxsYmFjaywgZmllbGQsIGJvZHksIHBhcmFtcykge1xuICAgIGlmIChcbiAgICAgIC8vIGlmIHdlIGFyZSBkb2luZyB0aGUgbG9naW5cbiAgICAgIHBhdGggPT09IExPR0lOIHx8XG4gICAgICAvLyBpZiB3ZSBhcmUgYWxyZWFkeSBhdXRoZWRcbiAgICAgIHRoaXMuX2F1dGggfHxcbiAgICAgIC8vIG9yIHdlIGFyZSBtaXNzaW5nIGF1dGggZGF0YVxuICAgICAgIXRoaXMucGFzc3dvcmQgfHwgIXRoaXMudXNlcm5hbWVcbiAgICApIHtcbiAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGxldCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgdGhpcy5sb2dpbihmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9XG5cbiAgX0FQSVJlcXVlc3QgKHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgaWYodGhpcy5hcGlfa2V5KSB7IHBhcmFtcy5hcGlfa2V5ID0gdGhpcy5hcGlfa2V5OyB9XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgcGFyYW1zLnRva2VuID0gdGhpcy5fYXV0aC50b2tlbjtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgcGFyYW1zLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdXJsICs9IFwiP1wiICsgdGhpcy51cmxFbmNvZGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICBsZXQgdGhhdCA9IHRoaXM7XG5cbiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICBpZiAobWV0aG9kLnRvVXBwZXJDYXNlKCkgIT09IFwiR0VUXCIpIHtcbiAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjaywgZmllbGQpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cblxuICBoYW5kbGVSZXNwb25zZSAoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgLy8gZGV0ZWN0IHRpbWVvdXQgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAmJiBUSU1FT1VUX0VSUk9SUy5pbmRleE9mKGVyci5jb2RlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIGdlbmVyaWMgZXJyb3JzXG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAvLyBhbnl0aGluZyBpbiAyMDAgc3RhdHVzIHJhbmdlIGlzIGEgc3VjY2Vzc1xuICAgIHZhciByZXF1ZXN0U3VjY2Vzc2Z1bCA9IHJlc3BvbnNlLnN0YXR1cyA+IDE5OSAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDA7XG5cbiAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICB2YXIgcGFyc2VkQm9keTtcblxuICAgIHRyeSB7XG4gICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFhYWDogbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBiZXR0ZXIgaW4gdGhlIHJlcXVlc3Qgc3VjY2VzcyBjYXNlP1xuICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBuZXcgRXJyb3IoJ3Jlc3BvbnNlIHdhcyBub3QgdmFsaWQganNvbjogJyArIHJlc3BvbnNlLnJlc3BvbnNlVGV4dClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcGFyc2VkQm9keSA9IHBhcnNlZEJvZHlbJ3Jlc3VsdCddO1xuICAgIH1cblxuICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgIC8vIFhYWDogdGhpcyBzZWVtcyBsaWtlIGEgYnVnIGluIHRoZSBhcGkuXG4gICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKFxuICAgICAgICAnSFRUUCBzdGF0dXMgJyArIHJlc3BvbnNlLnN0YXR1cyArICdcXG4nICtcbiAgICAgICAgLy8gbm90ZSBpbnRlbnRpb25hbCB1c2Ugb2YgIT0gaW5zdGVhZCBvZiAhPT1cbiAgICAgICAgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhudWxsLCAoZmllbGQpID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgfVxuXG4gIHVybEVuY29kZSAocGFyYW1zKSB7XG4gICAgdmFyIHVybCA9IFtdO1xuICAgIGZvcih2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zW3BhcmFtXTtcbiAgICAgIGlmKCF2YWx1ZXMuZm9yRWFjaClcbiAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgIHVybC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbSkgKyBcIj1cIiArXG4gICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuam9pbihcIiZcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgQnVnemlsbGFDbGllbnQob3B0aW9ucyk7XG59XG4iLCJleHBvcnQgdmFyIFhNTEh0dHBSZXF1ZXN0ID0gbnVsbDtcblxuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXI/XG4gIGxldCBfbG9hZGVyID0gcmVxdWlyZTtcbiAgdHJ5IHtcbiAgICBYTUxIdHRwUmVxdWVzdCA9IF9sb2FkZXIoJ3Nkay9uZXQveGhyJykuWE1MSHR0cFJlcXVlc3Q7XG4gIH0gY2F0Y2goZSkge1xuICAgIFhNTEh0dHBSZXF1ZXN0ID0gX2xvYWRlcihcInhtbGh0dHByZXF1ZXN0XCIpLlhNTEh0dHBSZXF1ZXN0O1xuICB9XG59XG5lbHNlIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gIFhNTEh0dHBSZXF1ZXN0ID0gd2luZG93LlhNTEh0dHBSZXF1ZXN0O1xufVxuZWxzZSB7XG4gIHRocm93IFwiTm8gd2luZG93LCBXQVQuXCJcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYnouanMiLCJzcmMvaW5kZXguanMiLCJzcmMveGhyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIHRoaXMgZmlsZSBpcyB0aGUgZW50cnlwb2ludCBmb3IgYnVpbGRpbmcgYSBicm93c2VyIGZpbGUgd2l0aCBicm93c2VyaWZ5XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYnogPSB3aW5kb3cuYnogPSByZXF1aXJlKFwiLi9pbmRleFwiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OWllaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08wRkJSVUVzU1VGQlNTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTWlMQ0ptYVd4bElqb2lMMVZ6WlhKekwycHNZWE4wWlhJdmMzSmpMMjF2ZW1sc2JHRXZZbm91YW5NdmMzSmpMMko2TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeThnZEdocGN5Qm1hV3hsSUdseklIUm9aU0JsYm5SeWVYQnZhVzUwSUdadmNpQmlkV2xzWkdsdVp5QmhJR0p5YjNkelpYSWdabWxzWlNCM2FYUm9JR0p5YjNkelpYSnBabmxjYmx4dWRtRnlJR0o2SUQwZ2QybHVaRzkzTG1KNklEMGdjbVZ4ZFdseVpTaGNJaTR2YVc1a1pYaGNJaWs3SWwxOSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmV4cG9ydHMuY3JlYXRlQ2xpZW50ID0gY3JlYXRlQ2xpZW50O1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIFhNTEh0dHBSZXF1ZXN0ID0gcmVxdWlyZSgnLi94aHInKS5YTUxIdHRwUmVxdWVzdDtcblxuLyoqXG5Db25zdGFudCBmb3IgdGhlIGxvZ2luIGVudHJ5cG9pbnQuXG4qL1xudmFyIExPR0lOID0gJy9sb2dpbic7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbnZhciBUSU1FT1VUX0VSUk9SUyA9IFsnRVRJTUVET1VUJywgJ0VTT0NLRVRUSU1FRE9VVCddO1xuXG5mdW5jdGlvbiBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGlkO1xuICAgIGlkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChlcnIsIHJlc3BvbnNlKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gdXNlIHRoZSBmaXJzdCBpZCB3aGVuIHRoZSBjYWxsZXIgZG9lcyBub3QgcHJvdmlkZSBvbmUuXG4gICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZCA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKVswXTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlW2lkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IFwiRXJyb3I6LCBubyByZXNwb25zZSBpbiBleHRyYWN0RmllbGRcIjtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuRnVuY3Rpb24gZGVjb3JhdG9yIHdoaWNoIHdpbGwgYXR0ZW1wdCB0byBsb2dpbiB0byBidWd6aWxsYVxud2l0aCB0aGUgY3VycmVudCBjcmVkZW50aWFscyBwcmlvciB0byBtYWtpbmcgdGhlIGFjdHVhbCBhcGkgY2FsbC5cblxuICAgIEJ1Z3ppbGxhLnByb3RvdHlwZS5tZXRob2QgPSBsb2dpbihmdW5jdGlvbihwYXJhbSwgcGFyYW0pIHtcbiAgICB9KTtcblxuQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIHRvIGRlY29yYXRlLlxuQHJldHVybiB7RnVuY3Rpb259IGRlY29yYXRlZCBtZXRob2QuXG4qL1xuZnVuY3Rpb24gbG9naW5SZXF1aXJlZChtZXRob2QpIHtcbiAgLy8gd2UgYXNzdW1lIHRoaXMgaXMgYSB2YWxpZCBidWdpbGxhIGluc3RhbmNlLlxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIC8vIHJlbWVtYmVyIHx0aGlzfCBpcyBhIGJ1Z3ppbGxhIGluc3RhbmNlXG5cbiAgICAvLyBhcmdzIGZvciB0aGUgZGVjb3JhdGVkIG1ldGhvZFxuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxcblxuICAgIC8vIHdlIG5lZWQgdGhlIGNhbGxiYWNrIHNvIHdlIGNhbiBwYXNzIGxvZ2luIHJlbGF0ZWQgZXJyb3JzLlxuICAgIGNhbGxiYWNrID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgdGhpcy5sb2dpbigoZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIHdlIGFyZSBub3cgbG9nZ2VkIGluIHNvIHRoZSBtZXRob2QgY2FuIHJ1biFcbiAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9KS5iaW5kKHRoaXMpKTtcbiAgfTtcbn1cblxudmFyIEJ1Z3ppbGxhQ2xpZW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVnemlsbGFDbGllbnQob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWd6aWxsYUNsaWVudCk7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlVcmwgPSBvcHRpb25zLnVybCB8fCAnaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0Lyc7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBnaXZlbiB1c2VyLlxuICAgRXhhbXBsZTpcbiAgICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cbiAgIEB0eXBlIHtPYmplY3R9XG4gICovXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG4gICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cbiAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFtFcnJvciBlcnIsIFN0cmluZyB0b2tlbl0uXG4gICovXG5cbiAgX2NyZWF0ZUNsYXNzKEJ1Z3ppbGxhQ2xpZW50LCBbe1xuICAgIGtleTogJ2xvZ2luJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9naW4oY2FsbGJhY2spIHtcblxuICAgICAgaWYgKHRoaXMuX2F1dGgpIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy51c2VybmFtZSB8fCAhdGhpcy5wYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkJyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJhbXMgPSB7XG4gICAgICAgIGxvZ2luOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZFxuICAgICAgfTtcblxuICAgICAgdmFyIGhhbmRsZUxvZ2luID0gKGZ1bmN0aW9uIGhhbmRsZUxvZ2luKGVyciwgcmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgICB9KS5iaW5kKHRoaXMpO1xuXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9sb2dpbicsICdHRVQnLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRCdWcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCdWcoaWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgIHBhcmFtcyA9IHt9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvJyArIGlkLCAnR0VUJywgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlYXJjaEJ1Z3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWFyY2hCdWdzKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUJ1ZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZyhpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCwgJ1BVVCcsIGNhbGxiYWNrLCAnYnVncycsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY3JlYXRlQnVnJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVnKGJ1ZywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdQT1NUJywgY2FsbGJhY2ssICdpZCcsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYnVnQ29tbWVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdDb21tZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHZhciBfY2FsbGJhY2sgPSBmdW5jdGlvbiBfY2FsbGJhY2soZSwgcikge1xuICAgICAgICBpZiAoZSkgdGhyb3cgZTtcbiAgICAgICAgdmFyIF9idWdfY29tbWVudHMgPSByW2lkXTtcbiAgICAgICAgaWYgKHR5cGVvZiBfYnVnX2NvbW1lbnRzWydjb21tZW50cyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8vIGJ1Z3ppbGxhIDUgOihcbiAgICAgICAgICBfYnVnX2NvbW1lbnRzID0gX2J1Z19jb21tZW50cy5jb21tZW50cztcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCBfYnVnX2NvbW1lbnRzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQgKyAnL2NvbW1lbnQnLCAnR0VUJywgX2NhbGxiYWNrLCAnYnVncycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2FkZENvbW1lbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRDb21tZW50KGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCArICcvY29tbWVudCcsICdQT1NUJywgY2FsbGJhY2ssIG51bGwsIGNvbW1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2J1Z0hpc3RvcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdIaXN0b3J5KGlkLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCArICcvaGlzdG9yeScsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhbGwgYXR0YWNobWVudHMgZm9yIGEgZ2l2ZW4gYnVnICNcbiAgICAgKiBodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9kb2NzL3RpcC9lbi9odG1sL2FwaS9CdWd6aWxsYS9XZWJTZXJ2aWNlL0J1Zy5odG1sI2F0dGFjaG1lbnRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaWQgb2YgYnVnLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtFcnJvciwgQXJyYXk8QXR0YWNobWVudD5dLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYnVnQXR0YWNobWVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdBdHRhY2htZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLCAnR0VUJywgZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjayksICdidWdzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY3JlYXRlQXR0YWNobWVudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUF0dGFjaG1lbnQoaWQsIGF0dGFjaG1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvJyArIGlkICsgJy9hdHRhY2htZW50JywgJ1BPU1QnLCBleHRyYWN0RmllbGQoY2FsbGJhY2spLCAnYXR0YWNobWVudHMnLCBhdHRhY2htZW50KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBdHRhY2htZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXR0YWNobWVudChpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy9hdHRhY2htZW50LycgKyBpZCwgJ0dFVCcsIGV4dHJhY3RGaWVsZChjYWxsYmFjayksICdhdHRhY2htZW50cycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUF0dGFjaG1lbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVBdHRhY2htZW50KGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLCAnUFVUJywgY2FsbGJhY2ssICdvaycsIGF0dGFjaG1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlYXJjaFVzZXJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2VhcmNoVXNlcnMobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy91c2VyJywgJ0dFVCcsIGNhbGxiYWNrLCAndXNlcnMnLCBudWxsLCB7IG1hdGNoOiBtYXRjaCB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRVc2VyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VXNlcihpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL3VzZXIvJyArIGlkLCAnR0VUJywgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgJ3VzZXJzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzKGlkLCBjYWxsYmFjaykge1xuICAgICAgLy8gQk1PLSBzcGVjaWZpYyBleHRlbnNpb24gdG8gZ2V0IHN1Z2dlc3RlZCByZXZpZXdlcnMgZm9yIGEgZ2l2ZW4gYnVnXG4gICAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9yZXZpZXcvc3VnZ2VzdGlvbnMvJyArIGlkLCAnR0VUJywgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBYWFggdGhpcyBjYWxsIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB0byBwZW9wbGUgc2NyaXB0aW5nIGFnYWluc3QgcHJvZCBidWd6aWxscVxuICAgICAgVEhFUkUgSVMgTk8gRVFVSVZBTEVOVCBSRVNUIENBTEwgSU4gVElQLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgdGVzdGVkIGFnYWluc3QgdGlwLCBoZW5jZVxuICAgICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb25maWd1cmF0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbihwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgICBwYXJhbXMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgLy8gdGhpcy5BUElSZXF1ZXN0KCcvY29uZmlndXJhdGlvbicsICdHRVQnLCBjYWxsYmFjaywgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICAgIC8vIFVHTEFZIHRlbXAgZml4IHVudGlsIC9jb25maWd1cmF0aW9uIGlzIGltcGxlbWVudGVkLFxuICAgICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgICAgcmVxLnNlbmQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRQcm9kdWN0cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFByb2R1Y3RzKHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAocHJvZHVjdCA9PT0gXCJzZWxlY3RhYmxlXCIgfHwgcHJvZHVjdCA9PT0gXCJlbnRlcmFibGVcIiB8fCBwcm9kdWN0ID09PSBcImFjY2Vzc2libGVcIikge1xuICAgICAgICAgIF90aGlzLkFQSVJlcXVlc3QoJy9wcm9kdWN0P3R5cGU9JyArIHByb2R1Y3QsICdHRVQnLCBmdW5jdGlvbiAoZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuQVBJUmVxdWVzdCgnL3Byb2R1Y3QvJyArIHByb2R1Y3QsICdHRVQnLCBmdW5jdGlvbiAoZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFByb2R1Y3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQcm9kdWN0KHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KCcvcHJvZHVjdC8nICsgcHJvZHVjdCwgJ0dFVCcsIGZ1bmN0aW9uIChlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdBUElSZXF1ZXN0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICBpZiAoXG4gICAgICAvLyBpZiB3ZSBhcmUgZG9pbmcgdGhlIGxvZ2luXG4gICAgICBwYXRoID09PSBMT0dJTiB8fFxuICAgICAgLy8gaWYgd2UgYXJlIGFscmVhZHkgYXV0aGVkXG4gICAgICB0aGlzLl9hdXRoIHx8XG4gICAgICAvLyBvciB3ZSBhcmUgbWlzc2luZyBhdXRoIGRhdGFcbiAgICAgICF0aGlzLnBhc3N3b3JkIHx8ICF0aGlzLnVzZXJuYW1lKSB7XG4gICAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgIHJldHVybiB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgICB0aGlzLmxvZ2luKChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfSkuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX0FQSVJlcXVlc3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIGlmICh0aGlzLmFwaV9rZXkpIHtcbiAgICAgICAgcGFyYW1zLmFwaV9rZXkgPSB0aGlzLmFwaV9rZXk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICAgIHBhcmFtcy50b2tlbiA9IHRoaXMuX2F1dGgudG9rZW47XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkge1xuICAgICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgICBwYXJhbXMucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICB1cmwgKz0gXCI/XCIgKyB0aGlzLnVybEVuY29kZShwYXJhbXMpO1xuICAgICAgfVxuXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgaWYgKG1ldGhvZC50b1VwcGVyQ2FzZSgpICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgIH1cbiAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShudWxsLCByZXEsIGNhbGxiYWNrLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5zZW5kKGJvZHkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVJlc3BvbnNlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgICAvLyBkZXRlY3QgdGltZW91dCBlcnJvcnNcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgJiYgVElNRU9VVF9FUlJPUlMuaW5kZXhPZihlcnIuY29kZSkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGhhbmRsZSBnZW5lcmljIGVycm9yc1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIGFueXRoaW5nIGluIDIwMCBzdGF0dXMgcmFuZ2UgaXMgYSBzdWNjZXNzXG4gICAgICB2YXIgcmVxdWVzdFN1Y2Nlc3NmdWwgPSByZXNwb25zZS5zdGF0dXMgPiAxOTkgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgMzAwO1xuXG4gICAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICAgIHZhciBwYXJzZWRCb2R5O1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBYWFg6IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoaXMgYmV0dGVyIGluIHRoZSByZXF1ZXN0IHN1Y2Nlc3MgY2FzZT9cbiAgICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcigncmVzcG9uc2Ugd2FzIG5vdCB2YWxpZCBqc29uOiAnICsgcmVzcG9uc2UucmVzcG9uc2VUZXh0KSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZGV0ZWN0IGlmIHdlJ3JlIHJ1bm5pbmcgQnVnemlsbGEgNS4wXG4gICAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXJzZWRCb2R5ID0gcGFyc2VkQm9keVsncmVzdWx0J107XG4gICAgICB9XG5cbiAgICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgICAgLy8gWFhYOiB0aGlzIHNlZW1zIGxpa2UgYSBidWcgaW4gdGhlIGFwaS5cbiAgICAgIGlmIChwYXJzZWRCb2R5ICYmIHBhcnNlZEJvZHkuZXJyb3IpIHtcbiAgICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXF1ZXN0U3VjY2Vzc2Z1bCkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdIVFRQIHN0YXR1cyAnICsgcmVzcG9uc2Uuc3RhdHVzICsgJ1xcbicgKyAoXG4gICAgICAgIC8vIG5vdGUgaW50ZW50aW9uYWwgdXNlIG9mICE9IGluc3RlYWQgb2YgIT09XG4gICAgICAgIHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnKSk7XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKG51bGwsIGZpZWxkID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd1cmxFbmNvZGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cmxFbmNvZGUocGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gW107XG4gICAgICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtc1twYXJhbV07XG4gICAgICAgIGlmICghdmFsdWVzLmZvckVhY2gpIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICAgICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICB1cmwucHVzaChlbmNvZGVVUklDb21wb25lbnQocGFyYW0pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXJsLmpvaW4oXCImXCIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWd6aWxsYUNsaWVudDtcbn0pKCk7XG5cbmV4cG9ydHMuQnVnemlsbGFDbGllbnQgPSBCdWd6aWxsYUNsaWVudDtcblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50KG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBCdWd6aWxsYUNsaWVudChvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OXBibVJsZUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdRVUZCUVN4SlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRPenM3T3p0QlFVdDJSQ3hKUVVGTkxFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdPenM3TzBGQlMzWkNMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03TzBGQlJYaEVMRk5CUVZNc1dVRkJXU3hEUVVGRExFVkJRVVVzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYkVNc1RVRkJTU3hQUVVGUExFVkJRVVVzUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZETlVJc1dVRkJVU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5rTEUxQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNVMEZCVHl4VlFVRlRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE4wSXNVVUZCU1N4SFFVRkhMRVZCUVVVc1QwRkJUeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlRsQ0xGRkJRVWtzVVVGQlVTeEZRVUZGT3p0QlFVVmFMRlZCUVVrc1JVRkJSU3hMUVVGTExGTkJRVk1zUlVGQlJUdEJRVU53UWl4VlFVRkZMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVNdlFqdEJRVU5FTEdOQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZET1VJc1RVRkRTVHRCUVVOSUxGbEJRVTBzY1VOQlFYRkRMRU5CUVVNN1MwRkROME03UjBGRFJpeERRVUZETzBOQlEwZzdPenM3T3pzN096czdPenRCUVZsRUxGTkJRVk1zWVVGQllTeERRVUZETEUxQlFVMHNSVUZCUlRzN1FVRkZOMElzVTBGQlR5eFpRVUZYT3pzN08wRkJTV2hDTEZGQlFVa3NTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN096dEJRVVUxUXl4WlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZGQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRU3hWUVVGVExFZEJRVWNzUlVGQlJUdEJRVU4yUWl4VlFVRkpMRWRCUVVjc1JVRkJSU3hQUVVGUExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXpzN08wRkJSemxDTEZsQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6RkNMRU5CUVVFc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTm1MRU5CUVVNN1EwRkRTRHM3UVVGRlRTeEpRVUZKTEdOQlFXTTdRVUZGV2l4WFFVWkdMR05CUVdNc1EwRkZXQ3hQUVVGUExFVkJRVVU3TUVKQlJsb3NZMEZCWXpzN1FVRkhja0lzVjBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4RlFVRkZMRU5CUVVNN08wRkJSWGhDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU5xUXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEYWtNc1VVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFJRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZET3p0QlFVVjJReXhSUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1dVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzBSRUZCTkVRc1EwRkJReXhEUVVGRE8wdEJReTlGT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4dlEwRkJiME1zUTBGQlF6dEJRVU5zUlN4UlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6czdRVUZGTjBNc1VVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdSMEZEYmtJN096czdPenM3T3pzN096czdPenM3TzJWQmJFSlJMR05CUVdNN08xZEJkVU5xUWl4bFFVRkRMRkZCUVZFc1JVRkJSVHM3UVVGRlppeFZRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRaQ3huUWtGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VDBGRE5VSTdPMEZCUlVRc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRM0JETEdOQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc01rTkJRVEpETEVOQlFVTXNRMEZCUXp0UFFVTTVSRHM3UVVGRlJDeFZRVUZKTEUxQlFVMHNSMEZCUnp0QlFVTllMR0ZCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVUdEJRVU53UWl4blFrRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTzA5QlEzaENMRU5CUVVNN08wRkJSVVlzVlVGQlNTeFhRVUZYTEVkQlFVY3NRMEZCUVN4VFFVRlRMRmRCUVZjc1EwRkJReXhIUVVGSExFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEzQkVMRmxCUVVrc1IwRkJSeXhGUVVGRkxFOUJRVThzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpsQ0xGbEJRVWtzVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnVRaXhqUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVFN1UwRkROMElzVFVGRFNUdEJRVU5JTEdOQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8xTkJRM1pDTzBGQlEwUXNaMEpCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdUMEZETVVJc1EwRkJRU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZZaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1YwRkJWeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRia1U3T3p0WFFVVk5MR2RDUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEV2l4blFrRkJVU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVU5zUWl4alFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRE8wOUJRMlE3TzBGQlJVUXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkRZaXhQUVVGUExFZEJRVWNzUlVGQlJTeEZRVU5hTEV0QlFVc3NSVUZEVEN4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRM1JDTEUxQlFVMHNSVUZEVGl4SlFVRkpMRVZCUTBvc1RVRkJUU3hEUVVOUUxFTkJRVU03UzBGRFNEczdPMWRCUlZVc2IwSkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTTFRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hGUVVGRkxFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRhRVU3T3p0WFFVVlRMRzFDUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVNM1JEczdPMWRCUlZNc2JVSkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjRRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjBSRHM3TzFkQlJWY3NjVUpCUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU42UWl4VlFVRkpMRk5CUVZNc1IwRkJSeXhUUVVGYUxGTkJRVk1zUTBGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMEZCUXpkQ0xGbEJRVWtzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTJZc1dVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xGbEJRVWtzVDBGQlR5eGhRVUZoTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1YwRkJWeXhGUVVGRk96dEJRVVZ3UkN4MVFrRkJZU3hIUVVGSExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTTdVMEZEZUVNN1FVRkRSQ3huUWtGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4aFFVRmhMRU5CUVVNc1EwRkJRenRQUVVNdlFpeERRVUZCT3p0QlFVVkVMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRMklzVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUTNwQ0xFdEJRVXNzUlVGRFRDeFRRVUZUTEVWQlExUXNUVUZCVFN4RFFVTlFMRU5CUVVNN1MwRkRTRHM3TzFkQlJWVXNiMEpCUVVNc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYWtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGRFlpeFBRVUZQTEVkQlFVY3NSVUZCUlN4SFFVRkhMRlZCUVZVc1JVRkRla0lzVFVGQlRTeEZRVU5PTEZGQlFWRXNSVUZEVWl4SlFVRkpMRVZCUTBvc1QwRkJUeXhEUVVOU0xFTkJRVU03UzBGRFNEczdPMWRCUlZVc2IwSkJRVU1zUlVGQlJTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjRRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVU5pTEU5QlFVOHNSMEZCUnl4RlFVRkZMRWRCUVVjc1ZVRkJWU3hGUVVONlFpeExRVUZMTEVWQlEwd3NVVUZCVVN4RlFVTlNMRTFCUVUwc1EwRkRVQ3hEUVVGRE8wdEJRMGc3T3pzN096czdPenM3TzFkQlUyTXNkMEpCUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU0xUWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVOaUxFOUJRVThzUjBGQlJ5eEZRVUZGTEVkQlFVY3NZVUZCWVN4RlFVTTFRaXhMUVVGTExFVkJRMHdzV1VGQldTeERRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRU5CUVVNc1JVRkRNVUlzVFVGQlRTeERRVU5RTEVOQlFVTTdTMEZEU0RzN08xZEJSV2RDTERCQ1FVRkRMRVZCUVVVc1JVRkJSU3hWUVVGVkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlF6RkRMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRMklzVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4aFFVRmhMRVZCUXpWQ0xFMUJRVTBzUlVGRFRpeFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUTNSQ0xHRkJRV0VzUlVGRFlpeFZRVUZWTEVOQlExZ3NRMEZCUXp0TFFVTklPenM3VjBGRllTeDFRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRek5DTEZWQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJJc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlN4RlFVTjJRaXhMUVVGTExFVkJRMHdzV1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVTjBRaXhoUVVGaExFTkJRMlFzUTBGQlF6dExRVU5JT3pzN1YwRkZaMElzTUVKQlFVTXNSVUZCUlN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE1VTXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN1MwRkROMFU3T3p0WFFVVlhMSEZDUVVGRExFdEJRVXNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZETlVJc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJReXhEUVVGRExFTkJRVU03UzBGRE1VVTdPenRYUVVWUExHbENRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRja0lzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZEWWl4UlFVRlJMRWRCUVVjc1JVRkJSU3hGUVVOaUxFdEJRVXNzUlVGRFRDeFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUTNSQ0xFOUJRVThzUTBGRFVpeERRVUZETzB0QlEwZzdPenRYUVVWeFFpd3JRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk96czdRVUZIYmtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eHpRa0ZCYzBJc1IwRkJSeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMHRCUXk5RU96czdPenM3T3pzN1YwRlBaMElzTUVKQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVOc1F5eFZRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEYkVJc1kwRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dFBRVU5rT3pzN096dEJRVXRFTEZWQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmFFSXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFVkJRVVVzUTBGQlF6dEJRVU12UWl4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTd3lSRUZCTWtRc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU51Uml4VFFVRkhMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZEYmtRc1UwRkJSeXhEUVVGRExHdENRVUZyUWl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRM2hETEZsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRNVU1zWTBGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzFOQlF6RkRPMDlCUTBZc1EwRkJRenRCUVVOR0xGTkJRVWNzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRCUVVNelFpeFRRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJReTlDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTXZReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4VlFVRlZMRXRCUVVzc1JVRkJSVHRCUVVNM1FpeFpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdUMEZETjBNc1EwRkJRenRCUVVOR0xGTkJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0TFFVTmFPenM3VjBGRlZ5eHhRa0ZCUXl4UFFVRlBMRVZCUVVVN1FVRkRjRUlzVlVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTJwQ0xHRkJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCVXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRek5ETEZsQlFVa3NUMEZCVHl4TFFVRkxMRmxCUVZrc1NVRkJTU3hQUVVGUExFdEJRVXNzVjBGQlZ5eEpRVUZKTEU5QlFVOHNTMEZCU3l4WlFVRlpMRVZCUVVjN1FVRkRjRVlzWlVGQlN5eERRVUZETEZWQlFWVXNRMEZEWkN4blFrRkJaMElzUjBGQlJ5eFBRVUZQTEVWQlF6RkNMRXRCUVVzc1JVRkRUQ3hWUVVGVExFZEJRVWNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEZEVJc1owSkJRVWNzUjBGQlJ5eEZRVUZGTzBGQlEwNHNjVUpCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzQkNMRTFCUVUwN1FVRkRUQ3h4UWtGQlR5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1lVRkRNVUk3VjBGRFJpeERRVU5HTEVOQlFVTTdVMEZEU0N4TlFVRk5PMEZCUTB3c1pVRkJTeXhEUVVGRExGVkJRVlVzUTBGRFpDeFhRVUZYTEVkQlFVY3NUMEZCVHl4RlFVTnlRaXhMUVVGTExFVkJRMHdzVlVGQlV5eEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUTNSQ0xHZENRVUZITEVkQlFVY3NSVUZCUlR0QlFVTk9MSEZDUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTndRaXhOUVVGTk8wRkJRMHdzY1VKQlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRekZDTzFkQlEwWXNRMEZEUml4RFFVRkRPMU5CUTBnN1QwRkRSaXhEUVVGRExFTkJRVU03UzBGRFNqczdPMWRCUlZVc2IwSkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEyNUNMRlZCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU5xUWl4aFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExGVkJRVk1zVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTXpReXhoUVVGTExFTkJRVU1zVlVGQlZTeERRVU5rTEZkQlFWY3NSMEZCUnl4UFFVRlBMRVZCUTNKQ0xFdEJRVXNzUlVGRFRDeFZRVUZUTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRia0lzWTBGQlJ5eEhRVUZITEVWQlFVVTdRVUZEVGl4dFFrRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdWMEZEY0VJc1RVRkJUVHRCUVVOTUxHMUNRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRYUVVONlFqdFRRVU5HTEVOQlEwb3NRMEZCUXp0UFFVTklMRU5CUVVNc1EwRkJRenRMUVVOS096czdWMEZGVlN4dlFrRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJUdEJRVU4yUkRzN1FVRkZSU3hWUVVGSkxFdEJRVXNzUzBGQlN6czdRVUZGWkN4VlFVRkpMRU5CUVVNc1MwRkJTenM3UVVGRlZpeFBRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVU5vUXpzN1FVRkZRU3hsUVVGUExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dFBRVU5vUkRzN1FVRkZSQ3hWUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6czdRVUZGY0VNc1ZVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZCTEZWQlFWTXNSMEZCUnl4RlFVRkZPMEZCUTNaQ0xGbEJRVWtzUjBGQlJ5eEZRVUZGTEU5QlFVOHNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRemxDTEZsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTndReXhEUVVGQkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRaanM3TzFkQlJWY3NjVUpCUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGVFUXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMEZCUlRkQ0xGbEJRVTBzUjBGQlJ5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWMFFpeFZRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkJSU3hqUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1QwRkJSVHM3UVVGRmJrUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRMlFzWTBGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dFBRVU5xUXl4TlFVTkpMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNaRExHTkJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRCUVVNM1FpeGpRVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VDBGRGFrTTdPMEZCUlVRc1ZVRkJTU3hOUVVGTkxFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMRmRCUVVjc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVOeVF6czdRVUZGUkN4VlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZOVUlzVlVGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVWb1FpeFZRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMR05CUVdNc1JVRkJSU3hEUVVGRE8wRkJReTlDTEZOQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFRaXhUUVVGSExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRia1FzVlVGQlNTeE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRXRCUVVzc1MwRkJTeXhGUVVGRk8wRkJRMnhETEZkQlFVY3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eGpRVUZqTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFBRVU14UkR0QlFVTkVMRk5CUVVjc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4VlFVRlZMRXRCUVVzc1JVRkJSVHRCUVVONFF5eFpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpGRExHTkJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVMEZEYWtRN1QwRkRSaXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8wRkJRek5DTEZOQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1ZVRkJWU3hMUVVGTExFVkJRVVU3UVVGREwwSXNXVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMDlCUXk5RExFTkJRVU03UVVGRFJpeFRRVUZITEVOQlFVTXNUMEZCVHl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRemRDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTXpReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOb1FqczdPMWRCUldNc2QwSkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRk96dEJRVVU1UXl4VlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeEpRVUZKTEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUXpsRUxHVkJRVThzVVVGQlVTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU03VDBGRGRrTTdPenRCUVVkRUxGVkJRVWtzUjBGQlJ5eEZRVUZGTEU5QlFVOHNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96czdRVUZIT1VJc1ZVRkJTU3hwUWtGQmFVSXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenM3TzBGQlIzWkZMRlZCUVVrc1ZVRkJWU3hEUVVGRE96dEJRVVZtTEZWQlFVazdRVUZEUml4clFrRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wOUJRMmhFTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN08wRkJSVllzV1VGQlNTeHBRa0ZCYVVJc1JVRkJSVHRCUVVOeVFpeHBRa0ZCVHl4UlFVRlJMRU5CUTJJc1NVRkJTU3hMUVVGTExFTkJRVU1zSzBKQlFTdENMRWRCUVVjc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVU51UlN4RFFVRkRPMU5CUTBnN1QwRkRSanM3TzBGQlIwUXNWVUZCU1N4UFFVRlBMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eFhRVUZYTEVWQlFVVTdRVUZETDBNc2EwSkJRVlVzUjBGQlJ5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1QwRkRia003T3pzN1FVRkpSQ3hWUVVGSkxGVkJRVlVzU1VGQlNTeFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTJ4RExIbENRVUZwUWl4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVNelFqczdRVUZGUkN4VlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdRVUZEZEVJc1pVRkJUeXhSUVVGUkxFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlEzWkNMR05CUVdNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMEZCUlhSRExHdENRVUZWTEVsQlFVa3NWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJRU3hCUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUXpkRUxFTkJRVU1zUTBGQlF6dFBRVU5LT3p0QlFVVkVMR05CUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUVVGQlF5eExRVUZMTEVkQlFVa3NWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzB0QlF6RkVPenM3VjBGRlV5eHRRa0ZCUXl4TlFVRk5MRVZCUVVVN1FVRkRha0lzVlVGQlNTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJJc1YwRkJTU3hKUVVGSkxFdEJRVXNzU1VGQlNTeE5RVUZOTEVWQlFVVTdRVUZEZGtJc1dVRkJTU3hOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpOQ0xGbEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVTm9RaXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN1FVRkZjRUlzWTBGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlRMRXRCUVVzc1JVRkJSVHRCUVVNMVFpeGhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkRkRU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVVNN1QwRkRTanRCUVVORUxHRkJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOMFFqczdPMU5CYUZwUkxHTkJRV003U1VGcFduaENMRU5CUVVFN096czdRVUZGVFN4VFFVRlRMRmxCUVZrc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGNFTXNVMEZCVHl4SlFVRkpMR05CUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dERRVU53UXlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmpiMjV6ZENCWVRVeElkSFJ3VW1WeGRXVnpkQ0E5SUhKbGNYVnBjbVVvSnk0dmVHaHlKeWt1V0UxTVNIUjBjRkpsY1hWbGMzUTdYRzVjYmk4cUtseHVRMjl1YzNSaGJuUWdabTl5SUhSb1pTQnNiMmRwYmlCbGJuUnllWEJ2YVc1MExseHVLaTljYm1OdmJuTjBJRXhQUjBsT0lEMGdKeTlzYjJkcGJpYzdYRzVjYmk4cUtseHVSWEp5YjNKeklISmxiR0YwWldRZ2RHOGdkR2hsSUhOdlkydGxkQ0IwYVcxbGIzVjBMbHh1S2k5Y2JtTnZibk4wSUZSSlRVVlBWVlJmUlZKU1QxSlRJRDBnV3lkRlZFbE5SVVJQVlZRbkxDQW5SVk5QUTB0RlZGUkpUVVZFVDFWVUoxMDdYRzVjYm1aMWJtTjBhVzl1SUdWNGRISmhZM1JHYVdWc1pDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdhV1lnS0hSNWNHVnZaaUJwWkNBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJR05oYkd4aVlXTnJJRDBnYVdRN1hHNGdJQ0FnYVdRZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9aWEp5TENCeVpYTndiMjV6WlNrZ2UxeHVJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVYRzRnSUNBZ2FXWWdLSEpsYzNCdmJuTmxLU0I3WEc0Z0lDQWdJQ0F2THlCa1pXWmhkV3gwSUdKbGFHRjJhVzl5SUdseklIUnZJSFZ6WlNCMGFHVWdabWx5YzNRZ2FXUWdkMmhsYmlCMGFHVWdZMkZzYkdWeUlHUnZaWE1nYm05MElIQnliM1pwWkdVZ2IyNWxMbHh1SUNBZ0lDQWdhV1lnS0dsa0lEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ2FXUWdQU0JQWW1wbFkzUXVhMlY1Y3loeVpYTndiMjV6WlNsYk1GMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCeVpYTndiMjV6WlZ0cFpGMHBPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvY205M0lGd2lSWEp5YjNJNkxDQnVieUJ5WlhOd2IyNXpaU0JwYmlCbGVIUnlZV04wUm1sbGJHUmNJanRjYmlBZ0lDQjlYRzRnSUgwN1hHNTlYRzVjYmk4cUtseHVSblZ1WTNScGIyNGdaR1ZqYjNKaGRHOXlJSGRvYVdOb0lIZHBiR3dnWVhSMFpXMXdkQ0IwYnlCc2IyZHBiaUIwYnlCaWRXZDZhV3hzWVZ4dWQybDBhQ0IwYUdVZ1kzVnljbVZ1ZENCamNtVmtaVzUwYVdGc2N5QndjbWx2Y2lCMGJ5QnRZV3RwYm1jZ2RHaGxJR0ZqZEhWaGJDQmhjR2tnWTJGc2JDNWNibHh1SUNBZ0lFSjFaM3BwYkd4aExuQnliM1J2ZEhsd1pTNXRaWFJvYjJRZ1BTQnNiMmRwYmlobWRXNWpkR2x2Ymlod1lYSmhiU3dnY0dGeVlXMHBJSHRjYmlBZ0lDQjlLVHRjYmx4dVFIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ2JXVjBhRzlrSUhSdklHUmxZMjl5WVhSbExseHVRSEpsZEhWeWJpQjdSblZ1WTNScGIyNTlJR1JsWTI5eVlYUmxaQ0J0WlhSb2IyUXVYRzRxTDF4dVpuVnVZM1JwYjI0Z2JHOW5hVzVTWlhGMWFYSmxaQ2h0WlhSb2IyUXBJSHRjYmlBZ0x5OGdkMlVnWVhOemRXMWxJSFJvYVhNZ2FYTWdZU0IyWVd4cFpDQmlkV2RwYkd4aElHbHVjM1JoYm1ObExseHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdMeThnY21WdFpXMWlaWElnZkhSb2FYTjhJR2x6SUdFZ1luVm5lbWxzYkdFZ2FXNXpkR0Z1WTJWY2JseHVJQ0FnSUM4dklHRnlaM01nWm05eUlIUm9aU0JrWldOdmNtRjBaV1FnYldWMGFHOWtYRzRnSUNBZ2RtRnlJR0Z5WjNNZ1BTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaGhjbWQxYldWdWRITXBMRnh1SUNBZ0lDQWdJQ0F2THlCM1pTQnVaV1ZrSUhSb1pTQmpZV3hzWW1GamF5QnpieUIzWlNCallXNGdjR0Z6Y3lCc2IyZHBiaUJ5Wld4aGRHVmtJR1Z5Y205eWN5NWNiaUFnSUNBZ0lDQWdZMkZzYkdKaFkyc2dQU0JoY21kelcyRnlaM011YkdWdVozUm9JQzBnTVYwN1hHNWNiaUFnSUNCMGFHbHpMbXh2WjJsdUtHWjFibU4wYVc5dUtHVnljaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVnljaWtnY21WMGRYSnVJR05oYkd4aVlXTnJLR1Z5Y2lrN1hHNWNiaUFnSUNBZ0lDOHZJSGRsSUdGeVpTQnViM2NnYkc5bloyVmtJR2x1SUhOdklIUm9aU0J0WlhSb2IyUWdZMkZ1SUhKMWJpRmNiaUFnSUNBZ0lHMWxkR2h2WkM1aGNIQnNlU2gwYUdsekxDQmhjbWR6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdkbUZ5SUVKMVozcHBiR3hoUTJ4cFpXNTBJRDBnWTJ4aGMzTWdlMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnZjSFJwYjI1eklEMGdiM0IwYVc5dWN5QjhmQ0I3ZlR0Y2JseHVJQ0FnSUhSb2FYTXVkWE5sY201aGJXVWdQU0J2Y0hScGIyNXpMblZ6WlhKdVlXMWxPMXh1SUNBZ0lIUm9hWE11Y0dGemMzZHZjbVFnUFNCdmNIUnBiMjV6TG5CaGMzTjNiM0prTzF4dUlDQWdJSFJvYVhNdWRHbHRaVzkxZENBOUlHOXdkR2x2Ym5NdWRHbHRaVzkxZENCOGZDQXdPMXh1SUNBZ0lIUm9hWE11WVhCcFgydGxlU0E5SUc5d2RHbHZibk11WVhCcFgydGxlU0I4ZkNCdWRXeHNPMXh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11ZEdWemRDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZHZjSFJwYjI1ekxuUmxjM1FnYVhNZ1pHVndjbVZqWVhSbFpDQndiR1ZoYzJVZ2MzQmxZMmxtZVNCMGFHVWdkWEpzSUdScGNtVmpkR3g1SnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NWhjR2xWY213Z1BTQnZjSFJwYjI1ekxuVnliQ0I4ZkNBbmFIUjBjSE02THk5aWRXZDZhV3hzWVM1dGIzcHBiR3hoTG05eVp5OXlaWE4wTHljN1hHNGdJQ0FnZEdocGN5NWhjR2xWY213Z1BTQjBhR2x6TG1Gd2FWVnliQzV5WlhCc1lXTmxLQzljWEM4a0x5d2dYQ0pjSWlrN1hHNWNiaUFnSUNCMGFHbHpMbDloZFhSb0lEMGdiblZzYkR0Y2JpQWdmVnh1SUNBdktpcGNiaUFnUVhWMGFHVnVkR2xqWVhScGIyNGdaR1YwWVdsc2N5Qm1iM0lnWjJsMlpXNGdkWE5sY2k1Y2JseHVJQ0JGZUdGdGNHeGxPbHh1WEc0Z0lDQWdJQ0I3SUdsa09pQXhNakl5TENCMGIydGxiam9nSjNoNGVIZ25JSDFjYmx4dUlDQkFkSGx3WlNCN1QySnFaV04wZlZ4dUlDQXFMMXh1WEc1Y2JpQWdMeW9xWEc0Z0lFbHVJSFJvWlNCU1JWTlVJRUZRU1NCM1pTQm1hWEp6ZENCc2IyZHBiaUIwYnlCaFkzRjFhWEpsSUdFZ2RHOXJaVzRnZDJocFkyZ2dhWE1nZEdobGJpQjFjMlZrSUhSdklHMWhhMlZjYmlBZ2NtVnhkV1Z6ZEhNdUlGTmxaVG9nYUhSMGNEb3ZMMko2Y2k1dGIzcHBiR3hoTG05eVp5OWliVzh2TkM0eUwzWnBaWGN2YUdWaFpEb3ZRblZuZW1sc2JHRXZWMlZpVTJWeWRtbGpaUzlUWlhKMlpYSXZVa1ZUVkM1d2JTTk1OVFUyWEc1Y2JpQWdWR2hwY3lCdFpYUm9iMlFnWTJGdUlHSmxJSFZ6WldRZ2NIVmliR2xqYkhrZ1luVjBJR2x6SUdSbGMybG5ibVZrSUdadmNpQnBiblJsY201aGJDQmpiMjV6ZFcxd2RHbHZiaUJtYjNKY2JpQWdaV0Z6WlNCdlppQjFjMlV1WEc1Y2JpQWdRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dXMFZ5Y205eUlHVnljaXdnVTNSeWFXNW5JSFJ2YTJWdVhTNWNiaUFnS2k5Y2JpQWdiRzluYVc0Z0tHTmhiR3hpWVdOcktTQjdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZZWFYwYUNrZ2UxeHVJQ0FnSUNBZ1kyRnNiR0poWTJzb2JuVnNiQ3dnZEdocGN5NWZZWFYwYUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG5WelpYSnVZVzFsSUh4OElDRjBhR2x6TG5CaGMzTjNiM0prS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjIxcGMzTnBibWNnYjNJZ2FXNTJZV3hwWkNBdWRYTmxjbTVoYldVZ2IzSWdMbkJoYzNOM2IzSmtKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhCaGNtRnRjeUE5SUh0Y2JpQWdJQ0FnSUd4dloybHVPaUIwYUdsekxuVnpaWEp1WVcxbExGeHVJQ0FnSUNBZ2NHRnpjM2R2Y21RNklIUm9hWE11Y0dGemMzZHZjbVJjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdkbUZ5SUdoaGJtUnNaVXh2WjJsdUlEMGdablZ1WTNScGIyNGdhR0Z1Wkd4bFRHOW5hVzRvWlhKeUxDQnlaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdhV1lnS0dWeWNpa2djbVYwZFhKdUlHTmhiR3hpWVdOcktHVnljaWs3WEc0Z0lDQWdJQ0JwWmlBb2NtVnpjRzl1YzJVdWNtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJGMWRHZ2dQU0J5WlhOd2IyNXpaUzV5WlhOMWJIUmNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDloZFhSb0lEMGdjbVZ6Y0c5dWMyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCeVpYTndiMjV6WlNrN1hHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcE8xeHVYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmJHOW5hVzRuTENBblIwVlVKeXdnYUdGdVpHeGxURzluYVc0c0lHNTFiR3dzSUc1MWJHd3NJSEJoY21GdGN5azdYRzRnSUgxY2JseHVJQ0JuWlhSQ2RXY2dLR2xrTENCd1lYSmhiWE1zSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnYVdZZ0tDRmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDQWdJR05oYkd4aVlXTnJJRDBnY0dGeVlXMXpPMXh1SUNBZ0lDQWdJSEJoY21GdGN5QTlJSHQ5TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDaGNiaUFnSUNBZ0lDY3ZZblZuTHljZ0t5QnBaQ3hjYmlBZ0lDQWdJQ2RIUlZRbkxGeHVJQ0FnSUNBZ1pYaDBjbUZqZEVacFpXeGtLR05oYkd4aVlXTnJLU3hjYmlBZ0lDQWdJQ2RpZFdkekp5eGNiaUFnSUNBZ0lHNTFiR3dzWEc0Z0lDQWdJQ0J3WVhKaGJYTmNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdjMlZoY21Ob1FuVm5jeUFvY0dGeVlXMXpMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDZ25MMkoxWnljc0lDZEhSVlFuTENCallXeHNZbUZqYXl3Z0oySjFaM01uTENCdWRXeHNMQ0J3WVhKaGJYTXBPMXh1SUNCOVhHNWNiaUFnZFhCa1lYUmxRblZuSUNocFpDd2dZblZuTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2duTDJKMVp5OG5JQ3NnYVdRc0lDZFFWVlFuTENCallXeHNZbUZqYXl3Z0oySjFaM01uTENCaWRXY3BPMXh1SUNCOVhHNWNiaUFnWTNKbFlYUmxRblZuSUNoaWRXY3NJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtDY3ZZblZuSnl3Z0oxQlBVMVFuTENCallXeHNZbUZqYXl3Z0oybGtKeXdnWW5WbktUdGNiaUFnZlZ4dVhHNGdJR0oxWjBOdmJXMWxiblJ6SUNocFpDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjJZWElnWDJOaGJHeGlZV05ySUQwZ1puVnVZM1JwYjI0b1pTd2djaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVXBJSFJvY205M0lHVTdYRzRnSUNBZ0lDQjJZWElnWDJKMVoxOWpiMjF0Wlc1MGN5QTlJSEpiYVdSZE8xeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQmZZblZuWDJOdmJXMWxiblJ6V3lkamIyMXRaVzUwY3lkZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJpZFdkNmFXeHNZU0ExSURvb1hHNGdJQ0FnSUNBZ0lGOWlkV2RmWTI5dGJXVnVkSE1nUFNCZlluVm5YMk52YlcxbGJuUnpMbU52YlcxbGJuUnpPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZMkZzYkdKaFkyc29iblZzYkN3Z1gySjFaMTlqYjIxdFpXNTBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0p5OWlkV2N2SnlBcklHbGtJQ3NnSnk5amIyMXRaVzUwSnl4Y2JpQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdYMk5oYkd4aVlXTnJMRnh1SUNBZ0lDQWdKMkoxWjNNblhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHRmtaRU52YlcxbGJuUWdLR2xrTENCamIyMXRaVzUwTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5Wbkx5Y2dLeUJwWkNBcklDY3ZZMjl0YldWdWRDY3NYRzRnSUNBZ0lDQW5VRTlUVkNjc1hHNGdJQ0FnSUNCallXeHNZbUZqYXl4Y2JpQWdJQ0FnSUc1MWJHd3NYRzRnSUNBZ0lDQmpiMjF0Wlc1MFhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHSjFaMGhwYzNSdmNua2dLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5Wbkx5Y2dLeUJwWkNBcklDY3ZhR2x6ZEc5eWVTY3NYRzRnSUNBZ0lDQW5SMFZVSnl4Y2JpQWdJQ0FnSUdOaGJHeGlZV05yTEZ4dUlDQWdJQ0FnSjJKMVozTW5YRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJHYVc1a2N5QmhiR3dnWVhSMFlXTm9iV1Z1ZEhNZ1ptOXlJR0VnWjJsMlpXNGdZblZuSUNOY2JpQWdJQ29nYUhSMGNEb3ZMM2QzZHk1aWRXZDZhV3hzWVM1dmNtY3ZaRzlqY3k5MGFYQXZaVzR2YUhSdGJDOWhjR2t2UW5WbmVtbHNiR0V2VjJWaVUyVnlkbWxqWlM5Q2RXY3VhSFJ0YkNOaGRIUmhZMmh0Wlc1MGMxeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMDUxYldKbGNuMGdhV1FnYjJZZ1luVm5MbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmJSWEp5YjNJc0lFRnljbUY1UEVGMGRHRmphRzFsYm5RK1hTNWNiaUFnSUNvdlhHNGdJR0oxWjBGMGRHRmphRzFsYm5SeklDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxrRlFTVkpsY1hWbGMzUW9YRzRnSUNBZ0lDQW5MMkoxWnk4bklDc2dhV1FnS3lBbkwyRjBkR0ZqYUcxbGJuUW5MRnh1SUNBZ0lDQWdKMGRGVkNjc1hHNGdJQ0FnSUNCbGVIUnlZV04wUm1sbGJHUW9hV1FzSUdOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUNkaWRXZHpKMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JqY21WaGRHVkJkSFJoWTJodFpXNTBJQ2hwWkN3Z1lYUjBZV05vYldWdWRDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb1hHNGdJQ0FnSUNBbkwySjFaeThuSUNzZ2FXUWdLeUFuTDJGMGRHRmphRzFsYm5RbkxGeHVJQ0FnSUNBZ0oxQlBVMVFuTEZ4dUlDQWdJQ0FnWlhoMGNtRmpkRVpwWld4a0tHTmhiR3hpWVdOcktTeGNiaUFnSUNBZ0lDZGhkSFJoWTJodFpXNTBjeWNzWEc0Z0lDQWdJQ0JoZEhSaFkyaHRaVzUwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRFRjBkR0ZqYUcxbGJuUWdLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5WbkwyRjBkR0ZqYUcxbGJuUXZKeUFySUdsa0xGeHVJQ0FnSUNBZ0owZEZWQ2NzWEc0Z0lDQWdJQ0JsZUhSeVlXTjBSbWxsYkdRb1kyRnNiR0poWTJzcExGeHVJQ0FnSUNBZ0oyRjBkR0ZqYUcxbGJuUnpKMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0IxY0dSaGRHVkJkSFJoWTJodFpXNTBJQ2hwWkN3Z1lYUjBZV05vYldWdWRDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb0p5OWlkV2N2WVhSMFlXTm9iV1Z1ZEM4bklDc2dhV1FzSUNkUVZWUW5MQ0JqWVd4c1ltRmpheXdnSjI5ckp5d2dZWFIwWVdOb2JXVnVkQ2s3WEc0Z0lIMWNibHh1SUNCelpXRnlZMmhWYzJWeWN5QW9iV0YwWTJnc0lHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmRYTmxjaWNzSUNkSFJWUW5MQ0JqWVd4c1ltRmpheXdnSjNWelpYSnpKeXdnYm5Wc2JDd2dlMjFoZEdOb09pQnRZWFJqYUgwcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVlhObGNpQW9hV1FzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnZEdocGN5NUJVRWxTWlhGMVpYTjBLRnh1SUNBZ0lDQWdKeTkxYzJWeUx5Y2dLeUJwWkN4Y2JpQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdaWGgwY21GamRFWnBaV3hrS0dOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUNkMWMyVnljeWRjYmlBZ0lDQXBPMXh1SUNCOVhHNWNiaUFnWjJWMFUzVm5aMlZ6ZEdWa1VtVjJhV1YzWlhKeklDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0F2THlCQ1RVOHRJSE53WldOcFptbGpJR1Y0ZEdWdWMybHZiaUIwYnlCblpYUWdjM1ZuWjJWemRHVmtJSEpsZG1sbGQyVnljeUJtYjNJZ1lTQm5hWFpsYmlCaWRXZGNiaUFnSUNBdkx5Qm9kSFJ3T2k4dllucHlMbTF2ZW1sc2JHRXViM0puTDJKdGJ5ODBMakl2ZG1sbGR5OW9aV0ZrT2k5bGVIUmxibk5wYjI1ekwxSmxkbWxsZHk5c2FXSXZWMlZpVTJWeWRtbGpaUzV3YlNOTU1UQXlYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmNtVjJhV1YzTDNOMVoyZGxjM1JwYjI1ekx5Y2dLeUJwWkN3Z0owZEZWQ2NzSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1WEc0Z0lDOHFYRzRnSUNBZ1dGaFlJSFJvYVhNZ1kyRnNiQ0JwY3lCd2NtOTJhV1JsWkNCbWIzSWdZMjl1ZG1WdWFXVnVZMlVnZEc4Z2NHVnZjR3hsSUhOamNtbHdkR2x1WnlCaFoyRnBibk4wSUhCeWIyUWdZblZuZW1sc2JIRmNiaUFnSUNCVVNFVlNSU0JKVXlCT1R5QkZVVlZKVmtGTVJVNVVJRkpGVTFRZ1EwRk1UQ0JKVGlCVVNWQXNJSE52SUhSb2FYTWdjMmh2ZFd4a0lHNXZkQ0JpWlNCMFpYTjBaV1FnWVdkaGFXNXpkQ0IwYVhBc0lHaGxibU5sWEc0Z0lDQWdkR2hsSUdoaGNtUXRZMjlrWldRZ2RYSnNMbHh1SUNBcUwxeHVJQ0JuWlhSRGIyNW1hV2QxY21GMGFXOXVJQ2h3WVhKaGJYTXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdhV1lnS0NGallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUNBZ0lHTmhiR3hpWVdOcklEMGdjR0Z5WVcxek8xeHVJQ0FnSUNBZ0lIQmhjbUZ0Y3lBOUlIdDlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDZ25MMk52Ym1acFozVnlZWFJwYjI0bkxDQW5SMFZVSnl3Z1kyRnNiR0poWTJzc0lHNTFiR3dzSUc1MWJHd3NJSEJoY21GdGN5azdYRzRnSUNBZ0x5OGdWVWRNUVZrZ2RHVnRjQ0JtYVhnZ2RXNTBhV3dnTDJOdmJtWnBaM1Z5WVhScGIyNGdhWE1nYVcxd2JHVnRaVzUwWldRc1hHNGdJQ0FnTHk4Z2MyVmxJR2gwZEhCek9pOHZZblZuZW1sc2JHRXViVzk2YVd4c1lTNXZjbWN2YzJodmQxOWlkV2N1WTJkcFAybGtQVGt5TkRRd05TTmpNVEU2WEc0Z0lDQWdiR1YwSUhSb1lYUWdQU0IwYUdsek8xeHVYRzRnSUNBZ2RtRnlJSEpsY1NBOUlHNWxkeUJZVFV4SWRIUndVbVZ4ZFdWemRDZ3BPMXh1SUNBZ0lISmxjUzV2Y0dWdUtDZEhSVlFuTENBbmFIUjBjSE02THk5aGNHa3RaR1YyTG1KMVozcHBiR3hoTG0xdmVtbHNiR0V1YjNKbkwyeGhkR1Z6ZEM5amIyNW1hV2QxY21GMGFXOXVKeXdnZEhKMVpTazdYRzRnSUNBZ2NtVnhMbk5sZEZKbGNYVmxjM1JJWldGa1pYSW9YQ0pCWTJObGNIUmNJaXdnWENKaGNIQnNhV05oZEdsdmJpOXFjMjl1WENJcE8xeHVJQ0FnSUhKbGNTNXZibkpsWVdSNWMzUmhkR1ZqYUdGdVoyVWdQU0JtZFc1amRHbHZiaUFvWlhabGJuUXBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpYRXVjbVZoWkhsVGRHRjBaU0E5UFNBMElDWW1JSEpsY1M1emRHRjBkWE1nSVQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0IwYUdGMExtaGhibVJzWlZKbGMzQnZibk5sS0c1MWJHd3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuUnBiV1Z2ZFhRZ1BTQjBhR2x6TG5ScGJXVnZkWFE3WEc0Z0lDQWdjbVZ4TG05dWRHbHRaVzkxZENBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTZ25kR2x0Wlc5MWRDY3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExtOXVaWEp5YjNJZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9KMlZ5Y205eUp5d2djbVZ4TENCallXeHNZbUZqYXlrN1hHNGdJQ0FnZlR0Y2JpQWdJQ0J5WlhFdWMyVnVaQ2dwTzF4dUlDQjlYRzVjYmlBZ1oyVjBVSEp2WkhWamRITWdLSEJ5YjJSMVkzUXBJSHRjYmlBZ0lDQjJZWElnWDNSb2FYTWdQU0IwYUdsek8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNobWRXNWpkR2x2YmloeVpYTnZiSFpsTENCeVpXcGxZM1FwSUh0Y2JpQWdJQ0FnSUdsbUtDQndjbTlrZFdOMElEMDlQU0JjSW5ObGJHVmpkR0ZpYkdWY0lpQjhmQ0J3Y205a2RXTjBJRDA5UFNCY0ltVnVkR1Z5WVdKc1pWd2lJSHg4SUhCeWIyUjFZM1FnUFQwOUlGd2lZV05qWlhOemFXSnNaVndpSUNrZ2UxeHVJQ0FnSUNBZ0lDQmZkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0lDQWdJQ2N2Y0hKdlpIVmpkRDkwZVhCbFBTY2dLeUJ3Y205a2RXTjBMRnh1SUNBZ0lDQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdJQ0FnSUdaMWJtTjBhVzl1S0dWeWNpd2djSEp2WkhWamRITXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1LR1Z5Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLR1Z5Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNod2NtOWtkV04wY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdYM1JvYVhNdVFWQkpVbVZ4ZFdWemRDaGNiaUFnSUNBZ0lDQWdJQ0FuTDNCeWIyUjFZM1F2SnlBcklIQnliMlIxWTNRc1hHNGdJQ0FnSUNBZ0lDQWdKMGRGVkNjc1hHNGdJQ0FnSUNBZ0lDQWdablZ1WTNScGIyNG9aWEp5TENCd2NtOWtkV04wY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZb1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb1pYSnlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLSEJ5YjJSMVkzUnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQm5aWFJRY205a2RXTjBJQ2h3Y205a2RXTjBLU0I3WEc0Z0lDQWdkbUZ5SUY5MGFHbHpJRDBnZEdocGN6dGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0b2NtVnpiMngyWlN3Z2NtVnFaV04wS1NCN1hHNGdJQ0FnSUNCZmRHaHBjeTVCVUVsU1pYRjFaWE4wS0Z4dUlDQWdJQ0FnSUNBbkwzQnliMlIxWTNRdkp5QXJJSEJ5YjJSMVkzUXNYRzRnSUNBZ0lDQWdJQ2RIUlZRbkxGeHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpaGxjbklzSUhCeWIyUjFZM1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dWeWNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0dWeWNpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHdjbTlrZFdOMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnUVZCSlVtVnhkV1Z6ZENBb2NHRjBhQ3dnYldWMGFHOWtMQ0JqWVd4c1ltRmpheXdnWm1sbGJHUXNJR0p2Wkhrc0lIQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDOHZJR2xtSUhkbElHRnlaU0JrYjJsdVp5QjBhR1VnYkc5bmFXNWNiaUFnSUNBZ0lIQmhkR2dnUFQwOUlFeFBSMGxPSUh4OFhHNGdJQ0FnSUNBdkx5QnBaaUIzWlNCaGNtVWdZV3h5WldGa2VTQmhkWFJvWldSY2JpQWdJQ0FnSUhSb2FYTXVYMkYxZEdnZ2ZIeGNiaUFnSUNBZ0lDOHZJRzl5SUhkbElHRnlaU0J0YVhOemFXNW5JR0YxZEdnZ1pHRjBZVnh1SUNBZ0lDQWdJWFJvYVhNdWNHRnpjM2R2Y21RZ2ZId2dJWFJvYVhNdWRYTmxjbTVoYldWY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUM4dklITnJhWEFnWVhWMGIyMWhkR2xqSUdGMWRHaGxiblJwWTJGMGFXOXVYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVmUVZCSlVtVnhkV1Z6ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JoY21keklEMGdXMTB1YzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNcE8xeHVYRzRnSUNBZ2RHaHBjeTVzYjJkcGJpaG1kVzVqZEdsdmJpaGxjbklwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmUVZCSlVtVnhkV1Z6ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWR6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5WEc1Y2JpQWdYMEZRU1ZKbGNYVmxjM1FnS0hCaGRHZ3NJRzFsZEdodlpDd2dZMkZzYkdKaFkyc3NJR1pwWld4a0xDQmliMlI1TENCd1lYSmhiWE1wSUh0Y2JpQWdJQ0JzWlhRZ2RYSnNJRDBnZEdocGN5NWhjR2xWY213Z0t5QndZWFJvTzF4dVhHNGdJQ0FnY0dGeVlXMXpJRDBnY0dGeVlXMXpJSHg4SUh0OU8xeHVYRzRnSUNBZ2FXWW9kR2hwY3k1aGNHbGZhMlY1S1NCN0lIQmhjbUZ0Y3k1aGNHbGZhMlY1SUQwZ2RHaHBjeTVoY0dsZmEyVjVPeUI5WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmWVhWMGFDa2dlMXh1SUNBZ0lDQWdjR0Z5WVcxekxuUnZhMlZ1SUQwZ2RHaHBjeTVmWVhWMGFDNTBiMnRsYmp0Y2JpQWdJQ0I5WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWMyVnlibUZ0WlNBbUppQjBhR2x6TG5CaGMzTjNiM0prS1NCN1hHNGdJQ0FnSUNCd1lYSmhiWE11Ykc5bmFXNGdQU0IwYUdsekxuVnpaWEp1WVcxbE8xeHVJQ0FnSUNBZ2NHRnlZVzF6TG5CaGMzTjNiM0prSUQwZ2RHaHBjeTV3WVhOemQyOXlaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvY0dGeVlXMXpJQ1ltSUU5aWFtVmpkQzVyWlhsektIQmhjbUZ0Y3lrdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdkWEpzSUNzOUlGd2lQMXdpSUNzZ2RHaHBjeTUxY214RmJtTnZaR1VvY0dGeVlXMXpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmliMlI1SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvWW05a2VTazdYRzVjYmlBZ0lDQnNaWFFnZEdoaGRDQTlJSFJvYVhNN1hHNWNiaUFnSUNCMllYSWdjbVZ4SUQwZ2JtVjNJRmhOVEVoMGRIQlNaWEYxWlhOMEtDazdYRzRnSUNBZ2NtVnhMbTl3Wlc0b2JXVjBhRzlrTENCMWNtd3NJSFJ5ZFdVcE8xeHVJQ0FnSUhKbGNTNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtGd2lRV05qWlhCMFhDSXNJRndpWVhCd2JHbGpZWFJwYjI0dmFuTnZibHdpS1R0Y2JpQWdJQ0JwWmlBb2JXVjBhRzlrTG5SdlZYQndaWEpEWVhObEtDa2dJVDA5SUZ3aVIwVlVYQ0lwSUh0Y2JpQWdJQ0FnSUhKbGNTNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtGd2lRMjl1ZEdWdWRDMVVlWEJsWENJc0lGd2lZWEJ3YkdsallYUnBiMjR2YW5OdmJsd2lLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVnhMbTl1Y21WaFpIbHpkR0YwWldOb1lXNW5aU0E5SUdaMWJtTjBhVzl1SUNobGRtVnVkQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tISmxjUzV5WldGa2VWTjBZWFJsSUQwOUlEUWdKaVlnY21WeExuTjBZWFIxY3lBaFBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhSb1lYUXVhR0Z1Wkd4bFVtVnpjRzl1YzJVb2JuVnNiQ3dnY21WeExDQmpZV3hzWW1GamF5d2dabWxsYkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuUnBiV1Z2ZFhRZ1BTQjBhR2x6TG5ScGJXVnZkWFE3WEc0Z0lDQWdjbVZ4TG05dWRHbHRaVzkxZENBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTZ25kR2x0Wlc5MWRDY3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExtOXVaWEp5YjNJZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9aWFpsYm5Rc0lISmxjU3dnWTJGc2JHSmhZMnNwTzF4dUlDQWdJSDA3WEc0Z0lDQWdjbVZ4TG5ObGJtUW9ZbTlrZVNrN1hHNGdJSDFjYmx4dUlDQm9ZVzVrYkdWU1pYTndiMjV6WlNBb1pYSnlMQ0J5WlhOd2IyNXpaU3dnWTJGc2JHSmhZMnNzSUdacFpXeGtLU0I3WEc0Z0lDQWdMeThnWkdWMFpXTjBJSFJwYldWdmRYUWdaWEp5YjNKelhHNGdJQ0FnYVdZZ0tHVnljaUFtSmlCbGNuSXVZMjlrWlNBbUppQlVTVTFGVDFWVVgwVlNVazlTVXk1cGJtUmxlRTltS0dWeWNpNWpiMlJsS1NBaFBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJqWVd4c1ltRmpheWh1WlhjZ1JYSnliM0lvSjNScGJXVnZkWFFuS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z2FHRnVaR3hsSUdkbGJtVnlhV01nWlhKeWIzSnpYRzRnSUNBZ2FXWWdLR1Z5Y2lrZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0dWeWNpazdYRzVjYmlBZ0lDQXZMeUJoYm5sMGFHbHVaeUJwYmlBeU1EQWdjM1JoZEhWeklISmhibWRsSUdseklHRWdjM1ZqWTJWemMxeHVJQ0FnSUhaaGNpQnlaWEYxWlhOMFUzVmpZMlZ6YzJaMWJDQTlJSEpsYzNCdmJuTmxMbk4wWVhSMWN5QStJREU1T1NBbUppQnlaWE53YjI1elpTNXpkR0YwZFhNZ1BDQXpNREE3WEc1Y2JpQWdJQ0F2THlCbGRtVnVJR2x1SUhSb1pTQmpZWE5sSUc5bUlHRnVJSFZ1YzNWalkyVnpjMloxYkNCeVpYRjFaWE4wSUhkbElHMWhlU0JvWVhabElHcHpiMjRnWkdGMFlTNWNiaUFnSUNCMllYSWdjR0Z5YzJWa1FtOWtlVHRjYmx4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNCd1lYSnpaV1JDYjJSNUlEMGdTbE5QVGk1d1lYSnpaU2h5WlhOd2IyNXpaUzV5WlhOd2IyNXpaVlJsZUhRcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDOHZJRmhZV0RvZ2JXbG5hSFFnZDJGdWRDQjBieUJvWVc1a2JHVWdkR2hwY3lCaVpYUjBaWElnYVc0Z2RHaGxJSEpsY1hWbGMzUWdjM1ZqWTJWemN5QmpZWE5sUDF4dUlDQWdJQ0FnYVdZZ0tISmxjWFZsYzNSVGRXTmpaWE56Wm5Wc0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpZV3hzWW1GamF5aGNiaUFnSUNBZ0lDQWdJQ0J1WlhjZ1JYSnliM0lvSjNKbGMzQnZibk5sSUhkaGN5QnViM1FnZG1Gc2FXUWdhbk52YmpvZ0p5QXJJSEpsYzNCdmJuTmxMbkpsYzNCdmJuTmxWR1Y0ZENsY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmtaWFJsWTNRZ2FXWWdkMlVuY21VZ2NuVnVibWx1WnlCQ2RXZDZhV3hzWVNBMUxqQmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlIQmhjbk5sWkVKdlpIbGJKM0psYzNWc2RDZGRJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdjR0Z5YzJWa1FtOWtlU0E5SUhCaGNuTmxaRUp2WkhsYkozSmxjM1ZzZENkZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklITjFZMk5sYzNObWRXd2dhSFIwY0NCeVpYTndibk5sSUdKMWRDQmhiaUJsY25KdmNseHVJQ0FnSUM4dklGaFlXRG9nZEdocGN5QnpaV1Z0Y3lCc2FXdGxJR0VnWW5WbklHbHVJSFJvWlNCaGNHa3VYRzRnSUNBZ2FXWWdLSEJoY25ObFpFSnZaSGtnSmlZZ2NHRnljMlZrUW05a2VTNWxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ2NtVnhkV1Z6ZEZOMVkyTmxjM05tZFd3Z1BTQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lYSmxjWFZsYzNSVGRXTmpaWE56Wm5Wc0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1kyRnNiR0poWTJzb2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQW5TRlJVVUNCemRHRjBkWE1nSnlBcklISmxjM0J2Ym5ObExuTjBZWFIxY3lBcklDZGNYRzRuSUN0Y2JpQWdJQ0FnSUNBZ0x5OGdibTkwWlNCcGJuUmxiblJwYjI1aGJDQjFjMlVnYjJZZ0lUMGdhVzV6ZEdWaFpDQnZaaUFoUFQxY2JpQWdJQ0FnSUNBZ0tIQmhjbk5sWkVKdlpIa2dKaVlnY0dGeWMyVmtRbTlrZVM1dFpYTnpZV2RsS1NBL0lIQmhjbk5sWkVKdlpIa3ViV1Z6YzJGblpTQTZJQ2NuWEc0Z0lDQWdJQ0FwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqWVd4c1ltRmpheWh1ZFd4c0xDQW9abWxsYkdRcElEOGdjR0Z5YzJWa1FtOWtlVnRtYVdWc1pGMGdPaUJ3WVhKelpXUkNiMlI1S1R0Y2JpQWdmVnh1WEc0Z0lIVnliRVZ1WTI5a1pTQW9jR0Z5WVcxektTQjdYRzRnSUNBZ2RtRnlJSFZ5YkNBOUlGdGRPMXh1SUNBZ0lHWnZjaWgyWVhJZ2NHRnlZVzBnYVc0Z2NHRnlZVzF6S1NCN1hHNGdJQ0FnSUNCMllYSWdkbUZzZFdWeklEMGdjR0Z5WVcxelczQmhjbUZ0WFR0Y2JpQWdJQ0FnSUdsbUtDRjJZV3gxWlhNdVptOXlSV0ZqYUNsY2JpQWdJQ0FnSUNBZ2RtRnNkV1Z6SUQwZ1czWmhiSFZsYzEwN1hHNGdJQ0FnSUNBdkx5QmxlSEJoYm1RZ1lXNTVJR0Z5Y21GNWMxeHVJQ0FnSUNBZ2RtRnNkV1Z6TG1admNrVmhZMmdvWm5WdVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUhWeWJDNXdkWE5vS0dWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENod1lYSmhiU2tnS3lCY0lqMWNJaUFyWEc0Z0lDQWdJQ0FnSUNBZ0lHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaDJZV3gxWlNrcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIxY213dWFtOXBiaWhjSWlaY0lpazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR055WldGMFpVTnNhV1Z1ZENodmNIUnBiMjV6S1NCN1hHNGdJSEpsZEhWeWJpQnVaWGNnUW5WbmVtbHNiR0ZEYkdsbGJuUW9iM0IwYVc5dWN5azdYRzU5WEc0aVhYMD0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIFhNTEh0dHBSZXF1ZXN0ID0gbnVsbDtcblxuZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0O1xuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXI/XG4gIHZhciBfbG9hZGVyID0gcmVxdWlyZTtcbiAgdHJ5IHtcbiAgICBleHBvcnRzLlhNTEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0ID0gX2xvYWRlcihcInhtbGh0dHByZXF1ZXN0XCIpLlhNTEh0dHBSZXF1ZXN0O1xuICB9XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gIGV4cG9ydHMuWE1MSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn0gZWxzZSB7XG4gIHRocm93IFwiTm8gd2luZG93LCBXQVQuXCI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTlWYzJWeWN5OXFiR0Z6ZEdWeUwzTnlZeTl0YjNwcGJHeGhMMko2TG1wekwzTnlZeTk0YUhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3UVVGQlR5eEpRVUZKTEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN096dEJRVVZxUXl4SlFVRkpMRTlCUVU4c1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQlJUczdRVUZGYWtNc1RVRkJTU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEzUkNMRTFCUVVrN1FVRkRSaXhaUVU1UExHTkJRV01zUjBGTmNrSXNZMEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eGpRVUZqTEVOQlFVTTdSMEZEZUVRc1EwRkJReXhQUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU5VTEZsQlVrOHNZMEZCWXl4SFFWRnlRaXhqUVVGakxFZEJRVWNzVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETzBkQlF6TkVPME5CUTBZc1RVRkRTU3hKUVVGSExFOUJRVThzVFVGQlRTeExRVUZMTEZkQlFWY3NTVUZCU1N4UFFVRlBMRTFCUVUwc1EwRkJReXhqUVVGakxFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEzSkdMRlZCV2xNc1kwRkJZeXhIUVZsMlFpeGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJRenREUVVONFF5eE5RVU5KTzBGQlEwZ3NVVUZCVFN4cFFrRkJhVUlzUTBGQlFUdERRVU40UWlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmVHaHlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUhaaGNpQllUVXhJZEhSd1VtVnhkV1Z6ZENBOUlHNTFiR3c3WEc1Y2JtbG1JQ2gwZVhCbGIyWWdkMmx1Wkc5M0lEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0F2THlCM1pTZHlaU0J1YjNRZ2FXNGdZU0JpY205M2MyVnlQMXh1SUNCc1pYUWdYMnh2WVdSbGNpQTlJSEpsY1hWcGNtVTdYRzRnSUhSeWVTQjdYRzRnSUNBZ1dFMU1TSFIwY0ZKbGNYVmxjM1FnUFNCZmJHOWhaR1Z5S0NkelpHc3ZibVYwTDNob2NpY3BMbGhOVEVoMGRIQlNaWEYxWlhOME8xeHVJQ0I5SUdOaGRHTm9LR1VwSUh0Y2JpQWdJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJRjlzYjJGa1pYSW9YQ0o0Yld4b2RIUndjbVZ4ZFdWemRGd2lLUzVZVFV4SWRIUndVbVZ4ZFdWemREdGNiaUFnZlZ4dWZWeHVaV3h6WlNCcFppaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmlCMGVYQmxiMllnZDJsdVpHOTNMbGhOVEVoMGRIQlNaWEYxWlhOMElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJSGRwYm1SdmR5NVlUVXhJZEhSd1VtVnhkV1Z6ZER0Y2JuMWNibVZzYzJVZ2UxeHVJQ0IwYUhKdmR5QmNJazV2SUhkcGJtUnZkeXdnVjBGVUxsd2lYRzU5WEc0aVhYMD0iXX0= diff --git a/build/node/index.js b/build/node/index.js index 0f3048f..45c9ee4 100644 --- a/build/node/index.js +++ b/build/node/index.js @@ -204,7 +204,7 @@ var BugzillaClient = (function () { }, { key: 'createAttachment', value: function createAttachment(id, attachment, callback) { - this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'ids', attachment); + this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'attachments', attachment); } }, { key: 'getAttachment', diff --git a/bz-0.4.4.js b/bz-0.4.4.js new file mode 100644 index 0000000..6d2375d --- /dev/null +++ b/bz-0.4.4.js @@ -0,0 +1,482 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o]. + */ + }, { + key: "bugAttachments", + value: function bugAttachments(id, callback) { + this.APIRequest("/bug/" + id + "/attachment", "GET", extractField(id, callback), "bugs"); + } + }, { + key: "createAttachment", + value: function createAttachment(id, attachment, callback) { + this.APIRequest("/bug/" + id + "/attachment", "POST", extractField(callback), "ids", attachment); + } + }, { + key: "getAttachment", + value: function getAttachment(id, callback) { + this.APIRequest("/bug/attachment/" + id, "GET", extractField(callback), "attachments"); + } + }, { + key: "updateAttachment", + value: function updateAttachment(id, attachment, callback) { + this.APIRequest("/bug/attachment/" + id, "PUT", callback, "ok", attachment); + } + }, { + key: "searchUsers", + value: function searchUsers(match, callback) { + this.APIRequest("/user", "GET", callback, "users", null, { match: match }); + } + }, { + key: "getUser", + value: function getUser(id, callback) { + this.APIRequest("/user/" + id, "GET", extractField(callback), "users"); + } + }, { + key: "getSuggestedReviewers", + value: function getSuggestedReviewers(id, callback) { + // BMO- specific extension to get suggested reviewers for a given bug + // http://bzr.mozilla.org/bmo/4.2/view/head:/extensions/Review/lib/WebService.pm#L102 + this.APIRequest("/review/suggestions/" + id, "GET", callback); + } + + /* + XXX this call is provided for convenience to people scripting against prod bugzillq + THERE IS NO EQUIVALENT REST CALL IN TIP, so this should not be tested against tip, hence + the hard-coded url. + */ + }, { + key: "getConfiguration", + value: function getConfiguration(params, callback) { + if (!callback) { + callback = params; + params = {}; + } + + // this.APIRequest('/configuration', 'GET', callback, null, null, params); + // UGLAY temp fix until /configuration is implemented, + // see https://bugzilla.mozilla.org/show_bug.cgi?id=924405#c11: + var that = this; + + var req = new XMLHttpRequest(); + req.open("GET", "https://api-dev.bugzilla.mozilla.org/latest/configuration", true); + req.setRequestHeader("Accept", "application/json"); + req.onreadystatechange = function (event) { + if (req.readyState == 4 && req.status != 0) { + that.handleResponse(null, req, callback); + } + }; + req.timeout = this.timeout; + req.ontimeout = function (event) { + that.handleResponse("timeout", req, callback); + }; + req.onerror = function (event) { + that.handleResponse("error", req, callback); + }; + req.send(); + } + }, { + key: "getProducts", + value: function getProducts(product) { + var _this = this; + return new Promise(function (resolve, reject) { + if (product === "selectable" || product === "enterable" || product === "accessible") { + _this.APIRequest("/product?type=" + product, "GET", function (err, products) { + if (err) { + return reject(err); + } else { + return resolve(products); + } + }); + } else { + _this.APIRequest("/product/" + product, "GET", function (err, products) { + if (err) { + return reject(err); + } else { + return resolve(products); + } + }); + } + }); + } + }, { + key: "getProduct", + value: function getProduct(product) { + var _this = this; + return new Promise(function (resolve, reject) { + _this.APIRequest("/product/" + product, "GET", function (err, product) { + if (err) { + return reject(err); + } else { + return resolve(product); + } + }); + }); + } + }, { + key: "APIRequest", + value: function APIRequest(path, method, callback, field, body, params) { + if ( + // if we are doing the login + path === LOGIN || + // if we are already authed + this._auth || + // or we are missing auth data + !this.password || !this.username) { + // skip automatic authentication + return this._APIRequest.apply(this, arguments); + } + + var args = [].slice.call(arguments); + + this.login((function (err) { + if (err) return callback(err); + this._APIRequest.apply(this, args); + }).bind(this)); + } + }, { + key: "_APIRequest", + value: function _APIRequest(path, method, callback, field, body, params) { + var url = this.apiUrl + path; + + params = params || {}; + + if (this.api_key) { + params.api_key = this.api_key; + } + + if (this._auth) { + params.token = this._auth.token; + } else if (this.username && this.password) { + params.login = this.username; + params.password = this.password; + } + + if (params && Object.keys(params).length > 0) { + url += "?" + this.urlEncode(params); + } + + body = JSON.stringify(body); + console.log(">> ", url, params, body, method); + var that = this; + + var req = new XMLHttpRequest(); + req.open(method, url, true); + req.setRequestHeader("Accept", "application/json"); + if (method.toUpperCase() !== "GET") { + req.setRequestHeader("Content-Type", "application/json"); + } + req.onreadystatechange = function (event) { + if (req.readyState == 4 && req.status != 0) { + that.handleResponse(null, req, callback, field); + } + }; + req.timeout = this.timeout; + req.ontimeout = function (event) { + that.handleResponse("timeout", req, callback); + }; + req.onerror = function (event) { + that.handleResponse(event, req, callback); + }; + req.send(body); + } + }, { + key: "handleResponse", + value: function handleResponse(err, response, callback, field) { + // detect timeout errors + console.log("err " + err, response); + if (err && err.code && TIMEOUT_ERRORS.indexOf(err.code) !== -1) { + return callback(new Error("timeout")); + } + + // handle generic errors + if (err) return callback(err); + + // anything in 200 status range is a success + var requestSuccessful = response.status > 199 && response.status < 300; + + // even in the case of an unsuccessful request we may have json data. + var parsedBody; + + try { + parsedBody = JSON.parse(response.responseText); + // console.log({ parsedBody }); + } catch (e) { + // XXX: might want to handle this better in the request success case? + if (requestSuccessful) { + return callback(new Error("response was not valid json: " + response.responseText)); + } + } + + // detect if we're running Bugzilla 5.0 + if (typeof parsedBody["result"] !== "undefined") { + parsedBody = parsedBody["result"]; + } + + // successful http respnse but an error + // XXX: this seems like a bug in the api. + if (parsedBody && parsedBody.error) { + requestSuccessful = false; + } + + if (!requestSuccessful) { + return callback(new Error("HTTP status " + response.status + "\n" + ( + // note intentional use of != instead of !== + parsedBody && parsedBody.message) ? parsedBody.message : "")); + } + + console.log({ field: field }); + callback(null, field ? parsedBody[field] : parsedBody); + } + }, { + key: "urlEncode", + value: function urlEncode(params) { + var url = []; + for (var param in params) { + var values = params[param]; + if (!values.forEach) values = [values]; + // expand any arrays + values.forEach(function (value) { + url.push(encodeURIComponent(param) + "=" + encodeURIComponent(value)); + }); + } + return url.join("&"); + } + }]); + + return BugzillaClient; +})(); + +exports.BugzillaClient = BugzillaClient; + +function createClient(options) { + return new BugzillaClient(options); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxJQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDOzs7OztBQUt2RCxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7Ozs7O0FBS3ZCLElBQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7O0FBRXhELFNBQVMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUU7QUFDbEMsTUFBSSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUU7QUFDNUIsWUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQUUsR0FBRyxTQUFTLENBQUM7R0FDaEI7O0FBRUQsU0FBTyxVQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDN0IsV0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUgsR0FBRyxFQUFFLFFBQVEsRUFBUixRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZDLFFBQUksR0FBRyxFQUFFLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUU5QixRQUFJLFFBQVEsRUFBRTs7QUFFWixVQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7QUFDcEIsVUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDL0I7QUFDRCxjQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxZQUFNLHFDQUFxQyxDQUFDO0tBQzdDO0dBQ0YsQ0FBQztDQUNIOzs7Ozs7Ozs7Ozs7QUFZRCxTQUFTLGFBQWEsQ0FBQyxNQUFNLEVBQUU7O0FBRTdCLFNBQU8sWUFBVzs7OztBQUloQixRQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDOzs7QUFFOUMsWUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUVuQyxRQUFJLENBQUMsS0FBSyxDQUNSLENBQUEsVUFBUyxHQUFHLEVBQUU7QUFDWixVQUFJLEdBQUcsRUFBRSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7O0FBRzlCLFlBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzFCLENBQUEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FBQztHQUNILENBQUM7Q0FDSDs7QUFFTSxJQUFJLGNBQWM7QUFDWixXQURGLGNBQWMsQ0FDWCxPQUFPLEVBQUU7MEJBRFosY0FBYzs7QUFFckIsV0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7O0FBRXhCLFFBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNqQyxRQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDakMsUUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztBQUNwQyxRQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDOztBQUV2QyxRQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDaEIsWUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztLQUNIOztBQUVELFFBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxvQ0FBb0MsQ0FBQztBQUNsRSxRQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7QUFFN0MsUUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7R0FDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBbkJRLGNBQWM7O1dBdUNsQixlQUFDLFFBQVEsRUFBRTtBQUNkLFVBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNkLGdCQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUM1Qjs7QUFFRCxVQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDcEMsY0FBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO09BQzlEOztBQUVELFVBQUksTUFBTSxHQUFHO0FBQ1gsYUFBSyxFQUFFLElBQUksQ0FBQyxRQUFRO0FBQ3BCLGdCQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7T0FDeEIsQ0FBQzs7QUFFRixVQUFJLFdBQVcsR0FBRyxDQUFBLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDcEQsWUFBSSxHQUFHLEVBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsWUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQ25CLGNBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUM5QixNQUFNO0FBQ0wsY0FBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDdkI7QUFDRCxnQkFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztPQUMxQixDQUFBLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUViLFVBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNuRTs7O1dBRUssZ0JBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDM0IsVUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNiLGdCQUFRLEdBQUcsTUFBTSxDQUFDO0FBQ2xCLGNBQU0sR0FBRyxFQUFFLENBQUM7T0FDYjs7QUFFRCxVQUFJLENBQUMsVUFBVSxDQUNiLE9BQU8sR0FBRyxFQUFFLEVBQ1osS0FBSyxFQUNMLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFDdEIsTUFBTSxFQUNOLElBQUksRUFDSixNQUFNLENBQ1AsQ0FBQztLQUNIOzs7V0FFUyxvQkFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNoRTs7O1dBRVEsbUJBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDM0IsVUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzdEOzs7V0FFUSxtQkFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFO0FBQ3ZCLFVBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3REOzs7V0FFVSxxQkFBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO0FBQ3hCLFVBQUksU0FBUyxHQUFHLFNBQVosU0FBUyxDQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDN0IsWUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDZixZQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUIsWUFBSSxPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXLEVBQUU7O0FBRXBELHVCQUFhLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztTQUN4QztBQUNELGdCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO09BQy9CLENBQUM7O0FBRUYsVUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3RFOzs7V0FFUyxvQkFBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtBQUNoQyxVQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzdFOzs7V0FFUyxvQkFBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO0FBQ3ZCLFVBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNyRTs7Ozs7Ozs7Ozs7V0FTYSx3QkFBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxVQUFVLENBQ2IsT0FBTyxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQzVCLEtBQUssRUFDTCxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUMxQixNQUFNLENBQ1AsQ0FBQztLQUNIOzs7V0FFZSwwQkFBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUN6QyxVQUFJLENBQUMsVUFBVSxDQUNiLE9BQU8sR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUM1QixNQUFNLEVBQ04sWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUN0QixLQUFLLEVBQ0wsVUFBVSxDQUNYLENBQUM7S0FDSDs7O1dBRVksdUJBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRTtBQUMxQixVQUFJLENBQUMsVUFBVSxDQUNiLGtCQUFrQixHQUFHLEVBQUUsRUFDdkIsS0FBSyxFQUNMLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFDdEIsYUFBYSxDQUNkLENBQUM7S0FDSDs7O1dBRWUsMEJBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDekMsVUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDN0U7OztXQUVVLHFCQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDM0IsVUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDNUU7OztXQUVNLGlCQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUU7QUFDcEIsVUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDeEU7OztXQUVvQiwrQkFBQyxFQUFFLEVBQUUsUUFBUSxFQUFFOzs7QUFHbEMsVUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQy9EOzs7Ozs7Ozs7V0FPZSwwQkFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ2pDLFVBQUksQ0FBQyxRQUFRLEVBQUU7QUFDYixnQkFBUSxHQUFHLE1BQU0sQ0FBQztBQUNsQixjQUFNLEdBQUcsRUFBRSxDQUFDO09BQ2I7Ozs7O0FBS0QsVUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDOztBQUVoQixVQUFJLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQy9CLFNBQUcsQ0FBQyxJQUFJLENBQ04sS0FBSyxFQUNMLDJEQUEyRCxFQUMzRCxJQUFJLENBQ0wsQ0FBQztBQUNGLFNBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNuRCxTQUFHLENBQUMsa0JBQWtCLEdBQUcsVUFBUyxLQUFLLEVBQUU7QUFDdkMsWUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtBQUMxQyxjQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDMUM7T0FDRixDQUFDO0FBQ0YsU0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzNCLFNBQUcsQ0FBQyxTQUFTLEdBQUcsVUFBUyxLQUFLLEVBQUU7QUFDOUIsWUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO09BQy9DLENBQUM7QUFDRixTQUFHLENBQUMsT0FBTyxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzVCLFlBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztPQUM3QyxDQUFDO0FBQ0YsU0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ1o7OztXQUVVLHFCQUFDLE9BQU8sRUFBRTtBQUNuQixVQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsYUFBTyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDM0MsWUFDRSxPQUFPLEtBQUssWUFBWSxJQUN4QixPQUFPLEtBQUssV0FBVyxJQUN2QixPQUFPLEtBQUssWUFBWSxFQUN4QjtBQUNBLGVBQUssQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUNsRCxHQUFHLEVBQ0gsUUFBUSxFQUNSO0FBQ0EsZ0JBQUksR0FBRyxFQUFFO0FBQ1AscUJBQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCLE1BQU07QUFDTCxxQkFBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7V0FDRixDQUFDLENBQUM7U0FDSixNQUFNO0FBQ0wsZUFBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDckUsZ0JBQUksR0FBRyxFQUFFO0FBQ1AscUJBQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCLE1BQU07QUFDTCxxQkFBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7V0FDRixDQUFDLENBQUM7U0FDSjtPQUNGLENBQUMsQ0FBQztLQUNKOzs7V0FFUyxvQkFBQyxPQUFPLEVBQUU7QUFDbEIsVUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGFBQU8sSUFBSSxPQUFPLENBQUMsVUFBUyxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQzNDLGFBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBUyxHQUFHLEVBQUUsT0FBTyxFQUFFO0FBQ3BFLGNBQUksR0FBRyxFQUFFO0FBQ1AsbUJBQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1dBQ3BCLE1BQU07QUFDTCxtQkFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7V0FDekI7U0FDRixDQUFDLENBQUM7T0FDSixDQUFDLENBQUM7S0FDSjs7O1dBRVMsb0JBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDdEQ7O0FBRUUsVUFBSSxLQUFLLEtBQUs7O0FBRWQsVUFBSSxDQUFDLEtBQUs7O0FBRVYsT0FBQyxJQUFJLENBQUMsUUFBUSxJQUNkLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDZDs7QUFFQSxlQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztPQUNoRDs7QUFFRCxVQUFJLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFcEMsVUFBSSxDQUFDLEtBQUssQ0FDUixDQUFBLFVBQVMsR0FBRyxFQUFFO0FBQ1osWUFBSSxHQUFHLEVBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsWUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO09BQ3BDLENBQUEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FBQztLQUNIOzs7V0FFVSxxQkFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUN2RCxVQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzs7QUFFN0IsWUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7O0FBRXRCLFVBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNoQixjQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7T0FDL0I7O0FBRUQsVUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ2QsY0FBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztPQUNqQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3pDLGNBQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixjQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7T0FDakM7O0FBRUQsVUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzVDLFdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUNyQzs7QUFFRCxVQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixhQUFPLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLFVBQUksSUFBSSxHQUFHLElBQUksQ0FBQzs7QUFFaEIsVUFBSSxHQUFHLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUMvQixTQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUIsU0FBRyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ25ELFVBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRTtBQUNsQyxXQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7T0FDMUQ7QUFDRCxTQUFHLENBQUMsa0JBQWtCLEdBQUcsVUFBUyxLQUFLLEVBQUU7QUFDdkMsWUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtBQUMxQyxjQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pEO09BQ0YsQ0FBQztBQUNGLFNBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUMzQixTQUFHLENBQUMsU0FBUyxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzlCLFlBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztPQUMvQyxDQUFDO0FBQ0YsU0FBRyxDQUFDLE9BQU8sR0FBRyxVQUFTLEtBQUssRUFBRTtBQUM1QixZQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7T0FDM0MsQ0FBQztBQUNGLFNBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEI7OztXQUVhLHdCQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTs7QUFFN0MsYUFBTyxDQUFDLEdBQUcsVUFBUSxHQUFHLEVBQUksUUFBUSxDQUFDLENBQUM7QUFDcEMsVUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUM5RCxlQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO09BQ3ZDOzs7QUFHRCxVQUFJLEdBQUcsRUFBRSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7O0FBRzlCLFVBQUksaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7OztBQUd2RSxVQUFJLFVBQVUsQ0FBQzs7QUFFZixVQUFJO0FBQ0Ysa0JBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQzs7T0FFaEQsQ0FBQyxPQUFPLENBQUMsRUFBRTs7QUFFVixZQUFJLGlCQUFpQixFQUFFO0FBQ3JCLGlCQUFPLFFBQVEsQ0FDYixJQUFJLEtBQUssQ0FBQywrQkFBK0IsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQ25FLENBQUM7U0FDSDtPQUNGOzs7QUFHRCxVQUFJLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFdBQVcsRUFBRTtBQUMvQyxrQkFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztPQUNuQzs7OztBQUlELFVBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUU7QUFDbEMseUJBQWlCLEdBQUcsS0FBSyxDQUFDO09BQzNCOztBQUVELFVBQUksQ0FBQyxpQkFBaUIsRUFBRTtBQUN0QixlQUFPLFFBQVEsQ0FDYixJQUFJLEtBQUssQ0FDUCxjQUFjLEdBQ2QsUUFBUSxDQUFDLE1BQU0sR0FDZixJQUFJOztBQUVILGtCQUFVLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQSxBQUFDLEdBQzlCLFVBQVUsQ0FBQyxPQUFPLEdBQ2xCLEVBQUUsQ0FDUCxDQUNGLENBQUM7T0FDSDs7QUFFRCxhQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFMLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkIsY0FBUSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0tBQ3hEOzs7V0FFUSxtQkFBQyxNQUFNLEVBQUU7QUFDaEIsVUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2IsV0FBSyxJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUU7QUFDeEIsWUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNCLFlBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOztBQUV2QyxjQUFNLENBQUMsT0FBTyxDQUFDLFVBQVMsS0FBSyxFQUFFO0FBQzdCLGFBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdkUsQ0FBQyxDQUFDO09BQ0o7QUFDRCxhQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDdEI7OztTQW5ZUSxjQUFjO0lBb1l4QixDQUFDOzs7O0FBRUssU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQ3BDLFNBQU8sSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDcEMiLCJmaWxlIjoiL1VzZXJzL2psYXN0ZXIvc3JjL21vemlsbGEvYnouanMvc3JjL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgWE1MSHR0cFJlcXVlc3QgPSByZXF1aXJlKFwiLi94aHJcIikuWE1MSHR0cFJlcXVlc3Q7XG5cbi8qKlxuQ29uc3RhbnQgZm9yIHRoZSBsb2dpbiBlbnRyeXBvaW50LlxuKi9cbmNvbnN0IExPR0lOID0gXCIvbG9naW5cIjtcblxuLyoqXG5FcnJvcnMgcmVsYXRlZCB0byB0aGUgc29ja2V0IHRpbWVvdXQuXG4qL1xuY29uc3QgVElNRU9VVF9FUlJPUlMgPSBbXCJFVElNRURPVVRcIiwgXCJFU09DS0VUVElNRURPVVRcIl07XG5cbmZ1bmN0aW9uIGV4dHJhY3RGaWVsZChpZCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY2FsbGJhY2sgPSBpZDtcbiAgICBpZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihlcnIsIHJlc3BvbnNlKSB7XG4gICAgY29uc29sZS5sb2coXCIuLi4uXCIsIHsgZXJyLCByZXNwb25zZSB9KTtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgLy8gZGVmYXVsdCBiZWhhdmlvciBpcyB0byB1c2UgdGhlIGZpcnN0IGlkIHdoZW4gdGhlIGNhbGxlciBkb2VzIG5vdCBwcm92aWRlIG9uZS5cbiAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlkID0gT2JqZWN0LmtleXMocmVzcG9uc2UpWzBdO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sobnVsbCwgcmVzcG9uc2VbaWRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgXCJFcnJvcjosIG5vIHJlc3BvbnNlIGluIGV4dHJhY3RGaWVsZFwiO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG5GdW5jdGlvbiBkZWNvcmF0b3Igd2hpY2ggd2lsbCBhdHRlbXB0IHRvIGxvZ2luIHRvIGJ1Z3ppbGxhXG53aXRoIHRoZSBjdXJyZW50IGNyZWRlbnRpYWxzIHByaW9yIHRvIG1ha2luZyB0aGUgYWN0dWFsIGFwaSBjYWxsLlxuXG4gICAgQnVnemlsbGEucHJvdG90eXBlLm1ldGhvZCA9IGxvZ2luKGZ1bmN0aW9uKHBhcmFtLCBwYXJhbSkge1xuICAgIH0pO1xuXG5AcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgdG8gZGVjb3JhdGUuXG5AcmV0dXJuIHtGdW5jdGlvbn0gZGVjb3JhdGVkIG1ldGhvZC5cbiovXG5mdW5jdGlvbiBsb2dpblJlcXVpcmVkKG1ldGhvZCkge1xuICAvLyB3ZSBhc3N1bWUgdGhpcyBpcyBhIHZhbGlkIGJ1Z2lsbGEgaW5zdGFuY2UuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAvLyByZW1lbWJlciB8dGhpc3wgaXMgYSBidWd6aWxsYSBpbnN0YW5jZVxuXG4gICAgLy8gYXJncyBmb3IgdGhlIGRlY29yYXRlZCBtZXRob2RcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksXG4gICAgICAvLyB3ZSBuZWVkIHRoZSBjYWxsYmFjayBzbyB3ZSBjYW4gcGFzcyBsb2dpbiByZWxhdGVkIGVycm9ycy5cbiAgICAgIGNhbGxiYWNrID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgdGhpcy5sb2dpbihcbiAgICAgIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgICAgICAvLyB3ZSBhcmUgbm93IGxvZ2dlZCBpbiBzbyB0aGUgbWV0aG9kIGNhbiBydW4hXG4gICAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH0uYmluZCh0aGlzKVxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgQnVnemlsbGFDbGllbnQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIm9wdGlvbnMudGVzdCBpcyBkZXByZWNhdGVkIHBsZWFzZSBzcGVjaWZ5IHRoZSB1cmwgZGlyZWN0bHlcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaVVybCA9IG9wdGlvbnMudXJsIHx8IFwiaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0L1wiO1xuICAgIHRoaXMuYXBpVXJsID0gdGhpcy5hcGlVcmwucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuXG4gICAgdGhpcy5fYXV0aCA9IG51bGw7XG4gIH1cbiAgLyoqXG4gIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgZm9yIGdpdmVuIHVzZXIuXG5cbiAgRXhhbXBsZTpcblxuICAgICAgeyBpZDogMTIyMiwgdG9rZW46ICd4eHh4JyB9XG5cbiAgQHR5cGUge09iamVjdH1cbiAgKi9cblxuICAvKipcbiAgSW4gdGhlIFJFU1QgQVBJIHdlIGZpcnN0IGxvZ2luIHRvIGFjcXVpcmUgYSB0b2tlbiB3aGljaCBpcyB0aGVuIHVzZWQgdG8gbWFrZVxuICByZXF1ZXN0cy4gU2VlOiBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9CdWd6aWxsYS9XZWJTZXJ2aWNlL1NlcnZlci9SRVNULnBtI0w1NTZcblxuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cblxuICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBbRXJyb3IgZXJyLCBTdHJpbmcgdG9rZW5dLlxuICAqL1xuICBsb2dpbihjYWxsYmFjaykge1xuICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCB0aGlzLl9hdXRoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXNlcm5hbWUgfHwgIXRoaXMucGFzc3dvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm1pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkXCIpO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSB7XG4gICAgICBsb2dpbjogdGhpcy51c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkXG4gICAgfTtcblxuICAgIHZhciBoYW5kbGVMb2dpbiA9IGZ1bmN0aW9uIGhhbmRsZUxvZ2luKGVyciwgcmVzcG9uc2UpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdCkge1xuICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYXV0aCA9IHJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sobnVsbCwgcmVzcG9uc2UpO1xuICAgIH0uYmluZCh0aGlzKTtcblxuICAgIHRoaXMuQVBJUmVxdWVzdChcIi9sb2dpblwiLCBcIkdFVFwiLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgfVxuXG4gIGdldEJ1ZyhpZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgcGFyYW1zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgXCIvYnVnL1wiICsgaWQsXG4gICAgICBcIkdFVFwiLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgIFwiYnVnc1wiLFxuICAgICAgbnVsbCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gIH1cblxuICBzZWFyY2hCdWdzKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXCIvYnVnXCIsIFwiR0VUXCIsIGNhbGxiYWNrLCBcImJ1Z3NcIiwgbnVsbCwgcGFyYW1zKTtcbiAgfVxuXG4gIHVwZGF0ZUJ1ZyhpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcIi9idWcvXCIgKyBpZCwgXCJQVVRcIiwgY2FsbGJhY2ssIFwiYnVnc1wiLCBidWcpO1xuICB9XG5cbiAgY3JlYXRlQnVnKGJ1ZywgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXCIvYnVnXCIsIFwiUE9TVFwiLCBjYWxsYmFjaywgXCJpZFwiLCBidWcpO1xuICB9XG5cbiAgYnVnQ29tbWVudHMoaWQsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF9jYWxsYmFjayA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICAgIGlmIChlKSB0aHJvdyBlO1xuICAgICAgdmFyIF9idWdfY29tbWVudHMgPSByW2lkXTtcbiAgICAgIGlmICh0eXBlb2YgX2J1Z19jb21tZW50c1tcImNvbW1lbnRzXCJdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIC8vIGJ1Z3ppbGxhIDUgOihcbiAgICAgICAgX2J1Z19jb21tZW50cyA9IF9idWdfY29tbWVudHMuY29tbWVudHM7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCBfYnVnX2NvbW1lbnRzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Zy9cIiArIGlkICsgXCIvY29tbWVudFwiLCBcIkdFVFwiLCBfY2FsbGJhY2ssIFwiYnVnc1wiKTtcbiAgfVxuXG4gIGFkZENvbW1lbnQoaWQsIGNvbW1lbnQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Zy9cIiArIGlkICsgXCIvY29tbWVudFwiLCBcIlBPU1RcIiwgY2FsbGJhY2ssIG51bGwsIGNvbW1lbnQpO1xuICB9XG5cbiAgYnVnSGlzdG9yeShpZCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXCIvYnVnL1wiICsgaWQgKyBcIi9oaXN0b3J5XCIsIFwiR0VUXCIsIGNhbGxiYWNrLCBcImJ1Z3NcIik7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYWxsIGF0dGFjaG1lbnRzIGZvciBhIGdpdmVuIGJ1ZyAjXG4gICAqIGh0dHA6Ly93d3cuYnVnemlsbGEub3JnL2RvY3MvdGlwL2VuL2h0bWwvYXBpL0J1Z3ppbGxhL1dlYlNlcnZpY2UvQnVnLmh0bWwjYXR0YWNobWVudHNcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGlkIG9mIGJ1Zy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW0Vycm9yLCBBcnJheTxBdHRhY2htZW50Pl0uXG4gICAqL1xuICBidWdBdHRhY2htZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICBcIi9idWcvXCIgKyBpZCArIFwiL2F0dGFjaG1lbnRcIixcbiAgICAgIFwiR0VUXCIsXG4gICAgICBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSxcbiAgICAgIFwiYnVnc1wiXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUF0dGFjaG1lbnQoaWQsIGF0dGFjaG1lbnQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgXCIvYnVnL1wiICsgaWQgKyBcIi9hdHRhY2htZW50XCIsXG4gICAgICBcIlBPU1RcIixcbiAgICAgIGV4dHJhY3RGaWVsZChjYWxsYmFjayksXG4gICAgICBcImlkc1wiLFxuICAgICAgYXR0YWNobWVudFxuICAgICk7XG4gIH1cblxuICBnZXRBdHRhY2htZW50KGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgIFwiL2J1Zy9hdHRhY2htZW50L1wiICsgaWQsXG4gICAgICBcIkdFVFwiLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgIFwiYXR0YWNobWVudHNcIlxuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50KGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcIi9idWcvYXR0YWNobWVudC9cIiArIGlkLCBcIlBVVFwiLCBjYWxsYmFjaywgXCJva1wiLCBhdHRhY2htZW50KTtcbiAgfVxuXG4gIHNlYXJjaFVzZXJzKG1hdGNoLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcIi91c2VyXCIsIFwiR0VUXCIsIGNhbGxiYWNrLCBcInVzZXJzXCIsIG51bGwsIHsgbWF0Y2g6IG1hdGNoIH0pO1xuICB9XG5cbiAgZ2V0VXNlcihpZCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXCIvdXNlci9cIiArIGlkLCBcIkdFVFwiLCBleHRyYWN0RmllbGQoY2FsbGJhY2spLCBcInVzZXJzXCIpO1xuICB9XG5cbiAgZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzKGlkLCBjYWxsYmFjaykge1xuICAgIC8vIEJNTy0gc3BlY2lmaWMgZXh0ZW5zaW9uIHRvIGdldCBzdWdnZXN0ZWQgcmV2aWV3ZXJzIGZvciBhIGdpdmVuIGJ1Z1xuICAgIC8vIGh0dHA6Ly9ienIubW96aWxsYS5vcmcvYm1vLzQuMi92aWV3L2hlYWQ6L2V4dGVuc2lvbnMvUmV2aWV3L2xpYi9XZWJTZXJ2aWNlLnBtI0wxMDJcbiAgICB0aGlzLkFQSVJlcXVlc3QoXCIvcmV2aWV3L3N1Z2dlc3Rpb25zL1wiICsgaWQsIFwiR0VUXCIsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qXG4gICAgWFhYIHRoaXMgY2FsbCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgdG8gcGVvcGxlIHNjcmlwdGluZyBhZ2FpbnN0IHByb2QgYnVnemlsbHFcbiAgICBUSEVSRSBJUyBOTyBFUVVJVkFMRU5UIFJFU1QgQ0FMTCBJTiBUSVAsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aXAsIGhlbmNlXG4gICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAqL1xuICBnZXRDb25maWd1cmF0aW9uKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IHBhcmFtcztcbiAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRoaXMuQVBJUmVxdWVzdCgnL2NvbmZpZ3VyYXRpb24nLCAnR0VUJywgY2FsbGJhY2ssIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKFxuICAgICAgXCJHRVRcIixcbiAgICAgIFwiaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uXCIsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAocmVxLnJlYWR5U3RhdGUgPT0gNCAmJiByZXEuc3RhdHVzICE9IDApIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShudWxsLCByZXEsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlcS50aW1lb3V0ID0gdGhpcy50aW1lb3V0O1xuICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShcInRpbWVvdXRcIiwgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKFwiZXJyb3JcIiwgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEuc2VuZCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMocHJvZHVjdCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKFxuICAgICAgICBwcm9kdWN0ID09PSBcInNlbGVjdGFibGVcIiB8fFxuICAgICAgICBwcm9kdWN0ID09PSBcImVudGVyYWJsZVwiIHx8XG4gICAgICAgIHByb2R1Y3QgPT09IFwiYWNjZXNzaWJsZVwiXG4gICAgICApIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcIi9wcm9kdWN0P3R5cGU9XCIgKyBwcm9kdWN0LCBcIkdFVFwiLCBmdW5jdGlvbihcbiAgICAgICAgICBlcnIsXG4gICAgICAgICAgcHJvZHVjdHNcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLkFQSVJlcXVlc3QoXCIvcHJvZHVjdC9cIiArIHByb2R1Y3QsIFwiR0VUXCIsIGZ1bmN0aW9uKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UHJvZHVjdChwcm9kdWN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5BUElSZXF1ZXN0KFwiL3Byb2R1Y3QvXCIgKyBwcm9kdWN0LCBcIkdFVFwiLCBmdW5jdGlvbihlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBBUElSZXF1ZXN0KHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBpZiAoXG4gICAgICAvLyBpZiB3ZSBhcmUgZG9pbmcgdGhlIGxvZ2luXG4gICAgICBwYXRoID09PSBMT0dJTiB8fFxuICAgICAgLy8gaWYgd2UgYXJlIGFscmVhZHkgYXV0aGVkXG4gICAgICB0aGlzLl9hdXRoIHx8XG4gICAgICAvLyBvciB3ZSBhcmUgbWlzc2luZyBhdXRoIGRhdGFcbiAgICAgICF0aGlzLnBhc3N3b3JkIHx8XG4gICAgICAhdGhpcy51c2VybmFtZVxuICAgICkge1xuICAgICAgLy8gc2tpcCBhdXRvbWF0aWMgYXV0aGVudGljYXRpb25cbiAgICAgIHJldHVybiB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgbGV0IGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICB0aGlzLmxvZ2luKFxuICAgICAgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfS5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIF9BUElSZXF1ZXN0KHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgaWYgKHRoaXMuYXBpX2tleSkge1xuICAgICAgcGFyYW1zLmFwaV9rZXkgPSB0aGlzLmFwaV9rZXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2F1dGgpIHtcbiAgICAgIHBhcmFtcy50b2tlbiA9IHRoaXMuX2F1dGgudG9rZW47XG4gICAgfSBlbHNlIGlmICh0aGlzLnVzZXJuYW1lICYmIHRoaXMucGFzc3dvcmQpIHtcbiAgICAgIHBhcmFtcy5sb2dpbiA9IHRoaXMudXNlcm5hbWU7XG4gICAgICBwYXJhbXMucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMgJiYgT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICB1cmwgKz0gXCI/XCIgKyB0aGlzLnVybEVuY29kZShwYXJhbXMpO1xuICAgIH1cblxuICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICBjb25zb2xlLmxvZyhgPj4gYCwgdXJsLCBwYXJhbXMsIGJvZHksIG1ldGhvZCk7XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKG1ldGhvZCwgdXJsLCB0cnVlKTtcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgaWYgKG1ldGhvZC50b1VwcGVyQ2FzZSgpICE9PSBcIkdFVFwiKSB7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgfVxuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjaywgZmllbGQpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKFwidGltZW91dFwiLCByZXEsIGNhbGxiYWNrKTtcbiAgICB9O1xuICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cblxuICBoYW5kbGVSZXNwb25zZShlcnIsIHJlc3BvbnNlLCBjYWxsYmFjaywgZmllbGQpIHtcbiAgICAvLyBkZXRlY3QgdGltZW91dCBlcnJvcnNcbiAgICBjb25zb2xlLmxvZyhgZXJyICR7ZXJyfWAsIHJlc3BvbnNlKTtcbiAgICBpZiAoZXJyICYmIGVyci5jb2RlICYmIFRJTUVPVVRfRVJST1JTLmluZGV4T2YoZXJyLmNvZGUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihcInRpbWVvdXRcIikpO1xuICAgIH1cblxuICAgIC8vIGhhbmRsZSBnZW5lcmljIGVycm9yc1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuXG4gICAgLy8gYW55dGhpbmcgaW4gMjAwIHN0YXR1cyByYW5nZSBpcyBhIHN1Y2Nlc3NcbiAgICB2YXIgcmVxdWVzdFN1Y2Nlc3NmdWwgPSByZXNwb25zZS5zdGF0dXMgPiAxOTkgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgMzAwO1xuXG4gICAgLy8gZXZlbiBpbiB0aGUgY2FzZSBvZiBhbiB1bnN1Y2Nlc3NmdWwgcmVxdWVzdCB3ZSBtYXkgaGF2ZSBqc29uIGRhdGEuXG4gICAgdmFyIHBhcnNlZEJvZHk7XG5cbiAgICB0cnkge1xuICAgICAgcGFyc2VkQm9keSA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0KTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHsgcGFyc2VkQm9keSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBYWFg6IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoaXMgYmV0dGVyIGluIHRoZSByZXF1ZXN0IHN1Y2Nlc3MgY2FzZT9cbiAgICAgIGlmIChyZXF1ZXN0U3VjY2Vzc2Z1bCkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgICAgbmV3IEVycm9yKFwicmVzcG9uc2Ugd2FzIG5vdCB2YWxpZCBqc29uOiBcIiArIHJlc3BvbnNlLnJlc3BvbnNlVGV4dClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbXCJyZXN1bHRcIl0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHBhcnNlZEJvZHkgPSBwYXJzZWRCb2R5W1wicmVzdWx0XCJdO1xuICAgIH1cblxuICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgIC8vIFhYWDogdGhpcyBzZWVtcyBsaWtlIGEgYnVnIGluIHRoZSBhcGkuXG4gICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBcIkhUVFAgc3RhdHVzIFwiICtcbiAgICAgICAgICByZXNwb25zZS5zdGF0dXMgK1xuICAgICAgICAgIFwiXFxuXCIgK1xuICAgICAgICAgIC8vIG5vdGUgaW50ZW50aW9uYWwgdXNlIG9mICE9IGluc3RlYWQgb2YgIT09XG4gICAgICAgICAgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKVxuICAgICAgICAgICAgPyBwYXJzZWRCb2R5Lm1lc3NhZ2VcbiAgICAgICAgICAgIDogXCJcIlxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKHsgZmllbGQgfSk7XG4gICAgY2FsbGJhY2sobnVsbCwgZmllbGQgPyBwYXJzZWRCb2R5W2ZpZWxkXSA6IHBhcnNlZEJvZHkpO1xuICB9XG5cbiAgdXJsRW5jb2RlKHBhcmFtcykge1xuICAgIHZhciB1cmwgPSBbXTtcbiAgICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBwYXJhbXNbcGFyYW1dO1xuICAgICAgaWYgKCF2YWx1ZXMuZm9yRWFjaCkgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdXJsLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVybC5qb2luKFwiJlwiKTtcbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgQnVnemlsbGFDbGllbnQob3B0aW9ucyk7XG59XG4iXX0= +},{"./xhr":3}],3:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var XMLHttpRequest = null; + +exports.XMLHttpRequest = XMLHttpRequest; +if (typeof window === 'undefined') { + // we're not in a browser? + var _loader = require; + try { + exports.XMLHttpRequest = XMLHttpRequest = _loader('sdk/net/xhr').XMLHttpRequest; + } catch (e) { + exports.XMLHttpRequest = XMLHttpRequest = _loader("xmlhttprequest").XMLHttpRequest; + } +} else if (typeof window !== 'undefined' && typeof window.XMLHttpRequest !== 'undefined') { + exports.XMLHttpRequest = XMLHttpRequest = window.XMLHttpRequest; +} else { + throw "No window, WAT."; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy94aHIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7OztBQUVqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTs7QUFFakMsTUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3RCLE1BQUk7QUFDRixZQU5PLGNBQWMsR0FNckIsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLENBQUM7R0FDeEQsQ0FBQyxPQUFNLENBQUMsRUFBRTtBQUNULFlBUk8sY0FBYyxHQVFyQixjQUFjLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDO0dBQzNEO0NBQ0YsTUFDSSxJQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLE1BQU0sQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFO0FBQ3JGLFVBWlMsY0FBYyxHQVl2QixjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUN4QyxNQUNJO0FBQ0gsUUFBTSxpQkFBaUIsQ0FBQTtDQUN4QiIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMveGhyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBYTUxIdHRwUmVxdWVzdCA9IG51bGw7XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAvLyB3ZSdyZSBub3QgaW4gYSBicm93c2VyP1xuICBsZXQgX2xvYWRlciA9IHJlcXVpcmU7XG4gIHRyeSB7XG4gICAgWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoKGUpIHtcbiAgICBYTUxIdHRwUmVxdWVzdCA9IF9sb2FkZXIoXCJ4bWxodHRwcmVxdWVzdFwiKS5YTUxIdHRwUmVxdWVzdDtcbiAgfVxufVxuZWxzZSBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn1cbmVsc2Uge1xuICB0aHJvdyBcIk5vIHdpbmRvdywgV0FULlwiXG59XG4iXX0= +},{}]},{},[1]) +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYnouanMiLCJzcmMvaW5kZXguanMiLCJzcmMveGhyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaGNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIHRoaXMgZmlsZSBpcyB0aGUgZW50cnlwb2ludCBmb3IgYnVpbGRpbmcgYSBicm93c2VyIGZpbGUgd2l0aCBicm93c2VyaWZ5XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYnogPSB3aW5kb3cuYnogPSByZXF1aXJlKFwiLi9pbmRleFwiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OWllaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08wRkJSVUVzU1VGQlNTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTWlMQ0ptYVd4bElqb2lMMVZ6WlhKekwycHNZWE4wWlhJdmMzSmpMMjF2ZW1sc2JHRXZZbm91YW5NdmMzSmpMMko2TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeThnZEdocGN5Qm1hV3hsSUdseklIUm9aU0JsYm5SeWVYQnZhVzUwSUdadmNpQmlkV2xzWkdsdVp5QmhJR0p5YjNkelpYSWdabWxzWlNCM2FYUm9JR0p5YjNkelpYSnBabmxjYmx4dWRtRnlJR0o2SUQwZ2QybHVaRzkzTG1KNklEMGdjbVZ4ZFdseVpTaGNJaTR2YVc1a1pYaGNJaWs3SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmV4cG9ydHMuY3JlYXRlQ2xpZW50ID0gY3JlYXRlQ2xpZW50O1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgWE1MSHR0cFJlcXVlc3QgPSByZXF1aXJlKFwiLi94aHJcIikuWE1MSHR0cFJlcXVlc3Q7XG5cbi8qKlxuQ29uc3RhbnQgZm9yIHRoZSBsb2dpbiBlbnRyeXBvaW50LlxuKi9cbnZhciBMT0dJTiA9IFwiL2xvZ2luXCI7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbnZhciBUSU1FT1VUX0VSUk9SUyA9IFtcIkVUSU1FRE9VVFwiLCBcIkVTT0NLRVRUSU1FRE9VVFwiXTtcblxuZnVuY3Rpb24gZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGlkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjYWxsYmFjayA9IGlkO1xuICAgIGlkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChlcnIsIHJlc3BvbnNlKSB7XG4gICAgY29uc29sZS5sb2coXCIuLi4uXCIsIHsgZXJyOiBlcnIsIHJlc3BvbnNlOiByZXNwb25zZSB9KTtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgLy8gZGVmYXVsdCBiZWhhdmlvciBpcyB0byB1c2UgdGhlIGZpcnN0IGlkIHdoZW4gdGhlIGNhbGxlciBkb2VzIG5vdCBwcm92aWRlIG9uZS5cbiAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlkID0gT2JqZWN0LmtleXMocmVzcG9uc2UpWzBdO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sobnVsbCwgcmVzcG9uc2VbaWRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgXCJFcnJvcjosIG5vIHJlc3BvbnNlIGluIGV4dHJhY3RGaWVsZFwiO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG5GdW5jdGlvbiBkZWNvcmF0b3Igd2hpY2ggd2lsbCBhdHRlbXB0IHRvIGxvZ2luIHRvIGJ1Z3ppbGxhXG53aXRoIHRoZSBjdXJyZW50IGNyZWRlbnRpYWxzIHByaW9yIHRvIG1ha2luZyB0aGUgYWN0dWFsIGFwaSBjYWxsLlxuXG4gICAgQnVnemlsbGEucHJvdG90eXBlLm1ldGhvZCA9IGxvZ2luKGZ1bmN0aW9uKHBhcmFtLCBwYXJhbSkge1xuICAgIH0pO1xuXG5AcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgdG8gZGVjb3JhdGUuXG5AcmV0dXJuIHtGdW5jdGlvbn0gZGVjb3JhdGVkIG1ldGhvZC5cbiovXG5mdW5jdGlvbiBsb2dpblJlcXVpcmVkKG1ldGhvZCkge1xuICAvLyB3ZSBhc3N1bWUgdGhpcyBpcyBhIHZhbGlkIGJ1Z2lsbGEgaW5zdGFuY2UuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gcmVtZW1iZXIgfHRoaXN8IGlzIGEgYnVnemlsbGEgaW5zdGFuY2VcblxuICAgIC8vIGFyZ3MgZm9yIHRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLFxuXG4gICAgLy8gd2UgbmVlZCB0aGUgY2FsbGJhY2sgc28gd2UgY2FuIHBhc3MgbG9naW4gcmVsYXRlZCBlcnJvcnMuXG4gICAgY2FsbGJhY2sgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICB0aGlzLmxvZ2luKChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgICAgLy8gd2UgYXJlIG5vdyBsb2dnZWQgaW4gc28gdGhlIG1ldGhvZCBjYW4gcnVuIVxuICAgICAgbWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0pLmJpbmQodGhpcykpO1xuICB9O1xufVxuXG52YXIgQnVnemlsbGFDbGllbnQgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCdWd6aWxsYUNsaWVudChvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1Z3ppbGxhQ2xpZW50KTtcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy51c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XG4gICAgdGhpcy5wYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQ7XG4gICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0IHx8IDA7XG4gICAgdGhpcy5hcGlfa2V5ID0gb3B0aW9ucy5hcGlfa2V5IHx8IG51bGw7XG5cbiAgICBpZiAob3B0aW9ucy50ZXN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5XCIpO1xuICAgIH1cblxuICAgIHRoaXMuYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgXCJodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Jlc3QvXCI7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBnaXZlbiB1c2VyLlxuICAgRXhhbXBsZTpcbiAgICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cbiAgIEB0eXBlIHtPYmplY3R9XG4gICovXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG4gICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cbiAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFtFcnJvciBlcnIsIFN0cmluZyB0b2tlbl0uXG4gICovXG5cbiAgX2NyZWF0ZUNsYXNzKEJ1Z3ppbGxhQ2xpZW50LCBbe1xuICAgIGtleTogXCJsb2dpblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsb2dpbihjYWxsYmFjaykge1xuICAgICAgaWYgKHRoaXMuX2F1dGgpIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy51c2VybmFtZSB8fCAhdGhpcy5wYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJtaXNzaW5nIG9yIGludmFsaWQgLnVzZXJuYW1lIG9yIC5wYXNzd29yZFwiKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgbG9naW46IHRoaXMudXNlcm5hbWUsXG4gICAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkXG4gICAgICB9O1xuXG4gICAgICB2YXIgaGFuZGxlTG9naW4gPSAoZnVuY3Rpb24gaGFuZGxlTG9naW4oZXJyLCByZXNwb25zZSkge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdCkge1xuICAgICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fYXV0aCA9IHJlc3BvbnNlO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlKTtcbiAgICAgIH0pLmJpbmQodGhpcyk7XG5cbiAgICAgIHRoaXMuQVBJUmVxdWVzdChcIi9sb2dpblwiLCBcIkdFVFwiLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QnVnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJ1ZyhpZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayA9IHBhcmFtcztcbiAgICAgICAgcGFyYW1zID0ge307XG4gICAgICB9XG5cbiAgICAgIHRoaXMuQVBJUmVxdWVzdChcIi9idWcvXCIgKyBpZCwgXCJHRVRcIiwgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgXCJidWdzXCIsIG51bGwsIHBhcmFtcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlYXJjaEJ1Z3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2VhcmNoQnVncyhwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoXCIvYnVnXCIsIFwiR0VUXCIsIGNhbGxiYWNrLCBcImJ1Z3NcIiwgbnVsbCwgcGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZyhpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Zy9cIiArIGlkLCBcIlBVVFwiLCBjYWxsYmFjaywgXCJidWdzXCIsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUJ1Z1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVCdWcoYnVnLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Z1wiLCBcIlBPU1RcIiwgY2FsbGJhY2ssIFwiaWRcIiwgYnVnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYnVnQ29tbWVudHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYnVnQ29tbWVudHMoaWQsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgX2NhbGxiYWNrID0gZnVuY3Rpb24gX2NhbGxiYWNrKGUsIHIpIHtcbiAgICAgICAgaWYgKGUpIHRocm93IGU7XG4gICAgICAgIHZhciBfYnVnX2NvbW1lbnRzID0gcltpZF07XG4gICAgICAgIGlmICh0eXBlb2YgX2J1Z19jb21tZW50c1tcImNvbW1lbnRzXCJdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgLy8gYnVnemlsbGEgNSA6KFxuICAgICAgICAgIF9idWdfY29tbWVudHMgPSBfYnVnX2NvbW1lbnRzLmNvbW1lbnRzO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIF9idWdfY29tbWVudHMpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Zy9cIiArIGlkICsgXCIvY29tbWVudFwiLCBcIkdFVFwiLCBfY2FsbGJhY2ssIFwiYnVnc1wiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkQ29tbWVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRDb21tZW50KGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Zy9cIiArIGlkICsgXCIvY29tbWVudFwiLCBcIlBPU1RcIiwgY2FsbGJhY2ssIG51bGwsIGNvbW1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJidWdIaXN0b3J5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJ1Z0hpc3RvcnkoaWQsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoXCIvYnVnL1wiICsgaWQgKyBcIi9oaXN0b3J5XCIsIFwiR0VUXCIsIGNhbGxiYWNrLCBcImJ1Z3NcIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYWxsIGF0dGFjaG1lbnRzIGZvciBhIGdpdmVuIGJ1ZyAjXG4gICAgICogaHR0cDovL3d3dy5idWd6aWxsYS5vcmcvZG9jcy90aXAvZW4vaHRtbC9hcGkvQnVnemlsbGEvV2ViU2VydmljZS9CdWcuaHRtbCNhdHRhY2htZW50c1xuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGlkIG9mIGJ1Zy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbRXJyb3IsIEFycmF5PEF0dGFjaG1lbnQ+XS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJidWdBdHRhY2htZW50c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdBdHRhY2htZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdChcIi9idWcvXCIgKyBpZCArIFwiL2F0dGFjaG1lbnRcIiwgXCJHRVRcIiwgZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjayksIFwiYnVnc1wiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQXR0YWNobWVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVBdHRhY2htZW50KGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KFwiL2J1Zy9cIiArIGlkICsgXCIvYXR0YWNobWVudFwiLCBcIlBPU1RcIiwgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgXCJpZHNcIiwgYXR0YWNobWVudCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEF0dGFjaG1lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXR0YWNobWVudChpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdChcIi9idWcvYXR0YWNobWVudC9cIiArIGlkLCBcIkdFVFwiLCBleHRyYWN0RmllbGQoY2FsbGJhY2spLCBcImF0dGFjaG1lbnRzXCIpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVBdHRhY2htZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUF0dGFjaG1lbnQoaWQsIGF0dGFjaG1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoXCIvYnVnL2F0dGFjaG1lbnQvXCIgKyBpZCwgXCJQVVRcIiwgY2FsbGJhY2ssIFwib2tcIiwgYXR0YWNobWVudCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlYXJjaFVzZXJzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlYXJjaFVzZXJzKG1hdGNoLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KFwiL3VzZXJcIiwgXCJHRVRcIiwgY2FsbGJhY2ssIFwidXNlcnNcIiwgbnVsbCwgeyBtYXRjaDogbWF0Y2ggfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFVzZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VXNlcihpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdChcIi91c2VyL1wiICsgaWQsIFwiR0VUXCIsIGV4dHJhY3RGaWVsZChjYWxsYmFjayksIFwidXNlcnNcIik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFN1Z2dlc3RlZFJldmlld2Vyc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTdWdnZXN0ZWRSZXZpZXdlcnMoaWQsIGNhbGxiYWNrKSB7XG4gICAgICAvLyBCTU8tIHNwZWNpZmljIGV4dGVuc2lvbiB0byBnZXQgc3VnZ2VzdGVkIHJldmlld2VycyBmb3IgYSBnaXZlbiBidWdcbiAgICAgIC8vIGh0dHA6Ly9ienIubW96aWxsYS5vcmcvYm1vLzQuMi92aWV3L2hlYWQ6L2V4dGVuc2lvbnMvUmV2aWV3L2xpYi9XZWJTZXJ2aWNlLnBtI0wxMDJcbiAgICAgIHRoaXMuQVBJUmVxdWVzdChcIi9yZXZpZXcvc3VnZ2VzdGlvbnMvXCIgKyBpZCwgXCJHRVRcIiwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBYWFggdGhpcyBjYWxsIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB0byBwZW9wbGUgc2NyaXB0aW5nIGFnYWluc3QgcHJvZCBidWd6aWxscVxuICAgICAgVEhFUkUgSVMgTk8gRVFVSVZBTEVOVCBSRVNUIENBTEwgSU4gVElQLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgdGVzdGVkIGFnYWluc3QgdGlwLCBoZW5jZVxuICAgICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29uZmlndXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgIHBhcmFtcyA9IHt9O1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLkFQSVJlcXVlc3QoJy9jb25maWd1cmF0aW9uJywgJ0dFVCcsIGNhbGxiYWNrLCBudWxsLCBudWxsLCBwYXJhbXMpO1xuICAgICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgICAvLyBzZWUgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI0NDA1I2MxMTpcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgcmVxLm9wZW4oXCJHRVRcIiwgXCJodHRwczovL2FwaS1kZXYuYnVnemlsbGEubW96aWxsYS5vcmcvbGF0ZXN0L2NvbmZpZ3VyYXRpb25cIiwgdHJ1ZSk7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShcInRpbWVvdXRcIiwgcmVxLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShcImVycm9yXCIsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5zZW5kKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFByb2R1Y3RzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFByb2R1Y3RzKHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAocHJvZHVjdCA9PT0gXCJzZWxlY3RhYmxlXCIgfHwgcHJvZHVjdCA9PT0gXCJlbnRlcmFibGVcIiB8fCBwcm9kdWN0ID09PSBcImFjY2Vzc2libGVcIikge1xuICAgICAgICAgIF90aGlzLkFQSVJlcXVlc3QoXCIvcHJvZHVjdD90eXBlPVwiICsgcHJvZHVjdCwgXCJHRVRcIiwgZnVuY3Rpb24gKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocHJvZHVjdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLkFQSVJlcXVlc3QoXCIvcHJvZHVjdC9cIiArIHByb2R1Y3QsIFwiR0VUXCIsIGZ1bmN0aW9uIChlcnIsIHByb2R1Y3RzKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFByb2R1Y3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UHJvZHVjdChwcm9kdWN0KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcIi9wcm9kdWN0L1wiICsgcHJvZHVjdCwgXCJHRVRcIiwgZnVuY3Rpb24gKGVyciwgcHJvZHVjdCkge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocHJvZHVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJBUElSZXF1ZXN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIEFQSVJlcXVlc3QocGF0aCwgbWV0aG9kLCBjYWxsYmFjaywgZmllbGQsIGJvZHksIHBhcmFtcykge1xuICAgICAgaWYgKFxuICAgICAgLy8gaWYgd2UgYXJlIGRvaW5nIHRoZSBsb2dpblxuICAgICAgcGF0aCA9PT0gTE9HSU4gfHxcbiAgICAgIC8vIGlmIHdlIGFyZSBhbHJlYWR5IGF1dGhlZFxuICAgICAgdGhpcy5fYXV0aCB8fFxuICAgICAgLy8gb3Igd2UgYXJlIG1pc3NpbmcgYXV0aCBkYXRhXG4gICAgICAhdGhpcy5wYXNzd29yZCB8fCAhdGhpcy51c2VybmFtZSkge1xuICAgICAgICAvLyBza2lwIGF1dG9tYXRpYyBhdXRoZW50aWNhdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgICAgdGhpcy5sb2dpbigoZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH0pLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfQVBJUmVxdWVzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIGlmICh0aGlzLmFwaV9rZXkpIHtcbiAgICAgICAgcGFyYW1zLmFwaV9rZXkgPSB0aGlzLmFwaV9rZXk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICAgIHBhcmFtcy50b2tlbiA9IHRoaXMuX2F1dGgudG9rZW47XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkge1xuICAgICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgICBwYXJhbXMucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICB1cmwgKz0gXCI/XCIgKyB0aGlzLnVybEVuY29kZShwYXJhbXMpO1xuICAgICAgfVxuXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgICBjb25zb2xlLmxvZyhcIj4+IFwiLCB1cmwsIHBhcmFtcywgYm9keSwgbWV0aG9kKTtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgaWYgKG1ldGhvZC50b1VwcGVyQ2FzZSgpICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgIH1cbiAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShudWxsLCByZXEsIGNhbGxiYWNrLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShcInRpbWVvdXRcIiwgcmVxLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShldmVudCwgcmVxLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgICAgcmVxLnNlbmQoYm9keSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhbmRsZVJlc3BvbnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlKGVyciwgcmVzcG9uc2UsIGNhbGxiYWNrLCBmaWVsZCkge1xuICAgICAgLy8gZGV0ZWN0IHRpbWVvdXQgZXJyb3JzXG4gICAgICBjb25zb2xlLmxvZyhcImVyciBcIiArIGVyciwgcmVzcG9uc2UpO1xuICAgICAgaWYgKGVyciAmJiBlcnIuY29kZSAmJiBUSU1FT1VUX0VSUk9SUy5pbmRleE9mKGVyci5jb2RlKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihcInRpbWVvdXRcIikpO1xuICAgICAgfVxuXG4gICAgICAvLyBoYW5kbGUgZ2VuZXJpYyBlcnJvcnNcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuXG4gICAgICAvLyBhbnl0aGluZyBpbiAyMDAgc3RhdHVzIHJhbmdlIGlzIGEgc3VjY2Vzc1xuICAgICAgdmFyIHJlcXVlc3RTdWNjZXNzZnVsID0gcmVzcG9uc2Uuc3RhdHVzID4gMTk5ICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMDtcblxuICAgICAgLy8gZXZlbiBpbiB0aGUgY2FzZSBvZiBhbiB1bnN1Y2Nlc3NmdWwgcmVxdWVzdCB3ZSBtYXkgaGF2ZSBqc29uIGRhdGEuXG4gICAgICB2YXIgcGFyc2VkQm9keTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkQm9keSA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coeyBwYXJzZWRCb2R5IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBYWFg6IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoaXMgYmV0dGVyIGluIHRoZSByZXF1ZXN0IHN1Y2Nlc3MgY2FzZT9cbiAgICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihcInJlc3BvbnNlIHdhcyBub3QgdmFsaWQganNvbjogXCIgKyByZXNwb25zZS5yZXNwb25zZVRleHQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkQm9keVtcInJlc3VsdFwiXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBwYXJzZWRCb2R5ID0gcGFyc2VkQm9keVtcInJlc3VsdFwiXTtcbiAgICAgIH1cblxuICAgICAgLy8gc3VjY2Vzc2Z1bCBodHRwIHJlc3Buc2UgYnV0IGFuIGVycm9yXG4gICAgICAvLyBYWFg6IHRoaXMgc2VlbXMgbGlrZSBhIGJ1ZyBpbiB0aGUgYXBpLlxuICAgICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgICByZXF1ZXN0U3VjY2Vzc2Z1bCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoXCJIVFRQIHN0YXR1cyBcIiArIHJlc3BvbnNlLnN0YXR1cyArIFwiXFxuXCIgKyAoXG4gICAgICAgIC8vIG5vdGUgaW50ZW50aW9uYWwgdXNlIG9mICE9IGluc3RlYWQgb2YgIT09XG4gICAgICAgIHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6IFwiXCIpKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coeyBmaWVsZDogZmllbGQgfSk7XG4gICAgICBjYWxsYmFjayhudWxsLCBmaWVsZCA/IHBhcnNlZEJvZHlbZmllbGRdIDogcGFyc2VkQm9keSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVybEVuY29kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cmxFbmNvZGUocGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gW107XG4gICAgICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtc1twYXJhbV07XG4gICAgICAgIGlmICghdmFsdWVzLmZvckVhY2gpIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICAgICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICB1cmwucHVzaChlbmNvZGVVUklDb21wb25lbnQocGFyYW0pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXJsLmpvaW4oXCImXCIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWd6aWxsYUNsaWVudDtcbn0pKCk7XG5cbmV4cG9ydHMuQnVnemlsbGFDbGllbnQgPSBCdWd6aWxsYUNsaWVudDtcblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50KG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBCdWd6aWxsYUNsaWVudChvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OXBibVJsZUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdRVUZCUVN4SlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRPenM3T3p0QlFVdDJSQ3hKUVVGTkxFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdPenM3TzBGQlMzWkNMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03TzBGQlJYaEVMRk5CUVZNc1dVRkJXU3hEUVVGRExFVkJRVVVzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYkVNc1RVRkJTU3hQUVVGUExFVkJRVVVzUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZETlVJc1dVRkJVU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5rTEUxQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNVMEZCVHl4VlFVRlRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE4wSXNWMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVZ3NSMEZCUnl4RlFVRkZMRkZCUVZFc1JVRkJVaXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkRMRkZCUVVrc1IwRkJSeXhGUVVGRkxFOUJRVThzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVVNVFpeFJRVUZKTEZGQlFWRXNSVUZCUlRzN1FVRkZXaXhWUVVGSkxFVkJRVVVzUzBGQlN5eFRRVUZUTEVWQlFVVTdRVUZEY0VJc1ZVRkJSU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VDBGREwwSTdRVUZEUkN4alFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpsQ0xFMUJRVTA3UVVGRFRDeFpRVUZOTEhGRFFVRnhReXhEUVVGRE8wdEJRemRETzBkQlEwWXNRMEZCUXp0RFFVTklPenM3T3pzN096czdPenM3UVVGWlJDeFRRVUZUTEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVN08wRkJSVGRDTEZOQlFVOHNXVUZCVnpzN096dEJRVWxvUWl4UlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE96czdRVUZGT1VNc1dVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE96dEJRVVZ1UXl4UlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOU0xFTkJRVUVzVlVGQlV5eEhRVUZITEVWQlFVVTdRVUZEV2l4VlFVRkpMRWRCUVVjc1JVRkJSU3hQUVVGUExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXpzN08wRkJSemxDTEZsQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6RkNMRU5CUVVFc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlEySXNRMEZCUXp0SFFVTklMRU5CUVVNN1EwRkRTRHM3UVVGRlRTeEpRVUZKTEdOQlFXTTdRVUZEV2l4WFFVUkdMR05CUVdNc1EwRkRXQ3hQUVVGUExFVkJRVVU3TUVKQlJGb3NZMEZCWXpzN1FVRkZja0lzVjBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4RlFVRkZMRU5CUVVNN08wRkJSWGhDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU5xUXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEYWtNc1VVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFJRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZET3p0QlFVVjJReXhSUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1dVRkJUU3hKUVVGSkxFdEJRVXNzUTBGRFlpdzBSRUZCTkVRc1EwRkROMFFzUTBGQlF6dExRVU5JT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4dlEwRkJiME1zUTBGQlF6dEJRVU5zUlN4UlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6czdRVUZGTjBNc1VVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdSMEZEYmtJN096czdPenM3T3pzN096czdPenM3TzJWQmJrSlJMR05CUVdNN08xZEJkVU5zUWl4bFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOa0xGVkJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTmtMR2RDUVVGUkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVNMVFqczdRVUZGUkN4VlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRjRU1zWTBGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl3eVEwRkJNa01zUTBGQlF5eERRVUZETzA5QlF6bEVPenRCUVVWRUxGVkJRVWtzVFVGQlRTeEhRVUZITzBGQlExZ3NZVUZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUk8wRkJRM0JDTEdkQ1FVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkU3VDBGRGVFSXNRMEZCUXpzN1FVRkZSaXhWUVVGSkxGZEJRVmNzUjBGQlJ5eERRVUZCTEZOQlFWTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGNFUXNXVUZCU1N4SFFVRkhMRVZCUVVVc1QwRkJUeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZET1VJc1dVRkJTU3hSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyNUNMR05CUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXp0VFFVTTVRaXhOUVVGTk8wRkJRMHdzWTBGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNN1UwRkRka0k3UVVGRFJDeG5Ra0ZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFBRVU14UWl4RFFVRkJMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVmlMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4WFFVRlhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTnVSVHM3TzFkQlJVc3NaMEpCUVVNc1JVRkJSU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZETTBJc1ZVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5pTEdkQ1FVRlJMRWRCUVVjc1RVRkJUU3hEUVVGRE8wRkJRMnhDTEdOQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1QwRkRZanM3UVVGRlJDeFZRVUZKTEVOQlFVTXNWVUZCVlN4RFFVTmlMRTlCUVU4c1IwRkJSeXhGUVVGRkxFVkJRMW9zUzBGQlN5eEZRVU5NTEZsQlFWa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkRkRUlzVFVGQlRTeEZRVU5PTEVsQlFVa3NSVUZEU2l4TlFVRk5MRU5CUTFBc1EwRkJRenRMUVVOSU96czdWMEZGVXl4dlFrRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlF6TkNMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEV0QlFVc3NSVUZCUlN4UlFVRlJMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTm9SVHM3TzFkQlJWRXNiVUpCUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZETTBJc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hSUVVGUkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMHRCUXpkRU96czdWMEZGVVN4dFFrRkJReXhIUVVGSExFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEzWkNMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEzUkVPenM3VjBGRlZTeHhRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRM2hDTEZWQlFVa3NVMEZCVXl4SFFVRkhMRk5CUVZvc1UwRkJVeXhEUVVGWkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVTdRVUZETjBJc1dVRkJTU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEWml4WlFVRkpMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZETVVJc1dVRkJTU3hQUVVGUExHRkJRV0VzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4WFFVRlhMRVZCUVVVN08wRkJSWEJFTEhWQ1FVRmhMRWRCUVVjc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF6dFRRVU40UXp0QlFVTkVMR2RDUVVGUkxFTkJRVU1zU1VGQlNTeEZRVUZGTEdGQlFXRXNRMEZCUXl4RFFVRkRPMDlCUXk5Q0xFTkJRVU03TzBGQlJVWXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJTeEhRVUZITEZWQlFWVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzB0QlEzUkZPenM3VjBGRlV5eHZRa0ZCUXl4RlFVRkZMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU5vUXl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTEVkQlFVY3NWVUZCVlN4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUXpkRk96czdWMEZGVXl4dlFrRkJReXhGUVVGRkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEzWkNMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJRVkVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTnlSVHM3T3pzN096czdPenM3VjBGVFlTeDNRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRek5DTEZWQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJJc1QwRkJUeXhIUVVGSExFVkJRVVVzUjBGQlJ5eGhRVUZoTEVWQlF6VkNMRXRCUVVzc1JVRkRUQ3haUVVGWkxFTkJRVU1zUlVGQlJTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVTXhRaXhOUVVGTkxFTkJRMUFzUTBGQlF6dExRVU5JT3pzN1YwRkZaU3d3UWtGQlF5eEZRVUZGTEVWQlFVVXNWVUZCVlN4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVONlF5eFZRVUZKTEVOQlFVTXNWVUZCVlN4RFFVTmlMRTlCUVU4c1IwRkJSeXhGUVVGRkxFZEJRVWNzWVVGQllTeEZRVU0xUWl4TlFVRk5MRVZCUTA0c1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF5eEZRVU4wUWl4TFFVRkxMRVZCUTB3c1ZVRkJWU3hEUVVOWUxFTkJRVU03UzBGRFNEczdPMWRCUlZrc2RVSkJRVU1zUlVGQlJTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTXhRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVU5pTEd0Q1FVRnJRaXhIUVVGSExFVkJRVVVzUlVGRGRrSXNTMEZCU3l4RlFVTk1MRmxCUVZrc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGRGRFSXNZVUZCWVN4RFFVTmtMRU5CUVVNN1MwRkRTRHM3TzFkQlJXVXNNRUpCUVVNc1JVRkJSU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEZWtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eHJRa0ZCYTBJc1IwRkJSeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNSVUZCUlN4SlFVRkpMRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU03UzBGRE4wVTdPenRYUVVWVkxIRkNRVUZETEV0QlFVc3NSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRNMElzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJRVkVzUlVGQlJTeFBRVUZQTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdTMEZETlVVN096dFhRVVZOTEdsQ1FVRkRMRVZCUVVVc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGNFSXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFZEJRVWNzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEZUVVN096dFhRVVZ2UWl3clFrRkJReXhGUVVGRkxFVkJRVVVzVVVGQlVTeEZRVUZGT3pzN1FVRkhiRU1zVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4elFrRkJjMElzUjBGQlJ5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wdEJReTlFT3pzN096czdPenM3VjBGUFpTd3dRa0ZCUXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRMnBETEZWQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRZaXhuUWtGQlVTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVTnNRaXhqUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETzA5QlEySTdPenM3TzBGQlMwUXNWVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE96dEJRVVZvUWl4VlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxHTkJRV01zUlVGQlJTeERRVUZETzBGQlF5OUNMRk5CUVVjc1EwRkJReXhKUVVGSkxFTkJRMDRzUzBGQlN5eEZRVU5NTERKRVFVRXlSQ3hGUVVNelJDeEpRVUZKTEVOQlEwd3NRMEZCUXp0QlFVTkdMRk5CUVVjc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4UlFVRlJMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3hUUVVGSExFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1ZVRkJVeXhMUVVGTExFVkJRVVU3UVVGRGRrTXNXVUZCU1N4SFFVRkhMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVNeFF5eGpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVMEZETVVNN1QwRkRSaXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8wRkJRek5DTEZOQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1ZVRkJVeXhMUVVGTExFVkJRVVU3UVVGRE9VSXNXVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMDlCUXk5RExFTkJRVU03UVVGRFJpeFRRVUZITEVOQlFVTXNUMEZCVHl4SFFVRkhMRlZCUVZNc1MwRkJTeXhGUVVGRk8wRkJRelZDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTTNReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMHRCUTFvN096dFhRVVZWTEhGQ1FVRkRMRTlCUVU4c1JVRkJSVHRCUVVOdVFpeFZRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRha0lzWVVGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VlFVRlRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRE0wTXNXVUZEUlN4UFFVRlBMRXRCUVVzc1dVRkJXU3hKUVVONFFpeFBRVUZQTEV0QlFVc3NWMEZCVnl4SlFVTjJRaXhQUVVGUExFdEJRVXNzV1VGQldTeEZRVU40UWp0QlFVTkJMR1ZCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeFZRVU5zUkN4SFFVRkhMRVZCUTBnc1VVRkJVU3hGUVVOU08wRkJRMEVzWjBKQlFVa3NSMEZCUnl4RlFVRkZPMEZCUTFBc2NVSkJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTNCQ0xFMUJRVTA3UVVGRFRDeHhRa0ZCVHl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03WVVGRE1VSTdWMEZEUml4RFFVRkRMRU5CUVVNN1UwRkRTaXhOUVVGTk8wRkJRMHdzWlVGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4WFFVRlhMRWRCUVVjc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeFZRVUZUTEVkQlFVY3NSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRja1VzWjBKQlFVa3NSMEZCUnl4RlFVRkZPMEZCUTFBc2NVSkJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTNCQ0xFMUJRVTA3UVVGRFRDeHhRa0ZCVHl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03WVVGRE1VSTdWMEZEUml4RFFVRkRMRU5CUVVNN1UwRkRTanRQUVVOR0xFTkJRVU1zUTBGQlF6dExRVU5LT3pzN1YwRkZVeXh2UWtGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYkVJc1ZVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEycENMR0ZCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlV5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkZPMEZCUXpORExHRkJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4SFFVRkhMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVVVzVlVGQlV5eEhRVUZITEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNCRkxHTkJRVWtzUjBGQlJ5eEZRVUZGTzBGQlExQXNiVUpCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFkQlEzQkNMRTFCUVUwN1FVRkRUQ3h0UWtGQlR5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1YwRkRla0k3VTBGRFJpeERRVUZETEVOQlFVTTdUMEZEU2l4RFFVRkRMRU5CUVVNN1MwRkRTanM3TzFkQlJWTXNiMEpCUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGRFUTdPMEZCUlVVc1ZVRkJTU3hMUVVGTExFdEJRVXM3TzBGQlJXUXNWVUZCU1N4RFFVRkRMRXRCUVVzN08wRkJSVllzVDBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVTmtMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGRFpEczdRVUZGUVN4bFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRQUVVOb1JEczdRVUZGUkN4VlFVRkpMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenM3UVVGRmNFTXNWVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkRVaXhEUVVGQkxGVkJRVk1zUjBGQlJ5eEZRVUZGTzBGQlExb3NXVUZCU1N4SFFVRkhMRVZCUVVVc1QwRkJUeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZET1VJc1dVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRM0JETEVOQlFVRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRMklzUTBGQlF6dExRVU5JT3pzN1YwRkZWU3h4UWtGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTjJSQ3hWUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRk4wSXNXVUZCVFN4SFFVRkhMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU03TzBGQlJYUkNMRlZCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJUdEJRVU5vUWl4alFVRk5MRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdUMEZETDBJN08wRkJSVVFzVlVGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTJRc1kwRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJRenRQUVVOcVF5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEzcERMR05CUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0QlFVTTNRaXhqUVVGTkxFTkJRVU1zVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1QwRkRha003TzBGQlJVUXNWVUZCU1N4TlFVRk5MRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8wRkJRelZETEZkQlFVY3NTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UFFVTnlRenM3UVVGRlJDeFZRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU0xUWl4aFFVRlBMRU5CUVVNc1IwRkJSeXhSUVVGUkxFZEJRVWNzUlVGQlJTeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRemxETEZWQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmFFSXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFVkJRVVVzUTBGQlF6dEJRVU12UWl4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkROVUlzVTBGQlJ5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExGRkJRVkVzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJRMjVFTEZWQlFVa3NUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hMUVVGTExFdEJRVXNzUlVGQlJUdEJRVU5zUXl4WFFVRkhMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNZMEZCWXl4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdUMEZETVVRN1FVRkRSQ3hUUVVGSExFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1ZVRkJVeXhMUVVGTExFVkJRVVU3UVVGRGRrTXNXVUZCU1N4SFFVRkhMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVNeFF5eGpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTJwRU8wOUJRMFlzUTBGQlF6dEJRVU5HTEZOQlFVY3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dEJRVU16UWl4VFFVRkhMRU5CUVVNc1UwRkJVeXhIUVVGSExGVkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6bENMRmxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRQUVVNdlF5eERRVUZETzBGQlEwWXNVMEZCUnl4RFFVRkRMRTlCUVU4c1IwRkJSeXhWUVVGVExFdEJRVXNzUlVGQlJUdEJRVU0xUWl4WlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1QwRkRNME1zUTBGQlF6dEJRVU5HTEZOQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGFFSTdPenRYUVVWaExIZENRVUZETEVkQlFVY3NSVUZCUlN4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRkxFdEJRVXNzUlVGQlJUczdRVUZGTjBNc1lVRkJUeXhEUVVGRExFZEJRVWNzVlVGQlVTeEhRVUZITEVWQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRjRU1zVlVGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkRMRWxCUVVrc1NVRkJTU3hqUVVGakxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU01UkN4bFFVRlBMRkZCUVZFc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRPMDlCUTNaRE96czdRVUZIUkN4VlFVRkpMRWRCUVVjc1JVRkJSU3hQUVVGUExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXpzN08wRkJSemxDTEZWQlFVa3NhVUpCUVdsQ0xFZEJRVWNzVVVGQlVTeERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdPenRCUVVkMlJTeFZRVUZKTEZWQlFWVXNRMEZCUXpzN1FVRkZaaXhWUVVGSk8wRkJRMFlzYTBKQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXpzN1QwRkZhRVFzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlRzN1FVRkZWaXhaUVVGSkxHbENRVUZwUWl4RlFVRkZPMEZCUTNKQ0xHbENRVUZQTEZGQlFWRXNRMEZEWWl4SlFVRkpMRXRCUVVzc1EwRkJReXdyUWtGQkswSXNSMEZCUnl4UlFVRlJMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRMjVGTEVOQlFVTTdVMEZEU0R0UFFVTkdPenM3UVVGSFJDeFZRVUZKTEU5QlFVOHNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExGZEJRVmNzUlVGQlJUdEJRVU12UXl4clFrRkJWU3hIUVVGSExGVkJRVlVzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTnVRenM3T3p0QlFVbEVMRlZCUVVrc1ZVRkJWU3hKUVVGSkxGVkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEYkVNc2VVSkJRV2xDTEVkQlFVY3NTMEZCU3l4RFFVRkRPMDlCUXpOQ096dEJRVVZFTEZWQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJUdEJRVU4wUWl4bFFVRlBMRkZCUVZFc1EwRkRZaXhKUVVGSkxFdEJRVXNzUTBGRFVDeGpRVUZqTEVkQlEyUXNVVUZCVVN4RFFVRkRMRTFCUVUwc1IwRkRaaXhKUVVGSk96dEJRVVZJTEd0Q1FVRlZMRWxCUVVrc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlFTeEJRVUZETEVkQlF6bENMRlZCUVZVc1EwRkJReXhQUVVGUExFZEJRMnhDTEVWQlFVVXNRMEZEVUN4RFFVTkdMRU5CUVVNN1QwRkRTRHM3UVVGRlJDeGhRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGTUxFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtJc1kwRkJVU3hEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVkQlFVY3NWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzB0QlEzaEVPenM3VjBGRlVTeHRRa0ZCUXl4TlFVRk5MRVZCUVVVN1FVRkRhRUlzVlVGQlNTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJJc1YwRkJTeXhKUVVGSkxFdEJRVXNzU1VGQlNTeE5RVUZOTEVWQlFVVTdRVUZEZUVJc1dVRkJTU3hOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpOQ0xGbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVjJReXhqUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWTXNTMEZCU3l4RlFVRkZPMEZCUXpkQ0xHRkJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRka1VzUTBGQlF5eERRVUZETzA5QlEwbzdRVUZEUkN4aFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEZEVJN096dFRRVzVaVVN4alFVRmpPMGxCYjFsNFFpeERRVUZET3pzN08wRkJSVXNzVTBGQlV5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTNCRExGTkJRVThzU1VGQlNTeGpRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1EwRkRjRU1pTENKbWFXeGxJam9pTDFWelpYSnpMMnBzWVhOMFpYSXZjM0pqTDIxdmVtbHNiR0V2WW5vdWFuTXZjM0pqTDJsdVpHVjRMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVkyOXVjM1FnV0UxTVNIUjBjRkpsY1hWbGMzUWdQU0J5WlhGMWFYSmxLRndpTGk5NGFISmNJaWt1V0UxTVNIUjBjRkpsY1hWbGMzUTdYRzVjYmk4cUtseHVRMjl1YzNSaGJuUWdabTl5SUhSb1pTQnNiMmRwYmlCbGJuUnllWEJ2YVc1MExseHVLaTljYm1OdmJuTjBJRXhQUjBsT0lEMGdYQ0l2Ykc5bmFXNWNJanRjYmx4dUx5b3FYRzVGY25KdmNuTWdjbVZzWVhSbFpDQjBieUIwYUdVZ2MyOWphMlYwSUhScGJXVnZkWFF1WEc0cUwxeHVZMjl1YzNRZ1ZFbE5SVTlWVkY5RlVsSlBVbE1nUFNCYlhDSkZWRWxOUlVSUFZWUmNJaXdnWENKRlUwOURTMFZVVkVsTlJVUlBWVlJjSWwwN1hHNWNibVoxYm1OMGFXOXVJR1Y0ZEhKaFkzUkdhV1ZzWkNocFpDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ2FXWWdLSFI1Y0dWdlppQnBaQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdZMkZzYkdKaFkyc2dQU0JwWkR0Y2JpQWdJQ0JwWkNBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaGxjbklzSUhKbGMzQnZibk5sS1NCN1hHNGdJQ0FnWTI5dWMyOXNaUzVzYjJjb1hDSXVMaTR1WENJc0lIc2daWEp5TENCeVpYTndiMjV6WlNCOUtUdGNiaUFnSUNCcFppQW9aWEp5S1NCeVpYUjFjbTRnWTJGc2JHSmhZMnNvWlhKeUtUdGNibHh1SUNBZ0lHbG1JQ2h5WlhOd2IyNXpaU2tnZTF4dUlDQWdJQ0FnTHk4Z1pHVm1ZWFZzZENCaVpXaGhkbWx2Y2lCcGN5QjBieUIxYzJVZ2RHaGxJR1pwY25OMElHbGtJSGRvWlc0Z2RHaGxJR05oYkd4bGNpQmtiMlZ6SUc1dmRDQndjbTkyYVdSbElHOXVaUzVjYmlBZ0lDQWdJR2xtSUNocFpDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNBZ0lHbGtJRDBnVDJKcVpXTjBMbXRsZVhNb2NtVnpjRzl1YzJVcFd6QmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZMkZzYkdKaFkyc29iblZzYkN3Z2NtVnpjRzl1YzJWYmFXUmRLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnWENKRmNuSnZjam9zSUc1dklISmxjM0J2Ym5ObElHbHVJR1Y0ZEhKaFkzUkdhV1ZzWkZ3aU8xeHVJQ0FnSUgxY2JpQWdmVHRjYm4xY2JseHVMeW9xWEc1R2RXNWpkR2x2YmlCa1pXTnZjbUYwYjNJZ2QyaHBZMmdnZDJsc2JDQmhkSFJsYlhCMElIUnZJR3h2WjJsdUlIUnZJR0oxWjNwcGJHeGhYRzUzYVhSb0lIUm9aU0JqZFhKeVpXNTBJR055WldSbGJuUnBZV3h6SUhCeWFXOXlJSFJ2SUcxaGEybHVaeUIwYUdVZ1lXTjBkV0ZzSUdGd2FTQmpZV3hzTGx4dVhHNGdJQ0FnUW5WbmVtbHNiR0V1Y0hKdmRHOTBlWEJsTG0xbGRHaHZaQ0E5SUd4dloybHVLR1oxYm1OMGFXOXVLSEJoY21GdExDQndZWEpoYlNrZ2UxeHVJQ0FnSUgwcE8xeHVYRzVBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0J0WlhSb2IyUWdkRzhnWkdWamIzSmhkR1V1WEc1QWNtVjBkWEp1SUh0R2RXNWpkR2x2Ym4wZ1pHVmpiM0poZEdWa0lHMWxkR2h2WkM1Y2Jpb3ZYRzVtZFc1amRHbHZiaUJzYjJkcGJsSmxjWFZwY21Wa0tHMWxkR2h2WkNrZ2UxeHVJQ0F2THlCM1pTQmhjM04xYldVZ2RHaHBjeUJwY3lCaElIWmhiR2xrSUdKMVoybHNiR0VnYVc1emRHRnVZMlV1WEc0Z0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNBdkx5QnlaVzFsYldKbGNpQjhkR2hwYzN3Z2FYTWdZU0JpZFdkNmFXeHNZU0JwYm5OMFlXNWpaVnh1WEc0Z0lDQWdMeThnWVhKbmN5Qm1iM0lnZEdobElHUmxZMjl5WVhSbFpDQnRaWFJvYjJSY2JpQWdJQ0IyWVhJZ1lYSm5jeUE5SUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YkdsalpTNWpZV3hzS0dGeVozVnRaVzUwY3lrc1hHNGdJQ0FnSUNBdkx5QjNaU0J1WldWa0lIUm9aU0JqWVd4c1ltRmpheUJ6YnlCM1pTQmpZVzRnY0dGemN5QnNiMmRwYmlCeVpXeGhkR1ZrSUdWeWNtOXljeTVjYmlBZ0lDQWdJR05oYkd4aVlXTnJJRDBnWVhKbmMxdGhjbWR6TG14bGJtZDBhQ0F0SURGZE8xeHVYRzRnSUNBZ2RHaHBjeTVzYjJkcGJpaGNiaUFnSUNBZ0lHWjFibU4wYVc5dUtHVnljaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9aWEp5S1NCeVpYUjFjbTRnWTJGc2JHSmhZMnNvWlhKeUtUdGNibHh1SUNBZ0lDQWdJQ0F2THlCM1pTQmhjbVVnYm05M0lHeHZaMmRsWkNCcGJpQnpieUIwYUdVZ2JXVjBhRzlrSUdOaGJpQnlkVzRoWEc0Z0lDQWdJQ0FnSUcxbGRHaHZaQzVoY0hCc2VTaDBhR2x6TENCaGNtZHpLVHRjYmlBZ0lDQWdJSDB1WW1sdVpDaDBhR2x6S1Z4dUlDQWdJQ2s3WEc0Z0lIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCMllYSWdRblZuZW1sc2JHRkRiR2xsYm5RZ1BTQmpiR0Z6Y3lCN1hHNGdJR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk1wSUh0Y2JpQWdJQ0J2Y0hScGIyNXpJRDBnYjNCMGFXOXVjeUI4ZkNCN2ZUdGNibHh1SUNBZ0lIUm9hWE11ZFhObGNtNWhiV1VnUFNCdmNIUnBiMjV6TG5WelpYSnVZVzFsTzF4dUlDQWdJSFJvYVhNdWNHRnpjM2R2Y21RZ1BTQnZjSFJwYjI1ekxuQmhjM04zYjNKa08xeHVJQ0FnSUhSb2FYTXVkR2x0Wlc5MWRDQTlJRzl3ZEdsdmJuTXVkR2x0Wlc5MWRDQjhmQ0F3TzF4dUlDQWdJSFJvYVhNdVlYQnBYMnRsZVNBOUlHOXdkR2x2Ym5NdVlYQnBYMnRsZVNCOGZDQnVkV3hzTzF4dVhHNGdJQ0FnYVdZZ0tHOXdkR2x2Ym5NdWRHVnpkQ2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JjSW05d2RHbHZibk11ZEdWemRDQnBjeUJrWlhCeVpXTmhkR1ZrSUhCc1pXRnpaU0J6Y0dWamFXWjVJSFJvWlNCMWNtd2daR2x5WldOMGJIbGNJbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG1Gd2FWVnliQ0E5SUc5d2RHbHZibk11ZFhKc0lIeDhJRndpYUhSMGNITTZMeTlpZFdkNmFXeHNZUzV0YjNwcGJHeGhMbTl5Wnk5eVpYTjBMMXdpTzF4dUlDQWdJSFJvYVhNdVlYQnBWWEpzSUQwZ2RHaHBjeTVoY0dsVmNtd3VjbVZ3YkdGalpTZ3ZYRnd2SkM4c0lGd2lYQ0lwTzF4dVhHNGdJQ0FnZEdocGN5NWZZWFYwYUNBOUlHNTFiR3c3WEc0Z0lIMWNiaUFnTHlvcVhHNGdJRUYxZEdobGJuUnBZMkYwYVc5dUlHUmxkR0ZwYkhNZ1ptOXlJR2RwZG1WdUlIVnpaWEl1WEc1Y2JpQWdSWGhoYlhCc1pUcGNibHh1SUNBZ0lDQWdleUJwWkRvZ01USXlNaXdnZEc5clpXNDZJQ2Q0ZUhoNEp5QjlYRzVjYmlBZ1FIUjVjR1VnZTA5aWFtVmpkSDFjYmlBZ0tpOWNibHh1SUNBdktpcGNiaUFnU1c0Z2RHaGxJRkpGVTFRZ1FWQkpJSGRsSUdacGNuTjBJR3h2WjJsdUlIUnZJR0ZqY1hWcGNtVWdZU0IwYjJ0bGJpQjNhR2xqYUNCcGN5QjBhR1Z1SUhWelpXUWdkRzhnYldGclpWeHVJQ0J5WlhGMVpYTjBjeTRnVTJWbE9pQm9kSFJ3T2k4dllucHlMbTF2ZW1sc2JHRXViM0puTDJKdGJ5ODBMakl2ZG1sbGR5OW9aV0ZrT2k5Q2RXZDZhV3hzWVM5WFpXSlRaWEoyYVdObEwxTmxjblpsY2k5U1JWTlVMbkJ0STB3MU5UWmNibHh1SUNCVWFHbHpJRzFsZEdodlpDQmpZVzRnWW1VZ2RYTmxaQ0J3ZFdKc2FXTnNlU0JpZFhRZ2FYTWdaR1Z6YVdkdVpXUWdabTl5SUdsdWRHVnlibUZzSUdOdmJuTjFiWEIwYVc5dUlHWnZjbHh1SUNCbFlYTmxJRzltSUhWelpTNWNibHh1SUNCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCYlJYSnliM0lnWlhKeUxDQlRkSEpwYm1jZ2RHOXJaVzVkTGx4dUlDQXFMMXh1SUNCc2IyZHBiaWhqWVd4c1ltRmpheWtnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbDloZFhSb0tTQjdYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCMGFHbHpMbDloZFhSb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JWFJvYVhNdWRYTmxjbTVoYldVZ2ZId2dJWFJvYVhNdWNHRnpjM2R2Y21RcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loY0ltMXBjM05wYm1jZ2IzSWdhVzUyWVd4cFpDQXVkWE5sY201aGJXVWdiM0lnTG5CaGMzTjNiM0prWENJcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQndZWEpoYlhNZ1BTQjdYRzRnSUNBZ0lDQnNiMmRwYmpvZ2RHaHBjeTUxYzJWeWJtRnRaU3hjYmlBZ0lDQWdJSEJoYzNOM2IzSmtPaUIwYUdsekxuQmhjM04zYjNKa1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhaaGNpQm9ZVzVrYkdWTWIyZHBiaUE5SUdaMWJtTjBhVzl1SUdoaGJtUnNaVXh2WjJsdUtHVnljaXdnY21WemNHOXVjMlVwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVJQ0FnSUNBZ2FXWWdLSEpsYzNCdmJuTmxMbkpsYzNWc2RDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWhkWFJvSUQwZ2NtVnpjRzl1YzJVdWNtVnpkV3gwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZZWFYwYUNBOUlISmxjM0J2Ym5ObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1kyRnNiR0poWTJzb2JuVnNiQ3dnY21WemNHOXVjMlVwTzF4dUlDQWdJSDB1WW1sdVpDaDBhR2x6S1R0Y2JseHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjSWk5c2IyZHBibHdpTENCY0lrZEZWRndpTENCb1lXNWtiR1ZNYjJkcGJpd2diblZzYkN3Z2JuVnNiQ3dnY0dGeVlXMXpLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRFSjFaeWhwWkN3Z2NHRnlZVzF6TENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUdsbUlDZ2hZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQWdJR05oYkd4aVlXTnJJRDBnY0dGeVlXMXpPMXh1SUNBZ0lDQWdjR0Z5WVcxeklEMGdlMzA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ1hDSXZZblZuTDF3aUlDc2dhV1FzWEc0Z0lDQWdJQ0JjSWtkRlZGd2lMRnh1SUNBZ0lDQWdaWGgwY21GamRFWnBaV3hrS0dOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUZ3aVluVm5jMXdpTEZ4dUlDQWdJQ0FnYm5Wc2JDeGNiaUFnSUNBZ0lIQmhjbUZ0YzF4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCelpXRnlZMmhDZFdkektIQmhjbUZ0Y3l3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMa0ZRU1ZKbGNYVmxjM1FvWENJdlluVm5YQ0lzSUZ3aVIwVlVYQ0lzSUdOaGJHeGlZV05yTENCY0ltSjFaM05jSWl3Z2JuVnNiQ3dnY0dGeVlXMXpLVHRjYmlBZ2ZWeHVYRzRnSUhWd1pHRjBaVUoxWnlocFpDd2dZblZuTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjSWk5aWRXY3ZYQ0lnS3lCcFpDd2dYQ0pRVlZSY0lpd2dZMkZzYkdKaFkyc3NJRndpWW5WbmMxd2lMQ0JpZFdjcE8xeHVJQ0I5WEc1Y2JpQWdZM0psWVhSbFFuVm5LR0oxWnl3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMa0ZRU1ZKbGNYVmxjM1FvWENJdlluVm5YQ0lzSUZ3aVVFOVRWRndpTENCallXeHNZbUZqYXl3Z1hDSnBaRndpTENCaWRXY3BPMXh1SUNCOVhHNWNiaUFnWW5WblEyOXRiV1Z1ZEhNb2FXUXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdkbUZ5SUY5allXeHNZbUZqYXlBOUlHWjFibU4wYVc5dUtHVXNJSElwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxLU0IwYUhKdmR5QmxPMXh1SUNBZ0lDQWdkbUZ5SUY5aWRXZGZZMjl0YldWdWRITWdQU0J5VzJsa1hUdGNiaUFnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdYMkoxWjE5amIyMXRaVzUwYzF0Y0ltTnZiVzFsYm5SelhDSmRJQ0U5UFNCY0luVnVaR1ZtYVc1bFpGd2lLU0I3WEc0Z0lDQWdJQ0FnSUM4dklHSjFaM3BwYkd4aElEVWdPaWhjYmlBZ0lDQWdJQ0FnWDJKMVoxOWpiMjF0Wlc1MGN5QTlJRjlpZFdkZlkyOXRiV1Z1ZEhNdVkyOXRiV1Z1ZEhNN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCallXeHNZbUZqYXlodWRXeHNMQ0JmWW5WblgyTnZiVzFsYm5SektUdGNiaUFnSUNCOU8xeHVYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0Z3aUwySjFaeTljSWlBcklHbGtJQ3NnWENJdlkyOXRiV1Z1ZEZ3aUxDQmNJa2RGVkZ3aUxDQmZZMkZzYkdKaFkyc3NJRndpWW5WbmMxd2lLVHRjYmlBZ2ZWeHVYRzRnSUdGa1pFTnZiVzFsYm5Rb2FXUXNJR052YlcxbGJuUXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtGd2lMMkoxWnk5Y0lpQXJJR2xrSUNzZ1hDSXZZMjl0YldWdWRGd2lMQ0JjSWxCUFUxUmNJaXdnWTJGc2JHSmhZMnNzSUc1MWJHd3NJR052YlcxbGJuUXBPMXh1SUNCOVhHNWNiaUFnWW5WblNHbHpkRzl5ZVNocFpDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb1hDSXZZblZuTDF3aUlDc2dhV1FnS3lCY0lpOW9hWE4wYjNKNVhDSXNJRndpUjBWVVhDSXNJR05oYkd4aVlXTnJMQ0JjSW1KMVozTmNJaWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JtbHVaSE1nWVd4c0lHRjBkR0ZqYUcxbGJuUnpJR1p2Y2lCaElHZHBkbVZ1SUdKMVp5QWpYRzRnSUNBcUlHaDBkSEE2THk5M2QzY3VZblZuZW1sc2JHRXViM0puTDJSdlkzTXZkR2x3TDJWdUwyaDBiV3d2WVhCcEwwSjFaM3BwYkd4aEwxZGxZbE5sY25acFkyVXZRblZuTG1oMGJXd2pZWFIwWVdOb2JXVnVkSE5jYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0T2RXMWlaWEo5SUdsa0lHOW1JR0oxWnk1Y2JpQWdJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnVzBWeWNtOXlMQ0JCY25KaGVUeEJkSFJoWTJodFpXNTBQbDB1WEc0Z0lDQXFMMXh1SUNCaWRXZEJkSFJoWTJodFpXNTBjeWhwWkN3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMa0ZRU1ZKbGNYVmxjM1FvWEc0Z0lDQWdJQ0JjSWk5aWRXY3ZYQ0lnS3lCcFpDQXJJRndpTDJGMGRHRmphRzFsYm5SY0lpeGNiaUFnSUNBZ0lGd2lSMFZVWENJc1hHNGdJQ0FnSUNCbGVIUnlZV04wUm1sbGJHUW9hV1FzSUdOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUZ3aVluVm5jMXdpWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdOeVpXRjBaVUYwZEdGamFHMWxiblFvYVdRc0lHRjBkR0ZqYUcxbGJuUXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ1hDSXZZblZuTDF3aUlDc2dhV1FnS3lCY0lpOWhkSFJoWTJodFpXNTBYQ0lzWEc0Z0lDQWdJQ0JjSWxCUFUxUmNJaXhjYmlBZ0lDQWdJR1Y0ZEhKaFkzUkdhV1ZzWkNoallXeHNZbUZqYXlrc1hHNGdJQ0FnSUNCY0ltbGtjMXdpTEZ4dUlDQWdJQ0FnWVhSMFlXTm9iV1Z1ZEZ4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCblpYUkJkSFJoWTJodFpXNTBLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJRndpTDJKMVp5OWhkSFJoWTJodFpXNTBMMXdpSUNzZ2FXUXNYRzRnSUNBZ0lDQmNJa2RGVkZ3aUxGeHVJQ0FnSUNBZ1pYaDBjbUZqZEVacFpXeGtLR05oYkd4aVlXTnJLU3hjYmlBZ0lDQWdJRndpWVhSMFlXTm9iV1Z1ZEhOY0lseHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQjFjR1JoZEdWQmRIUmhZMmh0Wlc1MEtHbGtMQ0JoZEhSaFkyaHRaVzUwTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjSWk5aWRXY3ZZWFIwWVdOb2JXVnVkQzljSWlBcklHbGtMQ0JjSWxCVlZGd2lMQ0JqWVd4c1ltRmpheXdnWENKdmExd2lMQ0JoZEhSaFkyaHRaVzUwS1R0Y2JpQWdmVnh1WEc0Z0lITmxZWEpqYUZWelpYSnpLRzFoZEdOb0xDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lIUm9hWE11UVZCSlVtVnhkV1Z6ZENoY0lpOTFjMlZ5WENJc0lGd2lSMFZVWENJc0lHTmhiR3hpWVdOckxDQmNJblZ6WlhKelhDSXNJRzUxYkd3c0lIc2diV0YwWTJnNklHMWhkR05vSUgwcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVlhObGNpaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxrRlFTVkpsY1hWbGMzUW9YQ0l2ZFhObGNpOWNJaUFySUdsa0xDQmNJa2RGVkZ3aUxDQmxlSFJ5WVdOMFJtbGxiR1FvWTJGc2JHSmhZMnNwTENCY0luVnpaWEp6WENJcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVTNWbloyVnpkR1ZrVW1WMmFXVjNaWEp6S0dsa0xDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDOHZJRUpOVHkwZ2MzQmxZMmxtYVdNZ1pYaDBaVzV6YVc5dUlIUnZJR2RsZENCemRXZG5aWE4wWldRZ2NtVjJhV1YzWlhKeklHWnZjaUJoSUdkcGRtVnVJR0oxWjF4dUlDQWdJQzh2SUdoMGRIQTZMeTlpZW5JdWJXOTZhV3hzWVM1dmNtY3ZZbTF2THpRdU1pOTJhV1YzTDJobFlXUTZMMlY0ZEdWdWMybHZibk12VW1WMmFXVjNMMnhwWWk5WFpXSlRaWEoyYVdObExuQnRJMHd4TURKY2JpQWdJQ0IwYUdsekxrRlFTVkpsY1hWbGMzUW9YQ0l2Y21WMmFXVjNMM04xWjJkbGMzUnBiMjV6TDF3aUlDc2dhV1FzSUZ3aVIwVlVYQ0lzSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1WEc0Z0lDOHFYRzRnSUNBZ1dGaFlJSFJvYVhNZ1kyRnNiQ0JwY3lCd2NtOTJhV1JsWkNCbWIzSWdZMjl1ZG1WdWFXVnVZMlVnZEc4Z2NHVnZjR3hsSUhOamNtbHdkR2x1WnlCaFoyRnBibk4wSUhCeWIyUWdZblZuZW1sc2JIRmNiaUFnSUNCVVNFVlNSU0JKVXlCT1R5QkZVVlZKVmtGTVJVNVVJRkpGVTFRZ1EwRk1UQ0JKVGlCVVNWQXNJSE52SUhSb2FYTWdjMmh2ZFd4a0lHNXZkQ0JpWlNCMFpYTjBaV1FnWVdkaGFXNXpkQ0IwYVhBc0lHaGxibU5sWEc0Z0lDQWdkR2hsSUdoaGNtUXRZMjlrWldRZ2RYSnNMbHh1SUNBcUwxeHVJQ0JuWlhSRGIyNW1hV2QxY21GMGFXOXVLSEJoY21GdGN5d2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQnBaaUFvSVdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSUNCallXeHNZbUZqYXlBOUlIQmhjbUZ0Y3p0Y2JpQWdJQ0FnSUhCaGNtRnRjeUE5SUh0OU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklIUm9hWE11UVZCSlVtVnhkV1Z6ZENnbkwyTnZibVpwWjNWeVlYUnBiMjRuTENBblIwVlVKeXdnWTJGc2JHSmhZMnNzSUc1MWJHd3NJRzUxYkd3c0lIQmhjbUZ0Y3lrN1hHNGdJQ0FnTHk4Z1ZVZE1RVmtnZEdWdGNDQm1hWGdnZFc1MGFXd2dMMk52Ym1acFozVnlZWFJwYjI0Z2FYTWdhVzF3YkdWdFpXNTBaV1FzWEc0Z0lDQWdMeThnYzJWbElHaDBkSEJ6T2k4dlluVm5lbWxzYkdFdWJXOTZhV3hzWVM1dmNtY3ZjMmh2ZDE5aWRXY3VZMmRwUDJsa1BUa3lORFF3TlNOak1URTZYRzRnSUNBZ2JHVjBJSFJvWVhRZ1BTQjBhR2x6TzF4dVhHNGdJQ0FnZG1GeUlISmxjU0E5SUc1bGR5QllUVXhJZEhSd1VtVnhkV1Z6ZENncE8xeHVJQ0FnSUhKbGNTNXZjR1Z1S0Z4dUlDQWdJQ0FnWENKSFJWUmNJaXhjYmlBZ0lDQWdJRndpYUhSMGNITTZMeTloY0drdFpHVjJMbUoxWjNwcGJHeGhMbTF2ZW1sc2JHRXViM0puTDJ4aGRHVnpkQzlqYjI1bWFXZDFjbUYwYVc5dVhDSXNYRzRnSUNBZ0lDQjBjblZsWEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWEV1YzJWMFVtVnhkV1Z6ZEVobFlXUmxjaWhjSWtGalkyVndkRndpTENCY0ltRndjR3hwWTJGMGFXOXVMMnB6YjI1Y0lpazdYRzRnSUNBZ2NtVnhMbTl1Y21WaFpIbHpkR0YwWldOb1lXNW5aU0E5SUdaMWJtTjBhVzl1S0dWMlpXNTBLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NtVnhMbkpsWVdSNVUzUmhkR1VnUFQwZ05DQW1KaUJ5WlhFdWMzUmhkSFZ6SUNFOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnZEdoaGRDNW9ZVzVrYkdWU1pYTndiMjV6WlNodWRXeHNMQ0J5WlhFc0lHTmhiR3hpWVdOcktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOU8xeHVJQ0FnSUhKbGNTNTBhVzFsYjNWMElEMGdkR2hwY3k1MGFXMWxiM1YwTzF4dUlDQWdJSEpsY1M1dmJuUnBiV1Z2ZFhRZ1BTQm1kVzVqZEdsdmJpaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTaGNJblJwYldWdmRYUmNJaXdnY21WeExDQmpZV3hzWW1GamF5azdYRzRnSUNBZ2ZUdGNiaUFnSUNCeVpYRXViMjVsY25KdmNpQTlJR1oxYm1OMGFXOXVLR1YyWlc1MEtTQjdYRzRnSUNBZ0lDQjBhR0YwTG1oaGJtUnNaVkpsYzNCdmJuTmxLRndpWlhKeWIzSmNJaXdnY21WeExDQmpZV3hzWW1GamF5azdYRzRnSUNBZ2ZUdGNiaUFnSUNCeVpYRXVjMlZ1WkNncE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVUhKdlpIVmpkSE1vY0hKdlpIVmpkQ2tnZTF4dUlDQWdJSFpoY2lCZmRHaHBjeUE5SUhSb2FYTTdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHWjFibU4wYVc5dUtISmxjMjlzZG1Vc0lISmxhbVZqZENrZ2UxeHVJQ0FnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdJQ0J3Y205a2RXTjBJRDA5UFNCY0luTmxiR1ZqZEdGaWJHVmNJaUI4ZkZ4dUlDQWdJQ0FnSUNCd2NtOWtkV04wSUQwOVBTQmNJbVZ1ZEdWeVlXSnNaVndpSUh4OFhHNGdJQ0FnSUNBZ0lIQnliMlIxWTNRZ1BUMDlJRndpWVdOalpYTnphV0pzWlZ3aVhHNGdJQ0FnSUNBcElIdGNiaUFnSUNBZ0lDQWdYM1JvYVhNdVFWQkpVbVZ4ZFdWemRDaGNJaTl3Y205a2RXTjBQM1I1Y0dVOVhDSWdLeUJ3Y205a2RXTjBMQ0JjSWtkRlZGd2lMQ0JtZFc1amRHbHZiaWhjYmlBZ0lDQWdJQ0FnSUNCbGNuSXNYRzRnSUNBZ0lDQWdJQ0FnY0hKdlpIVmpkSE5jYmlBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dWeWNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2hsY25JcE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemIyeDJaU2h3Y205a2RXTjBjeWs3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRjkwYUdsekxrRlFTVkpsY1hWbGMzUW9YQ0l2Y0hKdlpIVmpkQzljSWlBcklIQnliMlIxWTNRc0lGd2lSMFZVWENJc0lHWjFibU4wYVc5dUtHVnljaXdnY0hKdlpIVmpkSE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWlhKeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLR1Z5Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLSEJ5YjJSMVkzUnpLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnWjJWMFVISnZaSFZqZENod2NtOWtkV04wS1NCN1hHNGdJQ0FnZG1GeUlGOTBhR2x6SUQwZ2RHaHBjenRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ablZ1WTNScGIyNG9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQjdYRzRnSUNBZ0lDQmZkR2hwY3k1QlVFbFNaWEYxWlhOMEtGd2lMM0J5YjJSMVkzUXZYQ0lnS3lCd2NtOWtkV04wTENCY0lrZEZWRndpTENCbWRXNWpkR2x2YmlobGNuSXNJSEJ5YjJSMVkzUXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHVnljaWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvWlhKeUtUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHdjbTlrZFdOMEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCQlVFbFNaWEYxWlhOMEtIQmhkR2dzSUcxbGRHaHZaQ3dnWTJGc2JHSmhZMnNzSUdacFpXeGtMQ0JpYjJSNUxDQndZWEpoYlhNcElIdGNiaUFnSUNCcFppQW9YRzRnSUNBZ0lDQXZMeUJwWmlCM1pTQmhjbVVnWkc5cGJtY2dkR2hsSUd4dloybHVYRzRnSUNBZ0lDQndZWFJvSUQwOVBTQk1UMGRKVGlCOGZGeHVJQ0FnSUNBZ0x5OGdhV1lnZDJVZ1lYSmxJR0ZzY21WaFpIa2dZWFYwYUdWa1hHNGdJQ0FnSUNCMGFHbHpMbDloZFhSb0lIeDhYRzRnSUNBZ0lDQXZMeUJ2Y2lCM1pTQmhjbVVnYldsemMybHVaeUJoZFhSb0lHUmhkR0ZjYmlBZ0lDQWdJQ0YwYUdsekxuQmhjM04zYjNKa0lIeDhYRzRnSUNBZ0lDQWhkR2hwY3k1MWMyVnlibUZ0WlZ4dUlDQWdJQ2tnZTF4dUlDQWdJQ0FnTHk4Z2MydHBjQ0JoZFhSdmJXRjBhV01nWVhWMGFHVnVkR2xqWVhScGIyNWNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlCVUVsU1pYRjFaWE4wTG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJR0Z5WjNNZ1BTQmJYUzV6YkdsalpTNWpZV3hzS0dGeVozVnRaVzUwY3lrN1hHNWNiaUFnSUNCMGFHbHpMbXh2WjJsdUtGeHVJQ0FnSUNBZ1puVnVZM1JwYjI0b1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5QlVFbFNaWEYxWlhOMExtRndjR3g1S0hSb2FYTXNJR0Z5WjNNcE8xeHVJQ0FnSUNBZ2ZTNWlhVzVrS0hSb2FYTXBYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJRjlCVUVsU1pYRjFaWE4wS0hCaGRHZ3NJRzFsZEdodlpDd2dZMkZzYkdKaFkyc3NJR1pwWld4a0xDQmliMlI1TENCd1lYSmhiWE1wSUh0Y2JpQWdJQ0JzWlhRZ2RYSnNJRDBnZEdocGN5NWhjR2xWY213Z0t5QndZWFJvTzF4dVhHNGdJQ0FnY0dGeVlXMXpJRDBnY0dGeVlXMXpJSHg4SUh0OU8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVlYQnBYMnRsZVNrZ2UxeHVJQ0FnSUNBZ2NHRnlZVzF6TG1Gd2FWOXJaWGtnUFNCMGFHbHpMbUZ3YVY5clpYazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyRjFkR2dwSUh0Y2JpQWdJQ0FnSUhCaGNtRnRjeTUwYjJ0bGJpQTlJSFJvYVhNdVgyRjFkR2d1ZEc5clpXNDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG5WelpYSnVZVzFsSUNZbUlIUm9hWE11Y0dGemMzZHZjbVFwSUh0Y2JpQWdJQ0FnSUhCaGNtRnRjeTVzYjJkcGJpQTlJSFJvYVhNdWRYTmxjbTVoYldVN1hHNGdJQ0FnSUNCd1lYSmhiWE11Y0dGemMzZHZjbVFnUFNCMGFHbHpMbkJoYzNOM2IzSmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h3WVhKaGJYTWdKaVlnVDJKcVpXTjBMbXRsZVhNb2NHRnlZVzF6S1M1c1pXNW5kR2dnUGlBd0tTQjdYRzRnSUNBZ0lDQjFjbXdnS3owZ1hDSS9YQ0lnS3lCMGFHbHpMblZ5YkVWdVkyOWtaU2h3WVhKaGJYTXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHSnZaSGtnUFNCS1UwOU9Mbk4wY21sdVoybG1lU2hpYjJSNUtUdGNiaUFnSUNCamIyNXpiMnhsTG14dlp5aGdQajRnWUN3Z2RYSnNMQ0J3WVhKaGJYTXNJR0p2Wkhrc0lHMWxkR2h2WkNrN1hHNGdJQ0FnYkdWMElIUm9ZWFFnUFNCMGFHbHpPMXh1WEc0Z0lDQWdkbUZ5SUhKbGNTQTlJRzVsZHlCWVRVeElkSFJ3VW1WeGRXVnpkQ2dwTzF4dUlDQWdJSEpsY1M1dmNHVnVLRzFsZEdodlpDd2dkWEpzTENCMGNuVmxLVHRjYmlBZ0lDQnlaWEV1YzJWMFVtVnhkV1Z6ZEVobFlXUmxjaWhjSWtGalkyVndkRndpTENCY0ltRndjR3hwWTJGMGFXOXVMMnB6YjI1Y0lpazdYRzRnSUNBZ2FXWWdLRzFsZEdodlpDNTBiMVZ3Y0dWeVEyRnpaU2dwSUNFOVBTQmNJa2RGVkZ3aUtTQjdYRzRnSUNBZ0lDQnlaWEV1YzJWMFVtVnhkV1Z6ZEVobFlXUmxjaWhjSWtOdmJuUmxiblF0Vkhsd1pWd2lMQ0JjSW1Gd2NHeHBZMkYwYVc5dUwycHpiMjVjSWlrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsY1M1dmJuSmxZV1I1YzNSaGRHVmphR0Z1WjJVZ1BTQm1kVzVqZEdsdmJpaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEpsY1M1eVpXRmtlVk4wWVhSbElEMDlJRFFnSmlZZ2NtVnhMbk4wWVhSMWN5QWhQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9iblZzYkN3Z2NtVnhMQ0JqWVd4c1ltRmpheXdnWm1sbGJHUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzRnSUNBZ2NtVnhMblJwYldWdmRYUWdQU0IwYUdsekxuUnBiV1Z2ZFhRN1hHNGdJQ0FnY21WeExtOXVkR2x0Wlc5MWRDQTlJR1oxYm1OMGFXOXVLR1YyWlc1MEtTQjdYRzRnSUNBZ0lDQjBhR0YwTG1oaGJtUnNaVkpsYzNCdmJuTmxLRndpZEdsdFpXOTFkRndpTENCeVpYRXNJR05oYkd4aVlXTnJLVHRjYmlBZ0lDQjlPMXh1SUNBZ0lISmxjUzV2Ym1WeWNtOXlJRDBnWm5WdVkzUnBiMjRvWlhabGJuUXBJSHRjYmlBZ0lDQWdJSFJvWVhRdWFHRnVaR3hsVW1WemNHOXVjMlVvWlhabGJuUXNJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuTmxibVFvWW05a2VTazdYRzRnSUgxY2JseHVJQ0JvWVc1a2JHVlNaWE53YjI1elpTaGxjbklzSUhKbGMzQnZibk5sTENCallXeHNZbUZqYXl3Z1ptbGxiR1FwSUh0Y2JpQWdJQ0F2THlCa1pYUmxZM1FnZEdsdFpXOTFkQ0JsY25KdmNuTmNiaUFnSUNCamIyNXpiMnhsTG14dlp5aGdaWEp5SUNSN1pYSnlmV0FzSUhKbGMzQnZibk5sS1R0Y2JpQWdJQ0JwWmlBb1pYSnlJQ1ltSUdWeWNpNWpiMlJsSUNZbUlGUkpUVVZQVlZSZlJWSlNUMUpUTG1sdVpHVjRUMllvWlhKeUxtTnZaR1VwSUNFOVBTQXRNU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR05oYkd4aVlXTnJLRzVsZHlCRmNuSnZjaWhjSW5ScGJXVnZkWFJjSWlrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklHaGhibVJzWlNCblpXNWxjbWxqSUdWeWNtOXljMXh1SUNBZ0lHbG1JQ2hsY25JcElISmxkSFZ5YmlCallXeHNZbUZqYXlobGNuSXBPMXh1WEc0Z0lDQWdMeThnWVc1NWRHaHBibWNnYVc0Z01qQXdJSE4wWVhSMWN5QnlZVzVuWlNCcGN5QmhJSE4xWTJObGMzTmNiaUFnSUNCMllYSWdjbVZ4ZFdWemRGTjFZMk5sYzNObWRXd2dQU0J5WlhOd2IyNXpaUzV6ZEdGMGRYTWdQaUF4T1RrZ0ppWWdjbVZ6Y0c5dWMyVXVjM1JoZEhWeklEd2dNekF3TzF4dVhHNGdJQ0FnTHk4Z1pYWmxiaUJwYmlCMGFHVWdZMkZ6WlNCdlppQmhiaUIxYm5OMVkyTmxjM05tZFd3Z2NtVnhkV1Z6ZENCM1pTQnRZWGtnYUdGMlpTQnFjMjl1SUdSaGRHRXVYRzRnSUNBZ2RtRnlJSEJoY25ObFpFSnZaSGs3WEc1Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NHRnljMlZrUW05a2VTQTlJRXBUVDA0dWNHRnljMlVvY21WemNHOXVjMlV1Y21WemNHOXVjMlZVWlhoMEtUdGNiaUFnSUNBZ0lDOHZJR052Ym5OdmJHVXViRzluS0hzZ2NHRnljMlZrUW05a2VTQjlLVHRjYmlBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0F2THlCWVdGZzZJRzFwWjJoMElIZGhiblFnZEc4Z2FHRnVaR3hsSUhSb2FYTWdZbVYwZEdWeUlHbHVJSFJvWlNCeVpYRjFaWE4wSUhOMVkyTmxjM01nWTJGelpUOWNiaUFnSUNBZ0lHbG1JQ2h5WlhGMVpYTjBVM1ZqWTJWemMyWjFiQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWTJGc2JHSmhZMnNvWEc0Z0lDQWdJQ0FnSUNBZ2JtVjNJRVZ5Y205eUtGd2ljbVZ6Y0c5dWMyVWdkMkZ6SUc1dmRDQjJZV3hwWkNCcWMyOXVPaUJjSWlBcklISmxjM0J2Ym5ObExuSmxjM0J2Ym5ObFZHVjRkQ2xjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCa1pYUmxZM1FnYVdZZ2QyVW5jbVVnY25WdWJtbHVaeUJDZFdkNmFXeHNZU0ExTGpCY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhCaGNuTmxaRUp2WkhsYlhDSnlaWE4xYkhSY0lsMGdJVDA5SUZ3aWRXNWtaV1pwYm1Wa1hDSXBJSHRjYmlBZ0lDQWdJSEJoY25ObFpFSnZaSGtnUFNCd1lYSnpaV1JDYjJSNVcxd2ljbVZ6ZFd4MFhDSmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJSE4xWTJObGMzTm1kV3dnYUhSMGNDQnlaWE53Ym5ObElHSjFkQ0JoYmlCbGNuSnZjbHh1SUNBZ0lDOHZJRmhZV0RvZ2RHaHBjeUJ6WldWdGN5QnNhV3RsSUdFZ1luVm5JR2x1SUhSb1pTQmhjR2t1WEc0Z0lDQWdhV1lnS0hCaGNuTmxaRUp2WkhrZ0ppWWdjR0Z5YzJWa1FtOWtlUzVsY25KdmNpa2dlMXh1SUNBZ0lDQWdjbVZ4ZFdWemRGTjFZMk5sYzNObWRXd2dQU0JtWVd4elpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JWEpsY1hWbGMzUlRkV05qWlhOelpuVnNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZMkZzYkdKaFkyc29YRzRnSUNBZ0lDQWdJRzVsZHlCRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNCY0lraFVWRkFnYzNSaGRIVnpJRndpSUN0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE53YjI1elpTNXpkR0YwZFhNZ0sxeHVJQ0FnSUNBZ0lDQWdJRndpWEZ4dVhDSWdLMXh1SUNBZ0lDQWdJQ0FnSUM4dklHNXZkR1VnYVc1MFpXNTBhVzl1WVd3Z2RYTmxJRzltSUNFOUlHbHVjM1JsWVdRZ2IyWWdJVDA5WEc0Z0lDQWdJQ0FnSUNBZ0tIQmhjbk5sWkVKdlpIa2dKaVlnY0dGeWMyVmtRbTlrZVM1dFpYTnpZV2RsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdQeUJ3WVhKelpXUkNiMlI1TG0xbGMzTmhaMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lEb2dYQ0pjSWx4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTnZiR1V1Ykc5bktIc2dabWxsYkdRZ2ZTazdYRzRnSUNBZ1kyRnNiR0poWTJzb2JuVnNiQ3dnWm1sbGJHUWdQeUJ3WVhKelpXUkNiMlI1VzJacFpXeGtYU0E2SUhCaGNuTmxaRUp2WkhrcE8xeHVJQ0I5WEc1Y2JpQWdkWEpzUlc1amIyUmxLSEJoY21GdGN5a2dlMXh1SUNBZ0lIWmhjaUIxY213Z1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0haaGNpQndZWEpoYlNCcGJpQndZWEpoYlhNcElIdGNiaUFnSUNBZ0lIWmhjaUIyWVd4MVpYTWdQU0J3WVhKaGJYTmJjR0Z5WVcxZE8xeHVJQ0FnSUNBZ2FXWWdLQ0YyWVd4MVpYTXVabTl5UldGamFDa2dkbUZzZFdWeklEMGdXM1poYkhWbGMxMDdYRzRnSUNBZ0lDQXZMeUJsZUhCaGJtUWdZVzU1SUdGeWNtRjVjMXh1SUNBZ0lDQWdkbUZzZFdWekxtWnZja1ZoWTJnb1puVnVZM1JwYjI0b2RtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2RYSnNMbkIxYzJnb1pXNWpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtIQmhjbUZ0S1NBcklGd2lQVndpSUNzZ1pXNWpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtIWmhiSFZsS1NrN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFZ5YkM1cWIybHVLRndpSmx3aUtUdGNiaUFnZlZ4dWZUdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR055WldGMFpVTnNhV1Z1ZENodmNIUnBiMjV6S1NCN1hHNGdJSEpsZEhWeWJpQnVaWGNnUW5WbmVtbHNiR0ZEYkdsbGJuUW9iM0IwYVc5dWN5azdYRzU5WEc0aVhYMD0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIFhNTEh0dHBSZXF1ZXN0ID0gbnVsbDtcblxuZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0O1xuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXI/XG4gIHZhciBfbG9hZGVyID0gcmVxdWlyZTtcbiAgdHJ5IHtcbiAgICBleHBvcnRzLlhNTEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0ID0gX2xvYWRlcihcInhtbGh0dHByZXF1ZXN0XCIpLlhNTEh0dHBSZXF1ZXN0O1xuICB9XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gIGV4cG9ydHMuWE1MSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn0gZWxzZSB7XG4gIHRocm93IFwiTm8gd2luZG93LCBXQVQuXCI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTlWYzJWeWN5OXFiR0Z6ZEdWeUwzTnlZeTl0YjNwcGJHeGhMMko2TG1wekwzTnlZeTk0YUhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3UVVGQlR5eEpRVUZKTEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN096dEJRVVZxUXl4SlFVRkpMRTlCUVU4c1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQlJUczdRVUZGYWtNc1RVRkJTU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEzUkNMRTFCUVVrN1FVRkRSaXhaUVU1UExHTkJRV01zUjBGTmNrSXNZMEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eGpRVUZqTEVOQlFVTTdSMEZEZUVRc1EwRkJReXhQUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU5VTEZsQlVrOHNZMEZCWXl4SFFWRnlRaXhqUVVGakxFZEJRVWNzVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETzBkQlF6TkVPME5CUTBZc1RVRkRTU3hKUVVGSExFOUJRVThzVFVGQlRTeExRVUZMTEZkQlFWY3NTVUZCU1N4UFFVRlBMRTFCUVUwc1EwRkJReXhqUVVGakxFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEzSkdMRlZCV2xNc1kwRkJZeXhIUVZsMlFpeGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJRenREUVVONFF5eE5RVU5KTzBGQlEwZ3NVVUZCVFN4cFFrRkJhVUlzUTBGQlFUdERRVU40UWlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmVHaHlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUhaaGNpQllUVXhJZEhSd1VtVnhkV1Z6ZENBOUlHNTFiR3c3WEc1Y2JtbG1JQ2gwZVhCbGIyWWdkMmx1Wkc5M0lEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0F2THlCM1pTZHlaU0J1YjNRZ2FXNGdZU0JpY205M2MyVnlQMXh1SUNCc1pYUWdYMnh2WVdSbGNpQTlJSEpsY1hWcGNtVTdYRzRnSUhSeWVTQjdYRzRnSUNBZ1dFMU1TSFIwY0ZKbGNYVmxjM1FnUFNCZmJHOWhaR1Z5S0NkelpHc3ZibVYwTDNob2NpY3BMbGhOVEVoMGRIQlNaWEYxWlhOME8xeHVJQ0I5SUdOaGRHTm9LR1VwSUh0Y2JpQWdJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJRjlzYjJGa1pYSW9YQ0o0Yld4b2RIUndjbVZ4ZFdWemRGd2lLUzVZVFV4SWRIUndVbVZ4ZFdWemREdGNiaUFnZlZ4dWZWeHVaV3h6WlNCcFppaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmlCMGVYQmxiMllnZDJsdVpHOTNMbGhOVEVoMGRIQlNaWEYxWlhOMElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJSGRwYm1SdmR5NVlUVXhJZEhSd1VtVnhkV1Z6ZER0Y2JuMWNibVZzYzJVZ2UxeHVJQ0IwYUhKdmR5QmNJazV2SUhkcGJtUnZkeXdnVjBGVUxsd2lYRzU5WEc0aVhYMD0iXX0= diff --git a/bz-0.4.5.js b/bz-0.4.5.js new file mode 100644 index 0000000..81e91bb --- /dev/null +++ b/bz-0.4.5.js @@ -0,0 +1,479 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o]. + */ + }, { + key: 'bugAttachments', + value: function bugAttachments(id, callback) { + this.APIRequest('/bug/' + id + '/attachment', 'GET', extractField(id, callback), 'bugs'); + } + }, { + key: 'createAttachment', + value: function createAttachment(id, attachment, callback) { + this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'attachments', attachment); + } + }, { + key: 'getAttachment', + value: function getAttachment(id, callback) { + this.APIRequest('/bug/attachment/' + id, 'GET', extractField(callback), 'attachments'); + } + }, { + key: 'updateAttachment', + value: function updateAttachment(id, attachment, callback) { + this.APIRequest('/bug/attachment/' + id, 'PUT', callback, 'ok', attachment); + } + }, { + key: 'searchUsers', + value: function searchUsers(match, callback) { + this.APIRequest('/user', 'GET', callback, 'users', null, { match: match }); + } + }, { + key: 'getUser', + value: function getUser(id, callback) { + this.APIRequest('/user/' + id, 'GET', extractField(callback), 'users'); + } + }, { + key: 'getSuggestedReviewers', + value: function getSuggestedReviewers(id, callback) { + // BMO- specific extension to get suggested reviewers for a given bug + // http://bzr.mozilla.org/bmo/4.2/view/head:/extensions/Review/lib/WebService.pm#L102 + this.APIRequest('/review/suggestions/' + id, 'GET', callback); + } + + /* + XXX this call is provided for convenience to people scripting against prod bugzillq + THERE IS NO EQUIVALENT REST CALL IN TIP, so this should not be tested against tip, hence + the hard-coded url. + */ + }, { + key: 'getConfiguration', + value: function getConfiguration(params, callback) { + if (!callback) { + callback = params; + params = {}; + } + + // this.APIRequest('/configuration', 'GET', callback, null, null, params); + // UGLAY temp fix until /configuration is implemented, + // see https://bugzilla.mozilla.org/show_bug.cgi?id=924405#c11: + var that = this; + + var req = new XMLHttpRequest(); + req.open('GET', 'https://api-dev.bugzilla.mozilla.org/latest/configuration', true); + req.setRequestHeader("Accept", "application/json"); + req.onreadystatechange = function (event) { + if (req.readyState == 4 && req.status != 0) { + that.handleResponse(null, req, callback); + } + }; + req.timeout = this.timeout; + req.ontimeout = function (event) { + that.handleResponse('timeout', req, callback); + }; + req.onerror = function (event) { + that.handleResponse('error', req, callback); + }; + req.send(); + } + }, { + key: 'getProducts', + value: function getProducts(product) { + var _this = this; + return new Promise(function (resolve, reject) { + if (product === "selectable" || product === "enterable" || product === "accessible") { + _this.APIRequest('/product?type=' + product, 'GET', function (err, products) { + if (err) { + return reject(err); + } else { + return resolve(products); + } + }); + } else { + _this.APIRequest('/product/' + product, 'GET', function (err, products) { + if (err) { + return reject(err); + } else { + return resolve(products); + } + }); + } + }); + } + }, { + key: 'getProduct', + value: function getProduct(product) { + var _this = this; + return new Promise(function (resolve, reject) { + _this.APIRequest('/product/' + product, 'GET', function (err, product) { + if (err) { + return reject(err); + } else { + return resolve(product); + } + }); + }); + } + }, { + key: 'APIRequest', + value: function APIRequest(path, method, callback, field, body, params) { + if ( + // if we are doing the login + path === LOGIN || + // if we are already authed + this._auth || + // or we are missing auth data + !this.password || !this.username) { + // skip automatic authentication + return this._APIRequest.apply(this, arguments); + } + + var args = [].slice.call(arguments); + + this.login((function (err) { + if (err) return callback(err); + this._APIRequest.apply(this, args); + }).bind(this)); + } + }, { + key: '_APIRequest', + value: function _APIRequest(path, method, callback, field, body, params) { + var url = this.apiUrl + path; + + params = params || {}; + + if (this.api_key) { + params.api_key = this.api_key; + } + + if (this._auth) { + params.token = this._auth.token; + } else if (this.username && this.password) { + params.login = this.username; + params.password = this.password; + } + + if (params && Object.keys(params).length > 0) { + url += "?" + this.urlEncode(params); + } + + body = JSON.stringify(body); + + var that = this; + + var req = new XMLHttpRequest(); + req.open(method, url, true); + req.setRequestHeader("Accept", "application/json"); + if (method.toUpperCase() !== "GET") { + req.setRequestHeader("Content-Type", "application/json"); + } + req.onreadystatechange = function (event) { + if (req.readyState == 4 && req.status != 0) { + that.handleResponse(null, req, callback, field); + } + }; + req.timeout = this.timeout; + req.ontimeout = function (event) { + that.handleResponse('timeout', req, callback); + }; + req.onerror = function (event) { + that.handleResponse(event, req, callback); + }; + req.send(body); + } + }, { + key: 'handleResponse', + value: function handleResponse(err, response, callback, field) { + // detect timeout errors + if (err && err.code && TIMEOUT_ERRORS.indexOf(err.code) !== -1) { + return callback(new Error('timeout')); + } + + // handle generic errors + if (err) return callback(err); + + // anything in 200 status range is a success + var requestSuccessful = response.status > 199 && response.status < 300; + + // even in the case of an unsuccessful request we may have json data. + var parsedBody; + + try { + parsedBody = JSON.parse(response.responseText); + } catch (e) { + // XXX: might want to handle this better in the request success case? + if (requestSuccessful) { + return callback(new Error('response was not valid json: ' + response.responseText)); + } + } + + // detect if we're running Bugzilla 5.0 + if (typeof parsedBody['result'] !== 'undefined') { + parsedBody = parsedBody['result']; + } + + // successful http respnse but an error + // XXX: this seems like a bug in the api. + if (parsedBody && parsedBody.error) { + requestSuccessful = false; + } + + if (!requestSuccessful) { + return callback(new Error('HTTP status ' + response.status + '\n' + ( + // note intentional use of != instead of !== + parsedBody && parsedBody.message) ? parsedBody.message : '')); + } + + callback(null, field ? parsedBody[field] : parsedBody); + } + }, { + key: 'urlEncode', + value: function urlEncode(params) { + var url = []; + for (var param in params) { + var values = params[param]; + if (!values.forEach) values = [values]; + // expand any arrays + values.forEach(function (value) { + url.push(encodeURIComponent(param) + "=" + encodeURIComponent(value)); + }); + } + return url.join("&"); + } + }]); + + return BugzillaClient; +})(); + +exports.BugzillaClient = BugzillaClient; + +function createClient(options) { + return new BugzillaClient(options); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxJQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDOzs7OztBQUt2RCxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7Ozs7O0FBS3ZCLElBQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7O0FBRXhELFNBQVMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUU7QUFDbEMsTUFBSSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUU7QUFDNUIsWUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQUUsR0FBRyxTQUFTLENBQUM7R0FDaEI7O0FBRUQsU0FBTyxVQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDN0IsUUFBSSxHQUFHLEVBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRTlCLFFBQUksUUFBUSxFQUFFOztBQUVaLFVBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtBQUNwQixVQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUMvQjtBQUNELGNBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDOUIsTUFDSTtBQUNILFlBQU0scUNBQXFDLENBQUM7S0FDN0M7R0FDRixDQUFDO0NBQ0g7Ozs7Ozs7Ozs7OztBQVlELFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTs7QUFFN0IsU0FBTyxZQUFXOzs7O0FBSWhCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7OztBQUU1QyxZQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFD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QUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FDdEMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvQixDQUFDLENBQUM7T0FDSjtBQUNELGFBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN0Qjs7O1NBaFpRLGNBQWM7SUFpWnhCLENBQUE7Ozs7QUFFTSxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDcEMsU0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUNwQyIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBYTUxIdHRwUmVxdWVzdCA9IHJlcXVpcmUoJy4veGhyJykuWE1MSHR0cFJlcXVlc3Q7XG5cbi8qKlxuQ29uc3RhbnQgZm9yIHRoZSBsb2dpbiBlbnRyeXBvaW50LlxuKi9cbmNvbnN0IExPR0lOID0gJy9sb2dpbic7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbmNvbnN0IFRJTUVPVVRfRVJST1JTID0gWydFVElNRURPVVQnLCAnRVNPQ0tFVFRJTUVET1VUJ107XG5cbmZ1bmN0aW9uIGV4dHJhY3RGaWVsZChpZCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gaWQ7XG4gICAgaWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oZXJyLCByZXNwb25zZSkge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAvLyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSB0aGUgZmlyc3QgaWQgd2hlbiB0aGUgY2FsbGVyIGRvZXMgbm90IHByb3ZpZGUgb25lLlxuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWQgPSBPYmplY3Qua2V5cyhyZXNwb25zZSlbMF07XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZVtpZF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IFwiRXJyb3I6LCBubyByZXNwb25zZSBpbiBleHRyYWN0RmllbGRcIjtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuRnVuY3Rpb24gZGVjb3JhdG9yIHdoaWNoIHdpbGwgYXR0ZW1wdCB0byBsb2dpbiB0byBidWd6aWxsYVxud2l0aCB0aGUgY3VycmVudCBjcmVkZW50aWFscyBwcmlvciB0byBtYWtpbmcgdGhlIGFjdHVhbCBhcGkgY2FsbC5cblxuICAgIEJ1Z3ppbGxhLnByb3RvdHlwZS5tZXRob2QgPSBsb2dpbihmdW5jdGlvbihwYXJhbSwgcGFyYW0pIHtcbiAgICB9KTtcblxuQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIHRvIGRlY29yYXRlLlxuQHJldHVybiB7RnVuY3Rpb259IGRlY29yYXRlZCBtZXRob2QuXG4qL1xuZnVuY3Rpb24gbG9naW5SZXF1aXJlZChtZXRob2QpIHtcbiAgLy8gd2UgYXNzdW1lIHRoaXMgaXMgYSB2YWxpZCBidWdpbGxhIGluc3RhbmNlLlxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgLy8gcmVtZW1iZXIgfHRoaXN8IGlzIGEgYnVnemlsbGEgaW5zdGFuY2VcblxuICAgIC8vIGFyZ3MgZm9yIHRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLFxuICAgICAgICAvLyB3ZSBuZWVkIHRoZSBjYWxsYmFjayBzbyB3ZSBjYW4gcGFzcyBsb2dpbiByZWxhdGVkIGVycm9ycy5cbiAgICAgICAgY2FsbGJhY2sgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICB0aGlzLmxvZ2luKGZ1bmN0aW9uKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIHdlIGFyZSBub3cgbG9nZ2VkIGluIHNvIHRoZSBtZXRob2QgY2FuIHJ1biFcbiAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9O1xufVxuXG5leHBvcnQgdmFyIEJ1Z3ppbGxhQ2xpZW50ID0gY2xhc3Mge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlVcmwgPSBvcHRpb25zLnVybCB8fCAnaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0Lyc7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuICAvKipcbiAgQXV0aGVudGljYXRpb24gZGV0YWlscyBmb3IgZ2l2ZW4gdXNlci5cblxuICBFeGFtcGxlOlxuXG4gICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cblxuICBAdHlwZSB7T2JqZWN0fVxuICAqL1xuXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG5cbiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgcHVibGljbHkgYnV0IGlzIGRlc2lnbmVkIGZvciBpbnRlcm5hbCBjb25zdW1wdGlvbiBmb3JcbiAgZWFzZSBvZiB1c2UuXG5cbiAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgW0Vycm9yIGVyciwgU3RyaW5nIHRva2VuXS5cbiAgKi9cbiAgbG9naW4gKGNhbGxiYWNrKSB7XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVzZXJuYW1lIHx8ICF0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkJyk7XG4gICAgfVxuXG4gICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgIGxvZ2luOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmRcbiAgICB9O1xuXG4gICAgdmFyIGhhbmRsZUxvZ2luID0gZnVuY3Rpb24gaGFuZGxlTG9naW4oZXJyLCByZXNwb25zZSkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICBpZiAocmVzcG9uc2UucmVzdWx0KSB7XG4gICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZS5yZXN1bHRcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvbG9naW4nLCAnR0VUJywgaGFuZGxlTG9naW4sIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gIH1cblxuICBnZXRCdWcgKGlkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICdidWdzJyxcbiAgICAgIG51bGwsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICB9XG5cbiAgc2VhcmNoQnVncyAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICB9XG5cbiAgdXBkYXRlQnVnIChpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBidWcpO1xuICB9XG5cbiAgY3JlYXRlQnVnIChidWcsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnJywgJ1BPU1QnLCBjYWxsYmFjaywgJ2lkJywgYnVnKTtcbiAgfVxuXG4gIGJ1Z0NvbW1lbnRzIChpZCwgY2FsbGJhY2spIHtcbiAgICB2YXIgX2NhbGxiYWNrID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKGUpIHRocm93IGU7XG4gICAgICB2YXIgX2J1Z19jb21tZW50cyA9IHJbaWRdO1xuICAgICAgaWYgKHR5cGVvZiBfYnVnX2NvbW1lbnRzWydjb21tZW50cyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBidWd6aWxsYSA1IDooXG4gICAgICAgIF9idWdfY29tbWVudHMgPSBfYnVnX2NvbW1lbnRzLmNvbW1lbnRzO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sobnVsbCwgX2J1Z19jb21tZW50cyk7XG4gICAgfVxuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9jb21tZW50JyxcbiAgICAgICdHRVQnLFxuICAgICAgX2NhbGxiYWNrLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIGFkZENvbW1lbnQgKGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvY29tbWVudCcsXG4gICAgICAnUE9TVCcsXG4gICAgICBjYWxsYmFjayxcbiAgICAgIG51bGwsXG4gICAgICBjb21tZW50XG4gICAgKTtcbiAgfVxuXG4gIGJ1Z0hpc3RvcnkgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvaGlzdG9yeScsXG4gICAgICAnR0VUJyxcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbGwgYXR0YWNobWVudHMgZm9yIGEgZ2l2ZW4gYnVnICNcbiAgICogaHR0cDovL3d3dy5idWd6aWxsYS5vcmcvZG9jcy90aXAvZW4vaHRtbC9hcGkvQnVnemlsbGEvV2ViU2VydmljZS9CdWcuaHRtbCNhdHRhY2htZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gaWQgb2YgYnVnLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbRXJyb3IsIEFycmF5PEF0dGFjaG1lbnQ+XS5cbiAgICovXG4gIGJ1Z0F0dGFjaG1lbnRzIChpZCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSxcbiAgICAgICdidWdzJ1xuICAgICk7XG4gIH1cblxuICBjcmVhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLFxuICAgICAgJ1BPU1QnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICdhdHRhY2htZW50cycsXG4gICAgICBhdHRhY2htZW50XG4gICAgKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnQgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2F0dGFjaG1lbnRzJ1xuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvYXR0YWNobWVudC8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ29rJywgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2hVc2VycyAobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvdXNlcicsICdHRVQnLCBjYWxsYmFjaywgJ3VzZXJzJywgbnVsbCwge21hdGNoOiBtYXRjaH0pO1xuICB9XG5cbiAgZ2V0VXNlciAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy91c2VyLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICd1c2VycydcbiAgICApO1xuICB9XG5cbiAgZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzIChpZCwgY2FsbGJhY2spIHtcbiAgICAvLyBCTU8tIHNwZWNpZmljIGV4dGVuc2lvbiB0byBnZXQgc3VnZ2VzdGVkIHJldmlld2VycyBmb3IgYSBnaXZlbiBidWdcbiAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvcmV2aWV3L3N1Z2dlc3Rpb25zLycgKyBpZCwgJ0dFVCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qXG4gICAgWFhYIHRoaXMgY2FsbCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgdG8gcGVvcGxlIHNjcmlwdGluZyBhZ2FpbnN0IHByb2QgYnVnemlsbHFcbiAgICBUSEVSRSBJUyBOTyBFUVVJVkFMRU5UIFJFU1QgQ0FMTCBJTiBUSVAsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aXAsIGhlbmNlXG4gICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAqL1xuICBnZXRDb25maWd1cmF0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRoaXMuQVBJUmVxdWVzdCgnL2NvbmZpZ3VyYXRpb24nLCAnR0VUJywgY2FsbGJhY2ssIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKG51bGwsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEuc2VuZCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMgKHByb2R1Y3QpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGlmKCBwcm9kdWN0ID09PSBcInNlbGVjdGFibGVcIiB8fCBwcm9kdWN0ID09PSBcImVudGVyYWJsZVwiIHx8IHByb2R1Y3QgPT09IFwiYWNjZXNzaWJsZVwiICkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAgICcvcHJvZHVjdD90eXBlPScgKyBwcm9kdWN0LFxuICAgICAgICAgICdHRVQnLFxuICAgICAgICAgIGZ1bmN0aW9uKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcbiAgICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICAgJ0dFVCcsXG4gICAgICAgICAgZnVuY3Rpb24oZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9kdWN0IChwcm9kdWN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICdHRVQnLFxuICAgICAgICBmdW5jdGlvbihlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgQVBJUmVxdWVzdCAocGF0aCwgbWV0aG9kLCBjYWxsYmFjaywgZmllbGQsIGJvZHksIHBhcmFtcykge1xuICAgIGlmIChcbiAgICAgIC8vIGlmIHdlIGFyZSBkb2luZyB0aGUgbG9naW5cbiAgICAgIHBhdGggPT09IExPR0lOIHx8XG4gICAgICAvLyBpZiB3ZSBhcmUgYWxyZWFkeSBhdXRoZWRcbiAgICAgIHRoaXMuX2F1dGggfHxcbiAgICAgIC8vIG9yIHdlIGFyZSBtaXNzaW5nIGF1dGggZGF0YVxuICAgICAgIXRoaXMucGFzc3dvcmQgfHwgIXRoaXMudXNlcm5hbWVcbiAgICApIHtcbiAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGxldCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgdGhpcy5sb2dpbihmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9XG5cbiAgX0FQSVJlcXVlc3QgKHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgaWYodGhpcy5hcGlfa2V5KSB7IHBhcmFtcy5hcGlfa2V5ID0gdGhpcy5hcGlfa2V5OyB9XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgcGFyYW1zLnRva2VuID0gdGhpcy5fYXV0aC50b2tlbjtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgcGFyYW1zLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdXJsICs9IFwiP1wiICsgdGhpcy51cmxFbmNvZGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICBsZXQgdGhhdCA9IHRoaXM7XG5cbiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICBpZiAobWV0aG9kLnRvVXBwZXJDYXNlKCkgIT09IFwiR0VUXCIpIHtcbiAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjaywgZmllbGQpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cblxuICBoYW5kbGVSZXNwb25zZSAoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgLy8gZGV0ZWN0IHRpbWVvdXQgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAmJiBUSU1FT1VUX0VSUk9SUy5pbmRleE9mKGVyci5jb2RlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIGdlbmVyaWMgZXJyb3JzXG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAvLyBhbnl0aGluZyBpbiAyMDAgc3RhdHVzIHJhbmdlIGlzIGEgc3VjY2Vzc1xuICAgIHZhciByZXF1ZXN0U3VjY2Vzc2Z1bCA9IHJlc3BvbnNlLnN0YXR1cyA+IDE5OSAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDA7XG5cbiAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICB2YXIgcGFyc2VkQm9keTtcblxuICAgIHRyeSB7XG4gICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFhYWDogbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBiZXR0ZXIgaW4gdGhlIHJlcXVlc3Qgc3VjY2VzcyBjYXNlP1xuICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBuZXcgRXJyb3IoJ3Jlc3BvbnNlIHdhcyBub3QgdmFsaWQganNvbjogJyArIHJlc3BvbnNlLnJlc3BvbnNlVGV4dClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcGFyc2VkQm9keSA9IHBhcnNlZEJvZHlbJ3Jlc3VsdCddO1xuICAgIH1cblxuICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgIC8vIFhYWDogdGhpcyBzZWVtcyBsaWtlIGEgYnVnIGluIHRoZSBhcGkuXG4gICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKFxuICAgICAgICAnSFRUUCBzdGF0dXMgJyArIHJlc3BvbnNlLnN0YXR1cyArICdcXG4nICtcbiAgICAgICAgLy8gbm90ZSBpbnRlbnRpb25hbCB1c2Ugb2YgIT0gaW5zdGVhZCBvZiAhPT1cbiAgICAgICAgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhudWxsLCAoZmllbGQpID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgfVxuXG4gIHVybEVuY29kZSAocGFyYW1zKSB7XG4gICAgdmFyIHVybCA9IFtdO1xuICAgIGZvcih2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zW3BhcmFtXTtcbiAgICAgIGlmKCF2YWx1ZXMuZm9yRWFjaClcbiAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgIHVybC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbSkgKyBcIj1cIiArXG4gICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuam9pbihcIiZcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgQnVnemlsbGFDbGllbnQob3B0aW9ucyk7XG59XG4iXX0= +},{"./xhr":3}],3:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var XMLHttpRequest = null; + +exports.XMLHttpRequest = XMLHttpRequest; +if (typeof window === 'undefined') { + // we're not in a browser? + var _loader = require; + try { + exports.XMLHttpRequest = XMLHttpRequest = _loader('sdk/net/xhr').XMLHttpRequest; + } catch (e) { + exports.XMLHttpRequest = XMLHttpRequest = _loader("xmlhttprequest").XMLHttpRequest; + } +} else if (typeof window !== 'undefined' && typeof window.XMLHttpRequest !== 'undefined') { + exports.XMLHttpRequest = XMLHttpRequest = window.XMLHttpRequest; +} else { + throw "No window, WAT."; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy94aHIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7OztBQUVqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTs7QUFFakMsTUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3RCLE1BQUk7QUFDRixZQU5PLGNBQWMsR0FNckIsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLENBQUM7R0FDeEQsQ0FBQyxPQUFNLENBQUMsRUFBRTtBQUNULFlBUk8sY0FBYyxHQVFyQixjQUFjLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDO0dBQzNEO0NBQ0YsTUFDSSxJQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLE1BQU0sQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFO0FBQ3JGLFVBWlMsY0FBYyxHQVl2QixjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUN4QyxNQUNJO0FBQ0gsUUFBTSxpQkFBaUIsQ0FBQTtDQUN4QiIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMveGhyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBYTUxIdHRwUmVxdWVzdCA9IG51bGw7XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAvLyB3ZSdyZSBub3QgaW4gYSBicm93c2VyP1xuICBsZXQgX2xvYWRlciA9IHJlcXVpcmU7XG4gIHRyeSB7XG4gICAgWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoKGUpIHtcbiAgICBYTUxIdHRwUmVxdWVzdCA9IF9sb2FkZXIoXCJ4bWxodHRwcmVxdWVzdFwiKS5YTUxIdHRwUmVxdWVzdDtcbiAgfVxufVxuZWxzZSBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn1cbmVsc2Uge1xuICB0aHJvdyBcIk5vIHdpbmRvdywgV0FULlwiXG59XG4iXX0= +},{}]},{},[1]) +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYnouanMiLCJzcmMvaW5kZXguanMiLCJzcmMveGhyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIHRoaXMgZmlsZSBpcyB0aGUgZW50cnlwb2ludCBmb3IgYnVpbGRpbmcgYSBicm93c2VyIGZpbGUgd2l0aCBicm93c2VyaWZ5XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYnogPSB3aW5kb3cuYnogPSByZXF1aXJlKFwiLi9pbmRleFwiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OWllaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08wRkJSVUVzU1VGQlNTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTWlMQ0ptYVd4bElqb2lMMVZ6WlhKekwycHNZWE4wWlhJdmMzSmpMMjF2ZW1sc2JHRXZZbm91YW5NdmMzSmpMMko2TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeThnZEdocGN5Qm1hV3hsSUdseklIUm9aU0JsYm5SeWVYQnZhVzUwSUdadmNpQmlkV2xzWkdsdVp5QmhJR0p5YjNkelpYSWdabWxzWlNCM2FYUm9JR0p5YjNkelpYSnBabmxjYmx4dWRtRnlJR0o2SUQwZ2QybHVaRzkzTG1KNklEMGdjbVZ4ZFdseVpTaGNJaTR2YVc1a1pYaGNJaWs3SWwxOSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmV4cG9ydHMuY3JlYXRlQ2xpZW50ID0gY3JlYXRlQ2xpZW50O1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIFhNTEh0dHBSZXF1ZXN0ID0gcmVxdWlyZSgnLi94aHInKS5YTUxIdHRwUmVxdWVzdDtcblxuLyoqXG5Db25zdGFudCBmb3IgdGhlIGxvZ2luIGVudHJ5cG9pbnQuXG4qL1xudmFyIExPR0lOID0gJy9sb2dpbic7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbnZhciBUSU1FT1VUX0VSUk9SUyA9IFsnRVRJTUVET1VUJywgJ0VTT0NLRVRUSU1FRE9VVCddO1xuXG5mdW5jdGlvbiBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGlkO1xuICAgIGlkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChlcnIsIHJlc3BvbnNlKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gdXNlIHRoZSBmaXJzdCBpZCB3aGVuIHRoZSBjYWxsZXIgZG9lcyBub3QgcHJvdmlkZSBvbmUuXG4gICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZCA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKVswXTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlW2lkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IFwiRXJyb3I6LCBubyByZXNwb25zZSBpbiBleHRyYWN0RmllbGRcIjtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuRnVuY3Rpb24gZGVjb3JhdG9yIHdoaWNoIHdpbGwgYXR0ZW1wdCB0byBsb2dpbiB0byBidWd6aWxsYVxud2l0aCB0aGUgY3VycmVudCBjcmVkZW50aWFscyBwcmlvciB0byBtYWtpbmcgdGhlIGFjdHVhbCBhcGkgY2FsbC5cblxuICAgIEJ1Z3ppbGxhLnByb3RvdHlwZS5tZXRob2QgPSBsb2dpbihmdW5jdGlvbihwYXJhbSwgcGFyYW0pIHtcbiAgICB9KTtcblxuQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIHRvIGRlY29yYXRlLlxuQHJldHVybiB7RnVuY3Rpb259IGRlY29yYXRlZCBtZXRob2QuXG4qL1xuZnVuY3Rpb24gbG9naW5SZXF1aXJlZChtZXRob2QpIHtcbiAgLy8gd2UgYXNzdW1lIHRoaXMgaXMgYSB2YWxpZCBidWdpbGxhIGluc3RhbmNlLlxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIC8vIHJlbWVtYmVyIHx0aGlzfCBpcyBhIGJ1Z3ppbGxhIGluc3RhbmNlXG5cbiAgICAvLyBhcmdzIGZvciB0aGUgZGVjb3JhdGVkIG1ldGhvZFxuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxcblxuICAgIC8vIHdlIG5lZWQgdGhlIGNhbGxiYWNrIHNvIHdlIGNhbiBwYXNzIGxvZ2luIHJlbGF0ZWQgZXJyb3JzLlxuICAgIGNhbGxiYWNrID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgdGhpcy5sb2dpbigoZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIHdlIGFyZSBub3cgbG9nZ2VkIGluIHNvIHRoZSBtZXRob2QgY2FuIHJ1biFcbiAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9KS5iaW5kKHRoaXMpKTtcbiAgfTtcbn1cblxudmFyIEJ1Z3ppbGxhQ2xpZW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVnemlsbGFDbGllbnQob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWd6aWxsYUNsaWVudCk7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlVcmwgPSBvcHRpb25zLnVybCB8fCAnaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0Lyc7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBnaXZlbiB1c2VyLlxuICAgRXhhbXBsZTpcbiAgICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cbiAgIEB0eXBlIHtPYmplY3R9XG4gICovXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG4gICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cbiAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFtFcnJvciBlcnIsIFN0cmluZyB0b2tlbl0uXG4gICovXG5cbiAgX2NyZWF0ZUNsYXNzKEJ1Z3ppbGxhQ2xpZW50LCBbe1xuICAgIGtleTogJ2xvZ2luJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9naW4oY2FsbGJhY2spIHtcblxuICAgICAgaWYgKHRoaXMuX2F1dGgpIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy51c2VybmFtZSB8fCAhdGhpcy5wYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkJyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJhbXMgPSB7XG4gICAgICAgIGxvZ2luOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZFxuICAgICAgfTtcblxuICAgICAgdmFyIGhhbmRsZUxvZ2luID0gKGZ1bmN0aW9uIGhhbmRsZUxvZ2luKGVyciwgcmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgICB9KS5iaW5kKHRoaXMpO1xuXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9sb2dpbicsICdHRVQnLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRCdWcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCdWcoaWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgIHBhcmFtcyA9IHt9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvJyArIGlkLCAnR0VUJywgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlYXJjaEJ1Z3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWFyY2hCdWdzKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUJ1ZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZyhpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCwgJ1BVVCcsIGNhbGxiYWNrLCAnYnVncycsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY3JlYXRlQnVnJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVnKGJ1ZywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdQT1NUJywgY2FsbGJhY2ssICdpZCcsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYnVnQ29tbWVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdDb21tZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHZhciBfY2FsbGJhY2sgPSBmdW5jdGlvbiBfY2FsbGJhY2soZSwgcikge1xuICAgICAgICBpZiAoZSkgdGhyb3cgZTtcbiAgICAgICAgdmFyIF9idWdfY29tbWVudHMgPSByW2lkXTtcbiAgICAgICAgaWYgKHR5cGVvZiBfYnVnX2NvbW1lbnRzWydjb21tZW50cyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8vIGJ1Z3ppbGxhIDUgOihcbiAgICAgICAgICBfYnVnX2NvbW1lbnRzID0gX2J1Z19jb21tZW50cy5jb21tZW50cztcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCBfYnVnX2NvbW1lbnRzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQgKyAnL2NvbW1lbnQnLCAnR0VUJywgX2NhbGxiYWNrLCAnYnVncycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2FkZENvbW1lbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRDb21tZW50KGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCArICcvY29tbWVudCcsICdQT1NUJywgY2FsbGJhY2ssIG51bGwsIGNvbW1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2J1Z0hpc3RvcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdIaXN0b3J5KGlkLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCArICcvaGlzdG9yeScsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhbGwgYXR0YWNobWVudHMgZm9yIGEgZ2l2ZW4gYnVnICNcbiAgICAgKiBodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9kb2NzL3RpcC9lbi9odG1sL2FwaS9CdWd6aWxsYS9XZWJTZXJ2aWNlL0J1Zy5odG1sI2F0dGFjaG1lbnRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaWQgb2YgYnVnLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtFcnJvciwgQXJyYXk8QXR0YWNobWVudD5dLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYnVnQXR0YWNobWVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdBdHRhY2htZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLCAnR0VUJywgZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjayksICdidWdzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY3JlYXRlQXR0YWNobWVudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUF0dGFjaG1lbnQoaWQsIGF0dGFjaG1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvJyArIGlkICsgJy9hdHRhY2htZW50JywgJ1BPU1QnLCBleHRyYWN0RmllbGQoY2FsbGJhY2spLCAnYXR0YWNobWVudHMnLCBhdHRhY2htZW50KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBdHRhY2htZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXR0YWNobWVudChpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy9hdHRhY2htZW50LycgKyBpZCwgJ0dFVCcsIGV4dHJhY3RGaWVsZChjYWxsYmFjayksICdhdHRhY2htZW50cycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUF0dGFjaG1lbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVBdHRhY2htZW50KGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLCAnUFVUJywgY2FsbGJhY2ssICdvaycsIGF0dGFjaG1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlYXJjaFVzZXJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2VhcmNoVXNlcnMobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy91c2VyJywgJ0dFVCcsIGNhbGxiYWNrLCAndXNlcnMnLCBudWxsLCB7IG1hdGNoOiBtYXRjaCB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRVc2VyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VXNlcihpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL3VzZXIvJyArIGlkLCAnR0VUJywgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgJ3VzZXJzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzKGlkLCBjYWxsYmFjaykge1xuICAgICAgLy8gQk1PLSBzcGVjaWZpYyBleHRlbnNpb24gdG8gZ2V0IHN1Z2dlc3RlZCByZXZpZXdlcnMgZm9yIGEgZ2l2ZW4gYnVnXG4gICAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9yZXZpZXcvc3VnZ2VzdGlvbnMvJyArIGlkLCAnR0VUJywgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBYWFggdGhpcyBjYWxsIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB0byBwZW9wbGUgc2NyaXB0aW5nIGFnYWluc3QgcHJvZCBidWd6aWxscVxuICAgICAgVEhFUkUgSVMgTk8gRVFVSVZBTEVOVCBSRVNUIENBTEwgSU4gVElQLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgdGVzdGVkIGFnYWluc3QgdGlwLCBoZW5jZVxuICAgICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb25maWd1cmF0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbihwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgICBwYXJhbXMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgLy8gdGhpcy5BUElSZXF1ZXN0KCcvY29uZmlndXJhdGlvbicsICdHRVQnLCBjYWxsYmFjaywgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICAgIC8vIFVHTEFZIHRlbXAgZml4IHVudGlsIC9jb25maWd1cmF0aW9uIGlzIGltcGxlbWVudGVkLFxuICAgICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgICAgcmVxLnNlbmQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRQcm9kdWN0cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFByb2R1Y3RzKHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAocHJvZHVjdCA9PT0gXCJzZWxlY3RhYmxlXCIgfHwgcHJvZHVjdCA9PT0gXCJlbnRlcmFibGVcIiB8fCBwcm9kdWN0ID09PSBcImFjY2Vzc2libGVcIikge1xuICAgICAgICAgIF90aGlzLkFQSVJlcXVlc3QoJy9wcm9kdWN0P3R5cGU9JyArIHByb2R1Y3QsICdHRVQnLCBmdW5jdGlvbiAoZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuQVBJUmVxdWVzdCgnL3Byb2R1Y3QvJyArIHByb2R1Y3QsICdHRVQnLCBmdW5jdGlvbiAoZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFByb2R1Y3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQcm9kdWN0KHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KCcvcHJvZHVjdC8nICsgcHJvZHVjdCwgJ0dFVCcsIGZ1bmN0aW9uIChlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdBUElSZXF1ZXN0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICBpZiAoXG4gICAgICAvLyBpZiB3ZSBhcmUgZG9pbmcgdGhlIGxvZ2luXG4gICAgICBwYXRoID09PSBMT0dJTiB8fFxuICAgICAgLy8gaWYgd2UgYXJlIGFscmVhZHkgYXV0aGVkXG4gICAgICB0aGlzLl9hdXRoIHx8XG4gICAgICAvLyBvciB3ZSBhcmUgbWlzc2luZyBhdXRoIGRhdGFcbiAgICAgICF0aGlzLnBhc3N3b3JkIHx8ICF0aGlzLnVzZXJuYW1lKSB7XG4gICAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgIHJldHVybiB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgICB0aGlzLmxvZ2luKChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfSkuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX0FQSVJlcXVlc3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIGlmICh0aGlzLmFwaV9rZXkpIHtcbiAgICAgICAgcGFyYW1zLmFwaV9rZXkgPSB0aGlzLmFwaV9rZXk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICAgIHBhcmFtcy50b2tlbiA9IHRoaXMuX2F1dGgudG9rZW47XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkge1xuICAgICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgICBwYXJhbXMucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICB1cmwgKz0gXCI/XCIgKyB0aGlzLnVybEVuY29kZShwYXJhbXMpO1xuICAgICAgfVxuXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgaWYgKG1ldGhvZC50b1VwcGVyQ2FzZSgpICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgIH1cbiAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShudWxsLCByZXEsIGNhbGxiYWNrLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5zZW5kKGJvZHkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVJlc3BvbnNlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgICAvLyBkZXRlY3QgdGltZW91dCBlcnJvcnNcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgJiYgVElNRU9VVF9FUlJPUlMuaW5kZXhPZihlcnIuY29kZSkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGhhbmRsZSBnZW5lcmljIGVycm9yc1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIGFueXRoaW5nIGluIDIwMCBzdGF0dXMgcmFuZ2UgaXMgYSBzdWNjZXNzXG4gICAgICB2YXIgcmVxdWVzdFN1Y2Nlc3NmdWwgPSByZXNwb25zZS5zdGF0dXMgPiAxOTkgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgMzAwO1xuXG4gICAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICAgIHZhciBwYXJzZWRCb2R5O1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBYWFg6IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoaXMgYmV0dGVyIGluIHRoZSByZXF1ZXN0IHN1Y2Nlc3MgY2FzZT9cbiAgICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcigncmVzcG9uc2Ugd2FzIG5vdCB2YWxpZCBqc29uOiAnICsgcmVzcG9uc2UucmVzcG9uc2VUZXh0KSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZGV0ZWN0IGlmIHdlJ3JlIHJ1bm5pbmcgQnVnemlsbGEgNS4wXG4gICAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXJzZWRCb2R5ID0gcGFyc2VkQm9keVsncmVzdWx0J107XG4gICAgICB9XG5cbiAgICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgICAgLy8gWFhYOiB0aGlzIHNlZW1zIGxpa2UgYSBidWcgaW4gdGhlIGFwaS5cbiAgICAgIGlmIChwYXJzZWRCb2R5ICYmIHBhcnNlZEJvZHkuZXJyb3IpIHtcbiAgICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXF1ZXN0U3VjY2Vzc2Z1bCkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdIVFRQIHN0YXR1cyAnICsgcmVzcG9uc2Uuc3RhdHVzICsgJ1xcbicgKyAoXG4gICAgICAgIC8vIG5vdGUgaW50ZW50aW9uYWwgdXNlIG9mICE9IGluc3RlYWQgb2YgIT09XG4gICAgICAgIHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnKSk7XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKG51bGwsIGZpZWxkID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd1cmxFbmNvZGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cmxFbmNvZGUocGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gW107XG4gICAgICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtc1twYXJhbV07XG4gICAgICAgIGlmICghdmFsdWVzLmZvckVhY2gpIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICAgICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICB1cmwucHVzaChlbmNvZGVVUklDb21wb25lbnQocGFyYW0pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXJsLmpvaW4oXCImXCIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWd6aWxsYUNsaWVudDtcbn0pKCk7XG5cbmV4cG9ydHMuQnVnemlsbGFDbGllbnQgPSBCdWd6aWxsYUNsaWVudDtcblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50KG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBCdWd6aWxsYUNsaWVudChvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OXBibVJsZUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdRVUZCUVN4SlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRPenM3T3p0QlFVdDJSQ3hKUVVGTkxFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdPenM3TzBGQlMzWkNMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03TzBGQlJYaEVMRk5CUVZNc1dVRkJXU3hEUVVGRExFVkJRVVVzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYkVNc1RVRkJTU3hQUVVGUExFVkJRVVVzUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZETlVJc1dVRkJVU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5rTEUxQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNVMEZCVHl4VlFVRlRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE4wSXNVVUZCU1N4SFFVRkhMRVZCUVVVc1QwRkJUeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlRsQ0xGRkJRVWtzVVVGQlVTeEZRVUZGT3p0QlFVVmFMRlZCUVVrc1JVRkJSU3hMUVVGTExGTkJRVk1zUlVGQlJUdEJRVU53UWl4VlFVRkZMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVNdlFqdEJRVU5FTEdOQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZET1VJc1RVRkRTVHRCUVVOSUxGbEJRVTBzY1VOQlFYRkRMRU5CUVVNN1MwRkROME03UjBGRFJpeERRVUZETzBOQlEwZzdPenM3T3pzN096czdPenRCUVZsRUxGTkJRVk1zWVVGQllTeERRVUZETEUxQlFVMHNSVUZCUlRzN1FVRkZOMElzVTBGQlR5eFpRVUZYT3pzN08wRkJTV2hDTEZGQlFVa3NTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN096dEJRVVUxUXl4WlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZGQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRU3hWUVVGVExFZEJRVWNzUlVGQlJUdEJRVU4yUWl4VlFVRkpMRWRCUVVjc1JVRkJSU3hQUVVGUExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXpzN08wRkJSemxDTEZsQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6RkNMRU5CUVVFc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTm1MRU5CUVVNN1EwRkRTRHM3UVVGRlRTeEpRVUZKTEdOQlFXTTdRVUZGV2l4WFFVWkdMR05CUVdNc1EwRkZXQ3hQUVVGUExFVkJRVVU3TUVKQlJsb3NZMEZCWXpzN1FVRkhja0lzVjBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4RlFVRkZMRU5CUVVNN08wRkJSWGhDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU5xUXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEYWtNc1VVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFJRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZET3p0QlFVVjJReXhSUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1dVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzBSRUZCTkVRc1EwRkJReXhEUVVGRE8wdEJReTlGT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4dlEwRkJiME1zUTBGQlF6dEJRVU5zUlN4UlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6czdRVUZGTjBNc1VVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdSMEZEYmtJN096czdPenM3T3pzN096czdPenM3TzJWQmJFSlJMR05CUVdNN08xZEJkVU5xUWl4bFFVRkRMRkZCUVZFc1JVRkJSVHM3UVVGRlppeFZRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRaQ3huUWtGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VDBGRE5VSTdPMEZCUlVRc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRM0JETEdOQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc01rTkJRVEpETEVOQlFVTXNRMEZCUXp0UFFVTTVSRHM3UVVGRlJDeFZRVUZKTEUxQlFVMHNSMEZCUnp0QlFVTllMR0ZCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVUdEJRVU53UWl4blFrRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTzA5QlEzaENMRU5CUVVNN08wRkJSVVlzVlVGQlNTeFhRVUZYTEVkQlFVY3NRMEZCUVN4VFFVRlRMRmRCUVZjc1EwRkJReXhIUVVGSExFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEzQkVMRmxCUVVrc1IwRkJSeXhGUVVGRkxFOUJRVThzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpsQ0xGbEJRVWtzVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnVRaXhqUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVFN1UwRkROMElzVFVGRFNUdEJRVU5JTEdOQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8xTkJRM1pDTzBGQlEwUXNaMEpCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdUMEZETVVJc1EwRkJRU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZZaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1YwRkJWeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRia1U3T3p0WFFVVk5MR2RDUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEV2l4blFrRkJVU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVU5zUWl4alFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRE8wOUJRMlE3TzBGQlJVUXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkRZaXhQUVVGUExFZEJRVWNzUlVGQlJTeEZRVU5hTEV0QlFVc3NSVUZEVEN4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRM1JDTEUxQlFVMHNSVUZEVGl4SlFVRkpMRVZCUTBvc1RVRkJUU3hEUVVOUUxFTkJRVU03UzBGRFNEczdPMWRCUlZVc2IwSkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTTFRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hGUVVGRkxFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRhRVU3T3p0WFFVVlRMRzFDUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVNM1JEczdPMWRCUlZNc2JVSkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjRRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjBSRHM3TzFkQlJWY3NjVUpCUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU42UWl4VlFVRkpMRk5CUVZNc1IwRkJSeXhUUVVGYUxGTkJRVk1zUTBGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMEZCUXpkQ0xGbEJRVWtzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTJZc1dVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xGbEJRVWtzVDBGQlR5eGhRVUZoTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1YwRkJWeXhGUVVGRk96dEJRVVZ3UkN4MVFrRkJZU3hIUVVGSExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTTdVMEZEZUVNN1FVRkRSQ3huUWtGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4aFFVRmhMRU5CUVVNc1EwRkJRenRQUVVNdlFpeERRVUZCT3p0QlFVVkVMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRMklzVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUTNwQ0xFdEJRVXNzUlVGRFRDeFRRVUZUTEVWQlExUXNUVUZCVFN4RFFVTlFMRU5CUVVNN1MwRkRTRHM3TzFkQlJWVXNiMEpCUVVNc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYWtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGRFlpeFBRVUZQTEVkQlFVY3NSVUZCUlN4SFFVRkhMRlZCUVZVc1JVRkRla0lzVFVGQlRTeEZRVU5PTEZGQlFWRXNSVUZEVWl4SlFVRkpMRVZCUTBvc1QwRkJUeXhEUVVOU0xFTkJRVU03UzBGRFNEczdPMWRCUlZVc2IwSkJRVU1zUlVGQlJTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjRRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVU5pTEU5QlFVOHNSMEZCUnl4RlFVRkZMRWRCUVVjc1ZVRkJWU3hGUVVONlFpeExRVUZMTEVWQlEwd3NVVUZCVVN4RlFVTlNMRTFCUVUwc1EwRkRVQ3hEUVVGRE8wdEJRMGc3T3pzN096czdPenM3TzFkQlUyTXNkMEpCUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU0xUWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVOaUxFOUJRVThzUjBGQlJ5eEZRVUZGTEVkQlFVY3NZVUZCWVN4RlFVTTFRaXhMUVVGTExFVkJRMHdzV1VGQldTeERRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRU5CUVVNc1JVRkRNVUlzVFVGQlRTeERRVU5RTEVOQlFVTTdTMEZEU0RzN08xZEJSV2RDTERCQ1FVRkRMRVZCUVVVc1JVRkJSU3hWUVVGVkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlF6RkRMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRMklzVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4aFFVRmhMRVZCUXpWQ0xFMUJRVTBzUlVGRFRpeFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUTNSQ0xHRkJRV0VzUlVGRFlpeFZRVUZWTEVOQlExZ3NRMEZCUXp0TFFVTklPenM3VjBGRllTeDFRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRek5DTEZWQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJJc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlN4RlFVTjJRaXhMUVVGTExFVkJRMHdzV1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVTjBRaXhoUVVGaExFTkJRMlFzUTBGQlF6dExRVU5JT3pzN1YwRkZaMElzTUVKQlFVTXNSVUZCUlN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE1VTXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN1MwRkROMFU3T3p0WFFVVlhMSEZDUVVGRExFdEJRVXNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZETlVJc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJReXhEUVVGRExFTkJRVU03UzBGRE1VVTdPenRYUVVWUExHbENRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRja0lzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZEWWl4UlFVRlJMRWRCUVVjc1JVRkJSU3hGUVVOaUxFdEJRVXNzUlVGRFRDeFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUTNSQ0xFOUJRVThzUTBGRFVpeERRVUZETzB0QlEwZzdPenRYUVVWeFFpd3JRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk96czdRVUZIYmtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eHpRa0ZCYzBJc1IwRkJSeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMHRCUXk5RU96czdPenM3T3pzN1YwRlBaMElzTUVKQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVOc1F5eFZRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEYkVJc1kwRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dFBRVU5rT3pzN096dEJRVXRFTEZWQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmFFSXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFVkJRVVVzUTBGQlF6dEJRVU12UWl4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTd3lSRUZCTWtRc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU51Uml4VFFVRkhMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZEYmtRc1UwRkJSeXhEUVVGRExHdENRVUZyUWl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRM2hETEZsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRNVU1zWTBGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzFOQlF6RkRPMDlCUTBZc1EwRkJRenRCUVVOR0xGTkJRVWNzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRCUVVNelFpeFRRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJReTlDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTXZReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4VlFVRlZMRXRCUVVzc1JVRkJSVHRCUVVNM1FpeFpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdUMEZETjBNc1EwRkJRenRCUVVOR0xGTkJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0TFFVTmFPenM3VjBGRlZ5eHhRa0ZCUXl4UFFVRlBMRVZCUVVVN1FVRkRjRUlzVlVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTJwQ0xHRkJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCVXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRek5ETEZsQlFVa3NUMEZCVHl4TFFVRkxMRmxCUVZrc1NVRkJTU3hQUVVGUExFdEJRVXNzVjBGQlZ5eEpRVUZKTEU5QlFVOHNTMEZCU3l4WlFVRlpMRVZCUVVjN1FVRkRjRVlzWlVGQlN5eERRVUZETEZWQlFWVXNRMEZEWkN4blFrRkJaMElzUjBGQlJ5eFBRVUZQTEVWQlF6RkNMRXRCUVVzc1JVRkRUQ3hWUVVGVExFZEJRVWNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEZEVJc1owSkJRVWNzUjBGQlJ5eEZRVUZGTzBGQlEwNHNjVUpCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzQkNMRTFCUVUwN1FVRkRUQ3h4UWtGQlR5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1lVRkRNVUk3VjBGRFJpeERRVU5HTEVOQlFVTTdVMEZEU0N4TlFVRk5PMEZCUTB3c1pVRkJTeXhEUVVGRExGVkJRVlVzUTBGRFpDeFhRVUZYTEVkQlFVY3NUMEZCVHl4RlFVTnlRaXhMUVVGTExFVkJRMHdzVlVGQlV5eEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUTNSQ0xHZENRVUZITEVkQlFVY3NSVUZCUlR0QlFVTk9MSEZDUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTndRaXhOUVVGTk8wRkJRMHdzY1VKQlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRekZDTzFkQlEwWXNRMEZEUml4RFFVRkRPMU5CUTBnN1QwRkRSaXhEUVVGRExFTkJRVU03UzBGRFNqczdPMWRCUlZVc2IwSkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEyNUNMRlZCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU5xUWl4aFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExGVkJRVk1zVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTXpReXhoUVVGTExFTkJRVU1zVlVGQlZTeERRVU5rTEZkQlFWY3NSMEZCUnl4UFFVRlBMRVZCUTNKQ0xFdEJRVXNzUlVGRFRDeFZRVUZUTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRia0lzWTBGQlJ5eEhRVUZITEVWQlFVVTdRVUZEVGl4dFFrRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdWMEZEY0VJc1RVRkJUVHRCUVVOTUxHMUNRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRYUVVONlFqdFRRVU5HTEVOQlEwb3NRMEZCUXp0UFFVTklMRU5CUVVNc1EwRkJRenRMUVVOS096czdWMEZGVlN4dlFrRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJUdEJRVU4yUkRzN1FVRkZSU3hWUVVGSkxFdEJRVXNzUzBGQlN6czdRVUZGWkN4VlFVRkpMRU5CUVVNc1MwRkJTenM3UVVGRlZpeFBRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVU5vUXpzN1FVRkZRU3hsUVVGUExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dFBRVU5vUkRzN1FVRkZSQ3hWUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6czdRVUZGY0VNc1ZVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZCTEZWQlFWTXNSMEZCUnl4RlFVRkZPMEZCUTNaQ0xGbEJRVWtzUjBGQlJ5eEZRVUZGTEU5QlFVOHNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRemxDTEZsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTndReXhEUVVGQkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRaanM3TzFkQlJWY3NjVUpCUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGVFUXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMEZCUlRkQ0xGbEJRVTBzUjBGQlJ5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWMFFpeFZRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkJSU3hqUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1QwRkJSVHM3UVVGRmJrUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRMlFzWTBGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dFBRVU5xUXl4TlFVTkpMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNaRExHTkJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRCUVVNM1FpeGpRVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VDBGRGFrTTdPMEZCUlVRc1ZVRkJTU3hOUVVGTkxFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMRmRCUVVjc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVOeVF6czdRVUZGUkN4VlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZOVUlzVlVGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVWb1FpeFZRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMR05CUVdNc1JVRkJSU3hEUVVGRE8wRkJReTlDTEZOQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFRaXhUUVVGSExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRia1FzVlVGQlNTeE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRXRCUVVzc1MwRkJTeXhGUVVGRk8wRkJRMnhETEZkQlFVY3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eGpRVUZqTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFBRVU14UkR0QlFVTkVMRk5CUVVjc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4VlFVRlZMRXRCUVVzc1JVRkJSVHRCUVVONFF5eFpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpGRExHTkJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVMEZEYWtRN1QwRkRSaXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8wRkJRek5DTEZOQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1ZVRkJWU3hMUVVGTExFVkJRVVU3UVVGREwwSXNXVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMDlCUXk5RExFTkJRVU03UVVGRFJpeFRRVUZITEVOQlFVTXNUMEZCVHl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRemRDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTXpReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOb1FqczdPMWRCUldNc2QwSkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRk96dEJRVVU1UXl4VlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeEpRVUZKTEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUXpsRUxHVkJRVThzVVVGQlVTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU03VDBGRGRrTTdPenRCUVVkRUxGVkJRVWtzUjBGQlJ5eEZRVUZGTEU5QlFVOHNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96czdRVUZIT1VJc1ZVRkJTU3hwUWtGQmFVSXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenM3TzBGQlIzWkZMRlZCUVVrc1ZVRkJWU3hEUVVGRE96dEJRVVZtTEZWQlFVazdRVUZEUml4clFrRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wOUJRMmhFTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN08wRkJSVllzV1VGQlNTeHBRa0ZCYVVJc1JVRkJSVHRCUVVOeVFpeHBRa0ZCVHl4UlFVRlJMRU5CUTJJc1NVRkJTU3hMUVVGTExFTkJRVU1zSzBKQlFTdENMRWRCUVVjc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVU51UlN4RFFVRkRPMU5CUTBnN1QwRkRSanM3TzBGQlIwUXNWVUZCU1N4UFFVRlBMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eFhRVUZYTEVWQlFVVTdRVUZETDBNc2EwSkJRVlVzUjBGQlJ5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1QwRkRia003T3pzN1FVRkpSQ3hWUVVGSkxGVkJRVlVzU1VGQlNTeFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTJ4RExIbENRVUZwUWl4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVNelFqczdRVUZGUkN4VlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdRVUZEZEVJc1pVRkJUeXhSUVVGUkxFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlEzWkNMR05CUVdNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMEZCUlhSRExHdENRVUZWTEVsQlFVa3NWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJRU3hCUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUXpkRUxFTkJRVU1zUTBGQlF6dFBRVU5LT3p0QlFVVkVMR05CUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUVVGQlF5eExRVUZMTEVkQlFVa3NWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzB0QlF6RkVPenM3VjBGRlV5eHRRa0ZCUXl4TlFVRk5MRVZCUVVVN1FVRkRha0lzVlVGQlNTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJJc1YwRkJTU3hKUVVGSkxFdEJRVXNzU1VGQlNTeE5RVUZOTEVWQlFVVTdRVUZEZGtJc1dVRkJTU3hOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpOQ0xGbEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVTm9RaXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN1FVRkZjRUlzWTBGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlRMRXRCUVVzc1JVRkJSVHRCUVVNMVFpeGhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkRkRU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVVNN1QwRkRTanRCUVVORUxHRkJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOMFFqczdPMU5CYUZwUkxHTkJRV003U1VGcFduaENMRU5CUVVFN096czdRVUZGVFN4VFFVRlRMRmxCUVZrc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGNFTXNVMEZCVHl4SlFVRkpMR05CUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dERRVU53UXlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmpiMjV6ZENCWVRVeElkSFJ3VW1WeGRXVnpkQ0E5SUhKbGNYVnBjbVVvSnk0dmVHaHlKeWt1V0UxTVNIUjBjRkpsY1hWbGMzUTdYRzVjYmk4cUtseHVRMjl1YzNSaGJuUWdabTl5SUhSb1pTQnNiMmRwYmlCbGJuUnllWEJ2YVc1MExseHVLaTljYm1OdmJuTjBJRXhQUjBsT0lEMGdKeTlzYjJkcGJpYzdYRzVjYmk4cUtseHVSWEp5YjNKeklISmxiR0YwWldRZ2RHOGdkR2hsSUhOdlkydGxkQ0IwYVcxbGIzVjBMbHh1S2k5Y2JtTnZibk4wSUZSSlRVVlBWVlJmUlZKU1QxSlRJRDBnV3lkRlZFbE5SVVJQVlZRbkxDQW5SVk5QUTB0RlZGUkpUVVZFVDFWVUoxMDdYRzVjYm1aMWJtTjBhVzl1SUdWNGRISmhZM1JHYVdWc1pDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdhV1lnS0hSNWNHVnZaaUJwWkNBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJR05oYkd4aVlXTnJJRDBnYVdRN1hHNGdJQ0FnYVdRZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9aWEp5TENCeVpYTndiMjV6WlNrZ2UxeHVJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVYRzRnSUNBZ2FXWWdLSEpsYzNCdmJuTmxLU0I3WEc0Z0lDQWdJQ0F2THlCa1pXWmhkV3gwSUdKbGFHRjJhVzl5SUdseklIUnZJSFZ6WlNCMGFHVWdabWx5YzNRZ2FXUWdkMmhsYmlCMGFHVWdZMkZzYkdWeUlHUnZaWE1nYm05MElIQnliM1pwWkdVZ2IyNWxMbHh1SUNBZ0lDQWdhV1lnS0dsa0lEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ2FXUWdQU0JQWW1wbFkzUXVhMlY1Y3loeVpYTndiMjV6WlNsYk1GMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCeVpYTndiMjV6WlZ0cFpGMHBPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvY205M0lGd2lSWEp5YjNJNkxDQnVieUJ5WlhOd2IyNXpaU0JwYmlCbGVIUnlZV04wUm1sbGJHUmNJanRjYmlBZ0lDQjlYRzRnSUgwN1hHNTlYRzVjYmk4cUtseHVSblZ1WTNScGIyNGdaR1ZqYjNKaGRHOXlJSGRvYVdOb0lIZHBiR3dnWVhSMFpXMXdkQ0IwYnlCc2IyZHBiaUIwYnlCaWRXZDZhV3hzWVZ4dWQybDBhQ0IwYUdVZ1kzVnljbVZ1ZENCamNtVmtaVzUwYVdGc2N5QndjbWx2Y2lCMGJ5QnRZV3RwYm1jZ2RHaGxJR0ZqZEhWaGJDQmhjR2tnWTJGc2JDNWNibHh1SUNBZ0lFSjFaM3BwYkd4aExuQnliM1J2ZEhsd1pTNXRaWFJvYjJRZ1BTQnNiMmRwYmlobWRXNWpkR2x2Ymlod1lYSmhiU3dnY0dGeVlXMHBJSHRjYmlBZ0lDQjlLVHRjYmx4dVFIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ2JXVjBhRzlrSUhSdklHUmxZMjl5WVhSbExseHVRSEpsZEhWeWJpQjdSblZ1WTNScGIyNTlJR1JsWTI5eVlYUmxaQ0J0WlhSb2IyUXVYRzRxTDF4dVpuVnVZM1JwYjI0Z2JHOW5hVzVTWlhGMWFYSmxaQ2h0WlhSb2IyUXBJSHRjYmlBZ0x5OGdkMlVnWVhOemRXMWxJSFJvYVhNZ2FYTWdZU0IyWVd4cFpDQmlkV2RwYkd4aElHbHVjM1JoYm1ObExseHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdMeThnY21WdFpXMWlaWElnZkhSb2FYTjhJR2x6SUdFZ1luVm5lbWxzYkdFZ2FXNXpkR0Z1WTJWY2JseHVJQ0FnSUM4dklHRnlaM01nWm05eUlIUm9aU0JrWldOdmNtRjBaV1FnYldWMGFHOWtYRzRnSUNBZ2RtRnlJR0Z5WjNNZ1BTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaGhjbWQxYldWdWRITXBMRnh1SUNBZ0lDQWdJQ0F2THlCM1pTQnVaV1ZrSUhSb1pTQmpZV3hzWW1GamF5QnpieUIzWlNCallXNGdjR0Z6Y3lCc2IyZHBiaUJ5Wld4aGRHVmtJR1Z5Y205eWN5NWNiaUFnSUNBZ0lDQWdZMkZzYkdKaFkyc2dQU0JoY21kelcyRnlaM011YkdWdVozUm9JQzBnTVYwN1hHNWNiaUFnSUNCMGFHbHpMbXh2WjJsdUtHWjFibU4wYVc5dUtHVnljaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVnljaWtnY21WMGRYSnVJR05oYkd4aVlXTnJLR1Z5Y2lrN1hHNWNiaUFnSUNBZ0lDOHZJSGRsSUdGeVpTQnViM2NnYkc5bloyVmtJR2x1SUhOdklIUm9aU0J0WlhSb2IyUWdZMkZ1SUhKMWJpRmNiaUFnSUNBZ0lHMWxkR2h2WkM1aGNIQnNlU2gwYUdsekxDQmhjbWR6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdkbUZ5SUVKMVozcHBiR3hoUTJ4cFpXNTBJRDBnWTJ4aGMzTWdlMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnZjSFJwYjI1eklEMGdiM0IwYVc5dWN5QjhmQ0I3ZlR0Y2JseHVJQ0FnSUhSb2FYTXVkWE5sY201aGJXVWdQU0J2Y0hScGIyNXpMblZ6WlhKdVlXMWxPMXh1SUNBZ0lIUm9hWE11Y0dGemMzZHZjbVFnUFNCdmNIUnBiMjV6TG5CaGMzTjNiM0prTzF4dUlDQWdJSFJvYVhNdWRHbHRaVzkxZENBOUlHOXdkR2x2Ym5NdWRHbHRaVzkxZENCOGZDQXdPMXh1SUNBZ0lIUm9hWE11WVhCcFgydGxlU0E5SUc5d2RHbHZibk11WVhCcFgydGxlU0I4ZkNCdWRXeHNPMXh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11ZEdWemRDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZHZjSFJwYjI1ekxuUmxjM1FnYVhNZ1pHVndjbVZqWVhSbFpDQndiR1ZoYzJVZ2MzQmxZMmxtZVNCMGFHVWdkWEpzSUdScGNtVmpkR3g1SnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NWhjR2xWY213Z1BTQnZjSFJwYjI1ekxuVnliQ0I4ZkNBbmFIUjBjSE02THk5aWRXZDZhV3hzWVM1dGIzcHBiR3hoTG05eVp5OXlaWE4wTHljN1hHNGdJQ0FnZEdocGN5NWhjR2xWY213Z1BTQjBhR2x6TG1Gd2FWVnliQzV5WlhCc1lXTmxLQzljWEM4a0x5d2dYQ0pjSWlrN1hHNWNiaUFnSUNCMGFHbHpMbDloZFhSb0lEMGdiblZzYkR0Y2JpQWdmVnh1SUNBdktpcGNiaUFnUVhWMGFHVnVkR2xqWVhScGIyNGdaR1YwWVdsc2N5Qm1iM0lnWjJsMlpXNGdkWE5sY2k1Y2JseHVJQ0JGZUdGdGNHeGxPbHh1WEc0Z0lDQWdJQ0I3SUdsa09pQXhNakl5TENCMGIydGxiam9nSjNoNGVIZ25JSDFjYmx4dUlDQkFkSGx3WlNCN1QySnFaV04wZlZ4dUlDQXFMMXh1WEc1Y2JpQWdMeW9xWEc0Z0lFbHVJSFJvWlNCU1JWTlVJRUZRU1NCM1pTQm1hWEp6ZENCc2IyZHBiaUIwYnlCaFkzRjFhWEpsSUdFZ2RHOXJaVzRnZDJocFkyZ2dhWE1nZEdobGJpQjFjMlZrSUhSdklHMWhhMlZjYmlBZ2NtVnhkV1Z6ZEhNdUlGTmxaVG9nYUhSMGNEb3ZMMko2Y2k1dGIzcHBiR3hoTG05eVp5OWliVzh2TkM0eUwzWnBaWGN2YUdWaFpEb3ZRblZuZW1sc2JHRXZWMlZpVTJWeWRtbGpaUzlUWlhKMlpYSXZVa1ZUVkM1d2JTTk1OVFUyWEc1Y2JpQWdWR2hwY3lCdFpYUm9iMlFnWTJGdUlHSmxJSFZ6WldRZ2NIVmliR2xqYkhrZ1luVjBJR2x6SUdSbGMybG5ibVZrSUdadmNpQnBiblJsY201aGJDQmpiMjV6ZFcxd2RHbHZiaUJtYjNKY2JpQWdaV0Z6WlNCdlppQjFjMlV1WEc1Y2JpQWdRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dXMFZ5Y205eUlHVnljaXdnVTNSeWFXNW5JSFJ2YTJWdVhTNWNiaUFnS2k5Y2JpQWdiRzluYVc0Z0tHTmhiR3hpWVdOcktTQjdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZZWFYwYUNrZ2UxeHVJQ0FnSUNBZ1kyRnNiR0poWTJzb2JuVnNiQ3dnZEdocGN5NWZZWFYwYUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG5WelpYSnVZVzFsSUh4OElDRjBhR2x6TG5CaGMzTjNiM0prS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjIxcGMzTnBibWNnYjNJZ2FXNTJZV3hwWkNBdWRYTmxjbTVoYldVZ2IzSWdMbkJoYzNOM2IzSmtKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhCaGNtRnRjeUE5SUh0Y2JpQWdJQ0FnSUd4dloybHVPaUIwYUdsekxuVnpaWEp1WVcxbExGeHVJQ0FnSUNBZ2NHRnpjM2R2Y21RNklIUm9hWE11Y0dGemMzZHZjbVJjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdkbUZ5SUdoaGJtUnNaVXh2WjJsdUlEMGdablZ1WTNScGIyNGdhR0Z1Wkd4bFRHOW5hVzRvWlhKeUxDQnlaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdhV1lnS0dWeWNpa2djbVYwZFhKdUlHTmhiR3hpWVdOcktHVnljaWs3WEc0Z0lDQWdJQ0JwWmlBb2NtVnpjRzl1YzJVdWNtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJGMWRHZ2dQU0J5WlhOd2IyNXpaUzV5WlhOMWJIUmNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDloZFhSb0lEMGdjbVZ6Y0c5dWMyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCeVpYTndiMjV6WlNrN1hHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcE8xeHVYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmJHOW5hVzRuTENBblIwVlVKeXdnYUdGdVpHeGxURzluYVc0c0lHNTFiR3dzSUc1MWJHd3NJSEJoY21GdGN5azdYRzRnSUgxY2JseHVJQ0JuWlhSQ2RXY2dLR2xrTENCd1lYSmhiWE1zSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnYVdZZ0tDRmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDQWdJR05oYkd4aVlXTnJJRDBnY0dGeVlXMXpPMXh1SUNBZ0lDQWdJSEJoY21GdGN5QTlJSHQ5TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDaGNiaUFnSUNBZ0lDY3ZZblZuTHljZ0t5QnBaQ3hjYmlBZ0lDQWdJQ2RIUlZRbkxGeHVJQ0FnSUNBZ1pYaDBjbUZqZEVacFpXeGtLR05oYkd4aVlXTnJLU3hjYmlBZ0lDQWdJQ2RpZFdkekp5eGNiaUFnSUNBZ0lHNTFiR3dzWEc0Z0lDQWdJQ0J3WVhKaGJYTmNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdjMlZoY21Ob1FuVm5jeUFvY0dGeVlXMXpMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDZ25MMkoxWnljc0lDZEhSVlFuTENCallXeHNZbUZqYXl3Z0oySjFaM01uTENCdWRXeHNMQ0J3WVhKaGJYTXBPMXh1SUNCOVhHNWNiaUFnZFhCa1lYUmxRblZuSUNocFpDd2dZblZuTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2duTDJKMVp5OG5JQ3NnYVdRc0lDZFFWVlFuTENCallXeHNZbUZqYXl3Z0oySjFaM01uTENCaWRXY3BPMXh1SUNCOVhHNWNiaUFnWTNKbFlYUmxRblZuSUNoaWRXY3NJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtDY3ZZblZuSnl3Z0oxQlBVMVFuTENCallXeHNZbUZqYXl3Z0oybGtKeXdnWW5WbktUdGNiaUFnZlZ4dVhHNGdJR0oxWjBOdmJXMWxiblJ6SUNocFpDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjJZWElnWDJOaGJHeGlZV05ySUQwZ1puVnVZM1JwYjI0b1pTd2djaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVXBJSFJvY205M0lHVTdYRzRnSUNBZ0lDQjJZWElnWDJKMVoxOWpiMjF0Wlc1MGN5QTlJSEpiYVdSZE8xeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQmZZblZuWDJOdmJXMWxiblJ6V3lkamIyMXRaVzUwY3lkZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJpZFdkNmFXeHNZU0ExSURvb1hHNGdJQ0FnSUNBZ0lGOWlkV2RmWTI5dGJXVnVkSE1nUFNCZlluVm5YMk52YlcxbGJuUnpMbU52YlcxbGJuUnpPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZMkZzYkdKaFkyc29iblZzYkN3Z1gySjFaMTlqYjIxdFpXNTBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0p5OWlkV2N2SnlBcklHbGtJQ3NnSnk5amIyMXRaVzUwSnl4Y2JpQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdYMk5oYkd4aVlXTnJMRnh1SUNBZ0lDQWdKMkoxWjNNblhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHRmtaRU52YlcxbGJuUWdLR2xrTENCamIyMXRaVzUwTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5Wbkx5Y2dLeUJwWkNBcklDY3ZZMjl0YldWdWRDY3NYRzRnSUNBZ0lDQW5VRTlUVkNjc1hHNGdJQ0FnSUNCallXeHNZbUZqYXl4Y2JpQWdJQ0FnSUc1MWJHd3NYRzRnSUNBZ0lDQmpiMjF0Wlc1MFhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHSjFaMGhwYzNSdmNua2dLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5Wbkx5Y2dLeUJwWkNBcklDY3ZhR2x6ZEc5eWVTY3NYRzRnSUNBZ0lDQW5SMFZVSnl4Y2JpQWdJQ0FnSUdOaGJHeGlZV05yTEZ4dUlDQWdJQ0FnSjJKMVozTW5YRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJHYVc1a2N5QmhiR3dnWVhSMFlXTm9iV1Z1ZEhNZ1ptOXlJR0VnWjJsMlpXNGdZblZuSUNOY2JpQWdJQ29nYUhSMGNEb3ZMM2QzZHk1aWRXZDZhV3hzWVM1dmNtY3ZaRzlqY3k5MGFYQXZaVzR2YUhSdGJDOWhjR2t2UW5WbmVtbHNiR0V2VjJWaVUyVnlkbWxqWlM5Q2RXY3VhSFJ0YkNOaGRIUmhZMmh0Wlc1MGMxeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMDUxYldKbGNuMGdhV1FnYjJZZ1luVm5MbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmJSWEp5YjNJc0lFRnljbUY1UEVGMGRHRmphRzFsYm5RK1hTNWNiaUFnSUNvdlhHNGdJR0oxWjBGMGRHRmphRzFsYm5SeklDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxrRlFTVkpsY1hWbGMzUW9YRzRnSUNBZ0lDQW5MMkoxWnk4bklDc2dhV1FnS3lBbkwyRjBkR0ZqYUcxbGJuUW5MRnh1SUNBZ0lDQWdKMGRGVkNjc1hHNGdJQ0FnSUNCbGVIUnlZV04wUm1sbGJHUW9hV1FzSUdOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUNkaWRXZHpKMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JqY21WaGRHVkJkSFJoWTJodFpXNTBJQ2hwWkN3Z1lYUjBZV05vYldWdWRDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb1hHNGdJQ0FnSUNBbkwySjFaeThuSUNzZ2FXUWdLeUFuTDJGMGRHRmphRzFsYm5RbkxGeHVJQ0FnSUNBZ0oxQlBVMVFuTEZ4dUlDQWdJQ0FnWlhoMGNtRmpkRVpwWld4a0tHTmhiR3hpWVdOcktTeGNiaUFnSUNBZ0lDZGhkSFJoWTJodFpXNTBjeWNzWEc0Z0lDQWdJQ0JoZEhSaFkyaHRaVzUwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRFRjBkR0ZqYUcxbGJuUWdLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5WbkwyRjBkR0ZqYUcxbGJuUXZKeUFySUdsa0xGeHVJQ0FnSUNBZ0owZEZWQ2NzWEc0Z0lDQWdJQ0JsZUhSeVlXTjBSbWxsYkdRb1kyRnNiR0poWTJzcExGeHVJQ0FnSUNBZ0oyRjBkR0ZqYUcxbGJuUnpKMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0IxY0dSaGRHVkJkSFJoWTJodFpXNTBJQ2hwWkN3Z1lYUjBZV05vYldWdWRDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb0p5OWlkV2N2WVhSMFlXTm9iV1Z1ZEM4bklDc2dhV1FzSUNkUVZWUW5MQ0JqWVd4c1ltRmpheXdnSjI5ckp5d2dZWFIwWVdOb2JXVnVkQ2s3WEc0Z0lIMWNibHh1SUNCelpXRnlZMmhWYzJWeWN5QW9iV0YwWTJnc0lHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmRYTmxjaWNzSUNkSFJWUW5MQ0JqWVd4c1ltRmpheXdnSjNWelpYSnpKeXdnYm5Wc2JDd2dlMjFoZEdOb09pQnRZWFJqYUgwcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVlhObGNpQW9hV1FzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnZEdocGN5NUJVRWxTWlhGMVpYTjBLRnh1SUNBZ0lDQWdKeTkxYzJWeUx5Y2dLeUJwWkN4Y2JpQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdaWGgwY21GamRFWnBaV3hrS0dOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUNkMWMyVnljeWRjYmlBZ0lDQXBPMXh1SUNCOVhHNWNiaUFnWjJWMFUzVm5aMlZ6ZEdWa1VtVjJhV1YzWlhKeklDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0F2THlCQ1RVOHRJSE53WldOcFptbGpJR1Y0ZEdWdWMybHZiaUIwYnlCblpYUWdjM1ZuWjJWemRHVmtJSEpsZG1sbGQyVnljeUJtYjNJZ1lTQm5hWFpsYmlCaWRXZGNiaUFnSUNBdkx5Qm9kSFJ3T2k4dllucHlMbTF2ZW1sc2JHRXViM0puTDJKdGJ5ODBMakl2ZG1sbGR5OW9aV0ZrT2k5bGVIUmxibk5wYjI1ekwxSmxkbWxsZHk5c2FXSXZWMlZpVTJWeWRtbGpaUzV3YlNOTU1UQXlYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmNtVjJhV1YzTDNOMVoyZGxjM1JwYjI1ekx5Y2dLeUJwWkN3Z0owZEZWQ2NzSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1WEc0Z0lDOHFYRzRnSUNBZ1dGaFlJSFJvYVhNZ1kyRnNiQ0JwY3lCd2NtOTJhV1JsWkNCbWIzSWdZMjl1ZG1WdWFXVnVZMlVnZEc4Z2NHVnZjR3hsSUhOamNtbHdkR2x1WnlCaFoyRnBibk4wSUhCeWIyUWdZblZuZW1sc2JIRmNiaUFnSUNCVVNFVlNSU0JKVXlCT1R5QkZVVlZKVmtGTVJVNVVJRkpGVTFRZ1EwRk1UQ0JKVGlCVVNWQXNJSE52SUhSb2FYTWdjMmh2ZFd4a0lHNXZkQ0JpWlNCMFpYTjBaV1FnWVdkaGFXNXpkQ0IwYVhBc0lHaGxibU5sWEc0Z0lDQWdkR2hsSUdoaGNtUXRZMjlrWldRZ2RYSnNMbHh1SUNBcUwxeHVJQ0JuWlhSRGIyNW1hV2QxY21GMGFXOXVJQ2h3WVhKaGJYTXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdhV1lnS0NGallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUNBZ0lHTmhiR3hpWVdOcklEMGdjR0Z5WVcxek8xeHVJQ0FnSUNBZ0lIQmhjbUZ0Y3lBOUlIdDlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDZ25MMk52Ym1acFozVnlZWFJwYjI0bkxDQW5SMFZVSnl3Z1kyRnNiR0poWTJzc0lHNTFiR3dzSUc1MWJHd3NJSEJoY21GdGN5azdYRzRnSUNBZ0x5OGdWVWRNUVZrZ2RHVnRjQ0JtYVhnZ2RXNTBhV3dnTDJOdmJtWnBaM1Z5WVhScGIyNGdhWE1nYVcxd2JHVnRaVzUwWldRc1hHNGdJQ0FnTHk4Z2MyVmxJR2gwZEhCek9pOHZZblZuZW1sc2JHRXViVzk2YVd4c1lTNXZjbWN2YzJodmQxOWlkV2N1WTJkcFAybGtQVGt5TkRRd05TTmpNVEU2WEc0Z0lDQWdiR1YwSUhSb1lYUWdQU0IwYUdsek8xeHVYRzRnSUNBZ2RtRnlJSEpsY1NBOUlHNWxkeUJZVFV4SWRIUndVbVZ4ZFdWemRDZ3BPMXh1SUNBZ0lISmxjUzV2Y0dWdUtDZEhSVlFuTENBbmFIUjBjSE02THk5aGNHa3RaR1YyTG1KMVozcHBiR3hoTG0xdmVtbHNiR0V1YjNKbkwyeGhkR1Z6ZEM5amIyNW1hV2QxY21GMGFXOXVKeXdnZEhKMVpTazdYRzRnSUNBZ2NtVnhMbk5sZEZKbGNYVmxjM1JJWldGa1pYSW9YQ0pCWTJObGNIUmNJaXdnWENKaGNIQnNhV05oZEdsdmJpOXFjMjl1WENJcE8xeHVJQ0FnSUhKbGNTNXZibkpsWVdSNWMzUmhkR1ZqYUdGdVoyVWdQU0JtZFc1amRHbHZiaUFvWlhabGJuUXBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpYRXVjbVZoWkhsVGRHRjBaU0E5UFNBMElDWW1JSEpsY1M1emRHRjBkWE1nSVQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0IwYUdGMExtaGhibVJzWlZKbGMzQnZibk5sS0c1MWJHd3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuUnBiV1Z2ZFhRZ1BTQjBhR2x6TG5ScGJXVnZkWFE3WEc0Z0lDQWdjbVZ4TG05dWRHbHRaVzkxZENBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTZ25kR2x0Wlc5MWRDY3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExtOXVaWEp5YjNJZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9KMlZ5Y205eUp5d2djbVZ4TENCallXeHNZbUZqYXlrN1hHNGdJQ0FnZlR0Y2JpQWdJQ0J5WlhFdWMyVnVaQ2dwTzF4dUlDQjlYRzVjYmlBZ1oyVjBVSEp2WkhWamRITWdLSEJ5YjJSMVkzUXBJSHRjYmlBZ0lDQjJZWElnWDNSb2FYTWdQU0IwYUdsek8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNobWRXNWpkR2x2YmloeVpYTnZiSFpsTENCeVpXcGxZM1FwSUh0Y2JpQWdJQ0FnSUdsbUtDQndjbTlrZFdOMElEMDlQU0JjSW5ObGJHVmpkR0ZpYkdWY0lpQjhmQ0J3Y205a2RXTjBJRDA5UFNCY0ltVnVkR1Z5WVdKc1pWd2lJSHg4SUhCeWIyUjFZM1FnUFQwOUlGd2lZV05qWlhOemFXSnNaVndpSUNrZ2UxeHVJQ0FnSUNBZ0lDQmZkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0lDQWdJQ2N2Y0hKdlpIVmpkRDkwZVhCbFBTY2dLeUJ3Y205a2RXTjBMRnh1SUNBZ0lDQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdJQ0FnSUdaMWJtTjBhVzl1S0dWeWNpd2djSEp2WkhWamRITXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1LR1Z5Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLR1Z5Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNod2NtOWtkV04wY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdYM1JvYVhNdVFWQkpVbVZ4ZFdWemRDaGNiaUFnSUNBZ0lDQWdJQ0FuTDNCeWIyUjFZM1F2SnlBcklIQnliMlIxWTNRc1hHNGdJQ0FnSUNBZ0lDQWdKMGRGVkNjc1hHNGdJQ0FnSUNBZ0lDQWdablZ1WTNScGIyNG9aWEp5TENCd2NtOWtkV04wY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZb1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb1pYSnlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLSEJ5YjJSMVkzUnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQm5aWFJRY205a2RXTjBJQ2h3Y205a2RXTjBLU0I3WEc0Z0lDQWdkbUZ5SUY5MGFHbHpJRDBnZEdocGN6dGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0b2NtVnpiMngyWlN3Z2NtVnFaV04wS1NCN1hHNGdJQ0FnSUNCZmRHaHBjeTVCVUVsU1pYRjFaWE4wS0Z4dUlDQWdJQ0FnSUNBbkwzQnliMlIxWTNRdkp5QXJJSEJ5YjJSMVkzUXNYRzRnSUNBZ0lDQWdJQ2RIUlZRbkxGeHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpaGxjbklzSUhCeWIyUjFZM1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dWeWNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0dWeWNpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHdjbTlrZFdOMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnUVZCSlVtVnhkV1Z6ZENBb2NHRjBhQ3dnYldWMGFHOWtMQ0JqWVd4c1ltRmpheXdnWm1sbGJHUXNJR0p2Wkhrc0lIQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDOHZJR2xtSUhkbElHRnlaU0JrYjJsdVp5QjBhR1VnYkc5bmFXNWNiaUFnSUNBZ0lIQmhkR2dnUFQwOUlFeFBSMGxPSUh4OFhHNGdJQ0FnSUNBdkx5QnBaaUIzWlNCaGNtVWdZV3h5WldGa2VTQmhkWFJvWldSY2JpQWdJQ0FnSUhSb2FYTXVYMkYxZEdnZ2ZIeGNiaUFnSUNBZ0lDOHZJRzl5SUhkbElHRnlaU0J0YVhOemFXNW5JR0YxZEdnZ1pHRjBZVnh1SUNBZ0lDQWdJWFJvYVhNdWNHRnpjM2R2Y21RZ2ZId2dJWFJvYVhNdWRYTmxjbTVoYldWY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUM4dklITnJhWEFnWVhWMGIyMWhkR2xqSUdGMWRHaGxiblJwWTJGMGFXOXVYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVmUVZCSlVtVnhkV1Z6ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JoY21keklEMGdXMTB1YzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNcE8xeHVYRzRnSUNBZ2RHaHBjeTVzYjJkcGJpaG1kVzVqZEdsdmJpaGxjbklwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmUVZCSlVtVnhkV1Z6ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWR6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5WEc1Y2JpQWdYMEZRU1ZKbGNYVmxjM1FnS0hCaGRHZ3NJRzFsZEdodlpDd2dZMkZzYkdKaFkyc3NJR1pwWld4a0xDQmliMlI1TENCd1lYSmhiWE1wSUh0Y2JpQWdJQ0JzWlhRZ2RYSnNJRDBnZEdocGN5NWhjR2xWY213Z0t5QndZWFJvTzF4dVhHNGdJQ0FnY0dGeVlXMXpJRDBnY0dGeVlXMXpJSHg4SUh0OU8xeHVYRzRnSUNBZ2FXWW9kR2hwY3k1aGNHbGZhMlY1S1NCN0lIQmhjbUZ0Y3k1aGNHbGZhMlY1SUQwZ2RHaHBjeTVoY0dsZmEyVjVPeUI5WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmWVhWMGFDa2dlMXh1SUNBZ0lDQWdjR0Z5WVcxekxuUnZhMlZ1SUQwZ2RHaHBjeTVmWVhWMGFDNTBiMnRsYmp0Y2JpQWdJQ0I5WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWMyVnlibUZ0WlNBbUppQjBhR2x6TG5CaGMzTjNiM0prS1NCN1hHNGdJQ0FnSUNCd1lYSmhiWE11Ykc5bmFXNGdQU0IwYUdsekxuVnpaWEp1WVcxbE8xeHVJQ0FnSUNBZ2NHRnlZVzF6TG5CaGMzTjNiM0prSUQwZ2RHaHBjeTV3WVhOemQyOXlaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvY0dGeVlXMXpJQ1ltSUU5aWFtVmpkQzVyWlhsektIQmhjbUZ0Y3lrdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdkWEpzSUNzOUlGd2lQMXdpSUNzZ2RHaHBjeTUxY214RmJtTnZaR1VvY0dGeVlXMXpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmliMlI1SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvWW05a2VTazdYRzVjYmlBZ0lDQnNaWFFnZEdoaGRDQTlJSFJvYVhNN1hHNWNiaUFnSUNCMllYSWdjbVZ4SUQwZ2JtVjNJRmhOVEVoMGRIQlNaWEYxWlhOMEtDazdYRzRnSUNBZ2NtVnhMbTl3Wlc0b2JXVjBhRzlrTENCMWNtd3NJSFJ5ZFdVcE8xeHVJQ0FnSUhKbGNTNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtGd2lRV05qWlhCMFhDSXNJRndpWVhCd2JHbGpZWFJwYjI0dmFuTnZibHdpS1R0Y2JpQWdJQ0JwWmlBb2JXVjBhRzlrTG5SdlZYQndaWEpEWVhObEtDa2dJVDA5SUZ3aVIwVlVYQ0lwSUh0Y2JpQWdJQ0FnSUhKbGNTNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtGd2lRMjl1ZEdWdWRDMVVlWEJsWENJc0lGd2lZWEJ3YkdsallYUnBiMjR2YW5OdmJsd2lLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVnhMbTl1Y21WaFpIbHpkR0YwWldOb1lXNW5aU0E5SUdaMWJtTjBhVzl1SUNobGRtVnVkQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tISmxjUzV5WldGa2VWTjBZWFJsSUQwOUlEUWdKaVlnY21WeExuTjBZWFIxY3lBaFBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhSb1lYUXVhR0Z1Wkd4bFVtVnpjRzl1YzJVb2JuVnNiQ3dnY21WeExDQmpZV3hzWW1GamF5d2dabWxsYkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuUnBiV1Z2ZFhRZ1BTQjBhR2x6TG5ScGJXVnZkWFE3WEc0Z0lDQWdjbVZ4TG05dWRHbHRaVzkxZENBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTZ25kR2x0Wlc5MWRDY3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExtOXVaWEp5YjNJZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9aWFpsYm5Rc0lISmxjU3dnWTJGc2JHSmhZMnNwTzF4dUlDQWdJSDA3WEc0Z0lDQWdjbVZ4TG5ObGJtUW9ZbTlrZVNrN1hHNGdJSDFjYmx4dUlDQm9ZVzVrYkdWU1pYTndiMjV6WlNBb1pYSnlMQ0J5WlhOd2IyNXpaU3dnWTJGc2JHSmhZMnNzSUdacFpXeGtLU0I3WEc0Z0lDQWdMeThnWkdWMFpXTjBJSFJwYldWdmRYUWdaWEp5YjNKelhHNGdJQ0FnYVdZZ0tHVnljaUFtSmlCbGNuSXVZMjlrWlNBbUppQlVTVTFGVDFWVVgwVlNVazlTVXk1cGJtUmxlRTltS0dWeWNpNWpiMlJsS1NBaFBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJqWVd4c1ltRmpheWh1WlhjZ1JYSnliM0lvSjNScGJXVnZkWFFuS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z2FHRnVaR3hsSUdkbGJtVnlhV01nWlhKeWIzSnpYRzRnSUNBZ2FXWWdLR1Z5Y2lrZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0dWeWNpazdYRzVjYmlBZ0lDQXZMeUJoYm5sMGFHbHVaeUJwYmlBeU1EQWdjM1JoZEhWeklISmhibWRsSUdseklHRWdjM1ZqWTJWemMxeHVJQ0FnSUhaaGNpQnlaWEYxWlhOMFUzVmpZMlZ6YzJaMWJDQTlJSEpsYzNCdmJuTmxMbk4wWVhSMWN5QStJREU1T1NBbUppQnlaWE53YjI1elpTNXpkR0YwZFhNZ1BDQXpNREE3WEc1Y2JpQWdJQ0F2THlCbGRtVnVJR2x1SUhSb1pTQmpZWE5sSUc5bUlHRnVJSFZ1YzNWalkyVnpjMloxYkNCeVpYRjFaWE4wSUhkbElHMWhlU0JvWVhabElHcHpiMjRnWkdGMFlTNWNiaUFnSUNCMllYSWdjR0Z5YzJWa1FtOWtlVHRjYmx4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNCd1lYSnpaV1JDYjJSNUlEMGdTbE5QVGk1d1lYSnpaU2h5WlhOd2IyNXpaUzV5WlhOd2IyNXpaVlJsZUhRcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDOHZJRmhZV0RvZ2JXbG5hSFFnZDJGdWRDQjBieUJvWVc1a2JHVWdkR2hwY3lCaVpYUjBaWElnYVc0Z2RHaGxJSEpsY1hWbGMzUWdjM1ZqWTJWemN5QmpZWE5sUDF4dUlDQWdJQ0FnYVdZZ0tISmxjWFZsYzNSVGRXTmpaWE56Wm5Wc0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpZV3hzWW1GamF5aGNiaUFnSUNBZ0lDQWdJQ0J1WlhjZ1JYSnliM0lvSjNKbGMzQnZibk5sSUhkaGN5QnViM1FnZG1Gc2FXUWdhbk52YmpvZ0p5QXJJSEpsYzNCdmJuTmxMbkpsYzNCdmJuTmxWR1Y0ZENsY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmtaWFJsWTNRZ2FXWWdkMlVuY21VZ2NuVnVibWx1WnlCQ2RXZDZhV3hzWVNBMUxqQmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlIQmhjbk5sWkVKdlpIbGJKM0psYzNWc2RDZGRJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdjR0Z5YzJWa1FtOWtlU0E5SUhCaGNuTmxaRUp2WkhsYkozSmxjM1ZzZENkZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklITjFZMk5sYzNObWRXd2dhSFIwY0NCeVpYTndibk5sSUdKMWRDQmhiaUJsY25KdmNseHVJQ0FnSUM4dklGaFlXRG9nZEdocGN5QnpaV1Z0Y3lCc2FXdGxJR0VnWW5WbklHbHVJSFJvWlNCaGNHa3VYRzRnSUNBZ2FXWWdLSEJoY25ObFpFSnZaSGtnSmlZZ2NHRnljMlZrUW05a2VTNWxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ2NtVnhkV1Z6ZEZOMVkyTmxjM05tZFd3Z1BTQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lYSmxjWFZsYzNSVGRXTmpaWE56Wm5Wc0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1kyRnNiR0poWTJzb2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQW5TRlJVVUNCemRHRjBkWE1nSnlBcklISmxjM0J2Ym5ObExuTjBZWFIxY3lBcklDZGNYRzRuSUN0Y2JpQWdJQ0FnSUNBZ0x5OGdibTkwWlNCcGJuUmxiblJwYjI1aGJDQjFjMlVnYjJZZ0lUMGdhVzV6ZEdWaFpDQnZaaUFoUFQxY2JpQWdJQ0FnSUNBZ0tIQmhjbk5sWkVKdlpIa2dKaVlnY0dGeWMyVmtRbTlrZVM1dFpYTnpZV2RsS1NBL0lIQmhjbk5sWkVKdlpIa3ViV1Z6YzJGblpTQTZJQ2NuWEc0Z0lDQWdJQ0FwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqWVd4c1ltRmpheWh1ZFd4c0xDQW9abWxsYkdRcElEOGdjR0Z5YzJWa1FtOWtlVnRtYVdWc1pGMGdPaUJ3WVhKelpXUkNiMlI1S1R0Y2JpQWdmVnh1WEc0Z0lIVnliRVZ1WTI5a1pTQW9jR0Z5WVcxektTQjdYRzRnSUNBZ2RtRnlJSFZ5YkNBOUlGdGRPMXh1SUNBZ0lHWnZjaWgyWVhJZ2NHRnlZVzBnYVc0Z2NHRnlZVzF6S1NCN1hHNGdJQ0FnSUNCMllYSWdkbUZzZFdWeklEMGdjR0Z5WVcxelczQmhjbUZ0WFR0Y2JpQWdJQ0FnSUdsbUtDRjJZV3gxWlhNdVptOXlSV0ZqYUNsY2JpQWdJQ0FnSUNBZ2RtRnNkV1Z6SUQwZ1czWmhiSFZsYzEwN1hHNGdJQ0FnSUNBdkx5QmxlSEJoYm1RZ1lXNTVJR0Z5Y21GNWMxeHVJQ0FnSUNBZ2RtRnNkV1Z6TG1admNrVmhZMmdvWm5WdVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUhWeWJDNXdkWE5vS0dWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENod1lYSmhiU2tnS3lCY0lqMWNJaUFyWEc0Z0lDQWdJQ0FnSUNBZ0lHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaDJZV3gxWlNrcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIxY213dWFtOXBiaWhjSWlaY0lpazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR055WldGMFpVTnNhV1Z1ZENodmNIUnBiMjV6S1NCN1hHNGdJSEpsZEhWeWJpQnVaWGNnUW5WbmVtbHNiR0ZEYkdsbGJuUW9iM0IwYVc5dWN5azdYRzU5WEc0aVhYMD0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIFhNTEh0dHBSZXF1ZXN0ID0gbnVsbDtcblxuZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0O1xuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXI/XG4gIHZhciBfbG9hZGVyID0gcmVxdWlyZTtcbiAgdHJ5IHtcbiAgICBleHBvcnRzLlhNTEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0ID0gX2xvYWRlcihcInhtbGh0dHByZXF1ZXN0XCIpLlhNTEh0dHBSZXF1ZXN0O1xuICB9XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gIGV4cG9ydHMuWE1MSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn0gZWxzZSB7XG4gIHRocm93IFwiTm8gd2luZG93LCBXQVQuXCI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTlWYzJWeWN5OXFiR0Z6ZEdWeUwzTnlZeTl0YjNwcGJHeGhMMko2TG1wekwzTnlZeTk0YUhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3UVVGQlR5eEpRVUZKTEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN096dEJRVVZxUXl4SlFVRkpMRTlCUVU4c1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQlJUczdRVUZGYWtNc1RVRkJTU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEzUkNMRTFCUVVrN1FVRkRSaXhaUVU1UExHTkJRV01zUjBGTmNrSXNZMEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eGpRVUZqTEVOQlFVTTdSMEZEZUVRc1EwRkJReXhQUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU5VTEZsQlVrOHNZMEZCWXl4SFFWRnlRaXhqUVVGakxFZEJRVWNzVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETzBkQlF6TkVPME5CUTBZc1RVRkRTU3hKUVVGSExFOUJRVThzVFVGQlRTeExRVUZMTEZkQlFWY3NTVUZCU1N4UFFVRlBMRTFCUVUwc1EwRkJReXhqUVVGakxFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEzSkdMRlZCV2xNc1kwRkJZeXhIUVZsMlFpeGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJRenREUVVONFF5eE5RVU5KTzBGQlEwZ3NVVUZCVFN4cFFrRkJhVUlzUTBGQlFUdERRVU40UWlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmVHaHlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUhaaGNpQllUVXhJZEhSd1VtVnhkV1Z6ZENBOUlHNTFiR3c3WEc1Y2JtbG1JQ2gwZVhCbGIyWWdkMmx1Wkc5M0lEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0F2THlCM1pTZHlaU0J1YjNRZ2FXNGdZU0JpY205M2MyVnlQMXh1SUNCc1pYUWdYMnh2WVdSbGNpQTlJSEpsY1hWcGNtVTdYRzRnSUhSeWVTQjdYRzRnSUNBZ1dFMU1TSFIwY0ZKbGNYVmxjM1FnUFNCZmJHOWhaR1Z5S0NkelpHc3ZibVYwTDNob2NpY3BMbGhOVEVoMGRIQlNaWEYxWlhOME8xeHVJQ0I5SUdOaGRHTm9LR1VwSUh0Y2JpQWdJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJRjlzYjJGa1pYSW9YQ0o0Yld4b2RIUndjbVZ4ZFdWemRGd2lLUzVZVFV4SWRIUndVbVZ4ZFdWemREdGNiaUFnZlZ4dWZWeHVaV3h6WlNCcFppaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmlCMGVYQmxiMllnZDJsdVpHOTNMbGhOVEVoMGRIQlNaWEYxWlhOMElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJSGRwYm1SdmR5NVlUVXhJZEhSd1VtVnhkV1Z6ZER0Y2JuMWNibVZzYzJVZ2UxeHVJQ0IwYUhKdmR5QmNJazV2SUhkcGJtUnZkeXdnVjBGVUxsd2lYRzU5WEc0aVhYMD0iXX0= diff --git a/package.json b/package.json index d99e8cc..479eb38 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "bz", "description": "Bugzilla REST API wrapper", - "version": "0.4.4", + "version": "0.4.5", "author": "Heather Arthur ", "scripts": { "test": "mocha -t 8000" diff --git a/src/index.js b/src/index.js index 0abf95c..9aae6b5 100644 --- a/src/index.js +++ b/src/index.js @@ -216,7 +216,7 @@ export var BugzillaClient = class { '/bug/' + id + '/attachment', 'POST', extractField(callback), - 'ids', + 'attachments', attachment ); } diff --git a/test/browser/files/bz.js b/test/browser/files/bz.js index 45dae2a..81e91bb 100644 --- a/test/browser/files/bz.js +++ b/test/browser/files/bz.js @@ -4,7 +4,7 @@ "use strict"; var bz = window.bz = require("./index"); - +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy9iei5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMiLCJmaWxlIjoiL1VzZXJzL2psYXN0ZXIvc3JjL21vemlsbGEvYnouanMvc3JjL2J6LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhpcyBmaWxlIGlzIHRoZSBlbnRyeXBvaW50IGZvciBidWlsZGluZyBhIGJyb3dzZXIgZmlsZSB3aXRoIGJyb3dzZXJpZnlcblxudmFyIGJ6ID0gd2luZG93LmJ6ID0gcmVxdWlyZShcIi4vaW5kZXhcIik7Il19 },{"./index":2}],2:[function(require,module,exports){ 'use strict'; @@ -212,7 +212,7 @@ var BugzillaClient = (function () { }, { key: 'createAttachment', value: function createAttachment(id, attachment, callback) { - this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'ids', attachment); + this.APIRequest('/bug/' + id + '/attachment', 'POST', extractField(callback), 'attachments', attachment); } }, { key: 'getAttachment', @@ -451,7 +451,7 @@ exports.BugzillaClient = BugzillaClient; function createClient(options) { return new BugzillaClient(options); } - +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxJQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDOzs7OztBQUt2RCxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7Ozs7O0FBS3ZCLElBQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7O0FBRXhELFNBQVMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUU7QUFDbEMsTUFBSSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUU7QUFDNUIsWUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQUUsR0FBRyxTQUFTLENBQUM7R0FDaEI7O0FBRUQsU0FBTyxVQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUU7QUFDN0IsUUFBSSxHQUFHLEVBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRTlCLFFBQUksUUFBUSxFQUFFOztBQUVaLFVBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtBQUNwQixVQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUMvQjtBQUNELGNBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDOUIsTUFDSTtBQUNILFlBQU0scUNBQXFDLENBQUM7S0FDN0M7R0FDRixDQUFDO0NBQ0g7Ozs7Ozs7Ozs7OztBQVlELFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTs7QUFFN0IsU0FBTyxZQUFXOzs7O0FBSWhCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7OztBQUU1QyxZQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFD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QUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FDdEMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvQixDQUFDLENBQUM7T0FDSjtBQUNELGFBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN0Qjs7O1NBaFpRLGNBQWM7SUFpWnhCLENBQUE7Ozs7QUFFTSxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDcEMsU0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUNwQyIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBYTUxIdHRwUmVxdWVzdCA9IHJlcXVpcmUoJy4veGhyJykuWE1MSHR0cFJlcXVlc3Q7XG5cbi8qKlxuQ29uc3RhbnQgZm9yIHRoZSBsb2dpbiBlbnRyeXBvaW50LlxuKi9cbmNvbnN0IExPR0lOID0gJy9sb2dpbic7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbmNvbnN0IFRJTUVPVVRfRVJST1JTID0gWydFVElNRURPVVQnLCAnRVNPQ0tFVFRJTUVET1VUJ107XG5cbmZ1bmN0aW9uIGV4dHJhY3RGaWVsZChpZCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gaWQ7XG4gICAgaWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oZXJyLCByZXNwb25zZSkge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAvLyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSB0aGUgZmlyc3QgaWQgd2hlbiB0aGUgY2FsbGVyIGRvZXMgbm90IHByb3ZpZGUgb25lLlxuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWQgPSBPYmplY3Qua2V5cyhyZXNwb25zZSlbMF07XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZVtpZF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IFwiRXJyb3I6LCBubyByZXNwb25zZSBpbiBleHRyYWN0RmllbGRcIjtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuRnVuY3Rpb24gZGVjb3JhdG9yIHdoaWNoIHdpbGwgYXR0ZW1wdCB0byBsb2dpbiB0byBidWd6aWxsYVxud2l0aCB0aGUgY3VycmVudCBjcmVkZW50aWFscyBwcmlvciB0byBtYWtpbmcgdGhlIGFjdHVhbCBhcGkgY2FsbC5cblxuICAgIEJ1Z3ppbGxhLnByb3RvdHlwZS5tZXRob2QgPSBsb2dpbihmdW5jdGlvbihwYXJhbSwgcGFyYW0pIHtcbiAgICB9KTtcblxuQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIHRvIGRlY29yYXRlLlxuQHJldHVybiB7RnVuY3Rpb259IGRlY29yYXRlZCBtZXRob2QuXG4qL1xuZnVuY3Rpb24gbG9naW5SZXF1aXJlZChtZXRob2QpIHtcbiAgLy8gd2UgYXNzdW1lIHRoaXMgaXMgYSB2YWxpZCBidWdpbGxhIGluc3RhbmNlLlxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgLy8gcmVtZW1iZXIgfHRoaXN8IGlzIGEgYnVnemlsbGEgaW5zdGFuY2VcblxuICAgIC8vIGFyZ3MgZm9yIHRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLFxuICAgICAgICAvLyB3ZSBuZWVkIHRoZSBjYWxsYmFjayBzbyB3ZSBjYW4gcGFzcyBsb2dpbiByZWxhdGVkIGVycm9ycy5cbiAgICAgICAgY2FsbGJhY2sgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICB0aGlzLmxvZ2luKGZ1bmN0aW9uKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIHdlIGFyZSBub3cgbG9nZ2VkIGluIHNvIHRoZSBtZXRob2QgY2FuIHJ1biFcbiAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9O1xufVxuXG5leHBvcnQgdmFyIEJ1Z3ppbGxhQ2xpZW50ID0gY2xhc3Mge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlVcmwgPSBvcHRpb25zLnVybCB8fCAnaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0Lyc7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuICAvKipcbiAgQXV0aGVudGljYXRpb24gZGV0YWlscyBmb3IgZ2l2ZW4gdXNlci5cblxuICBFeGFtcGxlOlxuXG4gICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cblxuICBAdHlwZSB7T2JqZWN0fVxuICAqL1xuXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG5cbiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgcHVibGljbHkgYnV0IGlzIGRlc2lnbmVkIGZvciBpbnRlcm5hbCBjb25zdW1wdGlvbiBmb3JcbiAgZWFzZSBvZiB1c2UuXG5cbiAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgW0Vycm9yIGVyciwgU3RyaW5nIHRva2VuXS5cbiAgKi9cbiAgbG9naW4gKGNhbGxiYWNrKSB7XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVzZXJuYW1lIHx8ICF0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkJyk7XG4gICAgfVxuXG4gICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgIGxvZ2luOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmRcbiAgICB9O1xuXG4gICAgdmFyIGhhbmRsZUxvZ2luID0gZnVuY3Rpb24gaGFuZGxlTG9naW4oZXJyLCByZXNwb25zZSkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICBpZiAocmVzcG9uc2UucmVzdWx0KSB7XG4gICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZS5yZXN1bHRcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvbG9naW4nLCAnR0VUJywgaGFuZGxlTG9naW4sIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gIH1cblxuICBnZXRCdWcgKGlkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICdidWdzJyxcbiAgICAgIG51bGwsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICB9XG5cbiAgc2VhcmNoQnVncyAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICB9XG5cbiAgdXBkYXRlQnVnIChpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBidWcpO1xuICB9XG5cbiAgY3JlYXRlQnVnIChidWcsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnJywgJ1BPU1QnLCBjYWxsYmFjaywgJ2lkJywgYnVnKTtcbiAgfVxuXG4gIGJ1Z0NvbW1lbnRzIChpZCwgY2FsbGJhY2spIHtcbiAgICB2YXIgX2NhbGxiYWNrID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKGUpIHRocm93IGU7XG4gICAgICB2YXIgX2J1Z19jb21tZW50cyA9IHJbaWRdO1xuICAgICAgaWYgKHR5cGVvZiBfYnVnX2NvbW1lbnRzWydjb21tZW50cyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBidWd6aWxsYSA1IDooXG4gICAgICAgIF9idWdfY29tbWVudHMgPSBfYnVnX2NvbW1lbnRzLmNvbW1lbnRzO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sobnVsbCwgX2J1Z19jb21tZW50cyk7XG4gICAgfVxuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9jb21tZW50JyxcbiAgICAgICdHRVQnLFxuICAgICAgX2NhbGxiYWNrLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIGFkZENvbW1lbnQgKGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvY29tbWVudCcsXG4gICAgICAnUE9TVCcsXG4gICAgICBjYWxsYmFjayxcbiAgICAgIG51bGwsXG4gICAgICBjb21tZW50XG4gICAgKTtcbiAgfVxuXG4gIGJ1Z0hpc3RvcnkgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvaGlzdG9yeScsXG4gICAgICAnR0VUJyxcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbGwgYXR0YWNobWVudHMgZm9yIGEgZ2l2ZW4gYnVnICNcbiAgICogaHR0cDovL3d3dy5idWd6aWxsYS5vcmcvZG9jcy90aXAvZW4vaHRtbC9hcGkvQnVnemlsbGEvV2ViU2VydmljZS9CdWcuaHRtbCNhdHRhY2htZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gaWQgb2YgYnVnLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbRXJyb3IsIEFycmF5PEF0dGFjaG1lbnQ+XS5cbiAgICovXG4gIGJ1Z0F0dGFjaG1lbnRzIChpZCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSxcbiAgICAgICdidWdzJ1xuICAgICk7XG4gIH1cblxuICBjcmVhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLFxuICAgICAgJ1BPU1QnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICdhdHRhY2htZW50cycsXG4gICAgICBhdHRhY2htZW50XG4gICAgKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnQgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2F0dGFjaG1lbnRzJ1xuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvYXR0YWNobWVudC8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ29rJywgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2hVc2VycyAobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvdXNlcicsICdHRVQnLCBjYWxsYmFjaywgJ3VzZXJzJywgbnVsbCwge21hdGNoOiBtYXRjaH0pO1xuICB9XG5cbiAgZ2V0VXNlciAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy91c2VyLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICd1c2VycydcbiAgICApO1xuICB9XG5cbiAgZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzIChpZCwgY2FsbGJhY2spIHtcbiAgICAvLyBCTU8tIHNwZWNpZmljIGV4dGVuc2lvbiB0byBnZXQgc3VnZ2VzdGVkIHJldmlld2VycyBmb3IgYSBnaXZlbiBidWdcbiAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvcmV2aWV3L3N1Z2dlc3Rpb25zLycgKyBpZCwgJ0dFVCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qXG4gICAgWFhYIHRoaXMgY2FsbCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgdG8gcGVvcGxlIHNjcmlwdGluZyBhZ2FpbnN0IHByb2QgYnVnemlsbHFcbiAgICBUSEVSRSBJUyBOTyBFUVVJVkFMRU5UIFJFU1QgQ0FMTCBJTiBUSVAsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aXAsIGhlbmNlXG4gICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAqL1xuICBnZXRDb25maWd1cmF0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRoaXMuQVBJUmVxdWVzdCgnL2NvbmZpZ3VyYXRpb24nLCAnR0VUJywgY2FsbGJhY2ssIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKG51bGwsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEuc2VuZCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMgKHByb2R1Y3QpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGlmKCBwcm9kdWN0ID09PSBcInNlbGVjdGFibGVcIiB8fCBwcm9kdWN0ID09PSBcImVudGVyYWJsZVwiIHx8IHByb2R1Y3QgPT09IFwiYWNjZXNzaWJsZVwiICkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAgICcvcHJvZHVjdD90eXBlPScgKyBwcm9kdWN0LFxuICAgICAgICAgICdHRVQnLFxuICAgICAgICAgIGZ1bmN0aW9uKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcbiAgICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICAgJ0dFVCcsXG4gICAgICAgICAgZnVuY3Rpb24oZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9kdWN0IChwcm9kdWN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICdHRVQnLFxuICAgICAgICBmdW5jdGlvbihlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgQVBJUmVxdWVzdCAocGF0aCwgbWV0aG9kLCBjYWxsYmFjaywgZmllbGQsIGJvZHksIHBhcmFtcykge1xuICAgIGlmIChcbiAgICAgIC8vIGlmIHdlIGFyZSBkb2luZyB0aGUgbG9naW5cbiAgICAgIHBhdGggPT09IExPR0lOIHx8XG4gICAgICAvLyBpZiB3ZSBhcmUgYWxyZWFkeSBhdXRoZWRcbiAgICAgIHRoaXMuX2F1dGggfHxcbiAgICAgIC8vIG9yIHdlIGFyZSBtaXNzaW5nIGF1dGggZGF0YVxuICAgICAgIXRoaXMucGFzc3dvcmQgfHwgIXRoaXMudXNlcm5hbWVcbiAgICApIHtcbiAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGxldCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgdGhpcy5sb2dpbihmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9XG5cbiAgX0FQSVJlcXVlc3QgKHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgaWYodGhpcy5hcGlfa2V5KSB7IHBhcmFtcy5hcGlfa2V5ID0gdGhpcy5hcGlfa2V5OyB9XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgcGFyYW1zLnRva2VuID0gdGhpcy5fYXV0aC50b2tlbjtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgcGFyYW1zLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdXJsICs9IFwiP1wiICsgdGhpcy51cmxFbmNvZGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICBsZXQgdGhhdCA9IHRoaXM7XG5cbiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICBpZiAobWV0aG9kLnRvVXBwZXJDYXNlKCkgIT09IFwiR0VUXCIpIHtcbiAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjaywgZmllbGQpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cblxuICBoYW5kbGVSZXNwb25zZSAoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgLy8gZGV0ZWN0IHRpbWVvdXQgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAmJiBUSU1FT1VUX0VSUk9SUy5pbmRleE9mKGVyci5jb2RlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIGdlbmVyaWMgZXJyb3JzXG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAvLyBhbnl0aGluZyBpbiAyMDAgc3RhdHVzIHJhbmdlIGlzIGEgc3VjY2Vzc1xuICAgIHZhciByZXF1ZXN0U3VjY2Vzc2Z1bCA9IHJlc3BvbnNlLnN0YXR1cyA+IDE5OSAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDA7XG5cbiAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICB2YXIgcGFyc2VkQm9keTtcblxuICAgIHRyeSB7XG4gICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFhYWDogbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBiZXR0ZXIgaW4gdGhlIHJlcXVlc3Qgc3VjY2VzcyBjYXNlP1xuICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBuZXcgRXJyb3IoJ3Jlc3BvbnNlIHdhcyBub3QgdmFsaWQganNvbjogJyArIHJlc3BvbnNlLnJlc3BvbnNlVGV4dClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcGFyc2VkQm9keSA9IHBhcnNlZEJvZHlbJ3Jlc3VsdCddO1xuICAgIH1cblxuICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgIC8vIFhYWDogdGhpcyBzZWVtcyBsaWtlIGEgYnVnIGluIHRoZSBhcGkuXG4gICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKFxuICAgICAgICAnSFRUUCBzdGF0dXMgJyArIHJlc3BvbnNlLnN0YXR1cyArICdcXG4nICtcbiAgICAgICAgLy8gbm90ZSBpbnRlbnRpb25hbCB1c2Ugb2YgIT0gaW5zdGVhZCBvZiAhPT1cbiAgICAgICAgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhudWxsLCAoZmllbGQpID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgfVxuXG4gIHVybEVuY29kZSAocGFyYW1zKSB7XG4gICAgdmFyIHVybCA9IFtdO1xuICAgIGZvcih2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zW3BhcmFtXTtcbiAgICAgIGlmKCF2YWx1ZXMuZm9yRWFjaClcbiAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgIHVybC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbSkgKyBcIj1cIiArXG4gICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuam9pbihcIiZcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgQnVnemlsbGFDbGllbnQob3B0aW9ucyk7XG59XG4iXX0= },{"./xhr":3}],3:[function(require,module,exports){ 'use strict'; @@ -474,6 +474,6 @@ if (typeof window === 'undefined') { } else { throw "No window, WAT."; } - +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9qbGFzdGVyL3NyYy9tb3ppbGxhL2J6LmpzL3NyYy94aHIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7OztBQUVqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTs7QUFFakMsTUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3RCLE1BQUk7QUFDRixZQU5PLGNBQWMsR0FNckIsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLENBQUM7R0FDeEQsQ0FBQyxPQUFNLENBQUMsRUFBRTtBQUNULFlBUk8sY0FBYyxHQVFyQixjQUFjLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDO0dBQzNEO0NBQ0YsTUFDSSxJQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLE1BQU0sQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFO0FBQ3JGLFVBWlMsY0FBYyxHQVl2QixjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUN4QyxNQUNJO0FBQ0gsUUFBTSxpQkFBaUIsQ0FBQTtDQUN4QiIsImZpbGUiOiIvVXNlcnMvamxhc3Rlci9zcmMvbW96aWxsYS9iei5qcy9zcmMveGhyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBYTUxIdHRwUmVxdWVzdCA9IG51bGw7XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAvLyB3ZSdyZSBub3QgaW4gYSBicm93c2VyP1xuICBsZXQgX2xvYWRlciA9IHJlcXVpcmU7XG4gIHRyeSB7XG4gICAgWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoKGUpIHtcbiAgICBYTUxIdHRwUmVxdWVzdCA9IF9sb2FkZXIoXCJ4bWxodHRwcmVxdWVzdFwiKS5YTUxIdHRwUmVxdWVzdDtcbiAgfVxufVxuZWxzZSBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn1cbmVsc2Uge1xuICB0aHJvdyBcIk5vIHdpbmRvdywgV0FULlwiXG59XG4iXX0= },{}]},{},[1]) -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvYXVta2FyYS93b3Jrc3BhY2UvYnouanMvc3JjL2J6LmpzIiwiL1VzZXJzL2F1bWthcmEvd29ya3NwYWNlL2J6LmpzL3NyYy9pbmRleC5qcyIsIi9Vc2Vycy9hdW1rYXJhL3dvcmtzcGFjZS9iei5qcy9zcmMveGhyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQ0VBLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNGeEMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQzs7Ozs7QUFLdkQsSUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDOzs7OztBQUt2QixJQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDOztBQUV4RCxTQUFTLFlBQVksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO0FBQ2xDLE1BQUksT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO0FBQzVCLFlBQVEsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFFLEdBQUcsU0FBUyxDQUFDO0dBQ2hCOztBQUVELFNBQU8sVUFBUyxHQUFHLEVBQUUsUUFBUSxFQUFFO0FBQzdCLFFBQUksR0FBRyxFQUFFLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUU5QixRQUFJLFFBQVEsRUFBRTs7QUFFWixVQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7QUFDcEIsVUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDL0I7QUFDRCxjQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzlCLE1BQ0k7QUFDSCxZQUFNLHFDQUFxQyxDQUFDO0tBQzdDO0dB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ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIHRoaXMgZmlsZSBpcyB0aGUgZW50cnlwb2ludCBmb3IgYnVpbGRpbmcgYSBicm93c2VyIGZpbGUgd2l0aCBicm93c2VyaWZ5XG5cbnZhciBieiA9IHdpbmRvdy5ieiA9IHJlcXVpcmUoXCIuL2luZGV4XCIpOyIsImNvbnN0IFhNTEh0dHBSZXF1ZXN0ID0gcmVxdWlyZSgnLi94aHInKS5YTUxIdHRwUmVxdWVzdDtcblxuLyoqXG5Db25zdGFudCBmb3IgdGhlIGxvZ2luIGVudHJ5cG9pbnQuXG4qL1xuY29uc3QgTE9HSU4gPSAnL2xvZ2luJztcblxuLyoqXG5FcnJvcnMgcmVsYXRlZCB0byB0aGUgc29ja2V0IHRpbWVvdXQuXG4qL1xuY29uc3QgVElNRU9VVF9FUlJPUlMgPSBbJ0VUSU1FRE9VVCcsICdFU09DS0VUVElNRURPVVQnXTtcblxuZnVuY3Rpb24gZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGlkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBpZDtcbiAgICBpZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihlcnIsIHJlc3BvbnNlKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gdXNlIHRoZSBmaXJzdCBpZCB3aGVuIHRoZSBjYWxsZXIgZG9lcyBub3QgcHJvdmlkZSBvbmUuXG4gICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZCA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKVswXTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlW2lkXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgXCJFcnJvcjosIG5vIHJlc3BvbnNlIGluIGV4dHJhY3RGaWVsZFwiO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG5GdW5jdGlvbiBkZWNvcmF0b3Igd2hpY2ggd2lsbCBhdHRlbXB0IHRvIGxvZ2luIHRvIGJ1Z3ppbGxhXG53aXRoIHRoZSBjdXJyZW50IGNyZWRlbnRpYWxzIHByaW9yIHRvIG1ha2luZyB0aGUgYWN0dWFsIGFwaSBjYWxsLlxuXG4gICAgQnVnemlsbGEucHJvdG90eXBlLm1ldGhvZCA9IGxvZ2luKGZ1bmN0aW9uKHBhcmFtLCBwYXJhbSkge1xuICAgIH0pO1xuXG5AcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgdG8gZGVjb3JhdGUuXG5AcmV0dXJuIHtGdW5jdGlvbn0gZGVjb3JhdGVkIG1ldGhvZC5cbiovXG5mdW5jdGlvbiBsb2dpblJlcXVpcmVkKG1ldGhvZCkge1xuICAvLyB3ZSBhc3N1bWUgdGhpcyBpcyBhIHZhbGlkIGJ1Z2lsbGEgaW5zdGFuY2UuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAvLyByZW1lbWJlciB8dGhpc3wgaXMgYSBidWd6aWxsYSBpbnN0YW5jZVxuXG4gICAgLy8gYXJncyBmb3IgdGhlIGRlY29yYXRlZCBtZXRob2RcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksXG4gICAgICAgIC8vIHdlIG5lZWQgdGhlIGNhbGxiYWNrIHNvIHdlIGNhbiBwYXNzIGxvZ2luIHJlbGF0ZWQgZXJyb3JzLlxuICAgICAgICBjYWxsYmFjayA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcblxuICAgIHRoaXMubG9naW4oZnVuY3Rpb24oZXJyKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgICAgLy8gd2UgYXJlIG5vdyBsb2dnZWQgaW4gc28gdGhlIG1ldGhvZCBjYW4gcnVuIVxuICAgICAgbWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgQnVnemlsbGFDbGllbnQgPSBjbGFzcyB7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy51c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XG4gICAgdGhpcy5wYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQ7XG4gICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0IHx8IDA7XG4gICAgdGhpcy5hcGlfa2V5ID0gb3B0aW9ucy5hcGlfa2V5IHx8IG51bGw7XG5cbiAgICBpZiAob3B0aW9ucy50ZXN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMudGVzdCBpcyBkZXByZWNhdGVkIHBsZWFzZSBzcGVjaWZ5IHRoZSB1cmwgZGlyZWN0bHknKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaVVybCA9IG9wdGlvbnMudXJsIHx8ICdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Jlc3QvJztcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuYXBpVXJsLnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcblxuICAgIHRoaXMuX2F1dGggPSBudWxsO1xuICB9XG4gIC8qKlxuICBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBnaXZlbiB1c2VyLlxuXG4gIEV4YW1wbGU6XG5cbiAgICAgIHsgaWQ6IDEyMjIsIHRva2VuOiAneHh4eCcgfVxuXG4gIEB0eXBlIHtPYmplY3R9XG4gICovXG5cblxuICAvKipcbiAgSW4gdGhlIFJFU1QgQVBJIHdlIGZpcnN0IGxvZ2luIHRvIGFjcXVpcmUgYSB0b2tlbiB3aGljaCBpcyB0aGVuIHVzZWQgdG8gbWFrZVxuICByZXF1ZXN0cy4gU2VlOiBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9CdWd6aWxsYS9XZWJTZXJ2aWNlL1NlcnZlci9SRVNULnBtI0w1NTZcblxuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cblxuICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBbRXJyb3IgZXJyLCBTdHJpbmcgdG9rZW5dLlxuICAqL1xuICBsb2dpbiAoY2FsbGJhY2spIHtcblxuICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCB0aGlzLl9hdXRoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXNlcm5hbWUgfHwgIXRoaXMucGFzc3dvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBvciBpbnZhbGlkIC51c2VybmFtZSBvciAucGFzc3dvcmQnKTtcbiAgICB9XG5cbiAgICB2YXIgcGFyYW1zID0ge1xuICAgICAgbG9naW46IHRoaXMudXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZFxuICAgIH07XG5cbiAgICB2YXIgaGFuZGxlTG9naW4gPSBmdW5jdGlvbiBoYW5kbGVMb2dpbihlcnIsIHJlc3BvbnNlKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fYXV0aCA9IHJlc3BvbnNlLnJlc3VsdFxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlKTtcbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9sb2dpbicsICdHRVQnLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgfVxuXG4gIGdldEJ1ZyAoaWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgcGFyYW1zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2J1Z3MnLFxuICAgICAgbnVsbCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gIH1cblxuICBzZWFyY2hCdWdzIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnJywgJ0dFVCcsIGNhbGxiYWNrLCAnYnVncycsIG51bGwsIHBhcmFtcyk7XG4gIH1cblxuICB1cGRhdGVCdWcgKGlkLCBidWcsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCwgJ1BVVCcsIGNhbGxiYWNrLCAnYnVncycsIGJ1Zyk7XG4gIH1cblxuICBjcmVhdGVCdWcgKGJ1ZywgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcnLCAnUE9TVCcsIGNhbGxiYWNrLCAnaWQnLCBidWcpO1xuICB9XG5cbiAgYnVnQ29tbWVudHMgKGlkLCBjYWxsYmFjaykge1xuICAgIHZhciBfY2FsbGJhY2sgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgICBpZiAoZSkgdGhyb3cgZTtcbiAgICAgIHZhciBfYnVnX2NvbW1lbnRzID0gcltpZF07XG4gICAgICBpZiAodHlwZW9mIF9idWdfY29tbWVudHNbJ2NvbW1lbnRzJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8vIGJ1Z3ppbGxhIDUgOihcbiAgICAgICAgX2J1Z19jb21tZW50cyA9IF9idWdfY29tbWVudHMuY29tbWVudHM7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCBfYnVnX2NvbW1lbnRzKTtcbiAgICB9XG5cbiAgICB0aGlzLkFQSVJlcXVlc3QoXG4gICAgICAnL2J1Zy8nICsgaWQgKyAnL2NvbW1lbnQnLFxuICAgICAgJ0dFVCcsXG4gICAgICBfY2FsbGJhY2ssXG4gICAgICAnYnVncydcbiAgICApO1xuICB9XG5cbiAgYWRkQ29tbWVudCAoaWQsIGNvbW1lbnQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9jb21tZW50JyxcbiAgICAgICdQT1NUJyxcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgbnVsbCxcbiAgICAgIGNvbW1lbnRcbiAgICApO1xuICB9XG5cbiAgYnVnSGlzdG9yeSAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy9idWcvJyArIGlkICsgJy9oaXN0b3J5JyxcbiAgICAgICdHRVQnLFxuICAgICAgY2FsbGJhY2ssXG4gICAgICAnYnVncydcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFsbCBhdHRhY2htZW50cyBmb3IgYSBnaXZlbiBidWcgI1xuICAgKiBodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9kb2NzL3RpcC9lbi9odG1sL2FwaS9CdWd6aWxsYS9XZWJTZXJ2aWNlL0J1Zy5odG1sI2F0dGFjaG1lbnRzXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBpZCBvZiBidWcuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtFcnJvciwgQXJyYXk8QXR0YWNobWVudD5dLlxuICAgKi9cbiAgYnVnQXR0YWNobWVudHMgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvYXR0YWNobWVudCcsXG4gICAgICAnR0VUJyxcbiAgICAgIGV4dHJhY3RGaWVsZChpZCwgY2FsbGJhY2spLFxuICAgICAgJ2J1Z3MnXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUF0dGFjaG1lbnQgKGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnLycgKyBpZCArICcvYXR0YWNobWVudCcsXG4gICAgICAnUE9TVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2lkcycsXG4gICAgICBhdHRhY2htZW50XG4gICAgKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnQgKGlkLCBjYWxsYmFjaykge1xuICAgIHRoaXMuQVBJUmVxdWVzdChcbiAgICAgICcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLFxuICAgICAgJ0dFVCcsXG4gICAgICBleHRyYWN0RmllbGQoY2FsbGJhY2spLFxuICAgICAgJ2F0dGFjaG1lbnRzJ1xuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50IChpZCwgYXR0YWNobWVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvYXR0YWNobWVudC8nICsgaWQsICdQVVQnLCBjYWxsYmFjaywgJ29rJywgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2hVc2VycyAobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvdXNlcicsICdHRVQnLCBjYWxsYmFjaywgJ3VzZXJzJywgbnVsbCwge21hdGNoOiBtYXRjaH0pO1xuICB9XG5cbiAgZ2V0VXNlciAoaWQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgJy91c2VyLycgKyBpZCxcbiAgICAgICdHRVQnLFxuICAgICAgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSxcbiAgICAgICd1c2VycydcbiAgICApO1xuICB9XG5cbiAgZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzIChpZCwgY2FsbGJhY2spIHtcbiAgICAvLyBCTU8tIHNwZWNpZmljIGV4dGVuc2lvbiB0byBnZXQgc3VnZ2VzdGVkIHJldmlld2VycyBmb3IgYSBnaXZlbiBidWdcbiAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgdGhpcy5BUElSZXF1ZXN0KCcvcmV2aWV3L3N1Z2dlc3Rpb25zLycgKyBpZCwgJ0dFVCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qXG4gICAgWFhYIHRoaXMgY2FsbCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgdG8gcGVvcGxlIHNjcmlwdGluZyBhZ2FpbnN0IHByb2QgYnVnemlsbHFcbiAgICBUSEVSRSBJUyBOTyBFUVVJVkFMRU5UIFJFU1QgQ0FMTCBJTiBUSVAsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aXAsIGhlbmNlXG4gICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAqL1xuICBnZXRDb25maWd1cmF0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgIHBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRoaXMuQVBJUmVxdWVzdCgnL2NvbmZpZ3VyYXRpb24nLCAnR0VUJywgY2FsbGJhY2ssIG51bGwsIG51bGwsIHBhcmFtcyk7XG4gICAgLy8gVUdMQVkgdGVtcCBmaXggdW50aWwgL2NvbmZpZ3VyYXRpb24gaXMgaW1wbGVtZW50ZWQsXG4gICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICB0aGF0LmhhbmRsZVJlc3BvbnNlKG51bGwsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXEuc2VuZCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMgKHByb2R1Y3QpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGlmKCBwcm9kdWN0ID09PSBcInNlbGVjdGFibGVcIiB8fCBwcm9kdWN0ID09PSBcImVudGVyYWJsZVwiIHx8IHByb2R1Y3QgPT09IFwiYWNjZXNzaWJsZVwiICkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAgICcvcHJvZHVjdD90eXBlPScgKyBwcm9kdWN0LFxuICAgICAgICAgICdHRVQnLFxuICAgICAgICAgIGZ1bmN0aW9uKGVyciwgcHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuQVBJUmVxdWVzdChcbiAgICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICAgJ0dFVCcsXG4gICAgICAgICAgZnVuY3Rpb24oZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9kdWN0IChwcm9kdWN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBfdGhpcy5BUElSZXF1ZXN0KFxuICAgICAgICAnL3Byb2R1Y3QvJyArIHByb2R1Y3QsXG4gICAgICAgICdHRVQnLFxuICAgICAgICBmdW5jdGlvbihlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgQVBJUmVxdWVzdCAocGF0aCwgbWV0aG9kLCBjYWxsYmFjaywgZmllbGQsIGJvZHksIHBhcmFtcykge1xuICAgIGlmIChcbiAgICAgIC8vIGlmIHdlIGFyZSBkb2luZyB0aGUgbG9naW5cbiAgICAgIHBhdGggPT09IExPR0lOIHx8XG4gICAgICAvLyBpZiB3ZSBhcmUgYWxyZWFkeSBhdXRoZWRcbiAgICAgIHRoaXMuX2F1dGggfHxcbiAgICAgIC8vIG9yIHdlIGFyZSBtaXNzaW5nIGF1dGggZGF0YVxuICAgICAgIXRoaXMucGFzc3dvcmQgfHwgIXRoaXMudXNlcm5hbWVcbiAgICApIHtcbiAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGxldCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgdGhpcy5sb2dpbihmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgdGhpcy5fQVBJUmVxdWVzdC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9XG5cbiAgX0FQSVJlcXVlc3QgKHBhdGgsIG1ldGhvZCwgY2FsbGJhY2ssIGZpZWxkLCBib2R5LCBwYXJhbXMpIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgaWYodGhpcy5hcGlfa2V5KSB7IHBhcmFtcy5hcGlfa2V5ID0gdGhpcy5hcGlfa2V5OyB9XG5cbiAgICBpZiAodGhpcy5fYXV0aCkge1xuICAgICAgcGFyYW1zLnRva2VuID0gdGhpcy5fYXV0aC50b2tlbjtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgcGFyYW1zLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdXJsICs9IFwiP1wiICsgdGhpcy51cmxFbmNvZGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICBsZXQgdGhhdCA9IHRoaXM7XG5cbiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICBpZiAobWV0aG9kLnRvVXBwZXJDYXNlKCkgIT09IFwiR0VUXCIpIHtcbiAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjaywgZmllbGQpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVxLnRpbWVvdXQgPSB0aGlzLnRpbWVvdXQ7XG4gICAgcmVxLm9udGltZW91dCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cblxuICBoYW5kbGVSZXNwb25zZSAoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgLy8gZGV0ZWN0IHRpbWVvdXQgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAmJiBUSU1FT1VUX0VSUk9SUy5pbmRleE9mKGVyci5jb2RlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIGdlbmVyaWMgZXJyb3JzXG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAvLyBhbnl0aGluZyBpbiAyMDAgc3RhdHVzIHJhbmdlIGlzIGEgc3VjY2Vzc1xuICAgIHZhciByZXF1ZXN0U3VjY2Vzc2Z1bCA9IHJlc3BvbnNlLnN0YXR1cyA+IDE5OSAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDA7XG5cbiAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICB2YXIgcGFyc2VkQm9keTtcblxuICAgIHRyeSB7XG4gICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFhYWDogbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBiZXR0ZXIgaW4gdGhlIHJlcXVlc3Qgc3VjY2VzcyBjYXNlP1xuICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBuZXcgRXJyb3IoJ3Jlc3BvbnNlIHdhcyBub3QgdmFsaWQganNvbjogJyArIHJlc3BvbnNlLnJlc3BvbnNlVGV4dClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXRlY3QgaWYgd2UncmUgcnVubmluZyBCdWd6aWxsYSA1LjBcbiAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcGFyc2VkQm9keSA9IHBhcnNlZEJvZHlbJ3Jlc3VsdCddO1xuICAgIH1cblxuICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgIC8vIFhYWDogdGhpcyBzZWVtcyBsaWtlIGEgYnVnIGluIHRoZSBhcGkuXG4gICAgaWYgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5lcnJvcikge1xuICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKFxuICAgICAgICAnSFRUUCBzdGF0dXMgJyArIHJlc3BvbnNlLnN0YXR1cyArICdcXG4nICtcbiAgICAgICAgLy8gbm90ZSBpbnRlbnRpb25hbCB1c2Ugb2YgIT0gaW5zdGVhZCBvZiAhPT1cbiAgICAgICAgKHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhudWxsLCAoZmllbGQpID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgfVxuXG4gIHVybEVuY29kZSAocGFyYW1zKSB7XG4gICAgdmFyIHVybCA9IFtdO1xuICAgIGZvcih2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zW3BhcmFtXTtcbiAgICAgIGlmKCF2YWx1ZXMuZm9yRWFjaClcbiAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgIHVybC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbSkgKyBcIj1cIiArXG4gICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuam9pbihcIiZcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgQnVnemlsbGFDbGllbnQob3B0aW9ucyk7XG59XG4iLCJleHBvcnQgdmFyIFhNTEh0dHBSZXF1ZXN0ID0gbnVsbDtcblxuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXI/XG4gIGxldCBfbG9hZGVyID0gcmVxdWlyZTtcbiAgdHJ5IHtcbiAgICBYTUxIdHRwUmVxdWVzdCA9IF9sb2FkZXIoJ3Nkay9uZXQveGhyJykuWE1MSHR0cFJlcXVlc3Q7XG4gIH0gY2F0Y2goZSkge1xuICAgIFhNTEh0dHBSZXF1ZXN0ID0gX2xvYWRlcihcInhtbGh0dHByZXF1ZXN0XCIpLlhNTEh0dHBSZXF1ZXN0O1xuICB9XG59XG5lbHNlIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gIFhNTEh0dHBSZXF1ZXN0ID0gd2luZG93LlhNTEh0dHBSZXF1ZXN0O1xufVxuZWxzZSB7XG4gIHRocm93IFwiTm8gd2luZG93LCBXQVQuXCJcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYnouanMiLCJzcmMvaW5kZXguanMiLCJzcmMveGhyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIHRoaXMgZmlsZSBpcyB0aGUgZW50cnlwb2ludCBmb3IgYnVpbGRpbmcgYSBicm93c2VyIGZpbGUgd2l0aCBicm93c2VyaWZ5XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYnogPSB3aW5kb3cuYnogPSByZXF1aXJlKFwiLi9pbmRleFwiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OWllaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08wRkJSVUVzU1VGQlNTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTWlMQ0ptYVd4bElqb2lMMVZ6WlhKekwycHNZWE4wWlhJdmMzSmpMMjF2ZW1sc2JHRXZZbm91YW5NdmMzSmpMMko2TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeThnZEdocGN5Qm1hV3hsSUdseklIUm9aU0JsYm5SeWVYQnZhVzUwSUdadmNpQmlkV2xzWkdsdVp5QmhJR0p5YjNkelpYSWdabWxzWlNCM2FYUm9JR0p5YjNkelpYSnBabmxjYmx4dWRtRnlJR0o2SUQwZ2QybHVaRzkzTG1KNklEMGdjbVZ4ZFdseVpTaGNJaTR2YVc1a1pYaGNJaWs3SWwxOSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmV4cG9ydHMuY3JlYXRlQ2xpZW50ID0gY3JlYXRlQ2xpZW50O1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIFhNTEh0dHBSZXF1ZXN0ID0gcmVxdWlyZSgnLi94aHInKS5YTUxIdHRwUmVxdWVzdDtcblxuLyoqXG5Db25zdGFudCBmb3IgdGhlIGxvZ2luIGVudHJ5cG9pbnQuXG4qL1xudmFyIExPR0lOID0gJy9sb2dpbic7XG5cbi8qKlxuRXJyb3JzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldCB0aW1lb3V0LlxuKi9cbnZhciBUSU1FT1VUX0VSUk9SUyA9IFsnRVRJTUVET1VUJywgJ0VTT0NLRVRUSU1FRE9VVCddO1xuXG5mdW5jdGlvbiBleHRyYWN0RmllbGQoaWQsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGlkO1xuICAgIGlkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChlcnIsIHJlc3BvbnNlKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gdXNlIHRoZSBmaXJzdCBpZCB3aGVuIHRoZSBjYWxsZXIgZG9lcyBub3QgcHJvdmlkZSBvbmUuXG4gICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZCA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKVswXTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlW2lkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IFwiRXJyb3I6LCBubyByZXNwb25zZSBpbiBleHRyYWN0RmllbGRcIjtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuRnVuY3Rpb24gZGVjb3JhdG9yIHdoaWNoIHdpbGwgYXR0ZW1wdCB0byBsb2dpbiB0byBidWd6aWxsYVxud2l0aCB0aGUgY3VycmVudCBjcmVkZW50aWFscyBwcmlvciB0byBtYWtpbmcgdGhlIGFjdHVhbCBhcGkgY2FsbC5cblxuICAgIEJ1Z3ppbGxhLnByb3RvdHlwZS5tZXRob2QgPSBsb2dpbihmdW5jdGlvbihwYXJhbSwgcGFyYW0pIHtcbiAgICB9KTtcblxuQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIHRvIGRlY29yYXRlLlxuQHJldHVybiB7RnVuY3Rpb259IGRlY29yYXRlZCBtZXRob2QuXG4qL1xuZnVuY3Rpb24gbG9naW5SZXF1aXJlZChtZXRob2QpIHtcbiAgLy8gd2UgYXNzdW1lIHRoaXMgaXMgYSB2YWxpZCBidWdpbGxhIGluc3RhbmNlLlxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIC8vIHJlbWVtYmVyIHx0aGlzfCBpcyBhIGJ1Z3ppbGxhIGluc3RhbmNlXG5cbiAgICAvLyBhcmdzIGZvciB0aGUgZGVjb3JhdGVkIG1ldGhvZFxuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxcblxuICAgIC8vIHdlIG5lZWQgdGhlIGNhbGxiYWNrIHNvIHdlIGNhbiBwYXNzIGxvZ2luIHJlbGF0ZWQgZXJyb3JzLlxuICAgIGNhbGxiYWNrID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgdGhpcy5sb2dpbigoZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIHdlIGFyZSBub3cgbG9nZ2VkIGluIHNvIHRoZSBtZXRob2QgY2FuIHJ1biFcbiAgICAgIG1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9KS5iaW5kKHRoaXMpKTtcbiAgfTtcbn1cblxudmFyIEJ1Z3ppbGxhQ2xpZW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVnemlsbGFDbGllbnQob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWd6aWxsYUNsaWVudCk7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMudXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lO1xuICAgIHRoaXMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xuICAgIHRoaXMuYXBpX2tleSA9IG9wdGlvbnMuYXBpX2tleSB8fCBudWxsO1xuXG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnRlc3QgaXMgZGVwcmVjYXRlZCBwbGVhc2Ugc3BlY2lmeSB0aGUgdXJsIGRpcmVjdGx5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlVcmwgPSBvcHRpb25zLnVybCB8fCAnaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9yZXN0Lyc7XG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgICB0aGlzLl9hdXRoID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBnaXZlbiB1c2VyLlxuICAgRXhhbXBsZTpcbiAgICAgICB7IGlkOiAxMjIyLCB0b2tlbjogJ3h4eHgnIH1cbiAgIEB0eXBlIHtPYmplY3R9XG4gICovXG5cbiAgLyoqXG4gIEluIHRoZSBSRVNUIEFQSSB3ZSBmaXJzdCBsb2dpbiB0byBhY3F1aXJlIGEgdG9rZW4gd2hpY2ggaXMgdGhlbiB1c2VkIHRvIG1ha2VcbiAgcmVxdWVzdHMuIFNlZTogaHR0cDovL2J6ci5tb3ppbGxhLm9yZy9ibW8vNC4yL3ZpZXcvaGVhZDovQnVnemlsbGEvV2ViU2VydmljZS9TZXJ2ZXIvUkVTVC5wbSNMNTU2XG4gICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBwdWJsaWNseSBidXQgaXMgZGVzaWduZWQgZm9yIGludGVybmFsIGNvbnN1bXB0aW9uIGZvclxuICBlYXNlIG9mIHVzZS5cbiAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFtFcnJvciBlcnIsIFN0cmluZyB0b2tlbl0uXG4gICovXG5cbiAgX2NyZWF0ZUNsYXNzKEJ1Z3ppbGxhQ2xpZW50LCBbe1xuICAgIGtleTogJ2xvZ2luJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9naW4oY2FsbGJhY2spIHtcblxuICAgICAgaWYgKHRoaXMuX2F1dGgpIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgdGhpcy5fYXV0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy51c2VybmFtZSB8fCAhdGhpcy5wYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3IgaW52YWxpZCAudXNlcm5hbWUgb3IgLnBhc3N3b3JkJyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJhbXMgPSB7XG4gICAgICAgIGxvZ2luOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZFxuICAgICAgfTtcblxuICAgICAgdmFyIGhhbmRsZUxvZ2luID0gKGZ1bmN0aW9uIGhhbmRsZUxvZ2luKGVyciwgcmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLl9hdXRoID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2F1dGggPSByZXNwb25zZTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgICB9KS5iaW5kKHRoaXMpO1xuXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9sb2dpbicsICdHRVQnLCBoYW5kbGVMb2dpbiwgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRCdWcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCdWcoaWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgIHBhcmFtcyA9IHt9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvJyArIGlkLCAnR0VUJywgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlYXJjaEJ1Z3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWFyY2hCdWdzKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnLCBudWxsLCBwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUJ1ZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZyhpZCwgYnVnLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCwgJ1BVVCcsIGNhbGxiYWNrLCAnYnVncycsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY3JlYXRlQnVnJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVnKGJ1ZywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1ZycsICdQT1NUJywgY2FsbGJhY2ssICdpZCcsIGJ1Zyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYnVnQ29tbWVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdDb21tZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHZhciBfY2FsbGJhY2sgPSBmdW5jdGlvbiBfY2FsbGJhY2soZSwgcikge1xuICAgICAgICBpZiAoZSkgdGhyb3cgZTtcbiAgICAgICAgdmFyIF9idWdfY29tbWVudHMgPSByW2lkXTtcbiAgICAgICAgaWYgKHR5cGVvZiBfYnVnX2NvbW1lbnRzWydjb21tZW50cyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8vIGJ1Z3ppbGxhIDUgOihcbiAgICAgICAgICBfYnVnX2NvbW1lbnRzID0gX2J1Z19jb21tZW50cy5jb21tZW50cztcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCBfYnVnX2NvbW1lbnRzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQgKyAnL2NvbW1lbnQnLCAnR0VUJywgX2NhbGxiYWNrLCAnYnVncycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2FkZENvbW1lbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRDb21tZW50KGlkLCBjb21tZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCArICcvY29tbWVudCcsICdQT1NUJywgY2FsbGJhY2ssIG51bGwsIGNvbW1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2J1Z0hpc3RvcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdIaXN0b3J5KGlkLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnLycgKyBpZCArICcvaGlzdG9yeScsICdHRVQnLCBjYWxsYmFjaywgJ2J1Z3MnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhbGwgYXR0YWNobWVudHMgZm9yIGEgZ2l2ZW4gYnVnICNcbiAgICAgKiBodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9kb2NzL3RpcC9lbi9odG1sL2FwaS9CdWd6aWxsYS9XZWJTZXJ2aWNlL0J1Zy5odG1sI2F0dGFjaG1lbnRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaWQgb2YgYnVnLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtFcnJvciwgQXJyYXk8QXR0YWNobWVudD5dLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYnVnQXR0YWNobWVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWdBdHRhY2htZW50cyhpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy8nICsgaWQgKyAnL2F0dGFjaG1lbnQnLCAnR0VUJywgZXh0cmFjdEZpZWxkKGlkLCBjYWxsYmFjayksICdidWdzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY3JlYXRlQXR0YWNobWVudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUF0dGFjaG1lbnQoaWQsIGF0dGFjaG1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9idWcvJyArIGlkICsgJy9hdHRhY2htZW50JywgJ1BPU1QnLCBleHRyYWN0RmllbGQoY2FsbGJhY2spLCAnYXR0YWNobWVudHMnLCBhdHRhY2htZW50KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBdHRhY2htZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXR0YWNobWVudChpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL2J1Zy9hdHRhY2htZW50LycgKyBpZCwgJ0dFVCcsIGV4dHJhY3RGaWVsZChjYWxsYmFjayksICdhdHRhY2htZW50cycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUF0dGFjaG1lbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVBdHRhY2htZW50KGlkLCBhdHRhY2htZW50LCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5BUElSZXF1ZXN0KCcvYnVnL2F0dGFjaG1lbnQvJyArIGlkLCAnUFVUJywgY2FsbGJhY2ssICdvaycsIGF0dGFjaG1lbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlYXJjaFVzZXJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2VhcmNoVXNlcnMobWF0Y2gsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy91c2VyJywgJ0dFVCcsIGNhbGxiYWNrLCAndXNlcnMnLCBudWxsLCB7IG1hdGNoOiBtYXRjaCB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRVc2VyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VXNlcihpZCwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuQVBJUmVxdWVzdCgnL3VzZXIvJyArIGlkLCAnR0VUJywgZXh0cmFjdEZpZWxkKGNhbGxiYWNrKSwgJ3VzZXJzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkUmV2aWV3ZXJzKGlkLCBjYWxsYmFjaykge1xuICAgICAgLy8gQk1PLSBzcGVjaWZpYyBleHRlbnNpb24gdG8gZ2V0IHN1Z2dlc3RlZCByZXZpZXdlcnMgZm9yIGEgZ2l2ZW4gYnVnXG4gICAgICAvLyBodHRwOi8vYnpyLm1vemlsbGEub3JnL2Jtby80LjIvdmlldy9oZWFkOi9leHRlbnNpb25zL1Jldmlldy9saWIvV2ViU2VydmljZS5wbSNMMTAyXG4gICAgICB0aGlzLkFQSVJlcXVlc3QoJy9yZXZpZXcvc3VnZ2VzdGlvbnMvJyArIGlkLCAnR0VUJywgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBYWFggdGhpcyBjYWxsIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB0byBwZW9wbGUgc2NyaXB0aW5nIGFnYWluc3QgcHJvZCBidWd6aWxscVxuICAgICAgVEhFUkUgSVMgTk8gRVFVSVZBTEVOVCBSRVNUIENBTEwgSU4gVElQLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgdGVzdGVkIGFnYWluc3QgdGlwLCBoZW5jZVxuICAgICAgdGhlIGhhcmQtY29kZWQgdXJsLlxuICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb25maWd1cmF0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbihwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrID0gcGFyYW1zO1xuICAgICAgICBwYXJhbXMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgLy8gdGhpcy5BUElSZXF1ZXN0KCcvY29uZmlndXJhdGlvbicsICdHRVQnLCBjYWxsYmFjaywgbnVsbCwgbnVsbCwgcGFyYW1zKTtcbiAgICAgIC8vIFVHTEFZIHRlbXAgZml4IHVudGlsIC9jb25maWd1cmF0aW9uIGlzIGltcGxlbWVudGVkLFxuICAgICAgLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDQwNSNjMTE6XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHJlcS5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9hcGktZGV2LmJ1Z3ppbGxhLm1vemlsbGEub3JnL2xhdGVzdC9jb25maWd1cmF0aW9uJywgdHJ1ZSk7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0ICYmIHJlcS5zdGF0dXMgIT0gMCkge1xuICAgICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UobnVsbCwgcmVxLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoJ2Vycm9yJywgcmVxLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgICAgcmVxLnNlbmQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRQcm9kdWN0cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFByb2R1Y3RzKHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAocHJvZHVjdCA9PT0gXCJzZWxlY3RhYmxlXCIgfHwgcHJvZHVjdCA9PT0gXCJlbnRlcmFibGVcIiB8fCBwcm9kdWN0ID09PSBcImFjY2Vzc2libGVcIikge1xuICAgICAgICAgIF90aGlzLkFQSVJlcXVlc3QoJy9wcm9kdWN0P3R5cGU9JyArIHByb2R1Y3QsICdHRVQnLCBmdW5jdGlvbiAoZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuQVBJUmVxdWVzdCgnL3Byb2R1Y3QvJyArIHByb2R1Y3QsICdHRVQnLCBmdW5jdGlvbiAoZXJyLCBwcm9kdWN0cykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwcm9kdWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFByb2R1Y3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQcm9kdWN0KHByb2R1Y3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBfdGhpcy5BUElSZXF1ZXN0KCcvcHJvZHVjdC8nICsgcHJvZHVjdCwgJ0dFVCcsIGZ1bmN0aW9uIChlcnIsIHByb2R1Y3QpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHByb2R1Y3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdBUElSZXF1ZXN0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICBpZiAoXG4gICAgICAvLyBpZiB3ZSBhcmUgZG9pbmcgdGhlIGxvZ2luXG4gICAgICBwYXRoID09PSBMT0dJTiB8fFxuICAgICAgLy8gaWYgd2UgYXJlIGFscmVhZHkgYXV0aGVkXG4gICAgICB0aGlzLl9hdXRoIHx8XG4gICAgICAvLyBvciB3ZSBhcmUgbWlzc2luZyBhdXRoIGRhdGFcbiAgICAgICF0aGlzLnBhc3N3b3JkIHx8ICF0aGlzLnVzZXJuYW1lKSB7XG4gICAgICAgIC8vIHNraXAgYXV0b21hdGljIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgIHJldHVybiB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgICB0aGlzLmxvZ2luKChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB0aGlzLl9BUElSZXF1ZXN0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfSkuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX0FQSVJlcXVlc3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfQVBJUmVxdWVzdChwYXRoLCBtZXRob2QsIGNhbGxiYWNrLCBmaWVsZCwgYm9keSwgcGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gdGhpcy5hcGlVcmwgKyBwYXRoO1xuXG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIGlmICh0aGlzLmFwaV9rZXkpIHtcbiAgICAgICAgcGFyYW1zLmFwaV9rZXkgPSB0aGlzLmFwaV9rZXk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9hdXRoKSB7XG4gICAgICAgIHBhcmFtcy50b2tlbiA9IHRoaXMuX2F1dGgudG9rZW47XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkge1xuICAgICAgICBwYXJhbXMubG9naW4gPSB0aGlzLnVzZXJuYW1lO1xuICAgICAgICBwYXJhbXMucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICB1cmwgKz0gXCI/XCIgKyB0aGlzLnVybEVuY29kZShwYXJhbXMpO1xuICAgICAgfVxuXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG5cbiAgICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgaWYgKG1ldGhvZC50b1VwcGVyQ2FzZSgpICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgIH1cbiAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQgJiYgcmVxLnN0YXR1cyAhPSAwKSB7XG4gICAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZShudWxsLCByZXEsIGNhbGxiYWNrLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXEudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhhdC5oYW5kbGVSZXNwb25zZSgndGltZW91dCcsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoYXQuaGFuZGxlUmVzcG9uc2UoZXZlbnQsIHJlcSwgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICAgIHJlcS5zZW5kKGJvZHkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVJlc3BvbnNlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UoZXJyLCByZXNwb25zZSwgY2FsbGJhY2ssIGZpZWxkKSB7XG4gICAgICAvLyBkZXRlY3QgdGltZW91dCBlcnJvcnNcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgJiYgVElNRU9VVF9FUlJPUlMuaW5kZXhPZihlcnIuY29kZSkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGhhbmRsZSBnZW5lcmljIGVycm9yc1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgIC8vIGFueXRoaW5nIGluIDIwMCBzdGF0dXMgcmFuZ2UgaXMgYSBzdWNjZXNzXG4gICAgICB2YXIgcmVxdWVzdFN1Y2Nlc3NmdWwgPSByZXNwb25zZS5zdGF0dXMgPiAxOTkgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgMzAwO1xuXG4gICAgICAvLyBldmVuIGluIHRoZSBjYXNlIG9mIGFuIHVuc3VjY2Vzc2Z1bCByZXF1ZXN0IHdlIG1heSBoYXZlIGpzb24gZGF0YS5cbiAgICAgIHZhciBwYXJzZWRCb2R5O1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWRCb2R5ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBYWFg6IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoaXMgYmV0dGVyIGluIHRoZSByZXF1ZXN0IHN1Y2Nlc3MgY2FzZT9cbiAgICAgICAgaWYgKHJlcXVlc3RTdWNjZXNzZnVsKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcigncmVzcG9uc2Ugd2FzIG5vdCB2YWxpZCBqc29uOiAnICsgcmVzcG9uc2UucmVzcG9uc2VUZXh0KSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZGV0ZWN0IGlmIHdlJ3JlIHJ1bm5pbmcgQnVnemlsbGEgNS4wXG4gICAgICBpZiAodHlwZW9mIHBhcnNlZEJvZHlbJ3Jlc3VsdCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXJzZWRCb2R5ID0gcGFyc2VkQm9keVsncmVzdWx0J107XG4gICAgICB9XG5cbiAgICAgIC8vIHN1Y2Nlc3NmdWwgaHR0cCByZXNwbnNlIGJ1dCBhbiBlcnJvclxuICAgICAgLy8gWFhYOiB0aGlzIHNlZW1zIGxpa2UgYSBidWcgaW4gdGhlIGFwaS5cbiAgICAgIGlmIChwYXJzZWRCb2R5ICYmIHBhcnNlZEJvZHkuZXJyb3IpIHtcbiAgICAgICAgcmVxdWVzdFN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXF1ZXN0U3VjY2Vzc2Z1bCkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdIVFRQIHN0YXR1cyAnICsgcmVzcG9uc2Uuc3RhdHVzICsgJ1xcbicgKyAoXG4gICAgICAgIC8vIG5vdGUgaW50ZW50aW9uYWwgdXNlIG9mICE9IGluc3RlYWQgb2YgIT09XG4gICAgICAgIHBhcnNlZEJvZHkgJiYgcGFyc2VkQm9keS5tZXNzYWdlKSA/IHBhcnNlZEJvZHkubWVzc2FnZSA6ICcnKSk7XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKG51bGwsIGZpZWxkID8gcGFyc2VkQm9keVtmaWVsZF0gOiBwYXJzZWRCb2R5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd1cmxFbmNvZGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cmxFbmNvZGUocGFyYW1zKSB7XG4gICAgICB2YXIgdXJsID0gW107XG4gICAgICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtc1twYXJhbV07XG4gICAgICAgIGlmICghdmFsdWVzLmZvckVhY2gpIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICAgICAgICAvLyBleHBhbmQgYW55IGFycmF5c1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICB1cmwucHVzaChlbmNvZGVVUklDb21wb25lbnQocGFyYW0pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXJsLmpvaW4oXCImXCIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWd6aWxsYUNsaWVudDtcbn0pKCk7XG5cbmV4cG9ydHMuQnVnemlsbGFDbGllbnQgPSBCdWd6aWxsYUNsaWVudDtcblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50KG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBCdWd6aWxsYUNsaWVudChvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5cWJHRnpkR1Z5TDNOeVl5OXRiM3BwYkd4aEwySjZMbXB6TDNOeVl5OXBibVJsZUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdRVUZCUVN4SlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRPenM3T3p0QlFVdDJSQ3hKUVVGTkxFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdPenM3TzBGQlMzWkNMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03TzBGQlJYaEVMRk5CUVZNc1dVRkJXU3hEUVVGRExFVkJRVVVzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYkVNc1RVRkJTU3hQUVVGUExFVkJRVVVzUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZETlVJc1dVRkJVU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5rTEUxQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNVMEZCVHl4VlFVRlRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE4wSXNVVUZCU1N4SFFVRkhMRVZCUVVVc1QwRkJUeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlRsQ0xGRkJRVWtzVVVGQlVTeEZRVUZGT3p0QlFVVmFMRlZCUVVrc1JVRkJSU3hMUVVGTExGTkJRVk1zUlVGQlJUdEJRVU53UWl4VlFVRkZMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVNdlFqdEJRVU5FTEdOQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZET1VJc1RVRkRTVHRCUVVOSUxGbEJRVTBzY1VOQlFYRkRMRU5CUVVNN1MwRkROME03UjBGRFJpeERRVUZETzBOQlEwZzdPenM3T3pzN096czdPenRCUVZsRUxGTkJRVk1zWVVGQllTeERRVUZETEUxQlFVMHNSVUZCUlRzN1FVRkZOMElzVTBGQlR5eFpRVUZYT3pzN08wRkJTV2hDTEZGQlFVa3NTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN096dEJRVVUxUXl4WlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZGQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRU3hWUVVGVExFZEJRVWNzUlVGQlJUdEJRVU4yUWl4VlFVRkpMRWRCUVVjc1JVRkJSU3hQUVVGUExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXpzN08wRkJSemxDTEZsQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6RkNMRU5CUVVFc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTm1MRU5CUVVNN1EwRkRTRHM3UVVGRlRTeEpRVUZKTEdOQlFXTTdRVUZGV2l4WFFVWkdMR05CUVdNc1EwRkZXQ3hQUVVGUExFVkJRVVU3TUVKQlJsb3NZMEZCWXpzN1FVRkhja0lzVjBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4RlFVRkZMRU5CUVVNN08wRkJSWGhDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU5xUXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEYWtNc1VVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFJRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZET3p0QlFVVjJReXhSUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1dVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzBSRUZCTkVRc1EwRkJReXhEUVVGRE8wdEJReTlGT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4dlEwRkJiME1zUTBGQlF6dEJRVU5zUlN4UlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6czdRVUZGTjBNc1VVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdSMEZEYmtJN096czdPenM3T3pzN096czdPenM3TzJWQmJFSlJMR05CUVdNN08xZEJkVU5xUWl4bFFVRkRMRkZCUVZFc1JVRkJSVHM3UVVGRlppeFZRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRaQ3huUWtGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VDBGRE5VSTdPMEZCUlVRc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRM0JETEdOQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc01rTkJRVEpETEVOQlFVTXNRMEZCUXp0UFFVTTVSRHM3UVVGRlJDeFZRVUZKTEUxQlFVMHNSMEZCUnp0QlFVTllMR0ZCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVUdEJRVU53UWl4blFrRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTzA5QlEzaENMRU5CUVVNN08wRkJSVVlzVlVGQlNTeFhRVUZYTEVkQlFVY3NRMEZCUVN4VFFVRlRMRmRCUVZjc1EwRkJReXhIUVVGSExFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEzQkVMRmxCUVVrc1IwRkJSeXhGUVVGRkxFOUJRVThzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpsQ0xGbEJRVWtzVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnVRaXhqUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVFN1UwRkROMElzVFVGRFNUdEJRVU5JTEdOQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8xTkJRM1pDTzBGQlEwUXNaMEpCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdUMEZETVVJc1EwRkJRU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZZaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1YwRkJWeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRia1U3T3p0WFFVVk5MR2RDUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEV2l4blFrRkJVU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVU5zUWl4alFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRE8wOUJRMlE3TzBGQlJVUXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkRZaXhQUVVGUExFZEJRVWNzUlVGQlJTeEZRVU5hTEV0QlFVc3NSVUZEVEN4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRM1JDTEUxQlFVMHNSVUZEVGl4SlFVRkpMRVZCUTBvc1RVRkJUU3hEUVVOUUxFTkJRVU03UzBGRFNEczdPMWRCUlZVc2IwSkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTTFRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hGUVVGRkxFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRhRVU3T3p0WFFVVlRMRzFDUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVNM1JEczdPMWRCUlZNc2JVSkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjRRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjBSRHM3TzFkQlJWY3NjVUpCUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU42UWl4VlFVRkpMRk5CUVZNc1IwRkJSeXhUUVVGYUxGTkJRVk1zUTBGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMEZCUXpkQ0xGbEJRVWtzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTJZc1dVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xGbEJRVWtzVDBGQlR5eGhRVUZoTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1YwRkJWeXhGUVVGRk96dEJRVVZ3UkN4MVFrRkJZU3hIUVVGSExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTTdVMEZEZUVNN1FVRkRSQ3huUWtGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4aFFVRmhMRU5CUVVNc1EwRkJRenRQUVVNdlFpeERRVUZCT3p0QlFVVkVMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRMklzVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUTNwQ0xFdEJRVXNzUlVGRFRDeFRRVUZUTEVWQlExUXNUVUZCVFN4RFFVTlFMRU5CUVVNN1MwRkRTRHM3TzFkQlJWVXNiMEpCUVVNc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYWtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGRFlpeFBRVUZQTEVkQlFVY3NSVUZCUlN4SFFVRkhMRlZCUVZVc1JVRkRla0lzVFVGQlRTeEZRVU5PTEZGQlFWRXNSVUZEVWl4SlFVRkpMRVZCUTBvc1QwRkJUeXhEUVVOU0xFTkJRVU03UzBGRFNEczdPMWRCUlZVc2IwSkJRVU1zUlVGQlJTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjRRaXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVU5pTEU5QlFVOHNSMEZCUnl4RlFVRkZMRWRCUVVjc1ZVRkJWU3hGUVVONlFpeExRVUZMTEVWQlEwd3NVVUZCVVN4RlFVTlNMRTFCUVUwc1EwRkRVQ3hEUVVGRE8wdEJRMGc3T3pzN096czdPenM3TzFkQlUyTXNkMEpCUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU0xUWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVOaUxFOUJRVThzUjBGQlJ5eEZRVUZGTEVkQlFVY3NZVUZCWVN4RlFVTTFRaXhMUVVGTExFVkJRMHdzV1VGQldTeERRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRU5CUVVNc1JVRkRNVUlzVFVGQlRTeERRVU5RTEVOQlFVTTdTMEZEU0RzN08xZEJSV2RDTERCQ1FVRkRMRVZCUVVVc1JVRkJSU3hWUVVGVkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlF6RkRMRlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRMklzVDBGQlR5eEhRVUZITEVWQlFVVXNSMEZCUnl4aFFVRmhMRVZCUXpWQ0xFMUJRVTBzUlVGRFRpeFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUTNSQ0xHRkJRV0VzUlVGRFlpeFZRVUZWTEVOQlExZ3NRMEZCUXp0TFFVTklPenM3VjBGRllTeDFRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRek5DTEZWQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJJc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlN4RlFVTjJRaXhMUVVGTExFVkJRMHdzV1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVTjBRaXhoUVVGaExFTkJRMlFzUTBGQlF6dExRVU5JT3pzN1YwRkZaMElzTUVKQlFVTXNSVUZCUlN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRE1VTXNWVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN1MwRkROMFU3T3p0WFFVVlhMSEZDUVVGRExFdEJRVXNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZETlVJc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJReXhEUVVGRExFTkJRVU03UzBGRE1VVTdPenRYUVVWUExHbENRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRja0lzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZEWWl4UlFVRlJMRWRCUVVjc1JVRkJSU3hGUVVOaUxFdEJRVXNzUlVGRFRDeFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUTNSQ0xFOUJRVThzUTBGRFVpeERRVUZETzB0QlEwZzdPenRYUVVWeFFpd3JRa0ZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRk96czdRVUZIYmtNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eHpRa0ZCYzBJc1IwRkJSeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMHRCUXk5RU96czdPenM3T3pzN1YwRlBaMElzTUVKQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVOc1F5eFZRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEYkVJc1kwRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dFBRVU5rT3pzN096dEJRVXRFTEZWQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmFFSXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFVkJRVVVzUTBGQlF6dEJRVU12UWl4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTd3lSRUZCTWtRc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU51Uml4VFFVRkhMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZEYmtRc1UwRkJSeXhEUVVGRExHdENRVUZyUWl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRM2hETEZsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRNVU1zWTBGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzFOQlF6RkRPMDlCUTBZc1EwRkJRenRCUVVOR0xGTkJRVWNzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRCUVVNelFpeFRRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJReTlDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTXZReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4VlFVRlZMRXRCUVVzc1JVRkJSVHRCUVVNM1FpeFpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdUMEZETjBNc1EwRkJRenRCUVVOR0xGTkJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0TFFVTmFPenM3VjBGRlZ5eHhRa0ZCUXl4UFFVRlBMRVZCUVVVN1FVRkRjRUlzVlVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTJwQ0xHRkJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCVXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRek5ETEZsQlFVa3NUMEZCVHl4TFFVRkxMRmxCUVZrc1NVRkJTU3hQUVVGUExFdEJRVXNzVjBGQlZ5eEpRVUZKTEU5QlFVOHNTMEZCU3l4WlFVRlpMRVZCUVVjN1FVRkRjRVlzWlVGQlN5eERRVUZETEZWQlFWVXNRMEZEWkN4blFrRkJaMElzUjBGQlJ5eFBRVUZQTEVWQlF6RkNMRXRCUVVzc1JVRkRUQ3hWUVVGVExFZEJRVWNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEZEVJc1owSkJRVWNzUjBGQlJ5eEZRVUZGTzBGQlEwNHNjVUpCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzQkNMRTFCUVUwN1FVRkRUQ3h4UWtGQlR5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1lVRkRNVUk3VjBGRFJpeERRVU5HTEVOQlFVTTdVMEZEU0N4TlFVRk5PMEZCUTB3c1pVRkJTeXhEUVVGRExGVkJRVlVzUTBGRFpDeFhRVUZYTEVkQlFVY3NUMEZCVHl4RlFVTnlRaXhMUVVGTExFVkJRMHdzVlVGQlV5eEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZPMEZCUTNSQ0xHZENRVUZITEVkQlFVY3NSVUZCUlR0QlFVTk9MSEZDUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTndRaXhOUVVGTk8wRkJRMHdzY1VKQlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRekZDTzFkQlEwWXNRMEZEUml4RFFVRkRPMU5CUTBnN1QwRkRSaXhEUVVGRExFTkJRVU03UzBGRFNqczdPMWRCUlZVc2IwSkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEyNUNMRlZCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU5xUWl4aFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExGVkJRVk1zVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTXpReXhoUVVGTExFTkJRVU1zVlVGQlZTeERRVU5rTEZkQlFWY3NSMEZCUnl4UFFVRlBMRVZCUTNKQ0xFdEJRVXNzUlVGRFRDeFZRVUZUTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRia0lzWTBGQlJ5eEhRVUZITEVWQlFVVTdRVUZEVGl4dFFrRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdWMEZEY0VJc1RVRkJUVHRCUVVOTUxHMUNRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRYUVVONlFqdFRRVU5HTEVOQlEwb3NRMEZCUXp0UFFVTklMRU5CUVVNc1EwRkJRenRMUVVOS096czdWMEZGVlN4dlFrRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJUdEJRVU4yUkRzN1FVRkZSU3hWUVVGSkxFdEJRVXNzUzBGQlN6czdRVUZGWkN4VlFVRkpMRU5CUVVNc1MwRkJTenM3UVVGRlZpeFBRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVU5vUXpzN1FVRkZRU3hsUVVGUExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dFBRVU5vUkRzN1FVRkZSQ3hWUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6czdRVUZGY0VNc1ZVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZCTEZWQlFWTXNSMEZCUnl4RlFVRkZPMEZCUTNaQ0xGbEJRVWtzUjBGQlJ5eEZRVUZGTEU5QlFVOHNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRemxDTEZsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTndReXhEUVVGQkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRaanM3TzFkQlJWY3NjVUpCUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGVFUXNWVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMEZCUlRkQ0xGbEJRVTBzUjBGQlJ5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWMFFpeFZRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkJSU3hqUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1QwRkJSVHM3UVVGRmJrUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRMlFzWTBGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dFBRVU5xUXl4TlFVTkpMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNaRExHTkJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRCUVVNM1FpeGpRVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VDBGRGFrTTdPMEZCUlVRc1ZVRkJTU3hOUVVGTkxFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMRmRCUVVjc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVOeVF6czdRVUZGUkN4VlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZOVUlzVlVGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVWb1FpeFZRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMR05CUVdNc1JVRkJSU3hEUVVGRE8wRkJReTlDTEZOQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFRaXhUUVVGSExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRia1FzVlVGQlNTeE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRXRCUVVzc1MwRkJTeXhGUVVGRk8wRkJRMnhETEZkQlFVY3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eGpRVUZqTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFBRVU14UkR0QlFVTkVMRk5CUVVjc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4VlFVRlZMRXRCUVVzc1JVRkJSVHRCUVVONFF5eFpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpGRExHTkJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVMEZEYWtRN1QwRkRSaXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8wRkJRek5DTEZOQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1ZVRkJWU3hMUVVGTExFVkJRVVU3UVVGREwwSXNXVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMDlCUXk5RExFTkJRVU03UVVGRFJpeFRRVUZITEVOQlFVTXNUMEZCVHl4SFFVRkhMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRemRDTEZsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTXpReXhEUVVGRE8wRkJRMFlzVTBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOb1FqczdPMWRCUldNc2QwSkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRk96dEJRVVU1UXl4VlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeEpRVUZKTEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUXpsRUxHVkJRVThzVVVGQlVTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU03VDBGRGRrTTdPenRCUVVkRUxGVkJRVWtzUjBGQlJ5eEZRVUZGTEU5QlFVOHNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96czdRVUZIT1VJc1ZVRkJTU3hwUWtGQmFVSXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenM3TzBGQlIzWkZMRlZCUVVrc1ZVRkJWU3hEUVVGRE96dEJRVVZtTEZWQlFVazdRVUZEUml4clFrRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wOUJRMmhFTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN08wRkJSVllzV1VGQlNTeHBRa0ZCYVVJc1JVRkJSVHRCUVVOeVFpeHBRa0ZCVHl4UlFVRlJMRU5CUTJJc1NVRkJTU3hMUVVGTExFTkJRVU1zSzBKQlFTdENMRWRCUVVjc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVU51UlN4RFFVRkRPMU5CUTBnN1QwRkRSanM3TzBGQlIwUXNWVUZCU1N4UFFVRlBMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eFhRVUZYTEVWQlFVVTdRVUZETDBNc2EwSkJRVlVzUjBGQlJ5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1QwRkRia003T3pzN1FVRkpSQ3hWUVVGSkxGVkJRVlVzU1VGQlNTeFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTJ4RExIbENRVUZwUWl4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVNelFqczdRVUZGUkN4VlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdRVUZEZEVJc1pVRkJUeXhSUVVGUkxFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlEzWkNMR05CUVdNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMEZCUlhSRExHdENRVUZWTEVsQlFVa3NWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJRU3hCUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUXpkRUxFTkJRVU1zUTBGQlF6dFBRVU5LT3p0QlFVVkVMR05CUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUVVGQlF5eExRVUZMTEVkQlFVa3NWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzB0QlF6RkVPenM3VjBGRlV5eHRRa0ZCUXl4TlFVRk5MRVZCUVVVN1FVRkRha0lzVlVGQlNTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJJc1YwRkJTU3hKUVVGSkxFdEJRVXNzU1VGQlNTeE5RVUZOTEVWQlFVVTdRVUZEZGtJc1dVRkJTU3hOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpOQ0xGbEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVTm9RaXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN1FVRkZjRUlzWTBGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlRMRXRCUVVzc1JVRkJSVHRCUVVNMVFpeGhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkRkRU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVVNN1QwRkRTanRCUVVORUxHRkJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOMFFqczdPMU5CYUZwUkxHTkJRV003U1VGcFduaENMRU5CUVVFN096czdRVUZGVFN4VFFVRlRMRmxCUVZrc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGNFTXNVMEZCVHl4SlFVRkpMR05CUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dERRVU53UXlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmpiMjV6ZENCWVRVeElkSFJ3VW1WeGRXVnpkQ0E5SUhKbGNYVnBjbVVvSnk0dmVHaHlKeWt1V0UxTVNIUjBjRkpsY1hWbGMzUTdYRzVjYmk4cUtseHVRMjl1YzNSaGJuUWdabTl5SUhSb1pTQnNiMmRwYmlCbGJuUnllWEJ2YVc1MExseHVLaTljYm1OdmJuTjBJRXhQUjBsT0lEMGdKeTlzYjJkcGJpYzdYRzVjYmk4cUtseHVSWEp5YjNKeklISmxiR0YwWldRZ2RHOGdkR2hsSUhOdlkydGxkQ0IwYVcxbGIzVjBMbHh1S2k5Y2JtTnZibk4wSUZSSlRVVlBWVlJmUlZKU1QxSlRJRDBnV3lkRlZFbE5SVVJQVlZRbkxDQW5SVk5QUTB0RlZGUkpUVVZFVDFWVUoxMDdYRzVjYm1aMWJtTjBhVzl1SUdWNGRISmhZM1JHYVdWc1pDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdhV1lnS0hSNWNHVnZaaUJwWkNBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJR05oYkd4aVlXTnJJRDBnYVdRN1hHNGdJQ0FnYVdRZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9aWEp5TENCeVpYTndiMjV6WlNrZ2UxeHVJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVYRzRnSUNBZ2FXWWdLSEpsYzNCdmJuTmxLU0I3WEc0Z0lDQWdJQ0F2THlCa1pXWmhkV3gwSUdKbGFHRjJhVzl5SUdseklIUnZJSFZ6WlNCMGFHVWdabWx5YzNRZ2FXUWdkMmhsYmlCMGFHVWdZMkZzYkdWeUlHUnZaWE1nYm05MElIQnliM1pwWkdVZ2IyNWxMbHh1SUNBZ0lDQWdhV1lnS0dsa0lEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ2FXUWdQU0JQWW1wbFkzUXVhMlY1Y3loeVpYTndiMjV6WlNsYk1GMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCeVpYTndiMjV6WlZ0cFpGMHBPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvY205M0lGd2lSWEp5YjNJNkxDQnVieUJ5WlhOd2IyNXpaU0JwYmlCbGVIUnlZV04wUm1sbGJHUmNJanRjYmlBZ0lDQjlYRzRnSUgwN1hHNTlYRzVjYmk4cUtseHVSblZ1WTNScGIyNGdaR1ZqYjNKaGRHOXlJSGRvYVdOb0lIZHBiR3dnWVhSMFpXMXdkQ0IwYnlCc2IyZHBiaUIwYnlCaWRXZDZhV3hzWVZ4dWQybDBhQ0IwYUdVZ1kzVnljbVZ1ZENCamNtVmtaVzUwYVdGc2N5QndjbWx2Y2lCMGJ5QnRZV3RwYm1jZ2RHaGxJR0ZqZEhWaGJDQmhjR2tnWTJGc2JDNWNibHh1SUNBZ0lFSjFaM3BwYkd4aExuQnliM1J2ZEhsd1pTNXRaWFJvYjJRZ1BTQnNiMmRwYmlobWRXNWpkR2x2Ymlod1lYSmhiU3dnY0dGeVlXMHBJSHRjYmlBZ0lDQjlLVHRjYmx4dVFIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ2JXVjBhRzlrSUhSdklHUmxZMjl5WVhSbExseHVRSEpsZEhWeWJpQjdSblZ1WTNScGIyNTlJR1JsWTI5eVlYUmxaQ0J0WlhSb2IyUXVYRzRxTDF4dVpuVnVZM1JwYjI0Z2JHOW5hVzVTWlhGMWFYSmxaQ2h0WlhSb2IyUXBJSHRjYmlBZ0x5OGdkMlVnWVhOemRXMWxJSFJvYVhNZ2FYTWdZU0IyWVd4cFpDQmlkV2RwYkd4aElHbHVjM1JoYm1ObExseHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdMeThnY21WdFpXMWlaWElnZkhSb2FYTjhJR2x6SUdFZ1luVm5lbWxzYkdFZ2FXNXpkR0Z1WTJWY2JseHVJQ0FnSUM4dklHRnlaM01nWm05eUlIUm9aU0JrWldOdmNtRjBaV1FnYldWMGFHOWtYRzRnSUNBZ2RtRnlJR0Z5WjNNZ1BTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaGhjbWQxYldWdWRITXBMRnh1SUNBZ0lDQWdJQ0F2THlCM1pTQnVaV1ZrSUhSb1pTQmpZV3hzWW1GamF5QnpieUIzWlNCallXNGdjR0Z6Y3lCc2IyZHBiaUJ5Wld4aGRHVmtJR1Z5Y205eWN5NWNiaUFnSUNBZ0lDQWdZMkZzYkdKaFkyc2dQU0JoY21kelcyRnlaM011YkdWdVozUm9JQzBnTVYwN1hHNWNiaUFnSUNCMGFHbHpMbXh2WjJsdUtHWjFibU4wYVc5dUtHVnljaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVnljaWtnY21WMGRYSnVJR05oYkd4aVlXTnJLR1Z5Y2lrN1hHNWNiaUFnSUNBZ0lDOHZJSGRsSUdGeVpTQnViM2NnYkc5bloyVmtJR2x1SUhOdklIUm9aU0J0WlhSb2IyUWdZMkZ1SUhKMWJpRmNiaUFnSUNBZ0lHMWxkR2h2WkM1aGNIQnNlU2gwYUdsekxDQmhjbWR6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdkbUZ5SUVKMVozcHBiR3hoUTJ4cFpXNTBJRDBnWTJ4aGMzTWdlMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnZjSFJwYjI1eklEMGdiM0IwYVc5dWN5QjhmQ0I3ZlR0Y2JseHVJQ0FnSUhSb2FYTXVkWE5sY201aGJXVWdQU0J2Y0hScGIyNXpMblZ6WlhKdVlXMWxPMXh1SUNBZ0lIUm9hWE11Y0dGemMzZHZjbVFnUFNCdmNIUnBiMjV6TG5CaGMzTjNiM0prTzF4dUlDQWdJSFJvYVhNdWRHbHRaVzkxZENBOUlHOXdkR2x2Ym5NdWRHbHRaVzkxZENCOGZDQXdPMXh1SUNBZ0lIUm9hWE11WVhCcFgydGxlU0E5SUc5d2RHbHZibk11WVhCcFgydGxlU0I4ZkNCdWRXeHNPMXh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11ZEdWemRDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZHZjSFJwYjI1ekxuUmxjM1FnYVhNZ1pHVndjbVZqWVhSbFpDQndiR1ZoYzJVZ2MzQmxZMmxtZVNCMGFHVWdkWEpzSUdScGNtVmpkR3g1SnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NWhjR2xWY213Z1BTQnZjSFJwYjI1ekxuVnliQ0I4ZkNBbmFIUjBjSE02THk5aWRXZDZhV3hzWVM1dGIzcHBiR3hoTG05eVp5OXlaWE4wTHljN1hHNGdJQ0FnZEdocGN5NWhjR2xWY213Z1BTQjBhR2x6TG1Gd2FWVnliQzV5WlhCc1lXTmxLQzljWEM4a0x5d2dYQ0pjSWlrN1hHNWNiaUFnSUNCMGFHbHpMbDloZFhSb0lEMGdiblZzYkR0Y2JpQWdmVnh1SUNBdktpcGNiaUFnUVhWMGFHVnVkR2xqWVhScGIyNGdaR1YwWVdsc2N5Qm1iM0lnWjJsMlpXNGdkWE5sY2k1Y2JseHVJQ0JGZUdGdGNHeGxPbHh1WEc0Z0lDQWdJQ0I3SUdsa09pQXhNakl5TENCMGIydGxiam9nSjNoNGVIZ25JSDFjYmx4dUlDQkFkSGx3WlNCN1QySnFaV04wZlZ4dUlDQXFMMXh1WEc1Y2JpQWdMeW9xWEc0Z0lFbHVJSFJvWlNCU1JWTlVJRUZRU1NCM1pTQm1hWEp6ZENCc2IyZHBiaUIwYnlCaFkzRjFhWEpsSUdFZ2RHOXJaVzRnZDJocFkyZ2dhWE1nZEdobGJpQjFjMlZrSUhSdklHMWhhMlZjYmlBZ2NtVnhkV1Z6ZEhNdUlGTmxaVG9nYUhSMGNEb3ZMMko2Y2k1dGIzcHBiR3hoTG05eVp5OWliVzh2TkM0eUwzWnBaWGN2YUdWaFpEb3ZRblZuZW1sc2JHRXZWMlZpVTJWeWRtbGpaUzlUWlhKMlpYSXZVa1ZUVkM1d2JTTk1OVFUyWEc1Y2JpQWdWR2hwY3lCdFpYUm9iMlFnWTJGdUlHSmxJSFZ6WldRZ2NIVmliR2xqYkhrZ1luVjBJR2x6SUdSbGMybG5ibVZrSUdadmNpQnBiblJsY201aGJDQmpiMjV6ZFcxd2RHbHZiaUJtYjNKY2JpQWdaV0Z6WlNCdlppQjFjMlV1WEc1Y2JpQWdRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dXMFZ5Y205eUlHVnljaXdnVTNSeWFXNW5JSFJ2YTJWdVhTNWNiaUFnS2k5Y2JpQWdiRzluYVc0Z0tHTmhiR3hpWVdOcktTQjdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZZWFYwYUNrZ2UxeHVJQ0FnSUNBZ1kyRnNiR0poWTJzb2JuVnNiQ3dnZEdocGN5NWZZWFYwYUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG5WelpYSnVZVzFsSUh4OElDRjBhR2x6TG5CaGMzTjNiM0prS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjIxcGMzTnBibWNnYjNJZ2FXNTJZV3hwWkNBdWRYTmxjbTVoYldVZ2IzSWdMbkJoYzNOM2IzSmtKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhCaGNtRnRjeUE5SUh0Y2JpQWdJQ0FnSUd4dloybHVPaUIwYUdsekxuVnpaWEp1WVcxbExGeHVJQ0FnSUNBZ2NHRnpjM2R2Y21RNklIUm9hWE11Y0dGemMzZHZjbVJjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdkbUZ5SUdoaGJtUnNaVXh2WjJsdUlEMGdablZ1WTNScGIyNGdhR0Z1Wkd4bFRHOW5hVzRvWlhKeUxDQnlaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdhV1lnS0dWeWNpa2djbVYwZFhKdUlHTmhiR3hpWVdOcktHVnljaWs3WEc0Z0lDQWdJQ0JwWmlBb2NtVnpjRzl1YzJVdWNtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJGMWRHZ2dQU0J5WlhOd2IyNXpaUzV5WlhOMWJIUmNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDloZFhSb0lEMGdjbVZ6Y0c5dWMyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aHVkV3hzTENCeVpYTndiMjV6WlNrN1hHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcE8xeHVYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmJHOW5hVzRuTENBblIwVlVKeXdnYUdGdVpHeGxURzluYVc0c0lHNTFiR3dzSUc1MWJHd3NJSEJoY21GdGN5azdYRzRnSUgxY2JseHVJQ0JuWlhSQ2RXY2dLR2xrTENCd1lYSmhiWE1zSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnYVdZZ0tDRmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDQWdJR05oYkd4aVlXTnJJRDBnY0dGeVlXMXpPMXh1SUNBZ0lDQWdJSEJoY21GdGN5QTlJSHQ5TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDaGNiaUFnSUNBZ0lDY3ZZblZuTHljZ0t5QnBaQ3hjYmlBZ0lDQWdJQ2RIUlZRbkxGeHVJQ0FnSUNBZ1pYaDBjbUZqZEVacFpXeGtLR05oYkd4aVlXTnJLU3hjYmlBZ0lDQWdJQ2RpZFdkekp5eGNiaUFnSUNBZ0lHNTFiR3dzWEc0Z0lDQWdJQ0J3WVhKaGJYTmNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdjMlZoY21Ob1FuVm5jeUFvY0dGeVlXMXpMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDZ25MMkoxWnljc0lDZEhSVlFuTENCallXeHNZbUZqYXl3Z0oySjFaM01uTENCdWRXeHNMQ0J3WVhKaGJYTXBPMXh1SUNCOVhHNWNiaUFnZFhCa1lYUmxRblZuSUNocFpDd2dZblZuTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2duTDJKMVp5OG5JQ3NnYVdRc0lDZFFWVlFuTENCallXeHNZbUZqYXl3Z0oySjFaM01uTENCaWRXY3BPMXh1SUNCOVhHNWNiaUFnWTNKbFlYUmxRblZuSUNoaWRXY3NJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtDY3ZZblZuSnl3Z0oxQlBVMVFuTENCallXeHNZbUZqYXl3Z0oybGtKeXdnWW5WbktUdGNiaUFnZlZ4dVhHNGdJR0oxWjBOdmJXMWxiblJ6SUNocFpDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjJZWElnWDJOaGJHeGlZV05ySUQwZ1puVnVZM1JwYjI0b1pTd2djaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVXBJSFJvY205M0lHVTdYRzRnSUNBZ0lDQjJZWElnWDJKMVoxOWpiMjF0Wlc1MGN5QTlJSEpiYVdSZE8xeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQmZZblZuWDJOdmJXMWxiblJ6V3lkamIyMXRaVzUwY3lkZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJpZFdkNmFXeHNZU0ExSURvb1hHNGdJQ0FnSUNBZ0lGOWlkV2RmWTI5dGJXVnVkSE1nUFNCZlluVm5YMk52YlcxbGJuUnpMbU52YlcxbGJuUnpPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZMkZzYkdKaFkyc29iblZzYkN3Z1gySjFaMTlqYjIxdFpXNTBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0p5OWlkV2N2SnlBcklHbGtJQ3NnSnk5amIyMXRaVzUwSnl4Y2JpQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdYMk5oYkd4aVlXTnJMRnh1SUNBZ0lDQWdKMkoxWjNNblhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHRmtaRU52YlcxbGJuUWdLR2xrTENCamIyMXRaVzUwTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5Wbkx5Y2dLeUJwWkNBcklDY3ZZMjl0YldWdWRDY3NYRzRnSUNBZ0lDQW5VRTlUVkNjc1hHNGdJQ0FnSUNCallXeHNZbUZqYXl4Y2JpQWdJQ0FnSUc1MWJHd3NYRzRnSUNBZ0lDQmpiMjF0Wlc1MFhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHSjFaMGhwYzNSdmNua2dLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5Wbkx5Y2dLeUJwWkNBcklDY3ZhR2x6ZEc5eWVTY3NYRzRnSUNBZ0lDQW5SMFZVSnl4Y2JpQWdJQ0FnSUdOaGJHeGlZV05yTEZ4dUlDQWdJQ0FnSjJKMVozTW5YRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJHYVc1a2N5QmhiR3dnWVhSMFlXTm9iV1Z1ZEhNZ1ptOXlJR0VnWjJsMlpXNGdZblZuSUNOY2JpQWdJQ29nYUhSMGNEb3ZMM2QzZHk1aWRXZDZhV3hzWVM1dmNtY3ZaRzlqY3k5MGFYQXZaVzR2YUhSdGJDOWhjR2t2UW5WbmVtbHNiR0V2VjJWaVUyVnlkbWxqWlM5Q2RXY3VhSFJ0YkNOaGRIUmhZMmh0Wlc1MGMxeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMDUxYldKbGNuMGdhV1FnYjJZZ1luVm5MbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmJSWEp5YjNJc0lFRnljbUY1UEVGMGRHRmphRzFsYm5RK1hTNWNiaUFnSUNvdlhHNGdJR0oxWjBGMGRHRmphRzFsYm5SeklDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxrRlFTVkpsY1hWbGMzUW9YRzRnSUNBZ0lDQW5MMkoxWnk4bklDc2dhV1FnS3lBbkwyRjBkR0ZqYUcxbGJuUW5MRnh1SUNBZ0lDQWdKMGRGVkNjc1hHNGdJQ0FnSUNCbGVIUnlZV04wUm1sbGJHUW9hV1FzSUdOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUNkaWRXZHpKMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JqY21WaGRHVkJkSFJoWTJodFpXNTBJQ2hwWkN3Z1lYUjBZV05vYldWdWRDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb1hHNGdJQ0FnSUNBbkwySjFaeThuSUNzZ2FXUWdLeUFuTDJGMGRHRmphRzFsYm5RbkxGeHVJQ0FnSUNBZ0oxQlBVMVFuTEZ4dUlDQWdJQ0FnWlhoMGNtRmpkRVpwWld4a0tHTmhiR3hpWVdOcktTeGNiaUFnSUNBZ0lDZGhkSFJoWTJodFpXNTBjeWNzWEc0Z0lDQWdJQ0JoZEhSaFkyaHRaVzUwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRFRjBkR0ZqYUcxbGJuUWdLR2xrTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUhSb2FYTXVRVkJKVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ2N2WW5WbkwyRjBkR0ZqYUcxbGJuUXZKeUFySUdsa0xGeHVJQ0FnSUNBZ0owZEZWQ2NzWEc0Z0lDQWdJQ0JsZUhSeVlXTjBSbWxsYkdRb1kyRnNiR0poWTJzcExGeHVJQ0FnSUNBZ0oyRjBkR0ZqYUcxbGJuUnpKMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0IxY0dSaGRHVkJkSFJoWTJodFpXNTBJQ2hwWkN3Z1lYUjBZV05vYldWdWRDd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TGtGUVNWSmxjWFZsYzNRb0p5OWlkV2N2WVhSMFlXTm9iV1Z1ZEM4bklDc2dhV1FzSUNkUVZWUW5MQ0JqWVd4c1ltRmpheXdnSjI5ckp5d2dZWFIwWVdOb2JXVnVkQ2s3WEc0Z0lIMWNibHh1SUNCelpXRnlZMmhWYzJWeWN5QW9iV0YwWTJnc0lHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmRYTmxjaWNzSUNkSFJWUW5MQ0JqWVd4c1ltRmpheXdnSjNWelpYSnpKeXdnYm5Wc2JDd2dlMjFoZEdOb09pQnRZWFJqYUgwcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVlhObGNpQW9hV1FzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnZEdocGN5NUJVRWxTWlhGMVpYTjBLRnh1SUNBZ0lDQWdKeTkxYzJWeUx5Y2dLeUJwWkN4Y2JpQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdaWGgwY21GamRFWnBaV3hrS0dOaGJHeGlZV05yS1N4Y2JpQWdJQ0FnSUNkMWMyVnljeWRjYmlBZ0lDQXBPMXh1SUNCOVhHNWNiaUFnWjJWMFUzVm5aMlZ6ZEdWa1VtVjJhV1YzWlhKeklDaHBaQ3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0F2THlCQ1RVOHRJSE53WldOcFptbGpJR1Y0ZEdWdWMybHZiaUIwYnlCblpYUWdjM1ZuWjJWemRHVmtJSEpsZG1sbGQyVnljeUJtYjNJZ1lTQm5hWFpsYmlCaWRXZGNiaUFnSUNBdkx5Qm9kSFJ3T2k4dllucHlMbTF2ZW1sc2JHRXViM0puTDJKdGJ5ODBMakl2ZG1sbGR5OW9aV0ZrT2k5bGVIUmxibk5wYjI1ekwxSmxkbWxsZHk5c2FXSXZWMlZpVTJWeWRtbGpaUzV3YlNOTU1UQXlYRzRnSUNBZ2RHaHBjeTVCVUVsU1pYRjFaWE4wS0NjdmNtVjJhV1YzTDNOMVoyZGxjM1JwYjI1ekx5Y2dLeUJwWkN3Z0owZEZWQ2NzSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1WEc0Z0lDOHFYRzRnSUNBZ1dGaFlJSFJvYVhNZ1kyRnNiQ0JwY3lCd2NtOTJhV1JsWkNCbWIzSWdZMjl1ZG1WdWFXVnVZMlVnZEc4Z2NHVnZjR3hsSUhOamNtbHdkR2x1WnlCaFoyRnBibk4wSUhCeWIyUWdZblZuZW1sc2JIRmNiaUFnSUNCVVNFVlNSU0JKVXlCT1R5QkZVVlZKVmtGTVJVNVVJRkpGVTFRZ1EwRk1UQ0JKVGlCVVNWQXNJSE52SUhSb2FYTWdjMmh2ZFd4a0lHNXZkQ0JpWlNCMFpYTjBaV1FnWVdkaGFXNXpkQ0IwYVhBc0lHaGxibU5sWEc0Z0lDQWdkR2hsSUdoaGNtUXRZMjlrWldRZ2RYSnNMbHh1SUNBcUwxeHVJQ0JuWlhSRGIyNW1hV2QxY21GMGFXOXVJQ2h3WVhKaGJYTXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdhV1lnS0NGallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUNBZ0lHTmhiR3hpWVdOcklEMGdjR0Z5WVcxek8xeHVJQ0FnSUNBZ0lIQmhjbUZ0Y3lBOUlIdDlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJSFJvYVhNdVFWQkpVbVZ4ZFdWemRDZ25MMk52Ym1acFozVnlZWFJwYjI0bkxDQW5SMFZVSnl3Z1kyRnNiR0poWTJzc0lHNTFiR3dzSUc1MWJHd3NJSEJoY21GdGN5azdYRzRnSUNBZ0x5OGdWVWRNUVZrZ2RHVnRjQ0JtYVhnZ2RXNTBhV3dnTDJOdmJtWnBaM1Z5WVhScGIyNGdhWE1nYVcxd2JHVnRaVzUwWldRc1hHNGdJQ0FnTHk4Z2MyVmxJR2gwZEhCek9pOHZZblZuZW1sc2JHRXViVzk2YVd4c1lTNXZjbWN2YzJodmQxOWlkV2N1WTJkcFAybGtQVGt5TkRRd05TTmpNVEU2WEc0Z0lDQWdiR1YwSUhSb1lYUWdQU0IwYUdsek8xeHVYRzRnSUNBZ2RtRnlJSEpsY1NBOUlHNWxkeUJZVFV4SWRIUndVbVZ4ZFdWemRDZ3BPMXh1SUNBZ0lISmxjUzV2Y0dWdUtDZEhSVlFuTENBbmFIUjBjSE02THk5aGNHa3RaR1YyTG1KMVozcHBiR3hoTG0xdmVtbHNiR0V1YjNKbkwyeGhkR1Z6ZEM5amIyNW1hV2QxY21GMGFXOXVKeXdnZEhKMVpTazdYRzRnSUNBZ2NtVnhMbk5sZEZKbGNYVmxjM1JJWldGa1pYSW9YQ0pCWTJObGNIUmNJaXdnWENKaGNIQnNhV05oZEdsdmJpOXFjMjl1WENJcE8xeHVJQ0FnSUhKbGNTNXZibkpsWVdSNWMzUmhkR1ZqYUdGdVoyVWdQU0JtZFc1amRHbHZiaUFvWlhabGJuUXBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpYRXVjbVZoWkhsVGRHRjBaU0E5UFNBMElDWW1JSEpsY1M1emRHRjBkWE1nSVQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0IwYUdGMExtaGhibVJzWlZKbGMzQnZibk5sS0c1MWJHd3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuUnBiV1Z2ZFhRZ1BTQjBhR2x6TG5ScGJXVnZkWFE3WEc0Z0lDQWdjbVZ4TG05dWRHbHRaVzkxZENBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTZ25kR2x0Wlc5MWRDY3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExtOXVaWEp5YjNJZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9KMlZ5Y205eUp5d2djbVZ4TENCallXeHNZbUZqYXlrN1hHNGdJQ0FnZlR0Y2JpQWdJQ0J5WlhFdWMyVnVaQ2dwTzF4dUlDQjlYRzVjYmlBZ1oyVjBVSEp2WkhWamRITWdLSEJ5YjJSMVkzUXBJSHRjYmlBZ0lDQjJZWElnWDNSb2FYTWdQU0IwYUdsek8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNobWRXNWpkR2x2YmloeVpYTnZiSFpsTENCeVpXcGxZM1FwSUh0Y2JpQWdJQ0FnSUdsbUtDQndjbTlrZFdOMElEMDlQU0JjSW5ObGJHVmpkR0ZpYkdWY0lpQjhmQ0J3Y205a2RXTjBJRDA5UFNCY0ltVnVkR1Z5WVdKc1pWd2lJSHg4SUhCeWIyUjFZM1FnUFQwOUlGd2lZV05qWlhOemFXSnNaVndpSUNrZ2UxeHVJQ0FnSUNBZ0lDQmZkR2hwY3k1QlVFbFNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0lDQWdJQ2N2Y0hKdlpIVmpkRDkwZVhCbFBTY2dLeUJ3Y205a2RXTjBMRnh1SUNBZ0lDQWdJQ0FnSUNkSFJWUW5MRnh1SUNBZ0lDQWdJQ0FnSUdaMWJtTjBhVzl1S0dWeWNpd2djSEp2WkhWamRITXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1LR1Z5Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLR1Z5Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNod2NtOWtkV04wY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdYM1JvYVhNdVFWQkpVbVZ4ZFdWemRDaGNiaUFnSUNBZ0lDQWdJQ0FuTDNCeWIyUjFZM1F2SnlBcklIQnliMlIxWTNRc1hHNGdJQ0FnSUNBZ0lDQWdKMGRGVkNjc1hHNGdJQ0FnSUNBZ0lDQWdablZ1WTNScGIyNG9aWEp5TENCd2NtOWtkV04wY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZb1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb1pYSnlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLSEJ5YjJSMVkzUnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQm5aWFJRY205a2RXTjBJQ2h3Y205a2RXTjBLU0I3WEc0Z0lDQWdkbUZ5SUY5MGFHbHpJRDBnZEdocGN6dGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0b2NtVnpiMngyWlN3Z2NtVnFaV04wS1NCN1hHNGdJQ0FnSUNCZmRHaHBjeTVCVUVsU1pYRjFaWE4wS0Z4dUlDQWdJQ0FnSUNBbkwzQnliMlIxWTNRdkp5QXJJSEJ5YjJSMVkzUXNYRzRnSUNBZ0lDQWdJQ2RIUlZRbkxGeHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpaGxjbklzSUhCeWIyUjFZM1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dWeWNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0dWeWNpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHdjbTlrZFdOMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnUVZCSlVtVnhkV1Z6ZENBb2NHRjBhQ3dnYldWMGFHOWtMQ0JqWVd4c1ltRmpheXdnWm1sbGJHUXNJR0p2Wkhrc0lIQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDOHZJR2xtSUhkbElHRnlaU0JrYjJsdVp5QjBhR1VnYkc5bmFXNWNiaUFnSUNBZ0lIQmhkR2dnUFQwOUlFeFBSMGxPSUh4OFhHNGdJQ0FnSUNBdkx5QnBaaUIzWlNCaGNtVWdZV3h5WldGa2VTQmhkWFJvWldSY2JpQWdJQ0FnSUhSb2FYTXVYMkYxZEdnZ2ZIeGNiaUFnSUNBZ0lDOHZJRzl5SUhkbElHRnlaU0J0YVhOemFXNW5JR0YxZEdnZ1pHRjBZVnh1SUNBZ0lDQWdJWFJvYVhNdWNHRnpjM2R2Y21RZ2ZId2dJWFJvYVhNdWRYTmxjbTVoYldWY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUM4dklITnJhWEFnWVhWMGIyMWhkR2xqSUdGMWRHaGxiblJwWTJGMGFXOXVYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVmUVZCSlVtVnhkV1Z6ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JoY21keklEMGdXMTB1YzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNcE8xeHVYRzRnSUNBZ2RHaHBjeTVzYjJkcGJpaG1kVzVqZEdsdmJpaGxjbklwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxjbklwSUhKbGRIVnliaUJqWVd4c1ltRmpheWhsY25JcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmUVZCSlVtVnhkV1Z6ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWR6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5WEc1Y2JpQWdYMEZRU1ZKbGNYVmxjM1FnS0hCaGRHZ3NJRzFsZEdodlpDd2dZMkZzYkdKaFkyc3NJR1pwWld4a0xDQmliMlI1TENCd1lYSmhiWE1wSUh0Y2JpQWdJQ0JzWlhRZ2RYSnNJRDBnZEdocGN5NWhjR2xWY213Z0t5QndZWFJvTzF4dVhHNGdJQ0FnY0dGeVlXMXpJRDBnY0dGeVlXMXpJSHg4SUh0OU8xeHVYRzRnSUNBZ2FXWW9kR2hwY3k1aGNHbGZhMlY1S1NCN0lIQmhjbUZ0Y3k1aGNHbGZhMlY1SUQwZ2RHaHBjeTVoY0dsZmEyVjVPeUI5WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmWVhWMGFDa2dlMXh1SUNBZ0lDQWdjR0Z5WVcxekxuUnZhMlZ1SUQwZ2RHaHBjeTVmWVhWMGFDNTBiMnRsYmp0Y2JpQWdJQ0I5WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWMyVnlibUZ0WlNBbUppQjBhR2x6TG5CaGMzTjNiM0prS1NCN1hHNGdJQ0FnSUNCd1lYSmhiWE11Ykc5bmFXNGdQU0IwYUdsekxuVnpaWEp1WVcxbE8xeHVJQ0FnSUNBZ2NHRnlZVzF6TG5CaGMzTjNiM0prSUQwZ2RHaHBjeTV3WVhOemQyOXlaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvY0dGeVlXMXpJQ1ltSUU5aWFtVmpkQzVyWlhsektIQmhjbUZ0Y3lrdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdkWEpzSUNzOUlGd2lQMXdpSUNzZ2RHaHBjeTUxY214RmJtTnZaR1VvY0dGeVlXMXpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmliMlI1SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvWW05a2VTazdYRzVjYmlBZ0lDQnNaWFFnZEdoaGRDQTlJSFJvYVhNN1hHNWNiaUFnSUNCMllYSWdjbVZ4SUQwZ2JtVjNJRmhOVEVoMGRIQlNaWEYxWlhOMEtDazdYRzRnSUNBZ2NtVnhMbTl3Wlc0b2JXVjBhRzlrTENCMWNtd3NJSFJ5ZFdVcE8xeHVJQ0FnSUhKbGNTNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtGd2lRV05qWlhCMFhDSXNJRndpWVhCd2JHbGpZWFJwYjI0dmFuTnZibHdpS1R0Y2JpQWdJQ0JwWmlBb2JXVjBhRzlrTG5SdlZYQndaWEpEWVhObEtDa2dJVDA5SUZ3aVIwVlVYQ0lwSUh0Y2JpQWdJQ0FnSUhKbGNTNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtGd2lRMjl1ZEdWdWRDMVVlWEJsWENJc0lGd2lZWEJ3YkdsallYUnBiMjR2YW5OdmJsd2lLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVnhMbTl1Y21WaFpIbHpkR0YwWldOb1lXNW5aU0E5SUdaMWJtTjBhVzl1SUNobGRtVnVkQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tISmxjUzV5WldGa2VWTjBZWFJsSUQwOUlEUWdKaVlnY21WeExuTjBZWFIxY3lBaFBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhSb1lYUXVhR0Z1Wkd4bFVtVnpjRzl1YzJVb2JuVnNiQ3dnY21WeExDQmpZV3hzWW1GamF5d2dabWxsYkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExuUnBiV1Z2ZFhRZ1BTQjBhR2x6TG5ScGJXVnZkWFE3WEc0Z0lDQWdjbVZ4TG05dWRHbHRaVzkxZENBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHaGhkQzVvWVc1a2JHVlNaWE53YjI1elpTZ25kR2x0Wlc5MWRDY3NJSEpsY1N3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnY21WeExtOXVaWEp5YjNJZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lIUm9ZWFF1YUdGdVpHeGxVbVZ6Y0c5dWMyVW9aWFpsYm5Rc0lISmxjU3dnWTJGc2JHSmhZMnNwTzF4dUlDQWdJSDA3WEc0Z0lDQWdjbVZ4TG5ObGJtUW9ZbTlrZVNrN1hHNGdJSDFjYmx4dUlDQm9ZVzVrYkdWU1pYTndiMjV6WlNBb1pYSnlMQ0J5WlhOd2IyNXpaU3dnWTJGc2JHSmhZMnNzSUdacFpXeGtLU0I3WEc0Z0lDQWdMeThnWkdWMFpXTjBJSFJwYldWdmRYUWdaWEp5YjNKelhHNGdJQ0FnYVdZZ0tHVnljaUFtSmlCbGNuSXVZMjlrWlNBbUppQlVTVTFGVDFWVVgwVlNVazlTVXk1cGJtUmxlRTltS0dWeWNpNWpiMlJsS1NBaFBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJqWVd4c1ltRmpheWh1WlhjZ1JYSnliM0lvSjNScGJXVnZkWFFuS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z2FHRnVaR3hsSUdkbGJtVnlhV01nWlhKeWIzSnpYRzRnSUNBZ2FXWWdLR1Z5Y2lrZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0dWeWNpazdYRzVjYmlBZ0lDQXZMeUJoYm5sMGFHbHVaeUJwYmlBeU1EQWdjM1JoZEhWeklISmhibWRsSUdseklHRWdjM1ZqWTJWemMxeHVJQ0FnSUhaaGNpQnlaWEYxWlhOMFUzVmpZMlZ6YzJaMWJDQTlJSEpsYzNCdmJuTmxMbk4wWVhSMWN5QStJREU1T1NBbUppQnlaWE53YjI1elpTNXpkR0YwZFhNZ1BDQXpNREE3WEc1Y2JpQWdJQ0F2THlCbGRtVnVJR2x1SUhSb1pTQmpZWE5sSUc5bUlHRnVJSFZ1YzNWalkyVnpjMloxYkNCeVpYRjFaWE4wSUhkbElHMWhlU0JvWVhabElHcHpiMjRnWkdGMFlTNWNiaUFnSUNCMllYSWdjR0Z5YzJWa1FtOWtlVHRjYmx4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNCd1lYSnpaV1JDYjJSNUlEMGdTbE5QVGk1d1lYSnpaU2h5WlhOd2IyNXpaUzV5WlhOd2IyNXpaVlJsZUhRcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDOHZJRmhZV0RvZ2JXbG5hSFFnZDJGdWRDQjBieUJvWVc1a2JHVWdkR2hwY3lCaVpYUjBaWElnYVc0Z2RHaGxJSEpsY1hWbGMzUWdjM1ZqWTJWemN5QmpZWE5sUDF4dUlDQWdJQ0FnYVdZZ0tISmxjWFZsYzNSVGRXTmpaWE56Wm5Wc0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpZV3hzWW1GamF5aGNiaUFnSUNBZ0lDQWdJQ0J1WlhjZ1JYSnliM0lvSjNKbGMzQnZibk5sSUhkaGN5QnViM1FnZG1Gc2FXUWdhbk52YmpvZ0p5QXJJSEpsYzNCdmJuTmxMbkpsYzNCdmJuTmxWR1Y0ZENsY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmtaWFJsWTNRZ2FXWWdkMlVuY21VZ2NuVnVibWx1WnlCQ2RXZDZhV3hzWVNBMUxqQmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlIQmhjbk5sWkVKdlpIbGJKM0psYzNWc2RDZGRJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdjR0Z5YzJWa1FtOWtlU0E5SUhCaGNuTmxaRUp2WkhsYkozSmxjM1ZzZENkZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklITjFZMk5sYzNObWRXd2dhSFIwY0NCeVpYTndibk5sSUdKMWRDQmhiaUJsY25KdmNseHVJQ0FnSUM4dklGaFlXRG9nZEdocGN5QnpaV1Z0Y3lCc2FXdGxJR0VnWW5WbklHbHVJSFJvWlNCaGNHa3VYRzRnSUNBZ2FXWWdLSEJoY25ObFpFSnZaSGtnSmlZZ2NHRnljMlZrUW05a2VTNWxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ2NtVnhkV1Z6ZEZOMVkyTmxjM05tZFd3Z1BTQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lYSmxjWFZsYzNSVGRXTmpaWE56Wm5Wc0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1kyRnNiR0poWTJzb2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQW5TRlJVVUNCemRHRjBkWE1nSnlBcklISmxjM0J2Ym5ObExuTjBZWFIxY3lBcklDZGNYRzRuSUN0Y2JpQWdJQ0FnSUNBZ0x5OGdibTkwWlNCcGJuUmxiblJwYjI1aGJDQjFjMlVnYjJZZ0lUMGdhVzV6ZEdWaFpDQnZaaUFoUFQxY2JpQWdJQ0FnSUNBZ0tIQmhjbk5sWkVKdlpIa2dKaVlnY0dGeWMyVmtRbTlrZVM1dFpYTnpZV2RsS1NBL0lIQmhjbk5sWkVKdlpIa3ViV1Z6YzJGblpTQTZJQ2NuWEc0Z0lDQWdJQ0FwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqWVd4c1ltRmpheWh1ZFd4c0xDQW9abWxsYkdRcElEOGdjR0Z5YzJWa1FtOWtlVnRtYVdWc1pGMGdPaUJ3WVhKelpXUkNiMlI1S1R0Y2JpQWdmVnh1WEc0Z0lIVnliRVZ1WTI5a1pTQW9jR0Z5WVcxektTQjdYRzRnSUNBZ2RtRnlJSFZ5YkNBOUlGdGRPMXh1SUNBZ0lHWnZjaWgyWVhJZ2NHRnlZVzBnYVc0Z2NHRnlZVzF6S1NCN1hHNGdJQ0FnSUNCMllYSWdkbUZzZFdWeklEMGdjR0Z5WVcxelczQmhjbUZ0WFR0Y2JpQWdJQ0FnSUdsbUtDRjJZV3gxWlhNdVptOXlSV0ZqYUNsY2JpQWdJQ0FnSUNBZ2RtRnNkV1Z6SUQwZ1czWmhiSFZsYzEwN1hHNGdJQ0FnSUNBdkx5QmxlSEJoYm1RZ1lXNTVJR0Z5Y21GNWMxeHVJQ0FnSUNBZ2RtRnNkV1Z6TG1admNrVmhZMmdvWm5WdVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUhWeWJDNXdkWE5vS0dWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENod1lYSmhiU2tnS3lCY0lqMWNJaUFyWEc0Z0lDQWdJQ0FnSUNBZ0lHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaDJZV3gxWlNrcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIxY213dWFtOXBiaWhjSWlaY0lpazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR055WldGMFpVTnNhV1Z1ZENodmNIUnBiMjV6S1NCN1hHNGdJSEpsZEhWeWJpQnVaWGNnUW5WbmVtbHNiR0ZEYkdsbGJuUW9iM0IwYVc5dWN5azdYRzU5WEc0aVhYMD0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIFhNTEh0dHBSZXF1ZXN0ID0gbnVsbDtcblxuZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0O1xuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXI/XG4gIHZhciBfbG9hZGVyID0gcmVxdWlyZTtcbiAgdHJ5IHtcbiAgICBleHBvcnRzLlhNTEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3QgPSBfbG9hZGVyKCdzZGsvbmV0L3hocicpLlhNTEh0dHBSZXF1ZXN0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwb3J0cy5YTUxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0ID0gX2xvYWRlcihcInhtbGh0dHByZXF1ZXN0XCIpLlhNTEh0dHBSZXF1ZXN0O1xuICB9XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gIGV4cG9ydHMuWE1MSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdCA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtcbn0gZWxzZSB7XG4gIHRocm93IFwiTm8gd2luZG93LCBXQVQuXCI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTlWYzJWeWN5OXFiR0Z6ZEdWeUwzTnlZeTl0YjNwcGJHeGhMMko2TG1wekwzTnlZeTk0YUhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3UVVGQlR5eEpRVUZKTEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN096dEJRVVZxUXl4SlFVRkpMRTlCUVU4c1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQlJUczdRVUZGYWtNc1RVRkJTU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEzUkNMRTFCUVVrN1FVRkRSaXhaUVU1UExHTkJRV01zUjBGTmNrSXNZMEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eGpRVUZqTEVOQlFVTTdSMEZEZUVRc1EwRkJReXhQUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU5VTEZsQlVrOHNZMEZCWXl4SFFWRnlRaXhqUVVGakxFZEJRVWNzVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETzBkQlF6TkVPME5CUTBZc1RVRkRTU3hKUVVGSExFOUJRVThzVFVGQlRTeExRVUZMTEZkQlFWY3NTVUZCU1N4UFFVRlBMRTFCUVUwc1EwRkJReXhqUVVGakxFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEzSkdMRlZCV2xNc1kwRkJZeXhIUVZsMlFpeGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJRenREUVVONFF5eE5RVU5KTzBGQlEwZ3NVVUZCVFN4cFFrRkJhVUlzUTBGQlFUdERRVU40UWlJc0ltWnBiR1VpT2lJdlZYTmxjbk12YW14aGMzUmxjaTl6Y21NdmJXOTZhV3hzWVM5aWVpNXFjeTl6Y21NdmVHaHlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUhaaGNpQllUVXhJZEhSd1VtVnhkV1Z6ZENBOUlHNTFiR3c3WEc1Y2JtbG1JQ2gwZVhCbGIyWWdkMmx1Wkc5M0lEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0F2THlCM1pTZHlaU0J1YjNRZ2FXNGdZU0JpY205M2MyVnlQMXh1SUNCc1pYUWdYMnh2WVdSbGNpQTlJSEpsY1hWcGNtVTdYRzRnSUhSeWVTQjdYRzRnSUNBZ1dFMU1TSFIwY0ZKbGNYVmxjM1FnUFNCZmJHOWhaR1Z5S0NkelpHc3ZibVYwTDNob2NpY3BMbGhOVEVoMGRIQlNaWEYxWlhOME8xeHVJQ0I5SUdOaGRHTm9LR1VwSUh0Y2JpQWdJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJRjlzYjJGa1pYSW9YQ0o0Yld4b2RIUndjbVZ4ZFdWemRGd2lLUzVZVFV4SWRIUndVbVZ4ZFdWemREdGNiaUFnZlZ4dWZWeHVaV3h6WlNCcFppaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmlCMGVYQmxiMllnZDJsdVpHOTNMbGhOVEVoMGRIQlNaWEYxWlhOMElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0JZVFV4SWRIUndVbVZ4ZFdWemRDQTlJSGRwYm1SdmR5NVlUVXhJZEhSd1VtVnhkV1Z6ZER0Y2JuMWNibVZzYzJVZ2UxeHVJQ0IwYUhKdmR5QmNJazV2SUhkcGJtUnZkeXdnVjBGVUxsd2lYRzU5WEc0aVhYMD0iXX0=